Merge pull request #1481 from TDT-AG/luci-app-openvpn-fixes
authorJo-Philipp Wich <jo@mein.io>
Fri, 25 May 2018 05:22:27 +0000 (07:22 +0200)
committerGitHub <noreply@github.com>
Fri, 25 May 2018 05:22:27 +0000 (07:22 +0200)
luci-app-openvpn: several fixes

818 files changed:
applications/luci-app-adblock/Makefile
applications/luci-app-adblock/luasrc/controller/adblock.lua
applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua
applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua
applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua
applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm [new file with mode: 0644]
applications/luci-app-adblock/luasrc/view/adblock/logread.htm
applications/luci-app-adblock/luasrc/view/adblock/query.htm
applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
applications/luci-app-adblock/po/it/adblock.po
applications/luci-app-adblock/po/ja/adblock.po
applications/luci-app-adblock/po/pt-br/adblock.po
applications/luci-app-adblock/po/ru/adblock.po [new file with mode: 0644]
applications/luci-app-adblock/po/sv/adblock.po
applications/luci-app-adblock/po/templates/adblock.pot
applications/luci-app-adblock/po/zh-cn/adblock.po
applications/luci-app-adblock/po/zh-tw/adblock.po
applications/luci-app-advanced-reboot/Makefile
applications/luci-app-advanced-reboot/README.md
applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua
applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po [new file with mode: 0644]
applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po [new file with mode: 0644]
applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po [deleted file]
applications/luci-app-advanced-reboot/po/templates/advanced-reboot.pot [new file with mode: 0644]
applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot [deleted file]
applications/luci-app-ahcp/po/ru/ahcp.po
applications/luci-app-aria2/po/ru/aria2.po [new file with mode: 0644]
applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm
applications/luci-app-attendedsysupgrade/root/etc/uci-defaults/40_luci-attendedsysupgrade
applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js [new file with mode: 0644]
applications/luci-app-bcp38/po/ru/bcp38.po [new file with mode: 0644]
applications/luci-app-clamav/po/ru/clamav.po [new file with mode: 0644]
applications/luci-app-commands/luasrc/view/commands.htm
applications/luci-app-commands/po/ru/commands.po
applications/luci-app-cshark/luasrc/controller/cshark.lua
applications/luci-app-ddns/Makefile
applications/luci-app-ddns/luasrc/controller/ddns.lua
applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua
applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua
applications/luci-app-ddns/luasrc/tools/ddns.lua
applications/luci-app-ddns/luasrc/view/ddns/global_value.htm
applications/luci-app-ddns/po/ru/ddns.po
applications/luci-app-diag-core/po/ru/diag_core.po
applications/luci-app-diag-devinfo/Makefile [deleted file]
applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/devinfo_common.lua [deleted file]
applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/luci_diag_devinfo.lua [deleted file]
applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/netdiscover_common.lua [deleted file]
applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/smap_common.lua [deleted file]
applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/mactodevinfo.lua [deleted file]
applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo.lua [deleted file]
applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo_config.lua [deleted file]
applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo_config_mini.lua [deleted file]
applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo_mini.lua [deleted file]
applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo.lua [deleted file]
applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo_config.lua [deleted file]
applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo_config_mini.lua [deleted file]
applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo_mini.lua [deleted file]
applications/luci-app-diag-devinfo/luasrc/view/diag/smapsection.htm [deleted file]
applications/luci-app-diag-devinfo/luasrc/view/diag/smapvalue.htm [deleted file]
applications/luci-app-diag-devinfo/po/ca/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/cs/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/de/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/el/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/en/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/es/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/fr/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/he/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/hu/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/it/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/ja/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/ms/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/no/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/pl/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/pt-br/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/pt/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/ro/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/ru/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/sk/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/templates/diag_devinfo.pot [deleted file]
applications/luci-app-diag-devinfo/po/tr/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/uk/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/vi/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/zh-cn/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/po/zh-tw/diag_devinfo.po [deleted file]
applications/luci-app-diag-devinfo/root/etc/config/luci_devinfo [deleted file]
applications/luci-app-dnscrypt-proxy/Makefile
applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua
applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua
applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po
applications/luci-app-dnscrypt-proxy/po/ru/dnscrypt-proxy.po [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot
applications/luci-app-dynapoint/luasrc/model/cbi/dynapoint.lua
applications/luci-app-dynapoint/po/de/dynapoint.po
applications/luci-app-dynapoint/po/ja/dynapoint.po
applications/luci-app-dynapoint/po/pt-br/dynapoint.po
applications/luci-app-dynapoint/po/ru/dynapoint.po [new file with mode: 0644]
applications/luci-app-dynapoint/po/templates/dynapoint.pot
applications/luci-app-firewall/luasrc/controller/firewall.lua
applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
applications/luci-app-firewall/luasrc/tools/firewall.lua
applications/luci-app-firewall/luasrc/view/firewall/cbi_addrule.htm
applications/luci-app-firewall/luasrc/view/firewall/cbi_addsnat.htm
applications/luci-app-firewall/po/ca/firewall.po
applications/luci-app-firewall/po/cs/firewall.po
applications/luci-app-firewall/po/de/firewall.po
applications/luci-app-firewall/po/el/firewall.po
applications/luci-app-firewall/po/en/firewall.po
applications/luci-app-firewall/po/es/firewall.po
applications/luci-app-firewall/po/fr/firewall.po
applications/luci-app-firewall/po/he/firewall.po
applications/luci-app-firewall/po/hu/firewall.po
applications/luci-app-firewall/po/it/firewall.po
applications/luci-app-firewall/po/ja/firewall.po
applications/luci-app-firewall/po/ko/firewall.po
applications/luci-app-firewall/po/ms/firewall.po
applications/luci-app-firewall/po/no/firewall.po
applications/luci-app-firewall/po/pl/firewall.po
applications/luci-app-firewall/po/pt-br/firewall.po
applications/luci-app-firewall/po/pt/firewall.po
applications/luci-app-firewall/po/ro/firewall.po
applications/luci-app-firewall/po/ru/firewall.po
applications/luci-app-firewall/po/sk/firewall.po
applications/luci-app-firewall/po/sv/firewall.po
applications/luci-app-firewall/po/templates/firewall.pot
applications/luci-app-firewall/po/tr/firewall.po
applications/luci-app-firewall/po/uk/firewall.po
applications/luci-app-firewall/po/vi/firewall.po
applications/luci-app-firewall/po/zh-cn/firewall.po
applications/luci-app-firewall/po/zh-tw/firewall.po
applications/luci-app-freifunk-diagnostics/luasrc/controller/freifunk/diag.lua
applications/luci-app-freifunk-diagnostics/luasrc/view/freifunk/diagnostics.htm
applications/luci-app-freifunk-policyrouting/po/ru/freifunk-policyrouting.po
applications/luci-app-fwknopd/po/ru/fwknopd.po [new file with mode: 0644]
applications/luci-app-hd-idle/po/ru/hd_idle.po
applications/luci-app-lxc/Makefile
applications/luci-app-lxc/luasrc/controller/lxc.lua
applications/luci-app-lxc/luasrc/model/cbi/lxc.lua
applications/luci-app-lxc/luasrc/view/lxc.htm
applications/luci-app-lxc/root/etc/config/lxc
applications/luci-app-meshwizard/po/ru/meshwizard.po
applications/luci-app-minidlna/po/ru/minidlna.po
applications/luci-app-mjpg-streamer/po/ru/mjpg-streamer.po [new file with mode: 0644]
applications/luci-app-mmc-over-gpio/Makefile [deleted file]
applications/luci-app-mmc-over-gpio/luasrc/controller/mmc_over_gpio.lua [deleted file]
applications/luci-app-mmc-over-gpio/luasrc/model/cbi/mmc_over_gpio.lua [deleted file]
applications/luci-app-mmc-over-gpio/po/ca/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/cs/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/de/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/el/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/en/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/es/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/fr/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/he/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/hu/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/it/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/ja/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/ms/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/no/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/pl/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/pt-br/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/pt/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/ro/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/ru/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/sk/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/sv/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/templates/mmc_over_gpio.pot [deleted file]
applications/luci-app-mmc-over-gpio/po/tr/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/uk/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/vi/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/zh-cn/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/po/zh-tw/mmc_over_gpio.po [deleted file]
applications/luci-app-mmc-over-gpio/root/etc/uci-defaults/40_luci-mmc-over-gpio [deleted file]
applications/luci-app-multiwan/Makefile [deleted file]
applications/luci-app-multiwan/luasrc/controller/multiwan.lua [deleted file]
applications/luci-app-multiwan/luasrc/model/cbi/multiwan/multiwan.lua [deleted file]
applications/luci-app-multiwan/luasrc/model/cbi/multiwan/multiwanmini.lua [deleted file]
applications/luci-app-multiwan/luasrc/view/admin_status/index/multiwan.htm [deleted file]
applications/luci-app-multiwan/luasrc/view/multiwan_status.htm [deleted file]
applications/luci-app-multiwan/po/ca/multiwan.po [deleted file]
applications/luci-app-multiwan/po/cs/multiwan.po [deleted file]
applications/luci-app-multiwan/po/de/multiwan.po [deleted file]
applications/luci-app-multiwan/po/el/multiwan.po [deleted file]
applications/luci-app-multiwan/po/en/multiwan.po [deleted file]
applications/luci-app-multiwan/po/es/multiwan.po [deleted file]
applications/luci-app-multiwan/po/fr/multiwan.po [deleted file]
applications/luci-app-multiwan/po/he/multiwan.po [deleted file]
applications/luci-app-multiwan/po/hu/multiwan.po [deleted file]
applications/luci-app-multiwan/po/it/multiwan.po [deleted file]
applications/luci-app-multiwan/po/ja/multiwan.po [deleted file]
applications/luci-app-multiwan/po/ms/multiwan.po [deleted file]
applications/luci-app-multiwan/po/no/multiwan.po [deleted file]
applications/luci-app-multiwan/po/pl/multiwan.po [deleted file]
applications/luci-app-multiwan/po/pt-br/multiwan.po [deleted file]
applications/luci-app-multiwan/po/pt/multiwan.po [deleted file]
applications/luci-app-multiwan/po/ro/multiwan.po [deleted file]
applications/luci-app-multiwan/po/ru/multiwan.po [deleted file]
applications/luci-app-multiwan/po/sk/multiwan.po [deleted file]
applications/luci-app-multiwan/po/sv/multiwan.po [deleted file]
applications/luci-app-multiwan/po/templates/multiwan.pot [deleted file]
applications/luci-app-multiwan/po/tr/multiwan.po [deleted file]
applications/luci-app-multiwan/po/uk/multiwan.po [deleted file]
applications/luci-app-multiwan/po/vi/multiwan.po [deleted file]
applications/luci-app-multiwan/po/zh-cn/multiwan.po [deleted file]
applications/luci-app-multiwan/po/zh-tw/multiwan.po [deleted file]
applications/luci-app-mwan3/Makefile
applications/luci-app-mwan3/luasrc/controller/mwan3.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua [deleted file]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua [deleted file]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua [deleted file]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua [deleted file]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/notify.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua
applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm
applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm [deleted file]
applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm [deleted file]
applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm [deleted file]
applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm [deleted file]
applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm [deleted file]
applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm [deleted file]
applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm [deleted file]
applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm [deleted file]
applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm [deleted file]
applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm [deleted file]
applications/luci-app-mwan3/luasrc/view/mwan/overview_status_interface.htm [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/mwan/status_detail.htm [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/mwan/status_interface.htm [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm [new file with mode: 0644]
applications/luci-app-mwan3/po/ja/mwan3.po
applications/luci-app-mwan3/po/ru/mwan3.po [new file with mode: 0644]
applications/luci-app-mwan3/po/templates/mwan3.pot
applications/luci-app-mwan3/po/zh-cn/mwan3.po
applications/luci-app-mwan3/po/zh-tw/mwan3.po
applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak [deleted file]
applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3
applications/luci-app-nlbwmon/luasrc/controller/nlbw.lua
applications/luci-app-nlbwmon/po/ja/nlbwmon.po
applications/luci-app-nlbwmon/po/ru/nlbwmon.po [new file with mode: 0644]
applications/luci-app-noddos/po/ru/noddos.po [new file with mode: 0644]
applications/luci-app-ntpc/po/ru/ntpc.po
applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua
applications/luci-app-olsr/luasrc/controller/olsr.lua
applications/luci-app-olsr/po/ru/olsr.po
applications/luci-app-openvpn/Makefile
applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua
applications/luci-app-openvpn/po/ru/openvpn.po
applications/luci-app-p2pblock/Makefile [deleted file]
applications/luci-app-p2pblock/luasrc/controller/ff_p2pblock.lua [deleted file]
applications/luci-app-p2pblock/luasrc/model/cbi/luci_fw/p2pblock.lua [deleted file]
applications/luci-app-p2pblock/po/ca/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/cs/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/de/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/el/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/en/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/es/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/fr/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/he/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/hu/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/it/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/ja/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/ms/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/no/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/pl/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/pt-br/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/pt/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/ro/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/ru/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/sk/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/sv/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/templates/p2pblock.pot [deleted file]
applications/luci-app-p2pblock/po/tr/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/uk/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/vi/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/zh-cn/p2pblock.po [deleted file]
applications/luci-app-p2pblock/po/zh-tw/p2pblock.po [deleted file]
applications/luci-app-p2pblock/root/etc/uci-defaults/40_luci-p2pblock [deleted file]
applications/luci-app-p910nd/po/ru/p910nd.po
applications/luci-app-pagekitec/Makefile [new file with mode: 0644]
applications/luci-app-pagekitec/luasrc/controller/pagekitec.lua [new file with mode: 0644]
applications/luci-app-pagekitec/luasrc/model/cbi/pagekitec.lua [new file with mode: 0644]
applications/luci-app-pagekitec/po/ja/pagekitec.po [new file with mode: 0644]
applications/luci-app-pagekitec/po/templates/pagekitec.pot [new file with mode: 0644]
applications/luci-app-pagekitec/root/etc/uci-defaults/40_luci-pagekitec [new file with mode: 0755]
applications/luci-app-pbx-voicemail/COPYING [deleted file]
applications/luci-app-pbx-voicemail/Makefile [deleted file]
applications/luci-app-pbx-voicemail/luasrc/controller/pbx-voicemail.lua [deleted file]
applications/luci-app-pbx-voicemail/luasrc/model/cbi/pbx-voicemail.lua [deleted file]
applications/luci-app-pbx-voicemail/po/ca/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/cs/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/de/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/el/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/en/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/es/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/fr/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/he/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/hu/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/it/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/ja/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/ms/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/no/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/pl/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/pt-br/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/pt/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/ro/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/ru/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/sk/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/sv/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/templates/pbx-voicemail.pot [deleted file]
applications/luci-app-pbx-voicemail/po/tr/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/uk/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/vi/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/zh-cn/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/po/zh-tw/pbx-voicemail.po [deleted file]
applications/luci-app-pbx-voicemail/root/etc/config/pbx-voicemail [deleted file]
applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-move-greeting [deleted file]
applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account-auth.TEMPLATE [deleted file]
applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account-default.TEMPLATE [deleted file]
applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account.TEMPLATE [deleted file]
applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-defaults.TEMPLATE [deleted file]
applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-send-voicemail [deleted file]
applications/luci-app-pbx/COPYING [deleted file]
applications/luci-app-pbx/CREDITS-SOUNDS [deleted file]
applications/luci-app-pbx/LICENSE-SOUNDS [deleted file]
applications/luci-app-pbx/Makefile [deleted file]
applications/luci-app-pbx/luasrc/controller/pbx.lua [deleted file]
applications/luci-app-pbx/luasrc/model/cbi/pbx-advanced.lua [deleted file]
applications/luci-app-pbx/luasrc/model/cbi/pbx-calls.lua [deleted file]
applications/luci-app-pbx/luasrc/model/cbi/pbx-google.lua [deleted file]
applications/luci-app-pbx/luasrc/model/cbi/pbx-users.lua [deleted file]
applications/luci-app-pbx/luasrc/model/cbi/pbx-voip.lua [deleted file]
applications/luci-app-pbx/luasrc/model/cbi/pbx.lua [deleted file]
applications/luci-app-pbx/po/ca/pbx.po [deleted file]
applications/luci-app-pbx/po/cs/pbx.po [deleted file]
applications/luci-app-pbx/po/de/pbx.po [deleted file]
applications/luci-app-pbx/po/el/pbx.po [deleted file]
applications/luci-app-pbx/po/en/pbx.po [deleted file]
applications/luci-app-pbx/po/es/pbx.po [deleted file]
applications/luci-app-pbx/po/fr/pbx.po [deleted file]
applications/luci-app-pbx/po/he/pbx.po [deleted file]
applications/luci-app-pbx/po/hu/pbx.po [deleted file]
applications/luci-app-pbx/po/it/pbx.po [deleted file]
applications/luci-app-pbx/po/ja/pbx.po [deleted file]
applications/luci-app-pbx/po/ms/pbx.po [deleted file]
applications/luci-app-pbx/po/no/pbx.po [deleted file]
applications/luci-app-pbx/po/pl/pbx.po [deleted file]
applications/luci-app-pbx/po/pt-br/pbx.po [deleted file]
applications/luci-app-pbx/po/pt/pbx.po [deleted file]
applications/luci-app-pbx/po/ro/pbx.po [deleted file]
applications/luci-app-pbx/po/ru/pbx.po [deleted file]
applications/luci-app-pbx/po/sk/pbx.po [deleted file]
applications/luci-app-pbx/po/sv/pbx.po [deleted file]
applications/luci-app-pbx/po/templates/pbx.pot [deleted file]
applications/luci-app-pbx/po/tr/pbx.po [deleted file]
applications/luci-app-pbx/po/uk/pbx.po [deleted file]
applications/luci-app-pbx/po/vi/pbx.po [deleted file]
applications/luci-app-pbx/po/zh-cn/pbx.po [deleted file]
applications/luci-app-pbx/po/zh-tw/pbx.po [deleted file]
applications/luci-app-pbx/root/etc/config/pbx [deleted file]
applications/luci-app-pbx/root/etc/config/pbx-advanced [deleted file]
applications/luci-app-pbx/root/etc/config/pbx-calls [deleted file]
applications/luci-app-pbx/root/etc/config/pbx-google [deleted file]
applications/luci-app-pbx/root/etc/config/pbx-users [deleted file]
applications/luci-app-pbx/root/etc/config/pbx-voip [deleted file]
applications/luci-app-pbx/root/etc/init.d/pbx-asterisk [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/asterisk.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/delayedcallback [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist_footer.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist_header.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check_footer.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check_header.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_gtalk.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_header.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_sip.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_default.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_default_user.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check_footer.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check_header.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-nopin.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa_header.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_gtalk.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_gtalk_header.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_sip.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_dial_local_user.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_gtalk.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_pattern_gtalk.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_pattern_sip.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_sip.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_user_context_footer.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_user_context_header.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_voicemail_disabled.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_voicemail_enabled.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/gtalk.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/indications.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/jabber.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/jabber_users.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/logger.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/manager.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/modules.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/rtp.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/sip.conf.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/sip_peer.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/sip_registration.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/sip_user.TEMPLATE [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-alreadyon.gsm [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-incorrect.gsm [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-pass.gsm [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/auth-incorrect.gsm [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/auth-thankyou.gsm [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/beep.gsm [deleted file]
applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/vm-goodbye.gsm [deleted file]
applications/luci-app-polipo/po/ru/polipo.po
applications/luci-app-privoxy/po/ru/privoxy.po [new file with mode: 0644]
applications/luci-app-qos/po/ru/qos.po
applications/luci-app-radicale/luasrc/view/radicale/tabmap_nsections.htm
applications/luci-app-radicale/po/ru/radicale.po [new file with mode: 0644]
applications/luci-app-radvd/Makefile [deleted file]
applications/luci-app-radvd/luasrc/controller/radvd.lua [deleted file]
applications/luci-app-radvd/luasrc/model/cbi/radvd.lua [deleted file]
applications/luci-app-radvd/luasrc/model/cbi/radvd/dnssl.lua [deleted file]
applications/luci-app-radvd/luasrc/model/cbi/radvd/interface.lua [deleted file]
applications/luci-app-radvd/luasrc/model/cbi/radvd/prefix.lua [deleted file]
applications/luci-app-radvd/luasrc/model/cbi/radvd/rdnss.lua [deleted file]
applications/luci-app-radvd/luasrc/model/cbi/radvd/route.lua [deleted file]
applications/luci-app-radvd/po/ca/radvd.po [deleted file]
applications/luci-app-radvd/po/cs/radvd.po [deleted file]
applications/luci-app-radvd/po/de/radvd.po [deleted file]
applications/luci-app-radvd/po/el/radvd.po [deleted file]
applications/luci-app-radvd/po/en/radvd.po [deleted file]
applications/luci-app-radvd/po/es/radvd.po [deleted file]
applications/luci-app-radvd/po/fr/radvd.po [deleted file]
applications/luci-app-radvd/po/he/radvd.po [deleted file]
applications/luci-app-radvd/po/hu/radvd.po [deleted file]
applications/luci-app-radvd/po/it/radvd.po [deleted file]
applications/luci-app-radvd/po/ja/radvd.po [deleted file]
applications/luci-app-radvd/po/ms/radvd.po [deleted file]
applications/luci-app-radvd/po/no/radvd.po [deleted file]
applications/luci-app-radvd/po/pl/radvd.po [deleted file]
applications/luci-app-radvd/po/pt-br/radvd.po [deleted file]
applications/luci-app-radvd/po/pt/radvd.po [deleted file]
applications/luci-app-radvd/po/ro/radvd.po [deleted file]
applications/luci-app-radvd/po/ru/radvd.po [deleted file]
applications/luci-app-radvd/po/sk/radvd.po [deleted file]
applications/luci-app-radvd/po/sv/radvd.po [deleted file]
applications/luci-app-radvd/po/templates/radvd.pot [deleted file]
applications/luci-app-radvd/po/tr/radvd.po [deleted file]
applications/luci-app-radvd/po/uk/radvd.po [deleted file]
applications/luci-app-radvd/po/vi/radvd.po [deleted file]
applications/luci-app-radvd/po/zh-cn/radvd.po [deleted file]
applications/luci-app-radvd/po/zh-tw/radvd.po [deleted file]
applications/luci-app-radvd/root/etc/uci-defaults/40_luci-radvd [deleted file]
applications/luci-app-samba/po/ru/samba.po
applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua
applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
applications/luci-app-shairplay/po/ru/shairplay.po [new file with mode: 0644]
applications/luci-app-shairport/Makefile [deleted file]
applications/luci-app-shairport/luasrc/controller/shairport.lua [deleted file]
applications/luci-app-shairport/luasrc/model/cbi/shairport.lua [deleted file]
applications/luci-app-shairport/root/etc/uci-defaults/40_luci-shairport [deleted file]
applications/luci-app-simple-adblock/Makefile
applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua
applications/luci-app-simple-adblock/po/ja/simple-adblock.po
applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po
applications/luci-app-simple-adblock/po/pt/simple-adblock.po
applications/luci-app-simple-adblock/po/ru/simple-adblock.po [new file with mode: 0644]
applications/luci-app-simple-adblock/po/sv/simple-adblock.po
applications/luci-app-simple-adblock/po/templates/simple-adblock.pot
applications/luci-app-splash/luasrc/controller/splash/splash.lua
applications/luci-app-splash/luasrc/view/admin_status/splash.htm
applications/luci-app-splash/po/ru/splash.po
applications/luci-app-splash/root/usr/sbin/luci-splash
applications/luci-app-statistics/luasrc/statistics/rrdtool.lua
applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua
applications/luci-app-statistics/po/ru/rrdtool.po
applications/luci-app-statistics/po/ru/statistics.po
applications/luci-app-statistics/root/etc/init.d/luci_statistics
applications/luci-app-tinyproxy/luasrc/view/tinyproxy_status.htm
applications/luci-app-tinyproxy/po/ru/tinyproxy.po
applications/luci-app-transmission/po/ru/transmission.po
applications/luci-app-travelmate/Makefile
applications/luci-app-travelmate/luasrc/controller/travelmate.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_delete.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua
applications/luci-app-travelmate/luasrc/view/travelmate/ap_qr.htm [new file with mode: 0644]
applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm
applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm
applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
applications/luci-app-travelmate/po/ja/travelmate.po
applications/luci-app-travelmate/po/pt-br/travelmate.po
applications/luci-app-travelmate/po/ru/travelmate.po [new file with mode: 0644]
applications/luci-app-travelmate/po/templates/travelmate.pot
applications/luci-app-uhttpd/po/ja/uhttpd.po
applications/luci-app-uhttpd/po/ru/uhttpd.po [new file with mode: 0644]
applications/luci-app-unbound/luasrc/controller/unbound.lua
applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua
applications/luci-app-upnp/luasrc/controller/upnp.lua
applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua
applications/luci-app-upnp/po/ca/upnp.po
applications/luci-app-upnp/po/cs/upnp.po
applications/luci-app-upnp/po/de/upnp.po
applications/luci-app-upnp/po/el/upnp.po
applications/luci-app-upnp/po/en/upnp.po
applications/luci-app-upnp/po/es/upnp.po
applications/luci-app-upnp/po/fr/upnp.po
applications/luci-app-upnp/po/he/upnp.po
applications/luci-app-upnp/po/hu/upnp.po
applications/luci-app-upnp/po/it/upnp.po
applications/luci-app-upnp/po/ja/upnp.po
applications/luci-app-upnp/po/ms/upnp.po
applications/luci-app-upnp/po/no/upnp.po
applications/luci-app-upnp/po/pl/upnp.po
applications/luci-app-upnp/po/pt-br/upnp.po
applications/luci-app-upnp/po/pt/upnp.po
applications/luci-app-upnp/po/ro/upnp.po
applications/luci-app-upnp/po/ru/upnp.po
applications/luci-app-upnp/po/sk/upnp.po
applications/luci-app-upnp/po/sv/upnp.po
applications/luci-app-upnp/po/templates/upnp.pot
applications/luci-app-upnp/po/tr/upnp.po
applications/luci-app-upnp/po/uk/upnp.po
applications/luci-app-upnp/po/vi/upnp.po
applications/luci-app-upnp/po/zh-cn/upnp.po
applications/luci-app-upnp/po/zh-tw/upnp.po
applications/luci-app-ushare/Makefile [deleted file]
applications/luci-app-ushare/luasrc/controller/ushare.lua [deleted file]
applications/luci-app-ushare/luasrc/model/cbi/ushare.lua [deleted file]
applications/luci-app-ushare/po/ca/ushare.po [deleted file]
applications/luci-app-ushare/po/cs/ushare.po [deleted file]
applications/luci-app-ushare/po/de/ushare.po [deleted file]
applications/luci-app-ushare/po/el/ushare.po [deleted file]
applications/luci-app-ushare/po/en/ushare.po [deleted file]
applications/luci-app-ushare/po/es/ushare.po [deleted file]
applications/luci-app-ushare/po/fr/ushare.po [deleted file]
applications/luci-app-ushare/po/he/ushare.po [deleted file]
applications/luci-app-ushare/po/hu/ushare.po [deleted file]
applications/luci-app-ushare/po/it/ushare.po [deleted file]
applications/luci-app-ushare/po/ja/ushare.po [deleted file]
applications/luci-app-ushare/po/ms/ushare.po [deleted file]
applications/luci-app-ushare/po/no/ushare.po [deleted file]
applications/luci-app-ushare/po/pl/ushare.po [deleted file]
applications/luci-app-ushare/po/pt-br/ushare.po [deleted file]
applications/luci-app-ushare/po/pt/ushare.po [deleted file]
applications/luci-app-ushare/po/ro/ushare.po [deleted file]
applications/luci-app-ushare/po/ru/ushare.po [deleted file]
applications/luci-app-ushare/po/sk/ushare.po [deleted file]
applications/luci-app-ushare/po/sv/ushare.po [deleted file]
applications/luci-app-ushare/po/templates/ushare.pot [deleted file]
applications/luci-app-ushare/po/tr/ushare.po [deleted file]
applications/luci-app-ushare/po/uk/ushare.po [deleted file]
applications/luci-app-ushare/po/vi/ushare.po [deleted file]
applications/luci-app-ushare/po/zh-cn/ushare.po [deleted file]
applications/luci-app-ushare/po/zh-tw/ushare.po [deleted file]
applications/luci-app-ushare/root/etc/uci-defaults/40_luci-ushare [deleted file]
applications/luci-app-vnstat/luasrc/view/vnstat.htm
applications/luci-app-vnstat/po/ru/vnstat.po
applications/luci-app-voice-core/Makefile [deleted file]
applications/luci-app-voice-core/luasrc/controller/luci_voice.lua [deleted file]
applications/luci-app-voice-core/luasrc/view/luci_voice/index.htm [deleted file]
applications/luci-app-voice-core/luasrc/view/luci_voice/phone_index.htm [deleted file]
applications/luci-app-voice-core/po/ca/voice_core.po [deleted file]
applications/luci-app-voice-core/po/cs/voice_core.po [deleted file]
applications/luci-app-voice-core/po/de/voice_core.po [deleted file]
applications/luci-app-voice-core/po/el/voice_core.po [deleted file]
applications/luci-app-voice-core/po/en/voice_core.po [deleted file]
applications/luci-app-voice-core/po/es/voice_core.po [deleted file]
applications/luci-app-voice-core/po/fr/voice_core.po [deleted file]
applications/luci-app-voice-core/po/he/voice_core.po [deleted file]
applications/luci-app-voice-core/po/hu/voice_core.po [deleted file]
applications/luci-app-voice-core/po/it/voice_core.po [deleted file]
applications/luci-app-voice-core/po/ja/voice_core.po [deleted file]
applications/luci-app-voice-core/po/ms/voice_core.po [deleted file]
applications/luci-app-voice-core/po/no/voice_core.po [deleted file]
applications/luci-app-voice-core/po/pl/voice_core.po [deleted file]
applications/luci-app-voice-core/po/pt-br/voice_core.po [deleted file]
applications/luci-app-voice-core/po/pt/voice_core.po [deleted file]
applications/luci-app-voice-core/po/ro/voice_core.po [deleted file]
applications/luci-app-voice-core/po/ru/voice_core.po [deleted file]
applications/luci-app-voice-core/po/sk/voice_core.po [deleted file]
applications/luci-app-voice-core/po/sv/voice_core.po [deleted file]
applications/luci-app-voice-core/po/templates/voice_core.pot [deleted file]
applications/luci-app-voice-core/po/tr/voice_core.po [deleted file]
applications/luci-app-voice-core/po/uk/voice_core.po [deleted file]
applications/luci-app-voice-core/po/vi/voice_core.po [deleted file]
applications/luci-app-voice-core/po/zh-cn/voice_core.po [deleted file]
applications/luci-app-voice-core/po/zh-tw/voice_core.po [deleted file]
applications/luci-app-voice-diag/Makefile [deleted file]
applications/luci-app-voice-diag/luasrc/controller/luci_voice/luci_voice_diag.lua [deleted file]
applications/luci-app-voice-diag/luasrc/view/luci_voice/diag_index.htm [deleted file]
applications/luci-app-voice-diag/po/ca/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/cs/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/de/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/el/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/en/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/es/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/fr/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/he/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/hu/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/it/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/ja/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/ms/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/no/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/pl/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/pt-br/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/pt/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/ro/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/ru/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/sk/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/sv/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/templates/voice_diag.pot [deleted file]
applications/luci-app-voice-diag/po/tr/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/uk/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/vi/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/zh-cn/voice_diag.po [deleted file]
applications/luci-app-voice-diag/po/zh-tw/voice_diag.po [deleted file]
applications/luci-app-vpnbypass/Makefile
applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua
applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po
applications/luci-app-vpnbypass/po/ru/vpnbypass.po [new file with mode: 0644]
applications/luci-app-vpnbypass/po/templates/vpnbypass.pot
applications/luci-app-vpnbypass/po/zh-cn/vpnbypass.po
applications/luci-app-vpnbypass/po/zh-tw/vpnbypass.po
applications/luci-app-watchcat/po/ru/watchcat.po
applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua
applications/luci-app-wifischedule/po/ru/wifischedule.po [new file with mode: 0644]
applications/luci-app-wireguard/Makefile
applications/luci-app-wireguard/po/ru/wireguard.po [new file with mode: 0644]
applications/luci-app-wol/luasrc/controller/wol.lua
applications/luci-app-wol/luasrc/model/cbi/wol.lua
applications/luci-app-wol/po/ru/wol.po
build/check-controllers.sh [new file with mode: 0755]
contrib/package/community-profiles/files/etc/config/profile_berlin
contrib/package/community-profiles/files/etc/config/profile_cottbus
contrib/package/community-profiles/files/etc/config/profile_hannover [deleted file]
contrib/package/community-profiles/files/etc/config/profile_potsdam
contrib/package/community-profiles/files/etc/config/profile_tulumlibre
contrib/package/freifunk-common/Makefile
contrib/package/freifunk-p2pblock/Makefile [deleted file]
contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.config [deleted file]
contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.init [deleted file]
contrib/package/lucihttp/Makefile [new file with mode: 0644]
documentation/api/index.html
documentation/api/modules/luci.dispatcher.html
documentation/api/modules/luci.http.html
documentation/api/modules/luci.http.protocol.html
documentation/api/modules/luci.i18n.html
documentation/api/modules/luci.ip.cidr.html
documentation/api/modules/luci.ip.html
documentation/api/modules/luci.json.html
documentation/api/modules/luci.jsonc.html
documentation/api/modules/luci.jsonc.parser.html
documentation/api/modules/luci.model.ipkg.html
documentation/api/modules/luci.model.uci.html
documentation/api/modules/luci.rpcc.html
documentation/api/modules/luci.rpcc.ruci.html
documentation/api/modules/luci.sys.html
documentation/api/modules/luci.sys.init.html
documentation/api/modules/luci.sys.iptparser.html
documentation/api/modules/luci.sys.net.html
documentation/api/modules/luci.sys.process.html
documentation/api/modules/luci.sys.user.html
documentation/api/modules/luci.sys.wifi.html
documentation/api/modules/luci.util.html
documentation/api/modules/nixio.CHANGELOG.html
documentation/api/modules/nixio.CryptoHash.html
documentation/api/modules/nixio.File.html
documentation/api/modules/nixio.README.html
documentation/api/modules/nixio.Socket.html
documentation/api/modules/nixio.TLSContext.html
documentation/api/modules/nixio.TLSSocket.html
documentation/api/modules/nixio.UnifiedIO.html
documentation/api/modules/nixio.bin.html
documentation/api/modules/nixio.bit.html
documentation/api/modules/nixio.crypto.html
documentation/api/modules/nixio.fs.html
documentation/api/modules/nixio.html
libs/luci-lib-httpclient/Makefile
libs/luci-lib-httpclient/luasrc/httpclient.lua
libs/luci-lib-httpprotoutils/Makefile [new file with mode: 0644]
libs/luci-lib-httpprotoutils/luasrc/http/conditionals.lua [new file with mode: 0644]
libs/luci-lib-httpprotoutils/luasrc/http/conditionals.luadoc [new file with mode: 0644]
libs/luci-lib-httpprotoutils/luasrc/http/date.lua [new file with mode: 0644]
libs/luci-lib-httpprotoutils/luasrc/http/date.luadoc [new file with mode: 0644]
libs/luci-lib-httpprotoutils/luasrc/http/mime.lua [new file with mode: 0644]
libs/luci-lib-httpprotoutils/luasrc/http/mime.luadoc [new file with mode: 0644]
libs/luci-lib-ip/src/ip.c
libs/luci-lib-ip/src/ip.luadoc
libs/luci-lib-json/luasrc/json.lua
libs/luci-lib-nixio/docsrc/README.lua
libs/luci-lib-nixio/docsrc/nixio.Socket.lua
libs/luci-lib-nixio/docsrc/nixio.UnifiedIO.lua
libs/luci-lib-nixio/docsrc/nixio.fs.lua
libs/luci-lib-nixio/docsrc/nixio.lua
luci.mk
modules/luci-base/Makefile
modules/luci-base/htdocs/luci-static/resources/cbi.js
modules/luci-base/htdocs/luci-static/resources/xhr.js
modules/luci-base/luasrc/cbi.lua
modules/luci-base/luasrc/cbi/datatypes.lua
modules/luci-base/luasrc/controller/admin/servicectl.lua [deleted file]
modules/luci-base/luasrc/dispatcher.lua
modules/luci-base/luasrc/dispatcher.luadoc
modules/luci-base/luasrc/http.lua
modules/luci-base/luasrc/http.luadoc
modules/luci-base/luasrc/http/protocol.lua [deleted file]
modules/luci-base/luasrc/http/protocol.luadoc [deleted file]
modules/luci-base/luasrc/http/protocol/conditionals.lua [deleted file]
modules/luci-base/luasrc/http/protocol/conditionals.luadoc [deleted file]
modules/luci-base/luasrc/http/protocol/date.lua [deleted file]
modules/luci-base/luasrc/http/protocol/date.luadoc [deleted file]
modules/luci-base/luasrc/http/protocol/mime.lua [deleted file]
modules/luci-base/luasrc/http/protocol/mime.luadoc [deleted file]
modules/luci-base/luasrc/model/ipkg.lua
modules/luci-base/luasrc/model/network.lua
modules/luci-base/luasrc/model/uci.lua
modules/luci-base/luasrc/model/uci.luadoc
modules/luci-base/luasrc/sys.lua
modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
modules/luci-base/luasrc/tools/status.lua
modules/luci-base/luasrc/util.lua
modules/luci-base/luasrc/util.luadoc
modules/luci-base/luasrc/view/cbi/apply_widget.htm [new file with mode: 0644]
modules/luci-base/luasrc/view/cbi/apply_xhr.htm [deleted file]
modules/luci-base/luasrc/view/cbi/browser.htm
modules/luci-base/luasrc/view/cbi/filebrowser.htm
modules/luci-base/luasrc/view/cbi/firewall_zonelist.htm
modules/luci-base/luasrc/view/cbi/footer.htm
modules/luci-base/luasrc/view/cbi/map.htm
modules/luci-base/luasrc/view/cbi/simpleform.htm
modules/luci-base/luasrc/view/cbi/tblsection.htm
modules/luci-base/luasrc/view/error404.htm
modules/luci-base/luasrc/view/sysauth.htm
modules/luci-base/po/ca/base.po
modules/luci-base/po/cs/base.po
modules/luci-base/po/de/base.po
modules/luci-base/po/el/base.po
modules/luci-base/po/en/base.po
modules/luci-base/po/es/base.po
modules/luci-base/po/fr/base.po
modules/luci-base/po/he/base.po
modules/luci-base/po/hu/base.po
modules/luci-base/po/it/base.po
modules/luci-base/po/ja/base.po
modules/luci-base/po/ko/base.po
modules/luci-base/po/ms/base.po
modules/luci-base/po/no/base.po
modules/luci-base/po/pl/base.po
modules/luci-base/po/pt-br/base.po
modules/luci-base/po/pt/base.po
modules/luci-base/po/ro/base.po
modules/luci-base/po/ru/base.po
modules/luci-base/po/sk/base.po
modules/luci-base/po/sv/base.po
modules/luci-base/po/templates/base.pot
modules/luci-base/po/tr/base.po
modules/luci-base/po/uk/base.po
modules/luci-base/po/vi/base.po
modules/luci-base/po/zh-cn/base.po
modules/luci-base/po/zh-tw/base.po
modules/luci-base/root/etc/config/luci
modules/luci-base/root/etc/config/ucitrack
modules/luci-base/root/etc/init.d/ucitrack [new file with mode: 0755]
modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json [new file with mode: 0644]
modules/luci-mod-admin-full/luasrc/controller/admin/network.lua
modules/luci-mod-admin-full/luasrc/controller/admin/status.lua
modules/luci-mod-admin-full/luasrc/controller/admin/system.lua
modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/hosts.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/buttons.lua [deleted file]
modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/fstab.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/leds.lua
modules/luci-mod-admin-full/luasrc/view/admin_network/lease_status.htm
modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
modules/luci-mod-admin-full/luasrc/view/admin_status/routes.htm
modules/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm
modules/luci-mod-admin-full/luasrc/view/admin_system/packages.htm
modules/luci-mod-admin-full/luasrc/view/admin_uci/apply.htm [deleted file]
modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm
modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm
modules/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm
modules/luci-mod-admin-mini/luasrc/model/cbi/mini/dhcp.lua
modules/luci-mod-freifunk/htdocs/luci-static/flashing.html
modules/luci-mod-freifunk/htdocs/luci-static/resources/OSMLatLon.htm
modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua
modules/luci-mod-freifunk/po/ru/freifunk.po
modules/luci-mod-rpc/luasrc/controller/rpc.lua
protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_6in4.lua
protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua
protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua
protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua
protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua
protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua
themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm
themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm
themes/luci-theme-material/htdocs/luci-static/material/css/style.css
themes/luci-theme-material/luasrc/view/themes/material/header.htm
themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm

index ae1eba251692930f5974b67492bcdc7a699c01a6..2de2ed8627f77b8e98d963abfebdbea56b723e30 100644 (file)
@@ -9,4 +9,4 @@ LUCI_PKGARCH:=all
 
 include ../../luci.mk
 
-# call BuildPackage - OpenWrt buildroot signature
\ No newline at end of file
+# call BuildPackage - OpenWrt buildroot signature
index b74858400ba47caf8a514c33c58a085d5e7ef7df..10110666c3ae23578a013103cfff82798d4322ec 100644 (file)
@@ -1,9 +1,8 @@
--- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 -- This is free software, licensed under the Apache License, Version 2.0
 
 module("luci.controller.adblock", package.seeall)
 
-local fs    = require("nixio.fs")
 local util  = require("luci.util")
 local templ = require("luci.template")
 local i18n  = require("luci.i18n")
@@ -16,9 +15,9 @@ function index()
        entry({"admin", "services", "adblock", "tab_from_cbi"}, cbi("adblock/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true
        entry({"admin", "services", "adblock", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true
        entry({"admin", "services", "adblock", "advanced"}, firstchild(), _("Advanced"), 100)
-       entry({"admin", "services", "adblock", "advanced", "blacklist"}, cbi("adblock/blacklist_tab"), _("Edit Blacklist"), 110).leaf = true
-       entry({"admin", "services", "adblock", "advanced", "whitelist"}, cbi("adblock/whitelist_tab"), _("Edit Whitelist"), 120).leaf = true
-       entry({"admin", "services", "adblock", "advanced", "configuration"}, cbi("adblock/configuration_tab"), _("Edit Configuration"), 130).leaf = true
+       entry({"admin", "services", "adblock", "advanced", "blacklist"}, form("adblock/blacklist_tab"), _("Edit Blacklist"), 110).leaf = true
+       entry({"admin", "services", "adblock", "advanced", "whitelist"}, form("adblock/whitelist_tab"), _("Edit Whitelist"), 120).leaf = true
+       entry({"admin", "services", "adblock", "advanced", "configuration"}, form("adblock/configuration_tab"), _("Edit Configuration"), 130).leaf = true
        entry({"admin", "services", "adblock", "advanced", "query"}, template("adblock/query"), _("Query domains"), 140).leaf = true
        entry({"admin", "services", "adblock", "advanced", "result"}, call("queryData"), nil, 150).leaf = true
 end
@@ -27,18 +26,18 @@ function logread()
        local logfile
 
        if nixio.fs.access("/var/log/messages") then
-               logfile = util.trim(util.exec("cat /var/log/messages | grep 'adblock'"))
+               logfile = util.trim(util.exec("grep -F 'adblock-' /var/log/messages"))
        else
-               logfile = util.trim(util.exec("logread -e 'adblock'"))
+               logfile = util.trim(util.exec("logread -e 'adblock-'"))
        end
        templ.render("adblock/logread", {title = i18n.translate("Adblock Logfile"), content = logfile})
 end
 
 function queryData(domain)
-       if domain and domain:match("^[a-zA-Z0-9%-%._]+$") then
+       if domain then
                luci.http.prepare_content("text/plain")
-               local cmd = "/etc/init.d/adblock query %q 2>&1"
-               local util = io.popen(cmd % domain)
+               local cmd = "/etc/init.d/adblock query %s 2>&1"
+               local util = io.popen(cmd % util.shellquote(domain))
                if util then
                        while true do
                                local line = util:read("*l")
index ef70100e4f0b42a2509d378a9929ed4a0b49f230..39688dc194c67433f0ae52fdb00d32020b6c3e50 100644 (file)
@@ -1,22 +1,21 @@
--- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 -- This is free software, licensed under the Apache License, Version 2.0
 
-local fs = require("nixio.fs")
-local util = require("luci.util")
-local uci = require("uci")
-local adbinput = uci.get("adblock", "blacklist", "adb_src" or "/etc/adblock/adblock.blacklist")
+local fs       = require("nixio.fs")
+local util     = require("luci.util")
+local uci      = require("luci.model.uci").cursor()
+local adbinput = uci:get("adblock", "blacklist", "adb_src") or "/etc/adblock/adblock.blacklist"
 
-if not nixio.fs.access(adbinput) then
-       m = SimpleForm("error", nil,
-               translate("Input file not found, please check your configuration."))
+if not fs.access(adbinput) then
+       m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
        m.reset = false
        m.submit = false
        return m
 end
 
-if nixio.fs.stat(adbinput).size > 524288 then
+if fs.stat(adbinput).size >= 102400 then
        m = SimpleForm("error", nil,
-               translate("The file size is too large for online editing in LuCI (&gt; 512 KB). ")
+               translate("The file size is too large for online editing in LuCI (&ge; 100 KB). ")
                .. translate("Please edit this file directly in a terminal session."))
        m.reset = false
        m.submit = false
@@ -38,11 +37,11 @@ f.rows = 20
 f.rmempty = true
 
 function f.cfgvalue()
-       return nixio.fs.readfile(adbinput) or ""
+       return fs.readfile(adbinput) or ""
 end
 
 function f.write(self, section, data)
-       return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+       return fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
 end
 
 function s.handle(self, state, data)
index 1d89485e7983995cf7740a8a2cae2d8f7c44efc4..78636038bf69c68ff48908ae3f469fc53ef12c5f 100644 (file)
@@ -1,17 +1,26 @@
--- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 -- This is free software, licensed under the Apache License, Version 2.0
 
-local fs = require("nixio.fs")
-local util = require("luci.util")
+local fs       = require("nixio.fs")
+local util     = require("luci.util")
 local adbinput = "/etc/config/adblock"
 
-if not nixio.fs.access(adbinput) then
+if not fs.access(adbinput) then
        m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
        m.reset = false
        m.submit = false
        return m
 end
 
+if fs.stat(adbinput).size >= 102400 then
+       m = SimpleForm("error", nil,
+               translate("The file size is too large for online editing in LuCI (&ge; 100 KB). ")
+               .. translate("Please edit this file directly in a terminal session."))
+       m.reset = false
+       m.submit = false
+       return m
+end
+
 m = SimpleForm("input", nil)
 m:append(Template("adblock/config_css"))
 m.submit = translate("Save")
@@ -25,11 +34,11 @@ f.rows = 20
 f.rmempty = true
 
 function f.cfgvalue()
-       return nixio.fs.readfile(adbinput) or ""
+       return fs.readfile(adbinput) or ""
 end
 
 function f.write(self, section, data)
-       return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+       return fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
 end
 
 function s.handle(self, state, data)
index f6914ceda2ee0a643958e0485a0cf9cc51ae6580..3f39622920a3e6013d63f34b9785302f3e89d341 100644 (file)
@@ -1,4 +1,4 @@
--- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 -- This is free software, licensed under the Apache License, Version 2.0
 
 local fs       = require("nixio.fs")
@@ -7,25 +7,16 @@ local sys      = require("luci.sys")
 local util     = require("luci.util")
 local dump     = util.ubus("network.interface", "dump", {})
 local json     = require("luci.jsonc")
-local adbinput = uci.get("adblock", "global", "adb_rtfile") or "/tmp/adb_runtime.json"
-
-if not uci:get("adblock", "extra") then
-       m = SimpleForm("", nil, translate("Please update your adblock config file to use this package.<br />")
-       .. translatef("During opkg package installation use the '--force-maintainer' option to overwrite the pre-existing config file or download a fresh default config from "
-       .. "<a href=\"%s\" target=\"_blank\">"
-       .. "here</a>", "https://raw.githubusercontent.com/openwrt/packages/master/net/adblock/files/adblock.conf"))
-       m.submit = false
-       m.reset = false
-       return m
-end
+local adbinput = uci:get("adblock", "global", "adb_rtfile") or "/tmp/adb_runtime.json"
 
 m = Map("adblock", translate("Adblock"),
        translate("Configuration of the adblock package to block ad/abuse domains by using DNS. ")
        .. translatef("For further information "
        .. "<a href=\"%s\" target=\"_blank\">"
        .. "check the online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md"))
+m.apply_on_parse = true
 
-function m.on_after_commit(self)
+function m.on_apply(self)
        luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1")
        luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
 end
@@ -74,27 +65,39 @@ end
 o2 = s:option(ListValue, "adb_dns", translate("DNS Backend (DNS Directory)"),
        translate("List of supported DNS backends with their default list export directory.<br />")
        .. translate("To overwrite the default path use the 'DNS Directory' option in the extra section below."))
-o2:value("dnsmasq", "dnsmasq (/tmp/dnsmasq.d)")
+o2:value("dnsmasq", "dnsmasq (/tmp)")
 o2:value("unbound", "unbound (/var/lib/unbound)")
 o2:value("named", "named (/var/lib/bind)")
 o2:value("kresd", "kresd (/etc/kresd)")
 o2:value("dnscrypt-proxy","dnscrypt-proxy (/tmp)")
+o2.default = "dnsmasq (/tmp)"
 o2.rmempty = false
 
-o3 = s:option(ListValue, "adb_trigger", translate("Startup Trigger"),
+o3 = s:option(ListValue, "adb_fetchutil", translate("Download Utility"),
+translate("List of supported and fully pre-configured download utilities."))
+o3:value("uclient-fetch")
+o3:value("wget")
+o3:value("curl")
+o3:value("aria2c")
+o3:value("wget-nossl", "wget-nossl (noSSL)")
+o3:value("busybox", "wget-busybox (noSSL)")
+o3.default = "uclient-fetch"
+o3.rmempty = false
+
+o4 = s:option(ListValue, "adb_trigger", translate("Startup Trigger"),
        translate("List of available network interfaces. Usually the startup will be triggered by the 'wan' interface.<br />")
        .. translate("Choose 'none' to disable automatic startups, 'timed' to use a classic timeout (default 30 sec.) or select another trigger interface."))
-o3:value("none")
-o3:value("timed")
+o4:value("none")
+o4:value("timed")
 if dump then
        local i, v
        for i, v in ipairs(dump.interface) do
                if v.interface ~= "loopback" then
-                       o3:value(v.interface)
+                       o4:value(v.interface)
                end
        end
 end
-o3.rmempty = false
+o4.rmempty = false
 
 -- Runtime information
 
@@ -111,6 +114,8 @@ else
                dv1.value = translate("disabled")
        elseif status == "paused" then
                dv1.value = translate("paused")
+       elseif status == "running" then
+               dv1.value = translate("running")
        else
                dv1.value = translate("enabled")
        end
@@ -125,7 +130,7 @@ else
 end
 
 dv3 = ds:option(DummyValue, "", translate("Download Utility (SSL Library)"),
-       translate("For SSL protected blocklist sources you need a suitable SSL library, e.g. 'libustream-ssl' or the wget 'built-in'."))
+       translate("For SSL protected blocklist sources you need a suitable SSL library, e.g. 'libustream-ssl' or 'built-in'."))
 dv3.template = "adblock/runtime"
 if parse == nil then
        dv3.value = translate("n/a")
@@ -160,10 +165,8 @@ end
 -- Blocklist table
 
 bl = m:section(TypedSection, "source", translate("Blocklist Sources"),
-       translate("Available blocklist sources. ")
-       .. translate("List URLs and Shallalist category selections are configurable in the 'Advanced' section.<br />")
-       .. translate("Caution: To prevent OOM exceptions on low memory devices with less than 64 MB free RAM, please do not select too many lists - 5-6 should be sufficient!"))
-bl.template = "cbi/tblsection"
+       translate("<b>Caution:</b> To prevent OOM exceptions on low memory devices with less than 64 MB free RAM, please only select a few of them!"))
+bl.template = "adblock/blocklist"
 
 name = bl:option(Flag, "enabled", translate("Enabled"))
 name.rmempty = false
@@ -177,8 +180,13 @@ function ssl.cfgvalue(self, section)
                return translate("No")
        end
 end
+
 des = bl:option(DummyValue, "adb_src_desc", translate("Description"))
 
+cat = bl:option(DynamicList, "adb_src_cat", translate("Categories"))
+cat.datatype = "uciname"
+cat.optional = true
+
 -- Extra options
 
 e = m:section(NamedSection, "extra", "adblock", translate("Extra Options"),
@@ -217,25 +225,51 @@ e6:depends("adb_backup", 1)
 e6.default = e6.disabled
 e6.rmempty = true
 
-e7 = e:option(Flag, "adb_whitelist_mode", translate("Whitelist Mode"),
-       translate("Block access to all domains except those explicitly listed in the whitelist file."))
-e7.default = e7.disabled
-e7.rmempty = true
-
-e8 = e:option(Value, "adb_dnsdir", translate("DNS Directory"),
+e7 = e:option(Value, "adb_maxqueue", translate("Max. Download Queue"),
+       translate("Size of the download queue to handle downloads &amp; list processing in parallel (default '4').<br />")
+       .. translate("For further performance improvements you can raise this value, e.g. '8' or '16' should be safe."))
+e7.default = 4
+e7.datatype = "range(1,32)"
+e7.rmempty = false
+
+e8 = e:option(Flag, "adb_jail", translate("'Jail' Blocklist Creation"),
+       translate("Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all domains except those listed in the whitelist file.<br />")
+       .. translate("You can use this restrictive blocklist manually e.g. for guest wifi or kidsafe configurations."))
+e8.default = e8.disabled
+e8.rmempty = true
+
+e9 = e:option(Flag, "adb_dnsflush", translate("Flush DNS Cache"),
+       translate("Flush DNS Cache after adblock processing."))
+e9.default = e9.disabled
+e9.rmempty = true
+
+e10 = e:option(Flag, "adb_notify", translate("Email Notification"),
+       translate("Send notification emails in case of a processing error or if domain count is &le; 0.<br />")
+       .. translate("Please note: this needs additional 'msmtp' package installation and setup."))
+e10.default = e10.disabled
+e10.rmempty = true
+
+e11 = e:option(Value, "adb_notifycnt", translate("Email Notification Count"),
+       translate("Raise the minimum email notification count, to get emails if the overall count is less or equal to the given limit (default 0),<br />")
+       .. translate("e.g. to receive an email notification with every adblock update set this value to 150000."))
+e11.default = 0
+e11.datatype = "min(0)"
+e11.optional = true
+
+e12 = e:option(Value, "adb_dnsdir", translate("DNS Directory"),
        translate("Target directory for the generated blocklist 'adb_list.overall'."))
-e8.datatype = "directory"
-e8.optional = true
+e12.datatype = "directory"
+e12.optional = true
 
-e9 = e:option(Value, "adb_whitelist", translate("Whitelist File"),
+e13 = e:option(Value, "adb_whitelist", translate("Whitelist File"),
        translate("Full path to the whitelist file."))
-e9.datatype = "file"
-e9.default = "/etc/adblock/adblock.whitelist"
-e9.optional = true
+e13.datatype = "file"
+e13.default = "/etc/adblock/adblock.whitelist"
+e13.optional = true
 
-e10 = e:option(Value, "adb_triggerdelay", translate("Trigger Delay"),
+e14 = e:option(Value, "adb_triggerdelay", translate("Trigger Delay"),
        translate("Additional trigger delay in seconds before adblock processing begins."))
-e10.datatype = "range(1,60)"
-e10.optional = true
+e14.datatype = "range(1,60)"
+e14.optional = true
 
 return m
index a3659eb469d10530565313b575e4360f6e0ae7c5..01d3911f6e5d447fad41dd11d29f53260f7587fb 100644 (file)
@@ -1,22 +1,22 @@
--- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 -- This is free software, licensed under the Apache License, Version 2.0
 
-local fs = require("nixio.fs")
-local util = require("luci.util")
-local uci = require("uci")
-local adbinput = uci.get("adblock", "global", "adb_whitelist") or "/etc/adblock/adblock.whitelist"
+local fs       = require("nixio.fs")
+local util     = require("luci.util")
+local uci      = require("luci.model.uci").cursor()
+local adbinput = uci:get("adblock", "global", "adb_whitelist") or "/etc/adblock/adblock.whitelist"
 
-if not nixio.fs.access(adbinput) then
+if not fs.access(adbinput) then
        m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
        m.reset = false
        m.submit = false
        return m
 end
 
-if nixio.fs.stat(adbinput).size > 524288 then
+if fs.stat(adbinput).size >= 102400 then
        m = SimpleForm("error", nil,
-       translate("The file size is too large for online editing in LuCI (&gt; 512 KB). ")
-       .. translate("Please edit this file directly in a terminal session."))
+               translate("The file size is too large for online editing in LuCI (&ge; 100 KB). ")
+               .. translate("Please edit this file directly in a terminal session."))
        m.reset = false
        m.submit = false
        return m
@@ -37,11 +37,11 @@ f.rows = 20
 f.rmempty = true
 
 function f.cfgvalue()
-       return nixio.fs.readfile(adbinput) or ""
+       return fs.readfile(adbinput) or ""
 end
 
 function f.write(self, section, data)
-       return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+       return fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
 end
 
 function s.handle(self, state, data)
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm b/applications/luci-app-adblock/luasrc/view/adblock/blocklist.htm
new file mode 100644 (file)
index 0000000..b4b62db
--- /dev/null
@@ -0,0 +1,87 @@
+<%#
+Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%-
+local rowcnt = 1
+function rowstyle()
+       rowcnt = rowcnt + 1
+       return (rowcnt % 2) + 1
+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
+-%>
+
+<style type="text/css">
+table.cbi-section-table th,
+table.cbi-section-table td,
+.cbi-section-table-cell,
+.cbi-section-table-row,
+.cbi-input-text
+{
+       text-align:left;
+       vertical-align:top;
+       margin-right:auto;
+       margin-left:0px;
+}
+.cbi-input-text
+{
+       outline:none;
+       box-shadow:none;
+       background:transparent;
+       padding-left:2px;
+       line-height:25px;
+       height:25px;
+       width:10em;
+}
+</style>
+
+<fieldset class="cbi-section" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
+       <% if self.title then -%>
+               <legend><%=self.title%></legend>
+       <%- end %>
+       <div class="cbi-section-descr"><%=self.description%></div>
+       <div class="cbi-section-node">
+               <table class="cbi-section-table">
+                       <tr class="cbi-section-table-titles">
+                       <%- if self.sectionhead then -%>
+                               <th class="cbi-section-table-cell"><%=self.sectionhead%></th>
+                       <%- else -%>
+                               <th>&#160;</th>
+                       <%- end -%>
+                       <%- for i, k in pairs(self.children) do -%>
+                               <th class="cbi-section-table-cell"<%=width(k)%>>
+                                       <%-=k.title-%>
+                               </th>
+                       <%- end -%>
+                       </tr>
+                       <%- local isempty = true
+                               for i, k in ipairs(self:cfgsections()) do
+                                       section = k
+                                       isempty = false
+                                       scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" }
+                       -%>
+                       <tr class="cbi-section-table-row" id="cbi-<%=self.config%>-<%=section%>">
+                               <th><%=k%></th>
+                               <%-
+                                       for k, node in ipairs(self.children) do
+                                               node:render(section, scope or {})
+                                       end
+                                       if not scope.cbid:match("adb_src_cat") then
+                               -%>
+                                       <td class="cbi-value-field">&#160;</td>
+                               <%- end -%>
+                       </tr>
+                       <%- end -%>
+               </table>
+       </div>
+</fieldset>
index 5e25a549c6db5323c13cb2a181a0ebcb04cff114..082ec806f8efe89cae5dfed4c45c0eabb60a019f 100644 (file)
@@ -1,5 +1,5 @@
 <%#
-Copyright 2017 Dirk Brenken (dev@brenken.org)
+Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 This is free software, licensed under the Apache License, Version 2.0
 -%>
 
@@ -11,4 +11,10 @@ This is free software, licensed under the Apache License, Version 2.0
                <textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
        </fieldset>
 </div>
+
+<script type="text/javascript">
+       var textarea = document.getElementById('logread_id');
+       textarea.scrollTop = textarea.scrollHeight;
+</script>
+
 <%+footer%>
index ce706e40aa5680e3292e328d86a37bf32cb2a73c..8bbc92664d14e7309e776d242fdccebc6527d36e 100644 (file)
@@ -49,7 +49,7 @@ This is free software, licensed under the Apache License, Version 2.0
                <fieldset class="cbi-section">
                        <div class="cbi-section-descr"><%:This form allows you to query active block lists for certain domains, e.g. for whitelisting.%></div>
                        <div style="width:33%; float:left;">
-                               <input style="margin: 5px 0" type="text" value="www.lede-project.org" name="input" />
+                               <input style="margin: 5px 0" type="text" value="google.com" name="input" />
                                <input type="button" value="<%:Query%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.input)" />
                        </div>
                        <br style="clear:both" />
index 0221a75ed176e2a8ed935504e74c06dd1c78d961..c01d9a5c086ba40dbac65944deea9db32b8e3424 100644 (file)
@@ -1,10 +1,10 @@
 <%#
-Copyright 2017 Dirk Brenken (dev@brenken.org)
+Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 This is free software, licensed under the Apache License, Version 2.0
 -%>
 
 <%+cbi/valueheader%>
 
-<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="border:none;box-shadow:none;background:transparent;color:#0069d6;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
+<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="outline:none;border:none;box-shadow:none;background:transparent;color:#0069d6;font-weight:bold;line-height:30px;height:30px;width:20em;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
 
 <%+cbi/valuefooter%>
index af3414c9972915441e15c487df714514081dffde..7c64468e6a5082dcab6d6e7aa1ae2e006756c1ec 100644 (file)
@@ -11,9 +11,17 @@ msgstr ""
 "X-Generator: Poedit 2.0.3\n"
 "Language: it\n"
 
+msgid "'Jail' Blocklist Creation"
+msgstr ""
+
 msgid "-------"
 msgstr ""
 
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+
 msgid "Adblock"
 msgstr "Adblock"
 
@@ -32,26 +40,21 @@ msgstr "Tempo addizionale in secondi di attesa prima che adblock si avvii."
 msgid "Advanced"
 msgstr "Avanzato"
 
-msgid "Available blocklist sources."
-msgstr "Fonti lista di blocco disponibili."
-
 msgid "Backup Directory"
 msgstr "Directory del Backup"
 
 msgid "Backup Mode"
 msgstr ""
 
-msgid ""
-"Block access to all domains except those explicitly listed in the whitelist "
-"file."
-msgstr ""
-
 msgid "Blocklist Sources"
 msgstr "Fonti lista di Blocco"
 
 msgid ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select too many lists - 5-6 should be sufficient!"
+"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
+"domains except those listed in the whitelist file.<br />"
+msgstr ""
+
+msgid "Categories"
 msgstr ""
 
 msgid ""
@@ -91,13 +94,10 @@ msgstr ""
 "Non aggiornare automaticamente le liste durante l'avvio, usa invece i backup "
 "della lista di blocco."
 
-msgid "Download Utility (SSL Library)"
+msgid "Download Utility"
 msgstr ""
 
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
+msgid "Download Utility (SSL Library)"
 msgstr ""
 
 msgid "Edit Blacklist"
@@ -109,6 +109,12 @@ msgstr "Modifica Configurazione"
 msgid "Edit Whitelist"
 msgstr "Modifica Lista Bianca"
 
+msgid "Email Notification"
+msgstr ""
+
+msgid "Email Notification Count"
+msgstr ""
+
 msgid "Enable Adblock"
 msgstr "Attiva Adblock"
 
@@ -130,18 +136,27 @@ msgstr "Abilitato"
 msgid "Extra Options"
 msgstr "Opzioni Extra"
 
+msgid "Flush DNS Cache"
+msgstr ""
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr ""
+
 msgid ""
 "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
-"'libustream-ssl' or the wget 'built-in'."
+"'libustream-ssl' or 'built-in'."
 msgstr ""
-"Per le fonti delle liste protette da SSL hai bisogno di una libreria SSL "
-"adatta, p.e. 'libustream-ssl' o wget 'built-in'."
 
 msgid ""
 "For further information <a href=\"%s\" target=\"_blank\">check the online "
 "documentation</a>"
 msgstr ""
 
+msgid ""
+"For further performance improvements you can raise this value, e.g. '8' or "
+"'16' should be safe."
+msgstr ""
+
 msgid "Force Local DNS"
 msgstr "Forza DNS Locale"
 
@@ -160,13 +175,6 @@ msgstr "Dominio invalido specificato!"
 msgid "Last Run"
 msgstr "Ultimo Avvio"
 
-msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr ""
-"Le selezioni degli URL delle liste e categorie Shallalist sono configurabili "
-"nella sezione 'Avanzato'.<br />"
-
 msgid ""
 "List of available network interfaces. Usually the startup will be triggered "
 "by the 'wan' interface.<br />"
@@ -179,9 +187,15 @@ msgstr ""
 "Lista dei backend DNS supportati con la loro directory di default di esporto "
 "della lista.<br />"
 
+msgid "List of supported and fully pre-configured download utilities."
+msgstr ""
+
 msgid "Loading"
 msgstr "Caricando"
 
+msgid "Max. Download Queue"
+msgstr ""
+
 msgid "No"
 msgstr "No"
 
@@ -208,7 +222,8 @@ msgid "Please edit this file directly in a terminal session."
 msgstr ""
 "Per favore modifica questo file direttamente in una sessione al terminale."
 
-msgid "Please update your adblock config file to use this package.<br />"
+msgid ""
+"Please note: this needs additional 'msmtp' package installation and setup."
 msgstr ""
 
 msgid "Query"
@@ -217,6 +232,11 @@ msgstr "Interrogazione"
 msgid "Query domains"
 msgstr "Interrogazione domini"
 
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+
 msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
 msgstr ""
 "Reindirizza tutte le richieste DNS dalla zona 'lan' al risolvitore locale."
@@ -233,6 +253,16 @@ msgstr "Ric. SSL"
 msgid "Save"
 msgstr "Salva"
 
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+
+msgid ""
+"Size of the download queue to handle downloads &amp; list processing in "
+"parallel (default '4').<br />"
+msgstr ""
+
 msgid "Startup Trigger"
 msgstr "Innesco d'Avvio"
 
@@ -250,10 +280,8 @@ msgstr ""
 msgid "Target directory for the generated blocklist 'adb_list.overall'."
 msgstr "Directory per la lista di blocco generata 'adb_list.overall'."
 
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
 msgstr ""
-"La grandezza del file è troppo grande per modificarla online in LuCI (&gt; "
-"512 KB)."
 
 msgid ""
 "This form allows you to modify the content of the adblock blacklist (%s)."
@@ -312,15 +340,22 @@ msgstr "Aspettando che il comando venga completato..."
 msgid "Whitelist File"
 msgstr ""
 
-msgid "Whitelist Mode"
-msgstr ""
-
 msgid "Yes"
 msgstr "Sì"
 
+msgid ""
+"You can use this restrictive blocklist manually e.g. for guest wifi or "
+"kidsafe configurations."
+msgstr ""
+
 msgid "disabled"
 msgstr "disabilitato"
 
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+
 msgid "enabled"
 msgstr "abilitato"
 
@@ -333,6 +368,31 @@ msgstr "n/d"
 msgid "paused"
 msgstr "in pausa"
 
+msgid "running"
+msgstr ""
+
+#~ msgid "Available blocklist sources."
+#~ msgstr "Fonti lista di blocco disponibili."
+
+#~ msgid ""
+#~ "List URLs and Shallalist category selections are configurable in the "
+#~ "'Advanced' section.<br />"
+#~ msgstr ""
+#~ "Le selezioni degli URL delle liste e categorie Shallalist sono "
+#~ "configurabili nella sezione 'Avanzato'.<br />"
+
+#~ msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+#~ msgstr ""
+#~ "La grandezza del file è troppo grande per modificarla online in LuCI "
+#~ "(&gt; 512 KB)."
+
+#~ msgid ""
+#~ "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+#~ "'libustream-ssl' or the wget 'built-in'."
+#~ msgstr ""
+#~ "Per le fonti delle liste protette da SSL hai bisogno di una libreria SSL "
+#~ "adatta, p.e. 'libustream-ssl' o wget 'built-in'."
+
 #~ msgid ""
 #~ "Caution: Please don't select big lists or many lists at once on low "
 #~ "memory devices to prevent OOM exceptions!"
index becef993fdeac5533ff9b202fdd52791040440ac..5276f69626849183e0aee349062b5c87045425a0 100644 (file)
@@ -8,12 +8,22 @@ msgstr ""
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.4\n"
+"X-Generator: Poedit 2.0.7\n"
 "Language: ja\n"
 
+msgid "'Jail' Blocklist Creation"
+msgstr "'Jail' ブロックリストの作成"
+
 msgid "-------"
 msgstr "(利用不可)"
 
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+"<b>警告:</b> RAM の空き容量が 64MB に満たないメモリー容量の小さいデバイスで"
+"は、 OutOfMemory (OOM) 例外を防ぐために少数のみを選択してください。"
+
 msgid "Adblock"
 msgstr "Adblock"
 
@@ -32,31 +42,24 @@ msgstr "Adblock の処理が開始されるまでの、追加の遅延時間(
 msgid "Advanced"
 msgstr "詳細設定"
 
-msgid "Available blocklist sources."
-msgstr "利用可能なブロックリスト提供元です。"
-
 msgid "Backup Directory"
 msgstr "バックアップ先 ディレクトリ"
 
 msgid "Backup Mode"
 msgstr "バックアップ モード"
 
-msgid ""
-"Block access to all domains except those explicitly listed in the whitelist "
-"file."
-msgstr ""
-"ホワイトリストに列記されていない全ドメインへのアクセスをブロックします。"
-
 msgid "Blocklist Sources"
 msgstr "ブロックリスト提供元"
 
 msgid ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select too many lists - 5-6 should be sufficient!"
+"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
+"domains except those listed in the whitelist file.<br />"
 msgstr ""
-"警告: RAM の空き容量が 64MB に満たないメモリー容量の小さいデバイスでは、 "
-"OutOfMemory (OOM) 例外を防ぐために、多くのリストを選択しないようにしてくださ"
-"い。5 - 6個のリストで十分です。"
+"ホワイトリストに存在しない全ドメインへのアクセスをブロックするために、追加で "
+"'Jail' リスト (/tmp/adb_list.jail) を作成します。<br />"
+
+msgid "Categories"
+msgstr "カテゴリー"
 
 msgid ""
 "Choose 'none' to disable automatic startups, 'timed' to use a classic "
@@ -99,18 +102,12 @@ msgstr ""
 "サービス起動時にブロックリストを自動的に更新せず、代わりにバックアップされた"
 "ブロックリストを使用します。"
 
+msgid "Download Utility"
+msgstr "ダウンロード ユーティリティ"
+
 msgid "Download Utility (SSL Library)"
 msgstr "ダウンロード ユーティリティ(SSL ライブラリ)"
 
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
-msgstr ""
-"opkg でパッケージをインストールする際に '--force-maintainer' オプションを使用"
-"して既存の設定ファイルを上書きするか、 <a href=\"%s\" target=\"_blank\">ここ"
-"</a> からデフォルトの設定ファイルをダウンロードしてください。"
-
 msgid "Edit Blacklist"
 msgstr "ブラックリストの編集"
 
@@ -120,6 +117,12 @@ msgstr "設定の編集"
 msgid "Edit Whitelist"
 msgstr "ホワイトリストの編集"
 
+msgid "Email Notification"
+msgstr "メール通知"
+
+msgid "Email Notification Count"
+msgstr "メール通知カウント"
+
 msgid "Enable Adblock"
 msgstr "Adblock の有効化"
 
@@ -143,12 +146,18 @@ msgstr "有効"
 msgid "Extra Options"
 msgstr "拡張オプション"
 
+msgid "Flush DNS Cache"
+msgstr "DNS キャッシュのクリア"
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr "Adblock 処理の後に DNS キャッシュをクリアします。"
+
 msgid ""
 "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
-"'libustream-ssl' or the wget 'built-in'."
+"'libustream-ssl' or 'built-in'."
 msgstr ""
 "SSLで保護されているブロックリストの取得には、適切なSSL ライブラリが必要です。"
-"例: 'libustream-ssl' または wget 'built-in'"
+"例: 'libustream-ssl' または 'built-in'"
 
 msgid ""
 "For further information <a href=\"%s\" target=\"_blank\">check the online "
@@ -157,6 +166,13 @@ msgstr ""
 "詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a> を"
 "確認してください。"
 
+msgid ""
+"For further performance improvements you can raise this value, e.g. '8' or "
+"'16' should be safe."
+msgstr ""
+"パフォーマンスの更なる改善のため、安全と思われる '8' や '16' などの値に引き上"
+"げることができます。"
+
 msgid "Force Local DNS"
 msgstr "ローカル DNS の強制"
 
@@ -175,13 +191,6 @@ msgstr "無効なドメインが指定されています!"
 msgid "Last Run"
 msgstr "最終実行"
 
-msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr ""
-"リストの URL 及び \"Shalla\" リストのカテゴリー設定は、'詳細設定' セクション"
-"で設定することができます。<br />"
-
 msgid ""
 "List of available network interfaces. Usually the startup will be triggered "
 "by the 'wan' interface.<br />"
@@ -196,9 +205,15 @@ msgstr ""
 "サポートされる DNS バックエンドと、それぞれのデフォルトのリスト出力先ディレク"
 "トリのリストです<br />"
 
+msgid "List of supported and fully pre-configured download utilities."
+msgstr "サポートされ、かつ設定済のダウンロード ユーティリティの一覧です。"
+
 msgid "Loading"
 msgstr "読込中"
 
+msgid "Max. Download Queue"
+msgstr "ダウンロード キューの上限"
+
 msgid "No"
 msgstr "いいえ"
 
@@ -223,10 +238,10 @@ msgstr ""
 msgid "Please edit this file directly in a terminal session."
 msgstr "ターミナル セッションで直接このファイルを編集してください。"
 
-msgid "Please update your adblock config file to use this package.<br />"
+msgid ""
+"Please note: this needs additional 'msmtp' package installation and setup."
 msgstr ""
-"このパッケージを使用するには、既存の Adblock 設定ファイルを更新してください。"
-"<br />"
+"注意: これには、追加で 'msmtp' のインストールとセットアップが必要です。"
 
 msgid "Query"
 msgstr "検索"
@@ -234,6 +249,13 @@ msgstr "検索"
 msgid "Query domains"
 msgstr "ドメインの検索"
 
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+"メール通知を行うドメイン カウントの下限を設定します。全体カウントが指定された"
+"値以下の場合、メールを受け取ります(規定値: 0)。<br />"
+
 msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
 msgstr ""
 "'lan' ゾーンからの全 DNS クエリを、ローカル リゾルバにリダイレクトします。"
@@ -250,6 +272,19 @@ msgstr "SSL 必須"
 msgid "Save"
 msgstr "保存"
 
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+"処理エラーまたはドメイン カウントが0以下の場合、メールを送信します。<br />"
+
+msgid ""
+"Size of the download queue to handle downloads &amp; list processing in "
+"parallel (default '4').<br />"
+msgstr ""
+"ダウンロードの制御とリストの処理を同時並行的に行うダウンロード キューのサイズ"
+"です(既定値: '4')。<br />"
+
 msgid "Startup Trigger"
 msgstr "スタートアップ トリガ"
 
@@ -269,10 +304,10 @@ msgstr ""
 msgid "Target directory for the generated blocklist 'adb_list.overall'."
 msgstr "生成されたブロックリスト 'adb_list.overall' の保存先ディレクトリです。"
 
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
 msgstr ""
-"ファイル サイズが大きすぎる(512 KB超)ため、 LuCI 上でオンライン編集できませ"
-"。"
+"LuCI上でのオンライン編集を行うには、ファイルサイズが大きすぎます (&ge; 100 "
+"KB)。"
 
 msgid ""
 "This form allows you to modify the content of the adblock blacklist (%s)."
@@ -331,15 +366,25 @@ msgstr "コマンド実行中です..."
 msgid "Whitelist File"
 msgstr "ホワイトリスト ファイル"
 
-msgid "Whitelist Mode"
-msgstr "ホワイトリスト モード"
-
 msgid "Yes"
 msgstr "はい"
 
+msgid ""
+"You can use this restrictive blocklist manually e.g. for guest wifi or "
+"kidsafe configurations."
+msgstr ""
+"この制約の厳しいブロックリストを、ゲスト WiFi や子供の安全を守る設定などに手"
+"動で利用することができます。"
+
 msgid "disabled"
 msgstr "無効"
 
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+"例: Adblock のアップデート毎にメールを受け取るには、150000 に設定します。"
+
 msgid "enabled"
 msgstr "有効"
 
@@ -351,3 +396,6 @@ msgstr "利用不可"
 
 msgid "paused"
 msgstr "一時停止"
+
+msgid "running"
+msgstr "実行中"
index f51791f48dd0de9c1e0ba998883312118417a43d..6e8098a395030d220b7af31419131e88cfb39a07 100644 (file)
@@ -12,9 +12,17 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 "Language: pt_BR\n"
 
+msgid "'Jail' Blocklist Creation"
+msgstr ""
+
 msgid "-------"
 msgstr ""
 
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+
 msgid "Adblock"
 msgstr "Adblock"
 
@@ -35,26 +43,21 @@ msgstr ""
 msgid "Advanced"
 msgstr "Avançado"
 
-msgid "Available blocklist sources."
-msgstr "Fontes de listas de bloqueio disponíveis."
-
 msgid "Backup Directory"
 msgstr "Diretório da cópia de segurança"
 
 msgid "Backup Mode"
 msgstr ""
 
-msgid ""
-"Block access to all domains except those explicitly listed in the whitelist "
-"file."
-msgstr ""
-
 msgid "Blocklist Sources"
 msgstr "Fontes de listas de bloqueio"
 
 msgid ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select too many lists - 5-6 should be sufficient!"
+"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
+"domains except those listed in the whitelist file.<br />"
+msgstr ""
+
+msgid "Categories"
 msgstr ""
 
 msgid ""
@@ -92,15 +95,12 @@ msgstr ""
 "Não atualize as listas de bloqueio automaticamente durante o início, use o "
 "backup das listas como alternativa."
 
+msgid "Download Utility"
+msgstr ""
+
 msgid "Download Utility (SSL Library)"
 msgstr "Utilitário de Download (Biblioteca SSL)"
 
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
-msgstr ""
-
 msgid "Edit Blacklist"
 msgstr "Editar Lista de Bloqueio"
 
@@ -110,6 +110,12 @@ msgstr "Editar Configuração"
 msgid "Edit Whitelist"
 msgstr "Editar Lista Permitida"
 
+msgid "Email Notification"
+msgstr ""
+
+msgid "Email Notification Count"
+msgstr ""
+
 msgid "Enable Adblock"
 msgstr "Habilitar adblock"
 
@@ -130,18 +136,27 @@ msgstr "Habilitado"
 msgid "Extra Options"
 msgstr "Opções adicionais"
 
+msgid "Flush DNS Cache"
+msgstr ""
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr ""
+
 msgid ""
 "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
-"'libustream-ssl' or the wget 'built-in'."
+"'libustream-ssl' or 'built-in'."
 msgstr ""
-"Para uma lista de bloqueio protegida por SSL você precisa de uma biblioteca "
-"SSL adequada, e.x. 'libustream-ssl' ou o wget 'built-in'."
 
 msgid ""
 "For further information <a href=\"%s\" target=\"_blank\">check the online "
 "documentation</a>"
 msgstr ""
 
+msgid ""
+"For further performance improvements you can raise this value, e.g. '8' or "
+"'16' should be safe."
+msgstr ""
+
 msgid "Force Local DNS"
 msgstr "Force o DNS local"
 
@@ -160,11 +175,6 @@ msgstr "Domínio especificado inválido!"
 msgid "Last Run"
 msgstr ""
 
-msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr ""
-
 msgid ""
 "List of available network interfaces. Usually the startup will be triggered "
 "by the 'wan' interface.<br />"
@@ -175,9 +185,15 @@ msgid ""
 ">"
 msgstr ""
 
+msgid "List of supported and fully pre-configured download utilities."
+msgstr ""
+
 msgid "Loading"
 msgstr "Carregando"
 
+msgid "Max. Download Queue"
+msgstr ""
+
 msgid "No"
 msgstr "Não"
 
@@ -201,7 +217,8 @@ msgstr ""
 msgid "Please edit this file directly in a terminal session."
 msgstr "Por favor edite esse arquivo direto em uma sessão de terminal."
 
-msgid "Please update your adblock config file to use this package.<br />"
+msgid ""
+"Please note: this needs additional 'msmtp' package installation and setup."
 msgstr ""
 
 msgid "Query"
@@ -210,6 +227,11 @@ msgstr "Consulta"
 msgid "Query domains"
 msgstr "Consulta de domínios"
 
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+
 msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
 msgstr ""
 
@@ -225,6 +247,16 @@ msgstr "req. de SSL"
 msgid "Save"
 msgstr "Salvar"
 
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+
+msgid ""
+"Size of the download queue to handle downloads &amp; list processing in "
+"parallel (default '4').<br />"
+msgstr ""
+
 msgid "Startup Trigger"
 msgstr ""
 
@@ -242,9 +274,8 @@ msgstr ""
 msgid "Target directory for the generated blocklist 'adb_list.overall'."
 msgstr ""
 
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
 msgstr ""
-"O tamanho do arquivo é muito grande para edição online no LuCI (&gt; 512 KB)."
 
 msgid ""
 "This form allows you to modify the content of the adblock blacklist (%s)."
@@ -301,15 +332,22 @@ msgstr "Aguardando por comando para completar..."
 msgid "Whitelist File"
 msgstr ""
 
-msgid "Whitelist Mode"
-msgstr ""
-
 msgid "Yes"
 msgstr "Sim"
 
+msgid ""
+"You can use this restrictive blocklist manually e.g. for guest wifi or "
+"kidsafe configurations."
+msgstr ""
+
 msgid "disabled"
 msgstr ""
 
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+
 msgid "enabled"
 msgstr ""
 
@@ -322,6 +360,24 @@ msgstr "n/d"
 msgid "paused"
 msgstr ""
 
+msgid "running"
+msgstr ""
+
+#~ msgid "Available blocklist sources."
+#~ msgstr "Fontes de listas de bloqueio disponíveis."
+
+#~ msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+#~ msgstr ""
+#~ "O tamanho do arquivo é muito grande para edição online no LuCI (&gt; 512 "
+#~ "KB)."
+
+#~ msgid ""
+#~ "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+#~ "'libustream-ssl' or the wget 'built-in'."
+#~ msgstr ""
+#~ "Para uma lista de bloqueio protegida por SSL você precisa de uma "
+#~ "biblioteca SSL adequada, e.x. 'libustream-ssl' ou o wget 'built-in'."
+
 #~ msgid ""
 #~ "Create compressed blocklist backups, they will be used in case of "
 #~ "download errors or during startup in manual mode."
diff --git a/applications/luci-app-adblock/po/ru/adblock.po b/applications/luci-app-adblock/po/ru/adblock.po
new file mode 100644 (file)
index 0000000..24f42a7
--- /dev/null
@@ -0,0 +1,436 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: adblock\n"
+"POT-Creation-Date: 2017-10-22 13:00+0300\n"
+"PO-Revision-Date: 2018-02-07 00:23+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"
+
+msgid "'Jail' Blocklist Creation"
+msgstr "Создание Черного<br />списка 'Jail'"
+
+msgid "-------"
+msgstr "-------"
+
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+
+msgid "Adblock"
+msgstr "AdBlock"
+
+msgid "Adblock Logfile"
+msgstr "Ведение системного журала Adblock-ом"
+
+msgid "Adblock Status"
+msgstr "Состояние Adblock-а"
+
+msgid "Adblock Version"
+msgstr "Версия Adblock-а"
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr "Дополнительная задержка в секундах до начала работы Adblock-a."
+
+msgid "Advanced"
+msgstr "Дополнительно"
+
+msgid "Backup Directory"
+msgstr "Папка для бэкапа"
+
+msgid "Backup Mode"
+msgstr "Режим сохранения бекапа"
+
+msgid "Blocklist Sources"
+msgstr "Источники списков блокировки"
+
+msgid ""
+"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
+"domains except those listed in the whitelist file.<br />"
+msgstr ""
+"Создать дополнительный Черный список 'Jail' (/tmp/adb_list.jail), чтобы "
+"заблокировать доступ ко всем доменам, кроме тех что перечислены в файле "
+"Белого списка.<br />"
+
+msgid "Categories"
+msgstr ""
+
+msgid ""
+"Choose 'none' to disable automatic startups, 'timed' to use a classic "
+"timeout (default 30 sec.) or select another trigger interface."
+msgstr ""
+"Выберите 'none', чтобы отключить автоматический старт, 'timed', чтобы "
+"использовать дефолтную задержку (по умолчанию 30 сек.) или выберите другой "
+"интерфейс запуска."
+
+msgid "Collecting data..."
+msgstr "Сбор данных..."
+
+msgid ""
+"Configuration of the adblock package to block ad/abuse domains by using DNS."
+msgstr ""
+"Настройка Adblock. Приложения для блокировки ненадежных или добавления "
+"доверенных доменов используя DNS. "
+
+msgid ""
+"Create compressed blocklist backups, they will be used in case of download "
+"errors or during startup in backup mode."
+msgstr ""
+"Создавайте сжатые резервные копии списков блокировки, они будут "
+"использоваться в случае ошибок загрузки или при запуске в ручном режиме."
+
+msgid "DNS Backend (DNS Directory)"
+msgstr "DNS бэкенд (папка DNS)"
+
+msgid "DNS Directory"
+msgstr "Папка DNS"
+
+msgid "Description"
+msgstr "Описание"
+
+msgid ""
+"Do not automatically update blocklists during startup, use blocklist backups "
+"instead."
+msgstr ""
+"Не обновляйте списки блокировок автоматически во время запуска, вместо этого "
+"используйте резервные копии списков блокировок."
+
+msgid "Download Utility"
+msgstr "Скачать утилиту"
+
+msgid "Download Utility (SSL Library)"
+msgstr "Загрузить утилиту (библиотека SSL)"
+
+msgid "Edit Blacklist"
+msgstr "Редактировать Черный список"
+
+msgid "Edit Configuration"
+msgstr "Редактировать config файл"
+
+msgid "Edit Whitelist"
+msgstr "Редактировать Белый список"
+
+msgid "Email Notification"
+msgstr "Уведомление на email"
+
+msgid "Email Notification Count"
+msgstr "Кол-во уведомлений на email"
+
+msgid "Enable Adblock"
+msgstr "Включить Adblock"
+
+msgid "Enable Blocklist Backup"
+msgstr "Включить сохранение<br />списка блокировок"
+
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB free RAM)"
+msgstr ""
+"Включите полную сортировку / удаление дубликатов памяти на устройствах с "
+"низким объемом  памяти (&lt; 64 MB свободной оперативной памяти)."
+
+msgid "Enable verbose debug logging in case of any processing error."
+msgstr "Включите подробное ведение журнала отладки в случае ошибки обработки."
+
+msgid "Enabled"
+msgstr "Включено"
+
+msgid "Extra Options"
+msgstr "Дополнительные настройки"
+
+msgid "Flush DNS Cache"
+msgstr "Очистка кэша DNS"
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr "Очистки DNS-кэша после обработки Adblock-ом."
+
+msgid ""
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or 'built-in'."
+msgstr ""
+"Для SSL-защищенных источников списков блокировки, вам нужны подходящие SSL "
+"библиотеки, например 'libustream-ssl' или 'built-in'."
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">check the online "
+"documentation</a>"
+msgstr ""
+"<br />Для получения дополнительной информации <a href=\"%s\" target=\"_blank"
+"\"> смотрите онлайн документацию</a>."
+
+msgid ""
+"For further performance improvements you can raise this value, e.g. '8' or "
+"'16' should be safe."
+msgstr ""
+"Для повышения производительности вы можете увеличить это значение, например "
+"значения '8' или '16' повысят безопасность."
+
+msgid "Force Local DNS"
+msgstr "Назначить локальный DNS"
+
+msgid "Force Overall Sort"
+msgstr "Назначить полную сортировку"
+
+msgid "Full path to the whitelist file."
+msgstr "Полный путь к файлу Белого списка."
+
+msgid "Input file not found, please check your configuration."
+msgstr "Config файл не найден, настройте config файл."
+
+msgid "Invalid domain specified!"
+msgstr "Задан недопустимый домен!"
+
+msgid "Last Run"
+msgstr "Последнее время запуска"
+
+msgid ""
+"List of available network interfaces. Usually the startup will be triggered "
+"by the 'wan' interface.<br />"
+msgstr ""
+"Список доступных сетевых интерфейсов. По умолчанию установлен 'wan' "
+"интерфейс.<br />"
+
+msgid ""
+"List of supported DNS backends with their default list export directory.<br /"
+">"
+msgstr ""
+"Список поддерживаемых серверов DNS перемещается в папку по умолчанию.<br />"
+
+msgid "List of supported and fully pre-configured download utilities."
+msgstr ""
+"Список поддерживаемых и полностью предварительно настроенных утилит загрузки."
+
+msgid "Loading"
+msgstr "Загрузка"
+
+msgid "Max. Download Queue"
+msgstr "Максимальное значение очереди загрузки"
+
+msgid "No"
+msgstr "Нет"
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+"Возможные варианты детальной настройки, если значения по умолчанию не "
+"подходят для вас."
+
+msgid "Overall Domains"
+msgstr "Итоговые домены"
+
+msgid "Overview"
+msgstr "Главное меню"
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+"Добавляйте только один домен в строке. Комментарии вводятся используя '#' "
+"разрешенные - ip адреса, метасимволы и нерегулярные выражения."
+
+msgid "Please edit this file directly in a terminal session."
+msgstr "Отредактируйте данный файл, строго в терминале."
+
+msgid ""
+"Please note: this needs additional 'msmtp' package installation and setup."
+msgstr "Внимание: это потребует дополнительной установки пакета 'msmtp'."
+
+msgid "Query"
+msgstr "Запрос"
+
+msgid "Query domains"
+msgstr "Запрос доменов"
+
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+"Увеличьте количество уведомлений по email, чтобы получить сообщения, если "
+"общее количество меньше или равно заданному пределу (по умолчанию 0),<br />"
+
+msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
+msgstr ""
+"Перенаправлять все DNS запросы с интерфейса 'lan' на обработку Adblock-ом."
+
+msgid "Resume"
+msgstr "Возобновить"
+
+msgid "Runtime Information"
+msgstr "Информация о состоянии"
+
+msgid "SSL req."
+msgstr "Запрос SSL"
+
+msgid "Save"
+msgstr "Сохранить"
+
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+"Отправлять по email уведомления в случае ошибки обработки или если домен "
+"&le; 0.<br />"
+
+msgid ""
+"Size of the download queue to handle downloads &amp; list processing in "
+"parallel (default '4').<br />"
+msgstr ""
+"Значение очереди загрузки для выполнения параллельных загрузок (по умолчанию "
+"'4').<br />"
+
+msgid "Startup Trigger"
+msgstr "Назначить"
+
+msgid "Suspend"
+msgstr "Приостановить"
+
+msgid "Suspend / Resume Adblock"
+msgstr "Приостановить / Возобновить Adblock"
+
+msgid ""
+"Target directory for adblock backups. Please use only non-volatile disks, e."
+"g. an external usb stick."
+msgstr ""
+"Назначить папку для резервного копирования Adblock. Используйте такие "
+"накопители, как usb флешка."
+
+msgid "Target directory for the generated blocklist 'adb_list.overall'."
+msgstr "Назначить папку для создания списка блокировки 'adb_list.overall'."
+
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+"Страница позволяет изменять содержимое Черного списка Adblock (%s).<br />"
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+"Страница позволяет изменять содержимое Белого списка Adblock (%s).<br />"
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+"Страница позволяет изменять содержимое главного config файла Adblock-a (/etc/"
+"config/adblock)."
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+"Страница позволяет запросить домены для конкретных списков, например для "
+"Белого списка."
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr "Страница системного журнала. Только сообщения связанные с Adblock."
+
+msgid ""
+"To overwrite the default path use the 'DNS Directory' option in the extra "
+"section below."
+msgstr ""
+"Чтобы заменить дефолтный путь, используйте строку ниже 'Папка DNS' в разделе "
+"'Дополнительные настройки'."
+
+msgid "Trigger Delay"
+msgstr "Задержка запуска"
+
+msgid "Verbose Debug Logging"
+msgstr "Подробное ведение<br />журнала отладки"
+
+msgid "View Logfile"
+msgstr "Показать системный журнал"
+
+msgid "Waiting for command to complete..."
+msgstr "Ожидание завершения выполнения команды..."
+
+msgid "Whitelist File"
+msgstr "Файл Белого списка"
+
+msgid "Yes"
+msgstr "Да"
+
+msgid ""
+"You can use this restrictive blocklist manually e.g. for guest wifi or "
+"kidsafe configurations."
+msgstr ""
+"Вы можете вручную настраивать и использовать этот Черный список, например "
+"для гостевой wifi сети или режима родительского контроля."
+
+msgid "disabled"
+msgstr "отключено"
+
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+"например, чтобы получать уведомления по электронной почте при каждом "
+"обновлении Adblock-а установите значение 150000."
+
+msgid "enabled"
+msgstr "включено"
+
+msgid "error"
+msgstr "ошибка"
+
+msgid "n/a"
+msgstr "нет данных"
+
+msgid "paused"
+msgstr "остановлено"
+
+msgid "running"
+msgstr "работает"
+
+#~ msgid "Available blocklist sources."
+#~ msgstr "Источники списков блокировки. "
+
+#~ msgid ""
+#~ "Caution: To prevent OOM exceptions on low memory devices with less than "
+#~ "64 MB free RAM, please do not select more than five blocklist sources!"
+#~ msgstr ""
+#~ "ВНИМАНИЕ: Для предотвращения возможного программного сбоя и перезагрузки, "
+#~ "на устройствах с объемом оперативной памяти менее 64MB, не выбирайте "
+#~ "больше 5 списков."
+
+#~ msgid ""
+#~ "During opkg package installation use the '--force-maintainer' option to "
+#~ "overwrite the pre-existing config file or download a fresh default config "
+#~ "from <a href=\"%s\" target=\"_blank\">here</a>"
+#~ msgstr ""
+#~ "Устанавливая пакет с помощью opkg, используйте '--force-maintainer', "
+#~ "чтобы перезаписать существующий config файл или загрузить новый дефолтный "
+#~ "config файл <a href=\"%s\" target=\"_blank\">здесь</a>"
+
+#~ msgid ""
+#~ "List URLs and Shallalist category selections are configurable in the "
+#~ "'Advanced' section.<br />"
+#~ msgstr ""
+#~ "Список URL-адресов и настройка списка использования, настраиваются на "
+#~ "странице 'Дополнительно'.<br />"
+
+#~ msgid "Please update your adblock config file to use this package.<br />"
+#~ msgstr "Обновите config файл Adblock, чтобы использовать этот пакет.<br />"
+
+#~ msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+#~ msgstr ""
+#~ "Размер файла слишком большой, для онлайн редактирования в LuCI (&gt; 512 "
+#~ "KB)."
+
+#~ msgid "This section contains no values yet"
+#~ msgstr "Здесь не содержатся необходимые значения"
index 503c5f6ef7deb85a63c775f49d6173951ed069c9..349d0cc490fe6ec70d06dea92b06e0c5f5b1f8a1 100644 (file)
@@ -1,9 +1,17 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8\n"
 
+msgid "'Jail' Blocklist Creation"
+msgstr ""
+
 msgid "-------"
 msgstr "-------"
 
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+
 msgid "Adblock"
 msgstr "Adblock"
 
@@ -22,26 +30,21 @@ msgstr ""
 msgid "Advanced"
 msgstr "Avancerat"
 
-msgid "Available blocklist sources."
-msgstr "Tillgängliga källor för blockeringslistor"
-
 msgid "Backup Directory"
 msgstr "Säkerhetskopiera mapp"
 
 msgid "Backup Mode"
 msgstr ""
 
-msgid ""
-"Block access to all domains except those explicitly listed in the whitelist "
-"file."
-msgstr ""
-
 msgid "Blocklist Sources"
 msgstr "Källor för blockeringslistor"
 
 msgid ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select too many lists - 5-6 should be sufficient!"
+"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
+"domains except those listed in the whitelist file.<br />"
+msgstr ""
+
+msgid "Categories"
 msgstr ""
 
 msgid ""
@@ -82,15 +85,12 @@ msgstr ""
 "Uppdatera inte automatiskt blockeringlistor vid uppstarten, använd "
 "säkerhetskopierade blockeringslistor istället."
 
+msgid "Download Utility"
+msgstr ""
+
 msgid "Download Utility (SSL Library)"
 msgstr "Nerladdningsprogram (SSL-bibliotek)"
 
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
-msgstr ""
-
 msgid "Edit Blacklist"
 msgstr "Redigera svartlista"
 
@@ -100,6 +100,12 @@ msgstr "Redigerar konfigurationen"
 msgid "Edit Whitelist"
 msgstr "Redigera vitlista"
 
+msgid "Email Notification"
+msgstr ""
+
+msgid "Email Notification Count"
+msgstr ""
+
 msgid "Enable Adblock"
 msgstr "Aktivera adblock"
 
@@ -120,9 +126,15 @@ msgstr "Aktiverad"
 msgid "Extra Options"
 msgstr "Extra alternativ"
 
+msgid "Flush DNS Cache"
+msgstr ""
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr ""
+
 msgid ""
 "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
-"'libustream-ssl' or the wget 'built-in'."
+"'libustream-ssl' or 'built-in'."
 msgstr ""
 
 msgid ""
@@ -130,6 +142,11 @@ msgid ""
 "documentation</a>"
 msgstr ""
 
+msgid ""
+"For further performance improvements you can raise this value, e.g. '8' or "
+"'16' should be safe."
+msgstr ""
+
 msgid "Force Local DNS"
 msgstr "Tvinga lokal DNS"
 
@@ -149,11 +166,6 @@ msgstr "Ogiltig domän angiven!"
 msgid "Last Run"
 msgstr "Kördes senast"
 
-msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr ""
-
 msgid ""
 "List of available network interfaces. Usually the startup will be triggered "
 "by the 'wan' interface.<br />"
@@ -164,9 +176,15 @@ msgid ""
 ">"
 msgstr ""
 
+msgid "List of supported and fully pre-configured download utilities."
+msgstr ""
+
 msgid "Loading"
 msgstr "Laddar"
 
+msgid "Max. Download Queue"
+msgstr ""
+
 msgid "No"
 msgstr "Nej"
 
@@ -188,7 +206,8 @@ msgstr ""
 msgid "Please edit this file directly in a terminal session."
 msgstr "Vänligen redigera den här filen direkt i en terminal-session."
 
-msgid "Please update your adblock config file to use this package.<br />"
+msgid ""
+"Please note: this needs additional 'msmtp' package installation and setup."
 msgstr ""
 
 msgid "Query"
@@ -197,6 +216,11 @@ msgstr "Fråga"
 msgid "Query domains"
 msgstr "Fråga efter domäner"
 
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+
 msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
 msgstr ""
 
@@ -212,6 +236,16 @@ msgstr "SSL-rek."
 msgid "Save"
 msgstr "Spara"
 
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+
+msgid ""
+"Size of the download queue to handle downloads &amp; list processing in "
+"parallel (default '4').<br />"
+msgstr ""
+
 msgid "Startup Trigger"
 msgstr "Uppstartslösare"
 
@@ -229,8 +263,8 @@ msgstr ""
 msgid "Target directory for the generated blocklist 'adb_list.overall'."
 msgstr ""
 
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
-msgstr "Filstorleken är för stor för online-redigering i LuCi (&gt; 512 KB)."
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
+msgstr ""
 
 msgid ""
 "This form allows you to modify the content of the adblock blacklist (%s)."
@@ -283,15 +317,22 @@ msgstr "Väntar på att kommandot ska slutföras..."
 msgid "Whitelist File"
 msgstr ""
 
-msgid "Whitelist Mode"
-msgstr ""
-
 msgid "Yes"
 msgstr "Ja"
 
+msgid ""
+"You can use this restrictive blocklist manually e.g. for guest wifi or "
+"kidsafe configurations."
+msgstr ""
+
 msgid "disabled"
 msgstr "inaktiverad"
 
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+
 msgid "enabled"
 msgstr "aktiverad"
 
@@ -304,6 +345,16 @@ msgstr "n/a"
 msgid "paused"
 msgstr "pausad"
 
+msgid "running"
+msgstr ""
+
+#~ msgid "Available blocklist sources."
+#~ msgstr "Tillgängliga källor för blockeringslistor"
+
+#~ msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+#~ msgstr ""
+#~ "Filstorleken är för stor för online-redigering i LuCi (&gt; 512 KB)."
+
 #~ msgid ""
 #~ "Caution: Please don't select big lists or many lists at once on low "
 #~ "memory devices to prevent OOM exceptions!"
index 9698333515b2f12214efb6f774dbaa28b69bd640..67c52eaacdd0106214d832e0ef73577f9e373758 100644 (file)
@@ -1,9 +1,17 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8"
 
+msgid "'Jail' Blocklist Creation"
+msgstr ""
+
 msgid "-------"
 msgstr ""
 
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+
 msgid "Adblock"
 msgstr ""
 
@@ -22,26 +30,21 @@ msgstr ""
 msgid "Advanced"
 msgstr ""
 
-msgid "Available blocklist sources."
-msgstr ""
-
 msgid "Backup Directory"
 msgstr ""
 
 msgid "Backup Mode"
 msgstr ""
 
-msgid ""
-"Block access to all domains except those explicitly listed in the whitelist "
-"file."
-msgstr ""
-
 msgid "Blocklist Sources"
 msgstr ""
 
 msgid ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select too many lists - 5-6 should be sufficient!"
+"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
+"domains except those listed in the whitelist file.<br />"
+msgstr ""
+
+msgid "Categories"
 msgstr ""
 
 msgid ""
@@ -75,13 +78,10 @@ msgid ""
 "instead."
 msgstr ""
 
-msgid "Download Utility (SSL Library)"
+msgid "Download Utility"
 msgstr ""
 
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
+msgid "Download Utility (SSL Library)"
 msgstr ""
 
 msgid "Edit Blacklist"
@@ -93,6 +93,12 @@ msgstr ""
 msgid "Edit Whitelist"
 msgstr ""
 
+msgid "Email Notification"
+msgstr ""
+
+msgid "Email Notification Count"
+msgstr ""
+
 msgid "Enable Adblock"
 msgstr ""
 
@@ -113,9 +119,15 @@ msgstr ""
 msgid "Extra Options"
 msgstr ""
 
+msgid "Flush DNS Cache"
+msgstr ""
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr ""
+
 msgid ""
 "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
-"'libustream-ssl' or the wget 'built-in'."
+"'libustream-ssl' or 'built-in'."
 msgstr ""
 
 msgid ""
@@ -123,6 +135,11 @@ msgid ""
 "documentation</a>"
 msgstr ""
 
+msgid ""
+"For further performance improvements you can raise this value, e.g. '8' or "
+"'16' should be safe."
+msgstr ""
+
 msgid "Force Local DNS"
 msgstr ""
 
@@ -141,11 +158,6 @@ msgstr ""
 msgid "Last Run"
 msgstr ""
 
-msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr ""
-
 msgid ""
 "List of available network interfaces. Usually the startup will be triggered "
 "by the 'wan' interface.<br />"
@@ -156,9 +168,15 @@ msgid ""
 ">"
 msgstr ""
 
+msgid "List of supported and fully pre-configured download utilities."
+msgstr ""
+
 msgid "Loading"
 msgstr ""
 
+msgid "Max. Download Queue"
+msgstr ""
+
 msgid "No"
 msgstr ""
 
@@ -180,7 +198,8 @@ msgstr ""
 msgid "Please edit this file directly in a terminal session."
 msgstr ""
 
-msgid "Please update your adblock config file to use this package.<br />"
+msgid ""
+"Please note: this needs additional 'msmtp' package installation and setup."
 msgstr ""
 
 msgid "Query"
@@ -189,6 +208,11 @@ msgstr ""
 msgid "Query domains"
 msgstr ""
 
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+
 msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
 msgstr ""
 
@@ -204,6 +228,16 @@ msgstr ""
 msgid "Save"
 msgstr ""
 
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+
+msgid ""
+"Size of the download queue to handle downloads &amp; list processing in "
+"parallel (default '4').<br />"
+msgstr ""
+
 msgid "Startup Trigger"
 msgstr ""
 
@@ -221,7 +255,7 @@ msgstr ""
 msgid "Target directory for the generated blocklist 'adb_list.overall'."
 msgstr ""
 
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
 msgstr ""
 
 msgid ""
@@ -269,15 +303,22 @@ msgstr ""
 msgid "Whitelist File"
 msgstr ""
 
-msgid "Whitelist Mode"
+msgid "Yes"
 msgstr ""
 
-msgid "Yes"
+msgid ""
+"You can use this restrictive blocklist manually e.g. for guest wifi or "
+"kidsafe configurations."
 msgstr ""
 
 msgid "disabled"
 msgstr ""
 
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+
 msgid "enabled"
 msgstr ""
 
@@ -289,3 +330,6 @@ msgstr ""
 
 msgid "paused"
 msgstr ""
+
+msgid "running"
+msgstr ""
index 08032cab04a21731c668c3d7cf5e10bd0f83e684..42bf0c04b9c4a014339fe9cb42b08d13a44e9543 100644 (file)
@@ -15,9 +15,17 @@ msgstr ""
 "X-Generator: Gtranslator 2.91.7\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
+msgid "'Jail' Blocklist Creation"
+msgstr ""
+
 msgid "-------"
 msgstr "-------"
 
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+
 msgid "Adblock"
 msgstr "Adblock"
 
@@ -36,26 +44,21 @@ msgstr "触发 Adblock 开始处理前的额外延迟(以秒为单位)。"
 msgid "Advanced"
 msgstr "高级"
 
-msgid "Available blocklist sources."
-msgstr "可用的 blocklist 来源。"
-
 msgid "Backup Directory"
 msgstr "备份目录"
 
 msgid "Backup Mode"
 msgstr ""
 
-msgid ""
-"Block access to all domains except those explicitly listed in the whitelist "
-"file."
-msgstr ""
-
 msgid "Blocklist Sources"
 msgstr "拦截列表来源"
 
 msgid ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select too many lists - 5-6 should be sufficient!"
+"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
+"domains except those listed in the whitelist file.<br />"
+msgstr ""
+
+msgid "Categories"
 msgstr ""
 
 msgid ""
@@ -91,15 +94,12 @@ msgid ""
 "instead."
 msgstr "启动期间不要自动更新 blocklists,改用 blocklists 的备份。"
 
+msgid "Download Utility"
+msgstr ""
+
 msgid "Download Utility (SSL Library)"
 msgstr "下载实用程序(SSL 库)"
 
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
-msgstr ""
-
 msgid "Edit Blacklist"
 msgstr "编辑黑名单"
 
@@ -109,6 +109,12 @@ msgstr "编辑设置"
 msgid "Edit Whitelist"
 msgstr "编辑白名单"
 
+msgid "Email Notification"
+msgstr ""
+
+msgid "Email Notification Count"
+msgstr ""
+
 msgid "Enable Adblock"
 msgstr "启用 Adblock"
 
@@ -129,18 +135,27 @@ msgstr "已启用"
 msgid "Extra Options"
 msgstr "额外选项"
 
+msgid "Flush DNS Cache"
+msgstr ""
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr ""
+
 msgid ""
 "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
-"'libustream-ssl' or the wget 'built-in'."
+"'libustream-ssl' or 'built-in'."
 msgstr ""
-"对于 SSL 保护的 blocklist 源,您需要一个合适的 SSL 库,例如'libustream-"
-"ssl'或 wget'built-in'。"
 
 msgid ""
 "For further information <a href=\"%s\" target=\"_blank\">check the online "
 "documentation</a>"
 msgstr ""
 
+msgid ""
+"For further performance improvements you can raise this value, e.g. '8' or "
+"'16' should be safe."
+msgstr ""
+
 msgid "Force Local DNS"
 msgstr "强制本地 DNS"
 
@@ -159,11 +174,6 @@ msgstr "无效域名!"
 msgid "Last Run"
 msgstr "最后运行"
 
-msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr "列表 URL 和 Shallalist 类别选择可在“高级”选项卡中配置。<br />"
-
 msgid ""
 "List of available network interfaces. Usually the startup will be triggered "
 "by the 'wan' interface.<br />"
@@ -174,9 +184,15 @@ msgid ""
 ">"
 msgstr "支持的 DNS 后端列表及其默认列表导出目录。<br />"
 
+msgid "List of supported and fully pre-configured download utilities."
+msgstr ""
+
 msgid "Loading"
 msgstr "加载中"
 
+msgid "Max. Download Queue"
+msgstr ""
+
 msgid "No"
 msgstr "否"
 
@@ -200,7 +216,8 @@ msgstr ""
 msgid "Please edit this file directly in a terminal session."
 msgstr "请在终端会话中直接编辑此文件。"
 
-msgid "Please update your adblock config file to use this package.<br />"
+msgid ""
+"Please note: this needs additional 'msmtp' package installation and setup."
 msgstr ""
 
 msgid "Query"
@@ -209,6 +226,11 @@ msgstr "查询"
 msgid "Query domains"
 msgstr "查询域"
 
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+
 msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
 msgstr "将所有 DNS 查询从“lan”区域重定向到本地解析器。"
 
@@ -224,6 +246,16 @@ msgstr "SSL 要求"
 msgid "Save"
 msgstr "保存"
 
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+
+msgid ""
+"Size of the download queue to handle downloads &amp; list processing in "
+"parallel (default '4').<br />"
+msgstr ""
+
 msgid "Startup Trigger"
 msgstr "启动触发器"
 
@@ -241,8 +273,8 @@ msgstr ""
 msgid "Target directory for the generated blocklist 'adb_list.overall'."
 msgstr "生成的 blocklist 'adb_list.overall'的目标目录。"
 
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
-msgstr "文件大小太大,无法在 LuCI(&gt; 512 KB)中进行在线编辑。"
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
+msgstr ""
 
 msgid ""
 "This form allows you to modify the content of the adblock blacklist (%s)."
@@ -289,15 +321,22 @@ msgstr "正在执行命令..."
 msgid "Whitelist File"
 msgstr ""
 
-msgid "Whitelist Mode"
-msgstr ""
-
 msgid "Yes"
 msgstr "是"
 
+msgid ""
+"You can use this restrictive blocklist manually e.g. for guest wifi or "
+"kidsafe configurations."
+msgstr ""
+
 msgid "disabled"
 msgstr "已禁用"
 
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+
 msgid "enabled"
 msgstr "已启用"
 
@@ -310,145 +349,16 @@ msgstr "不可用"
 msgid "paused"
 msgstr "已暂停"
 
-#~ msgid ""
-#~ "Caution: Please don't select big lists or many lists at once on low "
-#~ "memory devices to prevent OOM exceptions!"
-#~ msgstr ""
-#~ "注意:请勿在内存较小的设备上选择过长的列表或同时选择多个列表,以防止 OOM "
-#~ "异常!"
-
-#~ msgid ""
-#~ "Create compressed blocklist backups, they will be used in case of "
-#~ "download errors or during startup in manual mode."
-#~ msgstr "创建压缩的 blocklist 备份,它们将在下载错误或手动模式下启动时使用。"
-
-#~ msgid ""
-#~ "Enable memory intense overall sort / duplicate removal on low memory "
-#~ "devices (&lt; 64 MB RAM)"
-#~ msgstr "在低内存设备上启用耗用内存的整体排序/重复规则删除(&lt;64 MB RAM)"
-
-#~ msgid ""
-#~ "For further information <a href=\"%s\" target=\"_blank\">see online "
-#~ "documentation</a>"
-#~ msgstr "有关更多信息,请<a href=\"%s\" target=\"_blank\">参阅在线文档</a>"
-
-#~ msgid ""
-#~ "In OPKG use the '--force-maintainer' option to overwrite the pre-existing "
-#~ "config file or download a fresh default config from <a href=\"%s\" target="
-#~ "\"_blank\">here</a>"
-#~ msgstr ""
-#~ "在 OPKG 中,使用“--force-maintainer”选项覆盖预先存在的配置文件,或从<a "
-#~ "href=\"%s\" target=\"_blank\">此处</a>下载新的默认配置"
-
-#~ msgid ""
-#~ "List of available network interfaces. By default the startup will be "
-#~ "triggered by the 'wan' interface.<br />"
-#~ msgstr "可用网络接口列表。默认情况下,将由“wan”界面触发启动。<br />"
-
-#~ msgid "Manual / Backup mode"
-#~ msgstr "手动/备份模式"
-
-#~ msgid "Overall Blocked Domains"
-#~ msgstr "整体封锁域名"
-
-#~ msgid "Please update your adblock config file to use this package."
-#~ msgstr "请更新您的 adblock 配置文件以使用此软件包。"
-
-#~ msgid ""
-#~ "Target directory for adblock backups. Please use only non-volatile disks, "
-#~ "no ram/tmpfs drives."
-#~ msgstr ""
-#~ "adblock 备份的目标目录。请仅使用非易失性磁盘,不使用 ram/tmpfs 驱动器。"
-
-#~ msgid "DNS backend"
-#~ msgstr "DNS 后端"
-
-#~ msgid "Enable verbose debug logging"
-#~ msgstr "启用详细调试输出"
-
-#~ msgid "Resume adblock"
-#~ msgstr "恢复 Adblock"
-
-#~ msgid "Status"
-#~ msgstr "状态"
-
-#~ msgid "Suspend adblock"
-#~ msgstr "暂停 Adblock"
-
-#~ msgid "active"
-#~ msgstr "已启用"
-
-#~ msgid "no domains blocked"
-#~ msgstr "没有被拦截的域名"
-
-#~ msgid "suspended"
-#~ msgstr "已暂停"
-
-#~ msgid "."
-#~ msgstr "."
-
-#~ msgid "For further information"
-#~ msgstr "更多信息"
-
-#~ msgid "see online documentation"
-#~ msgstr "查看在线文档"
-
-#~ msgid "Backup options"
-#~ msgstr "备份选项"
-
-#~ msgid ""
-#~ "). Note that list URLs and Shallalist category selections are not "
-#~ "configurable via Luci."
-#~ msgstr ")。需要注意的是列表URL和列表类别选项无法通过Luci设置。"
+msgid "running"
+msgstr ""
 
-#~ msgid "Available blocklist sources ("
-#~ msgstr "可用拦截列表来源("
+#~ msgid "Available blocklist sources."
+#~ msgstr "可用的 blocklist 来源。"
 
 #~ msgid ""
-#~ "File with whitelisted hosts/domains that are allowed despite being on a "
-#~ "blocklist."
-#~ msgstr "允许的主机/域名列表"
-
-#~ msgid "Global options"
-#~ msgstr "全局选项"
+#~ "List URLs and Shallalist category selections are configurable in the "
+#~ "'Advanced' section.<br />"
+#~ msgstr "列表 URL 和 Shallalist 类别选择可在“高级”选项卡中配置。<br />"
 
-#~ msgid "Whitelist file"
-#~ msgstr "白名单文件"
-
-#~ msgid "see list details"
-#~ msgstr "查看列表详情"
-
-#~ msgid "Count"
-#~ msgstr "数量"
-
-#~ msgid "IPv4 blackhole ip address"
-#~ msgstr "IPv4禁止列表"
-
-#~ msgid "IPv6 blackhole ip address"
-#~ msgstr "IPv6禁止列表"
-
-#~ msgid "List date/state"
-#~ msgstr "列表日期/状态"
-
-#~ msgid "Name of the logical lan interface"
-#~ msgstr "LAN接口名称"
-
-#~ msgid "Port of the adblock uhttpd instance"
-#~ msgstr "Adblock uhttpd端口"
-
-#~ msgid "Redirect all DNS queries to the local resolver"
-#~ msgstr "将所有DNS查询都重定向到本地解析器"
-
-#~ msgid "Timeout for blocklist fetch (seconds)"
-#~ msgstr "列表查询超时时间(秒)"
-
-#~ msgid "Total count of blocked domains"
-#~ msgstr "阻止域名总数"
-
-#~ msgid ""
-#~ "When adblock is active, all DNS queries are redirected to the local "
-#~ "resolver in this server by default. You can disable that to allow queries "
-#~ "to external DNS servers."
-#~ msgstr ""
-#~ "当Adblock处于活动状态时,默认情况下会将所有的DNS查询重定向到此服务器的本地"
-#~ "解析器。您可以禁用以允许查询外部DNS服务器。"
+#~ msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+#~ msgstr "文件大小太大,无法在 LuCI(&gt; 512 KB)中进行在线编辑。"
index f838fa0432832a97e296f7e9eb7222c70a379c76..f42d1b3807bf9373e9b544cffbbdec5c3b46bbb4 100644 (file)
@@ -15,9 +15,17 @@ msgstr ""
 "X-Generator: Gtranslator 2.91.7\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
+msgid "'Jail' Blocklist Creation"
+msgstr ""
+
 msgid "-------"
 msgstr "-------"
 
+msgid ""
+"<b>Caution:</b> To prevent OOM exceptions on low memory devices with less "
+"than 64 MB free RAM, please only select a few of them!"
+msgstr ""
+
 msgid "Adblock"
 msgstr "Adblock"
 
@@ -36,26 +44,21 @@ msgstr "觸發 Adblock 開始處理前的額外延遲(以秒為單位)。"
 msgid "Advanced"
 msgstr "高階"
 
-msgid "Available blocklist sources."
-msgstr "可用的 blocklist 來源。"
-
 msgid "Backup Directory"
 msgstr "備份目錄"
 
 msgid "Backup Mode"
 msgstr ""
 
-msgid ""
-"Block access to all domains except those explicitly listed in the whitelist "
-"file."
-msgstr ""
-
 msgid "Blocklist Sources"
 msgstr "攔截列表來源"
 
 msgid ""
-"Caution: To prevent OOM exceptions on low memory devices with less than 64 "
-"MB free RAM, please do not select too many lists - 5-6 should be sufficient!"
+"Builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all "
+"domains except those listed in the whitelist file.<br />"
+msgstr ""
+
+msgid "Categories"
 msgstr ""
 
 msgid ""
@@ -91,15 +94,12 @@ msgid ""
 "instead."
 msgstr "啟動期間不要自動更新 blocklists,改用 blocklists 的備份。"
 
+msgid "Download Utility"
+msgstr ""
+
 msgid "Download Utility (SSL Library)"
 msgstr "下載實用程式(SSL 庫)"
 
-msgid ""
-"During opkg package installation use the '--force-maintainer' option to "
-"overwrite the pre-existing config file or download a fresh default config "
-"from <a href=\"%s\" target=\"_blank\">here</a>"
-msgstr ""
-
 msgid "Edit Blacklist"
 msgstr "編輯黑名單"
 
@@ -109,6 +109,12 @@ msgstr "編輯設定"
 msgid "Edit Whitelist"
 msgstr "編輯白名單"
 
+msgid "Email Notification"
+msgstr ""
+
+msgid "Email Notification Count"
+msgstr ""
+
 msgid "Enable Adblock"
 msgstr "啟用 Adblock"
 
@@ -129,18 +135,27 @@ msgstr "已啟用"
 msgid "Extra Options"
 msgstr "額外選項"
 
+msgid "Flush DNS Cache"
+msgstr ""
+
+msgid "Flush DNS Cache after adblock processing."
+msgstr ""
+
 msgid ""
 "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
-"'libustream-ssl' or the wget 'built-in'."
+"'libustream-ssl' or 'built-in'."
 msgstr ""
-"對於 SSL 保護的 blocklist 源,您需要一個合適的 SSL 庫,例如'libustream-"
-"ssl'或 wget'built-in'。"
 
 msgid ""
 "For further information <a href=\"%s\" target=\"_blank\">check the online "
 "documentation</a>"
 msgstr ""
 
+msgid ""
+"For further performance improvements you can raise this value, e.g. '8' or "
+"'16' should be safe."
+msgstr ""
+
 msgid "Force Local DNS"
 msgstr "強制本地 DNS"
 
@@ -159,11 +174,6 @@ msgstr "無效域名!"
 msgid "Last Run"
 msgstr "最後執行"
 
-msgid ""
-"List URLs and Shallalist category selections are configurable in the "
-"'Advanced' section.<br />"
-msgstr "列表 URL 和 Shallalist 類別選擇可在“高階”選項卡中配置。<br />"
-
 msgid ""
 "List of available network interfaces. Usually the startup will be triggered "
 "by the 'wan' interface.<br />"
@@ -174,9 +184,15 @@ msgid ""
 ">"
 msgstr "支援的 DNS 後端列表及其預設列表匯出目錄。<br />"
 
+msgid "List of supported and fully pre-configured download utilities."
+msgstr ""
+
 msgid "Loading"
 msgstr "載入中"
 
+msgid "Max. Download Queue"
+msgstr ""
+
 msgid "No"
 msgstr "否"
 
@@ -200,7 +216,8 @@ msgstr ""
 msgid "Please edit this file directly in a terminal session."
 msgstr "請在終端會話中直接編輯此檔案。"
 
-msgid "Please update your adblock config file to use this package.<br />"
+msgid ""
+"Please note: this needs additional 'msmtp' package installation and setup."
 msgstr ""
 
 msgid "Query"
@@ -209,6 +226,11 @@ msgstr "查詢"
 msgid "Query domains"
 msgstr "查詢域"
 
+msgid ""
+"Raise the minimum email notification count, to get emails if the overall "
+"count is less or equal to the given limit (default 0),<br />"
+msgstr ""
+
 msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
 msgstr "將所有 DNS 查詢從“lan”區域重定向到本地解析器。"
 
@@ -224,6 +246,16 @@ msgstr "SSL 要求"
 msgid "Save"
 msgstr "儲存"
 
+msgid ""
+"Send notification emails in case of a processing error or if domain count is "
+"&le; 0.<br />"
+msgstr ""
+
+msgid ""
+"Size of the download queue to handle downloads &amp; list processing in "
+"parallel (default '4').<br />"
+msgstr ""
+
 msgid "Startup Trigger"
 msgstr "啟動觸發器"
 
@@ -241,8 +273,8 @@ msgstr ""
 msgid "Target directory for the generated blocklist 'adb_list.overall'."
 msgstr "生成的 blocklist 'adb_list.overall'的目標目錄。"
 
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
-msgstr "檔案大小太大,無法在 LuCI(&gt; 512 KB)中進行線上編輯。"
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
+msgstr ""
 
 msgid ""
 "This form allows you to modify the content of the adblock blacklist (%s)."
@@ -289,15 +321,22 @@ msgstr "正在執行命令..."
 msgid "Whitelist File"
 msgstr ""
 
-msgid "Whitelist Mode"
-msgstr ""
-
 msgid "Yes"
 msgstr "是"
 
+msgid ""
+"You can use this restrictive blocklist manually e.g. for guest wifi or "
+"kidsafe configurations."
+msgstr ""
+
 msgid "disabled"
 msgstr "已禁用"
 
+msgid ""
+"e.g. to receive an email notification with every adblock update set this "
+"value to 150000."
+msgstr ""
+
 msgid "enabled"
 msgstr "已啟用"
 
@@ -310,146 +349,16 @@ msgstr "不可用"
 msgid "paused"
 msgstr "已暫停"
 
-#~ msgid ""
-#~ "Caution: Please don't select big lists or many lists at once on low "
-#~ "memory devices to prevent OOM exceptions!"
-#~ msgstr ""
-#~ "注意:請勿在記憶體較小的裝置上選擇過長的列表或同時選擇多個列表,以防止 "
-#~ "OOM 異常!"
-
-#~ msgid ""
-#~ "Create compressed blocklist backups, they will be used in case of "
-#~ "download errors or during startup in manual mode."
-#~ msgstr "建立壓縮的 blocklist 備份,它們將在下載錯誤或手動模式下啟動時使用。"
-
-#~ msgid ""
-#~ "Enable memory intense overall sort / duplicate removal on low memory "
-#~ "devices (&lt; 64 MB RAM)"
-#~ msgstr ""
-#~ "在低記憶體裝置上啟用耗用記憶體的整體排序/重複規則刪除(&lt;64 MB RAM)"
-
-#~ msgid ""
-#~ "For further information <a href=\"%s\" target=\"_blank\">see online "
-#~ "documentation</a>"
-#~ msgstr "有關更多資訊,請<a href=\"%s\" target=\"_blank\">參閱線上文件</a>"
-
-#~ msgid ""
-#~ "In OPKG use the '--force-maintainer' option to overwrite the pre-existing "
-#~ "config file or download a fresh default config from <a href=\"%s\" target="
-#~ "\"_blank\">here</a>"
-#~ msgstr ""
-#~ "在 OPKG 中,使用“--force-maintainer”選項覆蓋預先存在的配置檔案,或從<a "
-#~ "href=\"%s\" target=\"_blank\">此處</a>下載新的預設配置"
-
-#~ msgid ""
-#~ "List of available network interfaces. By default the startup will be "
-#~ "triggered by the 'wan' interface.<br />"
-#~ msgstr "可用網路介面列表。預設情況下,將由“wan”介面觸發啟動。<br />"
-
-#~ msgid "Manual / Backup mode"
-#~ msgstr "手動/備份模式"
-
-#~ msgid "Overall Blocked Domains"
-#~ msgstr "整體封鎖域名"
-
-#~ msgid "Please update your adblock config file to use this package."
-#~ msgstr "請更新您的 adblock 配置檔案以使用此軟體包。"
-
-#~ msgid ""
-#~ "Target directory for adblock backups. Please use only non-volatile disks, "
-#~ "no ram/tmpfs drives."
-#~ msgstr ""
-#~ "adblock 備份的目標目錄。請僅使用非易失性磁碟,不使用 ram/tmpfs 驅動器。"
-
-#~ msgid "DNS backend"
-#~ msgstr "DNS 後端"
-
-#~ msgid "Enable verbose debug logging"
-#~ msgstr "啟用詳細除錯輸出"
-
-#~ msgid "Resume adblock"
-#~ msgstr "恢復 Adblock"
-
-#~ msgid "Status"
-#~ msgstr "狀態"
-
-#~ msgid "Suspend adblock"
-#~ msgstr "暫停 Adblock"
-
-#~ msgid "active"
-#~ msgstr "已啟用"
-
-#~ msgid "no domains blocked"
-#~ msgstr "沒有被攔截的域名"
-
-#~ msgid "suspended"
-#~ msgstr "已暫停"
-
-#~ msgid "."
-#~ msgstr "."
-
-#~ msgid "For further information"
-#~ msgstr "更多資訊"
-
-#~ msgid "see online documentation"
-#~ msgstr "檢視線上文件"
-
-#~ msgid "Backup options"
-#~ msgstr "備份選項"
-
-#~ msgid ""
-#~ "). Note that list URLs and Shallalist category selections are not "
-#~ "configurable via Luci."
-#~ msgstr ")。需要注意的是列表URL和列表類別選項無法通過Luci設定。"
+msgid "running"
+msgstr ""
 
-#~ msgid "Available blocklist sources ("
-#~ msgstr "可用攔截列表來源("
+#~ msgid "Available blocklist sources."
+#~ msgstr "可用的 blocklist 來源。"
 
 #~ msgid ""
-#~ "File with whitelisted hosts/domains that are allowed despite being on a "
-#~ "blocklist."
-#~ msgstr "允許的主機/域名列表"
-
-#~ msgid "Global options"
-#~ msgstr "全域性選項"
+#~ "List URLs and Shallalist category selections are configurable in the "
+#~ "'Advanced' section.<br />"
+#~ msgstr "列表 URL 和 Shallalist 類別選擇可在“高階”選項卡中配置。<br />"
 
-#~ msgid "Whitelist file"
-#~ msgstr "白名單檔案"
-
-#~ msgid "see list details"
-#~ msgstr "檢視列表詳情"
-
-#~ msgid "Count"
-#~ msgstr "數量"
-
-#~ msgid "IPv4 blackhole ip address"
-#~ msgstr "IPv4禁止列表"
-
-#~ msgid "IPv6 blackhole ip address"
-#~ msgstr "IPv6禁止列表"
-
-#~ msgid "List date/state"
-#~ msgstr "列表日期/狀態"
-
-#~ msgid "Name of the logical lan interface"
-#~ msgstr "LAN介面名稱"
-
-#~ msgid "Port of the adblock uhttpd instance"
-#~ msgstr "Adblock uhttpd埠"
-
-#~ msgid "Redirect all DNS queries to the local resolver"
-#~ msgstr "將所有DNS查詢都重定向到本地解析器"
-
-#~ msgid "Timeout for blocklist fetch (seconds)"
-#~ msgstr "列表查詢超時時間(秒)"
-
-#~ msgid "Total count of blocked domains"
-#~ msgstr "阻止域名總數"
-
-#~ msgid ""
-#~ "When adblock is active, all DNS queries are redirected to the local "
-#~ "resolver in this server by default. You can disable that to allow queries "
-#~ "to external DNS servers."
-#~ msgstr ""
-#~ "當Adblock處於活動狀態時,預設情況下會將所有的DNS查詢重定向到此伺服器的本地"
-#~ "解析器。您可以禁用以允許查詢外部DNS伺服器。"
+#~ msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+#~ msgstr "檔案大小太大,無法在 LuCI(&gt; 512 KB)中進行線上編輯。"
index 3a886eb8dec033ea7e67b014278fb6b1afc8c2ab..d2704983087d9231a19236e57e9943379522c333 100644 (file)
@@ -7,13 +7,13 @@ PKG_LICENSE:=GPL-3.0+
 PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
 
 LUCI_TITLE:=Advanced Linksys Reboot Web UI
-LUCI_DESCRIPTION:=Provides Web UI (found under System/Advanced Reboot) to reboot supported Linksys routers to\
+LUCI_DESCRIPTION:=Provides Web UI (found under System/Advanced Reboot) to reboot supported Linksys and ZyXEL routers to\
        an altnerative partition. Also provides Web UI to shut down (power off) your device.    Supported dual-partition\
        routers are listed at https://github.com/stangri/openwrt-luci/blob/luci-app-advanced-reboot/applications/luci-app-advanced-reboot/README.md
 
 LUCI_DEPENDS:=+luci
 LUCI_PKGARCH:=all
-PKG_RELEASE:=23
+PKG_RELEASE:=27
 
 include ../../luci.mk
 
index ee87a000202b887b3de2ef0c666d240748c686f4..d4659c8dc7b650ea9fa8c5bde8b17a6fadc1ab79 100644 (file)
@@ -1,23 +1,25 @@
 # Advanced Reboot Web UI (luci-app-advanced-reboot)
 
 ## Description
-This package allows you to reboot to an alternative partition on supported (dual-partition) routers and to power off (power down) your OpenWrt/LEDE Project device.
+This package allows you to reboot to an alternative partition on the supported (dual-partition) routers and to power off (power down) your OpenWrt/LEDE Project device.
 
 ## Supported Devices
 Currently supported dual-partition devices include:
+- Linksys EA3500
+- Linksys E4200v2
+- Linksys EA4500
+- Linksys EA8500
 - Linksys WRT1200AC
 - Linksys WRT1900AC
 - Linksys WRT1900ACv2
 - Linksys WRT1900ACS
 - Linksys WRT3200ACM
-- Linksys E4200v2
-- Linksys EA4500
-- Linksys EA8500
+- ZyXEL NBG6817
 
 If you're interested in having your device supported, please post in [LEDE Project Forum Support Thread](https://forum.lede-project.org/t/web-ui-to-reboot-to-another-partition-dual-partition-routers/3423).
 
 ## Screenshot (luci-app-advanced-reboot)
-![screenshot](https://raw.githubusercontent.com/stangri/screenshots/master/luci-app-advanced-reboot/screenshot01.png "screenshot")
+![screenshot](https://raw.githubusercontent.com/stangri/openwrt_packages/master/screenshots/luci-app-advanced-reboot/screenshot01.png "screenshot")
 
 ## How to install
 Install ```luci-app-advanced-reboot``` from Web UI or connect to your router via ssh and run the following commands:
@@ -28,8 +30,8 @@ opkg install luci-app-advanced-reboot
 
 ## Notes/Known Issues
 - When you reboot to a different partition, your current settings (WiFi SSID/password, etc.) will not apply to a different partition. Different partitions might have completely different settings and even firmware.
-- If you reboot to a partition which doesn't allow you to switch boot partitions (like stock Linksys firmware), you might not be able to boot back to OpenWrt/LEDE Project unless you reflash it, loosing all the settings.
-- Some devices allow you to trigger reboot to alternative partition by interrupting boot 3 times in a row (by resetting/switching off the device or pulling power). As these methods might be different for different devices, do your own homework.
+- If you reboot to a partition which doesn't allow you to switch boot partitions (like stock vendor firmware), you might not be able to boot back to OpenWrt/LEDE Project unless you reflash it, losing all the settings.
+- Some devices allow you to trigger reboot to an alternative partition by interrupting boot 3 times in a row (by resetting/switching off the device or pulling power). As these methods might be different for different devices, do your own homework.
 
 ## Thanks
-I'd like to thank everyone who helped create, test and troubleshoot this package. Without contributions from [@hnyman](https://github.com/hnyman) and [@jpstyves](https://github.com/jpstyves) it wouldn't have been possible.
+I'd like to thank everyone who helped create, test and troubleshoot this package. Without contributions from [@hnyman](https://github.com/hnyman), [@jpstyves](https://github.com/jpstyves) and [@slh](https://github.com/pkgadd) it wouldn't have been possible.
index 2b55217b8eac776f6eb50bf0017e7d2261f30061..b5dd4fe0f4f49f08dac1c0f463c680d9ab1fe63c 100644 (file)
@@ -3,20 +3,25 @@
 
 module("luci.controller.advanced_reboot", package.seeall)
 
--- device, board_name, part1, part2, offset, env_var_1, value_1_1, value_1_2, env_var_2, value_2_1, value_2_2
+-- device_name, board_name, part1, part2, offset, env_var_1, value_1_1, value_1_2, env_var_2, value_2_1, value_2_2
 devices = {
-  {"Linksys WRT1200AC", "armada-385-linksys-caiman", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
-  {"Linksys WRT1900AC", "armada-xp-linksys-mamba", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
-  {"Linksys WRT1900ACv2", "armada-385-linksys-cobra", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
-  {"Linksys WRT1900ACS", "armada-385-linksys-shelby", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
-  {"Linksys WRT3200ACM", "armada-385-linksys-rango", "mtd5", "mtd7", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+  {"Linksys EA3500", "linksys-audi", "mtd3", "mtd5", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
   {"Linksys E4200v2/EA4500", "linksys-viper", "mtd3", "mtd5", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
-  {"Linksys EA8500", "ea8500", "mtd13", "mtd15", 32, "boot_part", 1, 2}
+  {"Linksys EA8500", "ea8500", "mtd13", "mtd15", 32, "boot_part", 1, 2},
+--  {"Linksys EA9500", "linksys,panamera", "mtd3", "mtd6", 28, "boot_part", 1, 2},
+  {"Linksys WRT1200AC", "linksys-caiman", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+  {"Linksys WRT1900AC", "linksys-mamba", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+  {"Linksys WRT1900ACv2", "linksys-cobra", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+  {"Linksys WRT1900ACS", "linksys-shelby", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+  {"Linksys WRT3200ACM", "linksys-rango", "mtd5", "mtd7", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+  {"ZyXEL NBG6817","nbg6817","mmcblk0p4","mmcblk0p7",32,nil,255,1}
 }
 
-board_name = luci.util.trim(luci.sys.exec("cat /tmp/sysinfo/board_name"))
+errorMessage = ""
+device_board_name = luci.util.trim(luci.sys.exec("cat /tmp/sysinfo/board_name"))
 for i=1, #devices do
-  if board_name and devices[i][2] == board_name then
+  table_board_name = devices[i][2]:gsub('%p','')
+  if device_board_name and device_board_name:gsub('%p',''):match(table_board_name) then
     device_name = devices[i][1]
     partition_one_mtd = devices[i][3] or nil
     partition_two_mtd = devices[i][4] or nil
@@ -41,14 +46,29 @@ for i=1, #devices do
     if string.find(partition_two_label, "LEDE") then partition_two_os = "LEDE" end
     if string.find(partition_two_label, "OpenWrt") then partition_two_os = "OpenWrt" end
     if string.find(partition_two_label, "Linksys") then partition_two_os = "Linksys" end
+    if device_name and device_name == "ZyXEL NBG6817" then
+      if not partition_one_os then partition_one_os = "ZyXEL" end
+      if not partition_two_os then partition_two_os = "ZyXEL" end
+    end
     if not partition_one_os then partition_one_os = "Unknown" end
     if not partition_two_os then partition_two_os = "Unknown" end
     if partition_one_os and partition_one_version then partition_one_os = partition_one_os .. " (Linux " .. partition_one_version .. ")" end
     if partition_two_os and partition_two_version then partition_two_os = partition_two_os .. " (Linux " .. partition_two_version .. ")" end
-    if nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then
-      current_partition = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1)))
-      other_partition = current_partition == boot_envvar1_partition_one and boot_envvar1_partition_two or boot_envvar1_partition_one
+
+    if device_name and device_name == "ZyXEL NBG6817" then
+      if not zyxelFlagPartition then zyxelFlagPartition = luci.util.trim(luci.sys.exec("source /lib/functions.sh; find_mtd_part 0:DUAL_FLAG")) end
+      if not zyxelFlagPartition then
+        errorMessage = errorMessage .. luci.i18n.translate("Unable to find Dual Boot Flag Partition." .. " ")
+        luci.util.perror(luci.i18n.translate("Unable to find Dual Boot Flag Partition."))
+      else
+        current_partition = tonumber(luci.sys.exec("dd if=" .. zyxelFlagPartition .. " bs=1 count=1 2>/dev/null | hexdump -n 1 -e '1/1 \"%d\"'"))
+      end
+    else
+      if nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then
+        current_partition = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1)))
+      end
     end
+    other_partition = current_partition == boot_envvar1_partition_two and boot_envvar1_partition_one or boot_envvar1_partition_two
   end
 end
 
@@ -61,17 +81,30 @@ function index()
 end
 
 function action_reboot()
+  local uci = require "luci.model.uci".cursor()
   luci.template.render("admin_system/applyreboot", {
         title = luci.i18n.translate("Rebooting..."),
         msg   = luci.i18n.translate("The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."),
-        addr  = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1"
+        addr  = luci.ip.new(uci:get("network", "lan", "ipaddr")) or "192.168.1.1"
       })
   luci.sys.reboot()
 end
 
 function action_altreboot()
+  local uci = require "luci.model.uci".cursor()
+  local zyxelFlagPartition, zyxelBootFlag, zyxelNewBootFlag, errorCode, curEnvSetting, newEnvSetting
+  errorMessage = ""
+  errorCode = 0
   if luci.http.formvalue("cancel") then
     luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot'))
+--    luci.template.render("advanced_reboot/advanced_reboot",{
+--      device_name=device_name,
+--      boot_envvar1_partition_one=boot_envvar1_partition_one,
+--      partition_one_os=partition_one_os,
+--      boot_envvar1_partition_two=boot_envvar1_partition_two,
+--      partition_two_os=partition_two_os,
+--      current_partition=current_partition,
+--      errorMessage = luci.i18n.translate("Alternative reboot cancelled.")})
     return
   end
   local step = tonumber(luci.http.formvalue("step") or 1)
@@ -79,25 +112,77 @@ function action_altreboot()
     if device_name and nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then
       luci.template.render("advanced_reboot/alternative_reboot",{})
     else
-      luci.template.render("advanced_reboot/advanced_reboot",{})
+      luci.template.render("advanced_reboot/advanced_reboot",{errorMessage = luci.i18n.translate("No access to fw_printenv or fw_printenv!")})
     end
   elseif step == 2 then
-    luci.template.render("admin_system/applyreboot", {
-          title = luci.i18n.translate("Rebooting..."),
-          msg   = luci.i18n.translate("The system is rebooting to an alternative partition now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."),
-          addr  = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1"
-        })
-    if boot_envvar1 then env1 = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1))) end
-    if boot_envvar2 then env2 = luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar2)) end
-    if env1 and env1 == boot_envvar1_partition_one then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. boot_envvar1_partition_two) end
-    if env1 and env1 == boot_envvar1_partition_two then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. boot_envvar1_partition_one) end
-    if env2 and env2 == boot_envvar2_partition_one then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. boot_envvar2_partition_two .. "'") end
-    if env2 and env2 == boot_envvar2_partition_two then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. boot_envvar2_partition_one .. "'") end
-    luci.sys.reboot()
+    if boot_envvar1 or boot_envvar2 then -- Linksys devices
+      if boot_envvar1 then
+        curEnvSetting = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1)))
+        if not curEnvSetting then
+          errorMessage = errorMessage .. luci.i18n.translate("Unable to obtain firmware environment variable") .. ": " .. boot_envvar1 .. ". "
+          luci.util.perror(luci.i18n.translate("Unable to obtain firmware environment variable") .. ": " .. boot_envvar1 .. ".")
+        else
+          newEnvSetting = curEnvSetting == boot_envvar1_partition_one and boot_envvar1_partition_two or boot_envvar1_partition_one
+          errorCode = luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. newEnvSetting)
+            if errorCode ~= 0 then
+              errorMessage = errorMessage .. luci.i18n.translate("Unable to set firmware environment variable") .. ": " .. boot_envvar1 .. " " .. luci.i18n.translate("to") .. " " .. newEnvSetting .. ". "
+              luci.util.perror(luci.i18n.translate("Unable to set firmware environment variable") .. ": " .. boot_envvar1 .. " " .. luci.i18n.translate("to") .. " " .. newEnvSetting .. ".")
+            end
+        end
+      end
+      if boot_envvar2 then
+        curEnvSetting = luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar2))
+        if not curEnvSetting then
+          errorMessage = errorMessage .. luci.i18n.translate("Unable to obtain firmware environment variable") .. ": " .. boot_envvar2 .. ". "
+          luci.util.perror(luci.i18n.translate("Unable to obtain firmware environment variable") .. ": " .. boot_envvar2 .. ".")
+        else
+          newEnvSetting = curEnvSetting == boot_envvar2_partition_one and boot_envvar2_partition_two or boot_envvar2_partition_one
+          errorCode = luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. newEnvSetting .. "'")
+          if errorCode ~= 0 then
+            errorMessage = errorMessage .. luci.i18n.translate("Unable to set firmware environment variable") .. ": " .. boot_envvar2 .. " " .. luci.i18n.translate("to") .. " " .. newEnvSetting .. ". "
+            luci.util.perror(luci.i18n.translate("Unable to set firmware environment variable") .. ": " .. boot_envvar2 .. " " .. luci.i18n.translate("to") .. " " .. newEnvSetting .. ".")
+          end
+        end
+      end
+    else -- NetGear device
+      if not zyxelFlagPartition then zyxelFlagPartition = luci.util.trim(luci.sys.exec("source /lib/functions.sh; find_mtd_part 0:DUAL_FLAG")) end
+      if not zyxelFlagPartition then
+        errorMessage = errorMessage .. luci.i18n.translate("Unable to find Dual Boot Flag Partition." .. " ")
+        luci.util.perror(luci.i18n.translate("Unable to find Dual Boot Flag Partition."))
+      else
+        zyxelBootFlag = tonumber(luci.sys.exec("dd if=" .. zyxelFlagPartition .. " bs=1 count=1 2>/dev/null | hexdump -n 1 -e '1/1 \"%d\"'"))
+        zyxelNewBootFlag = zyxelBootFlag and zyxelBootFlag == 1 and "\\xff" or "\\x01"
+        if zyxelNewBootFlag then
+          errorCode = luci.sys.call("printf \"" .. zyxelNewBootFlag .. "\" >" .. zyxelFlagPartition )
+          if errorCode ~= 0 then
+            errorMessage = errorMessage .. luci.i18n.translate("Unable to set Dual Boot Flag Partition entry for partition") .. ": " .. zyxelFlagPartition .. ". "
+            luci.util.perror(luci.i18n.translate("Unable to set Dual Boot Flag Partition entry for partition") .. ": " .. zyxelFlagPartition .. ".")
+          end
+        end
+      end
+    end
+    if errorMessage == "" then
+      luci.template.render("admin_system/applyreboot", {
+            title = luci.i18n.translate("Rebooting..."),
+            msg   = luci.i18n.translate("The system is rebooting to an alternative partition now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."),
+            addr  = luci.ip.new(uci:get("network", "lan", "ipaddr")) or "192.168.1.1"
+          })
+      luci.sys.reboot()
+    else
+      luci.template.render("advanced_reboot/advanced_reboot",{
+        device_name=device_name,
+        boot_envvar1_partition_one=boot_envvar1_partition_one,
+        partition_one_os=partition_one_os,
+        boot_envvar1_partition_two=boot_envvar1_partition_two,
+        partition_two_os=partition_two_os,
+        current_partition=current_partition,
+        errorMessage = errorMessage})
+    end
   end
 end
 
 function action_poweroff()
+  local uci = require "luci.model.uci".cursor()
   if luci.http.formvalue("cancel") then
     luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot'))
     return
@@ -113,7 +198,7 @@ function action_poweroff()
     luci.template.render("admin_system/applyreboot", {
           title = luci.i18n.translate("Shutting down..."),
           msg   = luci.i18n.translate("The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It might be necessary to renew the address of your computer to reach the device again, depending on your settings."),
-          addr  = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1"
+          addr  = luci.ip.new(uci:get("network", "lan", "ipaddr")) or "192.168.1.1"
         })
     luci.sys.call("/sbin/poweroff")
   end
index 206d25054327a8107d7cf267d180ec1ca7130ff0..0629c84b363c0443083de562bf5bbb0b5cb50386 100644 (file)
        <p class="alert-message warning"><%:Warning: There are unsaved changes that will get lost on reboot!%></p>
 <%- end -%>
 
+<%- if errorMessage and errorMessage ~= "" then -%>
+       <p class="alert-message warning"><%:ERROR: %><%=errorMessage%></p>
+<%- end -%>
+
 <%- if device_name then -%>
 <fieldset class="cbi-section">
   <legend><%=device_name%><%: Partitions%></legend>
@@ -26,7 +30,7 @@
     </tr>
     <tr class="cbi-section-table-row">
       <td>
-        <%=boot_envvar1_partition_one%>
+        <%=string.format("%X", boot_envvar1_partition_one)%>
       </td>
       <td>
         <%- if boot_envvar1_partition_one == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%>
@@ -50,7 +54,7 @@
     </tr>
     <tr class="cbi-section-table-row">
       <td>
-        <%=boot_envvar1_partition_two%>
+        <%=string.format("%X", boot_envvar1_partition_two)%>
       </td>
       <td>
         <%- if boot_envvar1_partition_two == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%>
diff --git a/applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po b/applications/luci-app-advanced-reboot/po/ru/advanced-reboot.po
new file mode 100644 (file)
index 0000000..75d4636
--- /dev/null
@@ -0,0 +1,163 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: advanced-reboot\n"
+"POT-Creation-Date: 2017-11-30 15:20+0300\n"
+"PO-Revision-Date: 2018-01-05 19:53+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"
+
+msgid "Action"
+msgstr "Действие"
+
+msgid "Advanced Reboot"
+msgstr "Дополнительная перезагрузка"
+
+msgid "Alternative"
+msgstr "Альтернатива"
+
+msgid "Alternative reboot cancelled."
+msgstr "Альтернативная перезагрузка отменена."
+
+msgid "Cancel"
+msgstr "Отменить"
+
+msgid "Confirm"
+msgstr "Подтвердить"
+
+msgid "Current"
+msgstr "Текущий"
+
+msgid "ERROR:"
+msgstr "ОШИБКА:"
+
+msgid "Firmware/OS (Kernel)"
+msgstr "Прошивка/ОС (Ядро)"
+
+msgid "No access to fw_printenv or fw_printenv!"
+msgstr "Нет доступа к fw_printenv или fw_printenv!"
+
+msgid "Partition"
+msgstr "Раздел"
+
+msgid "Partitions"
+msgstr "Разделы"
+
+msgid "Perform power off..."
+msgstr "Выполнить отключение..."
+
+msgid "Power Off Device"
+msgstr "Отключить питание устройства"
+
+msgid "Proceed"
+msgstr "Продолжить"
+
+msgid "Reboot Device to an Alternative Partition"
+msgstr "Перезагрузить устройство в альтернативный раздел"
+
+msgid "Reboot to alternative partition..."
+msgstr "Перезагрузить до альтернативного раздела..."
+
+msgid "Reboot to current partition"
+msgstr "Перезагрузка к текущему разделу"
+
+msgid "Rebooting..."
+msgstr "Перезагрузка..."
+
+msgid "Shutting down..."
+msgstr "Отключается..."
+
+msgid "Status"
+msgstr "Состояние"
+
+msgid ""
+"The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
+"few minutes before you try to reconnect. It might be necessary to renew the "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+"Система перезагружается сейчас.<br /> НЕ ОТКЛЮЧАЙТЕ ПИТАНИЕ УСТРОЙСТВА!<br /"
+"> Подождите несколько минут, прежде чем попытаться установить соединение "
+"снова. Возможно, потребуется обновить адрес компьютера для повторного "
+"доступа к устройству в зависимости от ваших настроек."
+
+msgid ""
+"The system is rebooting to an alternative partition now.<br /> DO NOT POWER "
+"OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It "
+"might be necessary to renew the address of your computer to reach the device "
+"again, depending on your settings."
+msgstr ""
+"Система перезагружается на альтернативный раздел сейчас.<br /> НЕ ОТКЛЮЧАЙТЕ "
+"ПИТАНИЕ УСТРОЙСТВА!<br /> Подождите несколько минут, прежде чем попытаться "
+"установить соединение снова. Возможно, потребуется обновить адрес компьютера "
+"для повторного доступа к устройству в зависимости от ваших настроек."
+
+msgid ""
+"The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It "
+"might be necessary to renew the address of your computer to reach the device "
+"again, depending on your settings."
+msgstr ""
+"Система сейчас отключается.<br /> НЕ ОТКЛЮЧАЙТЕ ПИТАНИЕ УСТРОЙСТВА!<br /> "
+"Возможно, потребуется обновить адрес компьютера для повторного доступа к "
+"устройству в зависимости от настроек."
+
+msgid "Unable to find Dual Boot Flag Partition."
+msgstr "Невозможно найти Dual Boot раздел."
+
+msgid "Unable to obtain firmware environment variable"
+msgstr "Невозможно получить переменную среды прошивки"
+
+msgid "Unable to set Dual Boot Flag Partition entry for partition"
+msgstr "Невозможно использовать Dual Boot раздел."
+
+msgid "Unable to set firmware environment variable"
+msgstr "Невозможно установить переменную среды прошивки"
+
+msgid ""
+"WARNING: An alternative partition might have its own settings and completely "
+"different firmware.<br /><br /> As your network configuration and WiFi SSID/"
+"password on alternative partition might be different, you might have to "
+"adjust your computer settings to be able to access your device once it "
+"reboots.<br /><br /> Please also be aware that alternative partition "
+"firmware might not provide an easy way to switch active partition and boot "
+"back to the currently active partition.<br /><br /> Click \"Proceed\" below "
+"to reboot device to an alternative partition."
+msgstr ""
+"ВНИМАНИЕ: альтернативный раздел может иметь собственные настройки и "
+"совершенно другую прошивку.<br /><br /> Поскольку ваши настройки сети и WiFi "
+"SSID/пароли на альтернативных разделах могут отличаться, может потребоваться "
+"изменить настройки компьютера, чтобы иметь возможность получить доступ к "
+"устройству после перезагрузки .<br /><br /> Помните также, что "
+"альтернативный раздел с прошивкой может не обеспечить простой способ "
+"переключения активного раздела и загрузки обратно в текущий активный раздел."
+"<br /><br /> Нажмите \"Продолжить\" ниже, чтобы перезагрузить устройство в "
+"альтернативный раздел."
+
+msgid ""
+"WARNING: Power off might result in a reboot on a device which doesn't "
+"support power off.<br /><br /> Click \"Proceed\" below to power off your "
+"device."
+msgstr ""
+"ВНИМАНИЕ: Отключение питания может привести к перезагрузке устройства, "
+"которое не поддерживает выключение питания.<br /><br /> Нажмите \"Продолжить"
+"\" ниже, чтобы выключить устройство."
+
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+"Внимание: Есть несохраненные изменения, которые будут потеряны при "
+"перезагрузке!"
+
+msgid "Warning: This system does not have two partitions!"
+msgstr "Внимание: Эта система не имеет двух разделов!"
+
+msgid "Warning: This system does not support powering off!"
+msgstr "Внимание: Эта система не поддерживает отключение питания!"
+
+msgid "to"
+msgstr ""
diff --git a/applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po b/applications/luci-app-advanced-reboot/po/sv/advanced-reboot.po
new file mode 100644 (file)
index 0000000..e0e13cf
--- /dev/null
@@ -0,0 +1,133 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Action"
+msgstr "Åtgärd"
+
+msgid "Advanced Reboot"
+msgstr "Avancerad omstart"
+
+msgid "Alternative"
+msgstr "Alternativ"
+
+msgid "Alternative reboot cancelled."
+msgstr ""
+
+msgid "Cancel"
+msgstr "Avbryt"
+
+msgid "Confirm"
+msgstr "Bekräfta"
+
+msgid "Current"
+msgstr "Nuvarande"
+
+msgid "ERROR:"
+msgstr ""
+
+msgid "Firmware/OS (Kernel)"
+msgstr "Inre mjukvara/OS (Kärna)"
+
+msgid "No access to fw_printenv or fw_printenv!"
+msgstr ""
+
+msgid "Partition"
+msgstr "Partition"
+
+msgid "Partitions"
+msgstr "Partitioner"
+
+msgid "Perform power off..."
+msgstr "Utför avstängning..."
+
+msgid "Power Off Device"
+msgstr "Stäng av enhet"
+
+msgid "Proceed"
+msgstr "Fortsätt"
+
+msgid "Reboot Device to an Alternative Partition"
+msgstr "Starta om enheten till en alternativ partition"
+
+msgid "Reboot to alternative partition..."
+msgstr "Starta om till alternativ partition..."
+
+msgid "Reboot to current partition"
+msgstr "Starta om till nuvarande partition"
+
+msgid "Rebooting..."
+msgstr "Startar om..."
+
+msgid "Shutting down..."
+msgstr "Stänger av..."
+
+msgid "Status"
+msgstr "Status"
+
+msgid ""
+"The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
+"few minutes before you try to reconnect. It might be necessary to renew the "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+
+msgid ""
+"The system is rebooting to an alternative partition now.<br /> DO NOT POWER "
+"OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It "
+"might be necessary to renew the address of your computer to reach the device "
+"again, depending on your settings."
+msgstr ""
+
+msgid ""
+"The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It "
+"might be necessary to renew the address of your computer to reach the device "
+"again, depending on your settings."
+msgstr ""
+"Systemet stänger ner nu.<br /> STÄNG INTE AV ENHETEN!<br /> Beroende på dina "
+"inställningar så kan det vara nödvändigt att förnya din dators adress för "
+"att nå enheten igen."
+
+msgid "Unable to find Dual Boot Flag Partition."
+msgstr ""
+
+msgid "Unable to obtain firmware environment variable"
+msgstr ""
+
+msgid "Unable to set Dual Boot Flag Partition entry for partition"
+msgstr ""
+
+msgid "Unable to set firmware environment variable"
+msgstr ""
+
+msgid ""
+"WARNING: An alternative partition might have its own settings and completely "
+"different firmware.<br /><br /> As your network configuration and WiFi SSID/"
+"password on alternative partition might be different, you might have to "
+"adjust your computer settings to be able to access your device once it "
+"reboots.<br /><br /> Please also be aware that alternative partition "
+"firmware might not provide an easy way to switch active partition and boot "
+"back to the currently active partition.<br /><br /> Click \"Proceed\" below "
+"to reboot device to an alternative partition."
+msgstr ""
+
+msgid ""
+"WARNING: Power off might result in a reboot on a device which doesn't "
+"support power off.<br /><br /> Click \"Proceed\" below to power off your "
+"device."
+msgstr ""
+"VARNING: Att stänga av kan resultera i en omstart i en enhet som inte har "
+"stöd för avstängning.<br /><br /> Klicka på \"Fortsätt\" nedanför för att "
+"stänga av din enhet."
+
+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!"
+
+msgid "Warning: This system does not have two partitions!"
+msgstr "Varning: Det här systemet har inte två partitioner!"
+
+msgid "Warning: This system does not support powering off!"
+msgstr "Varning: Det här systemet har inte stöd för avstängning!"
+
+msgid "to"
+msgstr ""
diff --git a/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po b/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po
deleted file mode 100644 (file)
index 20d77cb..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8\n"
-
-msgid "Action"
-msgstr "Åtgärd"
-
-msgid "Advanced Reboot"
-msgstr "Avancerad omstart"
-
-msgid "Alternative"
-msgstr "Alternativ"
-
-msgid "Cancel"
-msgstr "Avbryt"
-
-msgid "Confirm"
-msgstr "Bekräfta"
-
-msgid "Current"
-msgstr "Nuvarande"
-
-msgid "Firmware/OS (Kernel)"
-msgstr "Inre mjukvara/OS (Kärna)"
-
-msgid "Partition"
-msgstr "Partition"
-
-msgid "Partitions"
-msgstr "Partitioner"
-
-msgid "Perform power off..."
-msgstr "Utför avstängning..."
-
-msgid "Power Off Device"
-msgstr "Stäng av enhet"
-
-msgid "Proceed"
-msgstr "Fortsätt"
-
-msgid "Reboot Device to an Alternative Partition"
-msgstr "Starta om enheten till en alternativ partition"
-
-msgid "Reboot to alternative partition..."
-msgstr "Starta om till alternativ partition..."
-
-msgid "Reboot to current partition"
-msgstr "Starta om till nuvarande partition"
-
-msgid "Rebooting..."
-msgstr "Startar om..."
-
-msgid "Shutting down..."
-msgstr "Stänger av..."
-
-msgid "Status"
-msgstr "Status"
-
-msgid ""
-"The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
-"few minutes before you try to reconnect. It might be necessary to renew the "
-"address of your computer to reach the device again, depending on your "
-"settings."
-msgstr ""
-
-msgid ""
-"The system is rebooting to an alternative partition now.<br /> DO NOT POWER "
-"OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It "
-"might be necessary to renew the address of your computer to reach the device "
-"again, depending on your settings."
-msgstr ""
-
-msgid ""
-"The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It "
-"might be necessary to renew the address of your computer to reach the device "
-"again, depending on your settings."
-msgstr ""
-"Systemet stänger ner nu.<br /> STÄNG INTE AV ENHETEN!<br /> Beroende på dina "
-"inställningar så kan det vara nödvändigt att förnya din dators adress för "
-"att nå enheten igen."
-
-msgid ""
-"WARNING: An alternative partition might have its own settings and completely "
-"different firmware.<br /><br /> As your network configuration and WiFi SSID/"
-"password on alternative partition might be different, you might have to "
-"adjust your computer settings to be able to access your device once it "
-"reboots.<br /><br /> Please also be aware that alternative partition "
-"firmware might not provide an easy way to switch active partition and boot "
-"back to the currently active partition.<br /><br /> Click \"Proceed\" below "
-"to reboot device to an alternative partition."
-msgstr ""
-
-msgid ""
-"WARNING: Power off might result in a reboot on a device which doesn't "
-"support power off.<br /><br /> Click \"Proceed\" below to power off your "
-"device."
-msgstr ""
-"VARNING: Att stänga av kan resultera i en omstart i en enhet som inte har "
-"stöd för avstängning.<br /><br /> Klicka på \"Fortsätt\" nedanför för att "
-"stänga av din enhet."
-
-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!"
-
-msgid "Warning: This system does not have two partitions!"
-msgstr "Varning: Det här systemet har inte två partitioner!"
-
-msgid "Warning: This system does not support powering off!"
-msgstr "Varning: Det här systemet har inte stöd för avstängning!"
diff --git a/applications/luci-app-advanced-reboot/po/templates/advanced-reboot.pot b/applications/luci-app-advanced-reboot/po/templates/advanced-reboot.pot
new file mode 100644 (file)
index 0000000..47a81e1
--- /dev/null
@@ -0,0 +1,126 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Action"
+msgstr ""
+
+msgid "Advanced Reboot"
+msgstr ""
+
+msgid "Alternative"
+msgstr ""
+
+msgid "Alternative reboot cancelled."
+msgstr ""
+
+msgid "Cancel"
+msgstr ""
+
+msgid "Confirm"
+msgstr ""
+
+msgid "Current"
+msgstr ""
+
+msgid "ERROR:"
+msgstr ""
+
+msgid "Firmware/OS (Kernel)"
+msgstr ""
+
+msgid "No access to fw_printenv or fw_printenv!"
+msgstr ""
+
+msgid "Partition"
+msgstr ""
+
+msgid "Partitions"
+msgstr ""
+
+msgid "Perform power off..."
+msgstr ""
+
+msgid "Power Off Device"
+msgstr ""
+
+msgid "Proceed"
+msgstr ""
+
+msgid "Reboot Device to an Alternative Partition"
+msgstr ""
+
+msgid "Reboot to alternative partition..."
+msgstr ""
+
+msgid "Reboot to current partition"
+msgstr ""
+
+msgid "Rebooting..."
+msgstr ""
+
+msgid "Shutting down..."
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid ""
+"The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
+"few minutes before you try to reconnect. It might be necessary to renew the "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+
+msgid ""
+"The system is rebooting to an alternative partition now.<br /> DO NOT POWER "
+"OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It "
+"might be necessary to renew the address of your computer to reach the device "
+"again, depending on your settings."
+msgstr ""
+
+msgid ""
+"The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It "
+"might be necessary to renew the address of your computer to reach the device "
+"again, depending on your settings."
+msgstr ""
+
+msgid "Unable to find Dual Boot Flag Partition."
+msgstr ""
+
+msgid "Unable to obtain firmware environment variable"
+msgstr ""
+
+msgid "Unable to set Dual Boot Flag Partition entry for partition"
+msgstr ""
+
+msgid "Unable to set firmware environment variable"
+msgstr ""
+
+msgid ""
+"WARNING: An alternative partition might have its own settings and completely "
+"different firmware.<br /><br /> As your network configuration and WiFi SSID/"
+"password on alternative partition might be different, you might have to "
+"adjust your computer settings to be able to access your device once it "
+"reboots.<br /><br /> Please also be aware that alternative partition "
+"firmware might not provide an easy way to switch active partition and boot "
+"back to the currently active partition.<br /><br /> Click \"Proceed\" below "
+"to reboot device to an alternative partition."
+msgstr ""
+
+msgid ""
+"WARNING: Power off might result in a reboot on a device which doesn't "
+"support power off.<br /><br /> Click \"Proceed\" below to power off your "
+"device."
+msgstr ""
+
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+msgid "Warning: This system does not have two partitions!"
+msgstr ""
+
+msgid "Warning: This system does not support powering off!"
+msgstr ""
+
+msgid "to"
+msgstr ""
diff --git a/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot b/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot
deleted file mode 100644 (file)
index 9c81089..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-msgid "Action"
-msgstr ""
-
-msgid "Advanced Reboot"
-msgstr ""
-
-msgid "Alternative"
-msgstr ""
-
-msgid "Cancel"
-msgstr ""
-
-msgid "Confirm"
-msgstr ""
-
-msgid "Current"
-msgstr ""
-
-msgid "Firmware/OS (Kernel)"
-msgstr ""
-
-msgid "Partition"
-msgstr ""
-
-msgid "Partitions"
-msgstr ""
-
-msgid "Perform power off..."
-msgstr ""
-
-msgid "Power Off Device"
-msgstr ""
-
-msgid "Proceed"
-msgstr ""
-
-msgid "Reboot Device to an Alternative Partition"
-msgstr ""
-
-msgid "Reboot to alternative partition..."
-msgstr ""
-
-msgid "Reboot to current partition"
-msgstr ""
-
-msgid "Rebooting..."
-msgstr ""
-
-msgid "Shutting down..."
-msgstr ""
-
-msgid "Status"
-msgstr ""
-
-msgid ""
-"The system is rebooting now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
-"few minutes before you try to reconnect. It might be necessary to renew the "
-"address of your computer to reach the device again, depending on your "
-"settings."
-msgstr ""
-
-msgid ""
-"The system is rebooting to an alternative partition now.<br /> DO NOT POWER "
-"OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It "
-"might be necessary to renew the address of your computer to reach the device "
-"again, depending on your settings."
-msgstr ""
-
-msgid ""
-"The system is shutting down now.<br /> DO NOT POWER OFF THE DEVICE!<br /> It "
-"might be necessary to renew the address of your computer to reach the device "
-"again, depending on your settings."
-msgstr ""
-
-msgid ""
-"WARNING: An alternative partition might have its own settings and completely "
-"different firmware.<br /><br /> As your network configuration and WiFi SSID/"
-"password on alternative partition might be different, you might have to "
-"adjust your computer settings to be able to access your device once it "
-"reboots.<br /><br /> Please also be aware that alternative partition "
-"firmware might not provide an easy way to switch active partition and boot "
-"back to the currently active partition.<br /><br /> Click \"Proceed\" below "
-"to reboot device to an alternative partition."
-msgstr ""
-
-msgid ""
-"WARNING: Power off might result in a reboot on a device which doesn't "
-"support power off.<br /><br /> Click \"Proceed\" below to power off your "
-"device."
-msgstr ""
-
-msgid "Warning: There are unsaved changes that will get lost on reboot!"
-msgstr ""
-
-msgid "Warning: This system does not have two partitions!"
-msgstr ""
-
-msgid "Warning: This system does not support powering off!"
-msgstr ""
index f08cb70877e7c9877bea23662f3eaa0ba2b54f45..05c17cafa0af10bf9f53250df230563b7ecbb91e 100644 (file)
@@ -1,35 +1,35 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: ahcp\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2013-09-05 15:29+0200\n"
-"Last-Translator: datasheet <michael.gritsaenko@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
+"POT-Creation-Date: 2013-09-05 15:29+0200\n"
+"PO-Revision-Date: 2018-01-24 14:59+0300\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\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"
-"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"
+"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: Poedit 1.8.7.1\n"
 "X-Poedit-SourceCharset: UTF-8\n"
+"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
+"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
 
-# Ad-Hoc Configuration Protocol - протокол автоматической конфигурации IPv6 и сетей IPv6/IPv4 двойного стека
 msgid "AHCP Server"
-msgstr "AHCP-сервер"
+msgstr "AHCP сервер"
 
-#, fuzzy
 msgid ""
 "AHCP is an autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 "
 "networks designed to be used in place of router discovery or DHCP on "
 "networks where it is difficult or impossible to configure a server within "
 "every link-layer broadcast domain, for example mobile ad-hoc networks."
 msgstr ""
-"AHCP - Ñ\8dÑ\82о Ð¿Ñ\80оÑ\82окол Ð°Ð²Ñ\82омаÑ\82иÑ\87еÑ\81кой ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии сетей IPv6 и IPv6/IPv4, "
+"AHCP - Ñ\8dÑ\82о Ð¿Ñ\80оÑ\82окол Ð°Ð²Ñ\82омаÑ\82иÑ\87еÑ\81кой Ð½Ð°Ñ\81Ñ\82Ñ\80ойки сетей IPv6 и IPv6/IPv4, "
 "разработанный для использования вместо DHCP и протоколов обнаружения "
 "маршрутизаторов в сетях, где сложно или невозможно настроить сервер внутри "
-"каждой широковещательной зоны канального уровня, например, в мобильных ad-"
-"hoc сетях."
+"каждой широковещательной зоны канального уровня, например в мобильных ad-hoc "
+"сетях."
 
 msgid "Active AHCP Leases"
 msgstr "Активные арендованные AHCP-адреса"
@@ -44,23 +44,22 @@ msgid "Age"
 msgstr "Возраст"
 
 msgid "Announced DNS servers"
-msgstr "Ð\90нонÑ\81иÑ\80Ñ\83емÑ\8bе DNS-Ñ\81еÑ\80веÑ\80Ñ\8b"
+msgstr "Ð\9eбÑ\8aÑ\8fвиÑ\82Ñ\8c DNS Ñ\81еÑ\80веÑ\80а"
 
 msgid "Announced NTP servers"
-msgstr "Ð\90нонÑ\81иÑ\80Ñ\83емÑ\8bе NTP-Ñ\81еÑ\80веÑ\80Ñ\8b"
+msgstr "Ð\9eбÑ\8aÑ\8fвиÑ\82Ñ\8c NTP Ñ\81еÑ\80веÑ\80а"
 
 msgid "Announced prefixes"
-msgstr "Ð\90нонÑ\81иÑ\80Ñ\83емÑ\8bе префиксы"
+msgstr "Ð\9eбÑ\8aÑ\8fвиÑ\82Ñ\8c префиксы"
 
 msgid "Collecting data..."
 msgstr "Сбор данных..."
 
-#, fuzzy
 msgid "Forwarder"
 msgstr "Перенаправление запросов"
 
 msgid "General Setup"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
 
 msgid "IPv4 and IPv6"
 msgstr "IPv4 и IPv6"
@@ -72,7 +71,7 @@ msgid "IPv6 only"
 msgstr "Только IPv6"
 
 msgid "Lease directory"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f Ð°Ñ\80ендованнÑ\8bÑ\85 адресов"
+msgstr "Файл Ð°Ñ\80ендованнÑ\8bÑ\85<br />адресов"
 
 msgid "Lease validity time"
 msgstr "Срок действия аренды"
@@ -81,7 +80,7 @@ msgid "Log file"
 msgstr "Файл журнала"
 
 msgid "Multicast address"
-msgstr "Ð\93Ñ\80Ñ\83пповой Ð°Ð´Ñ\80еÑ\81"
+msgstr "Ð\90дÑ\80еÑ\81 Ð¼Ñ\83лÑ\8cÑ\82ивеÑ\89аниÑ\8f"
 
 msgid "Operation mode"
 msgstr "Режим работы"
@@ -90,7 +89,7 @@ msgid "Port"
 msgstr "Порт"
 
 msgid "Protocol family"
-msgstr "Ð\9fÑ\80оÑ\82окол"
+msgstr "СемейÑ\81Ñ\82во Ð¿Ñ\80оÑ\82околов"
 
 msgid "Served interfaces"
 msgstr "Используемые интерфейсы"
@@ -99,13 +98,13 @@ msgid "Server"
 msgstr "Сервер"
 
 msgid "Specifies the announced IPv4 and IPv6 NTP servers"
-msgstr "Ð\9eпÑ\80еделÑ\8fеÑ\82 IPv4 Ð¸ IPv6 NTP-Ñ\81еÑ\80веÑ\80Ñ\8b"
+msgstr "Ð\97адайÑ\82е IPv4 Ð¸ IPv6 NTP Ñ\81еÑ\80веÑ\80а."
 
 msgid "Specifies the announced IPv4 and IPv6 name servers"
-msgstr "Ð\9eпÑ\80еделÑ\8fеÑ\82 IPv4 Ð¸ IPv6 DNS-Ñ\81еÑ\80веÑ\80Ñ\8b"
+msgstr "Ð\97адайÑ\82е IPv4 Ð¸ IPv6 DNS Ñ\81еÑ\80веÑ\80а."
 
 msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
-msgstr "Ð\9eпÑ\80еделÑ\8fеÑ\82 IPv4- Ð¸ IPv6-пÑ\80еÑ\84икÑ\81Ñ\8b Ñ\81еÑ\82и Ð² Ð½Ð¾Ñ\82аÑ\86ии CIDR"
+msgstr "Ð\97адайÑ\82е IPv4 Ð¸ IPv6 Ð¿Ñ\80еÑ\84икÑ\81Ñ\8b Ñ\81еÑ\82и Ð² Ð½Ð¾Ñ\82аÑ\86ии CIDR."
 
 msgid "The AHCP Service is not running."
 msgstr "Служба AHCP не запущена."
diff --git a/applications/luci-app-aria2/po/ru/aria2.po b/applications/luci-app-aria2/po/ru/aria2.po
new file mode 100644 (file)
index 0000000..e5e22d1
--- /dev/null
@@ -0,0 +1,225 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: aria2\n"
+"POT-Creation-Date: 2017-11-30 23:45+0300\n"
+"PO-Revision-Date: 2018-01-31 18:33+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"
+
+msgid "\"Falloc\" is not available in all cases."
+msgstr "'Falloc' возможен не всегда."
+
+msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
+msgstr "<abbr title=\"Распределенная Hash таблица\">DHT</abbr> включена"
+
+msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
+msgstr "<abbr title=\"Обнаружение локальных пиров\">LPD</abbr> включено"
+
+msgid "Additional Bt tracker enabled"
+msgstr "Дополнительный<br />Bt tracker включен"
+
+msgid "Aria2"
+msgstr "Aria2"
+
+msgid "Aria2 Settings"
+msgstr "Настройка Aria2"
+
+msgid "Aria2 Status"
+msgstr "Состояние Aria2"
+
+msgid ""
+"Aria2 is a multi-protocol &amp; multi-source download utility, here you can "
+"configure the settings."
+msgstr ""
+"Aria2 - это мульти-протокольная и мульти-платформенная утилита загрузки, "
+"здесь вы сможете ее настроить."
+
+msgid "Autosave session interval"
+msgstr "Интервал сессии автосохранения"
+
+msgid "BitTorrent Settings"
+msgstr "Настройки BitTorrent-а"
+
+msgid "BitTorrent listen port"
+msgstr "Порты BitTorrent-а"
+
+msgid "Collecting data..."
+msgstr "Сбор данных..."
+
+msgid "Config file directory"
+msgstr "Папка расположения<br />сonfig файла"
+
+msgid "Debug"
+msgstr "Отладка"
+
+msgid "Default download directory"
+msgstr "Папка для загрузки<br />файлов по умолчанию"
+
+msgid "Disk cache"
+msgstr "Дисковый кэш"
+
+msgid "Enable log"
+msgstr "Включить ведение системного журнала"
+
+msgid "Enabled"
+msgstr "Включено"
+
+msgid "Error"
+msgstr "Ошибка"
+
+msgid "Extra Settings"
+msgstr "Дополнительные настройки"
+
+msgid "Falloc"
+msgstr "Falloc"
+
+msgid "Files and Locations"
+msgstr "Файлы и папки"
+
+msgid "Follow torrent"
+msgstr "Запустить<br />торрент-файл"
+
+msgid "General Settings"
+msgstr "Основные настройки"
+
+msgid "Generate Randomly"
+msgstr "Генерировать случайно"
+
+msgid "Info"
+msgstr "Информация"
+
+msgid "List of additional Bt tracker"
+msgstr "Список дополнительных BT tracker-ов"
+
+msgid "List of extra settings"
+msgstr "Список дополнительных настроек"
+
+msgid "Log file is in the config file dir."
+msgstr "Файл системного журнала находится в папке с config файлом."
+
+msgid "Log level"
+msgstr "Записывать в журнал"
+
+msgid "Max concurrent downloads"
+msgstr "Максимальное количество одновременных загрузок"
+
+msgid "Max connection per server"
+msgstr "Максимальное количество<br />подключений на сервер"
+
+msgid "Max number of peers per torrent"
+msgstr "Максимальное число<br />пиров на торрент-файл"
+
+msgid "Max number of split"
+msgstr "Максимальное<br />число разделений"
+
+msgid "Min split size"
+msgstr "Минимальный размер разделений"
+
+msgid "No Authentication"
+msgstr "Без проверки подлинности"
+
+msgid "Notice"
+msgstr "Заметка"
+
+msgid "Off"
+msgstr "Выключено"
+
+msgid "Open WebUI-Aria2"
+msgstr "Открыть WebUI-Aria2"
+
+msgid "Open YAAW"
+msgstr "Открыть YAAW"
+
+msgid "Overall download limit"
+msgstr "Общее ограничение<br />скорости загрузки"
+
+msgid "Overall speed limit enabled"
+msgstr "Общее ограничение скорости<br /> для утилиты включено"
+
+msgid "Overall upload limit"
+msgstr "Общее ограничение<br />скорости раздачи"
+
+msgid "Per task download limit"
+msgstr "Ограничить скорость загрузки"
+
+msgid "Per task speed limit enabled"
+msgstr "Ограничить скорость для одной задачи включено"
+
+msgid "Per task upload limit"
+msgstr "Ограничить скорость раздачи"
+
+msgid "Prealloc"
+msgstr "Предварительно"
+
+msgid "Preallocation"
+msgstr "Предварительное<br />распределение<br />места под файл"
+
+msgid "Prefix of peer ID"
+msgstr "Префикс ID пира"
+
+msgid "RPC Token"
+msgstr "Токен для доступа к удаленному управлению (RPC)"
+
+msgid "RPC authentication method"
+msgstr "Метод аутентификации для доступа к удаленному управлению (RPC)"
+
+msgid "RPC password"
+msgstr "Пароль для доступа к удаленному управлению (RPC)"
+
+msgid "RPC port"
+msgstr "Порт для доступа к удаленному управлению (RPC)"
+
+msgid "RPC username"
+msgstr "Логин для доступа к удаленному управлению (RPC)"
+
+msgid "Run daemon as user"
+msgstr "Запуск демона<br />от имени пользователя"
+
+msgid "Sec"
+msgstr "Секунды"
+
+msgid "Task Settings"
+msgstr "Настройки задач"
+
+msgid "The Aria2 service is not running."
+msgstr "Aria2 сервис не запущен."
+
+msgid "The Aria2 service is running."
+msgstr "Aria2 сервис запущен."
+
+msgid "Token"
+msgstr "Токен"
+
+msgid "Trunc"
+msgstr "Сокращать"
+
+msgid "Use WebSocket"
+msgstr "Использовать WebSockets"
+
+msgid "User agent value"
+msgstr "Агент пользователя"
+
+msgid "Username & Password"
+msgstr "Имя и пароль"
+
+msgid "View Json-RPC URL"
+msgstr "Показать URL Json-RPC"
+
+msgid "Warn"
+msgstr "Внимание"
+
+msgid "in bytes, You can append K or M."
+msgstr ""
+"Дисковый кэш в байтах. Вы можете добавить суффикс K (кило) или М (мега)."
+
+msgid "in bytes/sec, You can append K or M."
+msgstr "в байтах/секундах. Вы можете добавить суффикс K (кило) или М (мега)."
index 4ea67ce70a9d4890d3c175ea682e638d435d561f..0a8c65ebdd66c8791070887c827afff7791737ce 100644 (file)
        </form>
 </fieldset>
 <script type="text/javascript">
-data = {};
-origin = document.location.href.replace(location.pathname, "")
-ubus_url = origin + "/ubus/"
-
-function set_server() {
-       document.getElementById("error_box").style.display = "none";
-       data.url = document.getElementById("server").value;
-       ubus_call("uci", "set", { "config": "attendedsysupgrade", "section": "server", values: { "url": data.url } })
-       ubus_call("uci", "commit", { "config": "attendedsysupgrade" })
-       var server_button = document.getElementById("server")
-       server_button.type = 'button';
-       server_button.className = 'cbi-button cbi-button-edit';
-       server_button.parentElement.removeChild(document.getElementById("button_set"));
-       server_button.onclick = edit_server;
-}
-
-function edit_server() {
-       document.getElementById("server").type = 'text';
-       document.getElementById("server").onkeydown = function(event) {
-               if(event.key === 'Enter') {
-                       set_server();
-                       return false;
-               }
-       }
-       document.getElementById("server").className = '';
-       document.getElementById("server").onclick = null;
-
-       button_set = document.createElement("input");
-       button_set.type = "button";
-       button_set.value = "Save";
-       button_set.name = "button_set";
-       button_set.id = "button_set";
-       button_set.className = 'cbi-button cbi-button-edit';
-       button_set.style = 'background-image: url("/luci-static/resources/cbi/save.gif");'
-       button_set.onclick = set_server
-       document.getElementById("server").parentElement.appendChild(button_set);
-}
-
-function edit_packages() {
-       data.edit_packages = true
-       document.getElementById("edit_button").style.display = "none";
-       document.getElementById("edit_packages").value = data.packages.join("\n");
-       document.getElementById("edit_packages").style.display = "block";
-}
-
-// requests to the upgrade server
-function server_request(request_dict, path, callback) {
-       request_dict.distro = data.release.distribution;
-       request_dict.target = data.release.target.split("\/")[0];
-       request_dict.subtarget = data.release.target.split("\/")[1];
-       var request = new XMLHttpRequest();
-       request.open("POST", data.url + "/" + path, true);
-       request.setRequestHeader("Content-type", "application/json");
-       request.send(JSON.stringify(request_dict));
-       request.onerror = function(e) {
-               error_box("upgrade server down")
-               document.getElementById("server_div").style.display = "block";
-       }
-       request.addEventListener('load', function(event) {
-               callback(request)
-       });
-}
-
-// initial setup, get system information
-function setup() {
+       data = {};
        data["ubus_rpc_session"] = "<%=luci.dispatcher.context.authsession%>"
-       ubus_call("rpc-sys", "packagelist", {}, "packages");
-       ubus_call("system", "board", {}, "release");
-       ubus_call("system", "board", {}, "board_name");
-       ubus_call("system", "board", {}, "model");
-       ubus_call("system", "info", {}, "memory");
-       uci_get({ "config": "attendedsysupgrade", "section": "server", "option": "url" })
-       uci_get({ "config": "attendedsysupgrade", "section": "client", "option": "upgrade_packages" })
-       uci_get({ "config": "attendedsysupgrade", "section": "client", "option": "advanced_mode" })
-       uci_get({ "config": "attendedsysupgrade", "section": "client", "option": "auto_search" })
-       setup_ready();
-}
-
-function setup_ready() {
-       // checks if a async ubus calls have finished
-       if(ubus_counter != ubus_closed) {
-               setTimeout(setup_ready, 300)
-       } else {
-               if(data.auto_search == 1) {
-                       upgrade_check();
-               } else {
-                       document.getElementById("upgrade_button").style.display = "block";
-                       document.getElementById("server_div").style.display = "block";
-                       document.getElementById("server").value = data.url;
-               }
-       }
-}
-
-function uci_get(option) {
-       // simple wrapper to get a uci value store in data.<option>
-       ubus_call("uci", "get", option, option["option"])
-}
-
-ubus_counter = 0;
-ubus_closed = 0;
-function ubus_call(command, argument, params, variable) {
-       var request_data = {};
-       request_data.jsonrpc = "2.0";
-       request_data.id = ubus_counter;
-       request_data.method = "call";
-       request_data.params = [ data.ubus_rpc_session, command, argument, params ]
-       request_json = JSON.stringify(request_data)
-       ubus_counter++;
-       var request = new XMLHttpRequest();
-       request.open("POST", ubus_url, true);
-       request.setRequestHeader("Content-type", "application/json");
-       request.onload = function(event) {
-               if(request.status === 200) {
-                       var response = JSON.parse(request.responseText)
-                       if(!("error" in response) && "result" in response) {
-                               if(response.result.length === 2) {
-                                       if(command === "uci") {
-                                               data[variable] = response.result[1].value
-                                       } else {
-                                               data[variable] = response.result[1][variable]
-                                       }
-                               }
-                       } else {
-                               error_box("<b>Ubus call faild:</b></br>Request: " + request_json + "</br>Response: " + JSON.stringify(response))
-                       }
-                       ubus_closed++;
-               }
-       }
-       request.send(request_json);
-}
-
-function info_box(info_output, loading) {
-       // Shows notification if upgrade is available
-       // If loading is true then an "processing" animation is added
-       document.getElementById("info_box").style.display = "block";
-       var loading_image = '';
-       if(loading) {
-               loading_image = '<img src="/luci-static/resources/icons/loading.gif" alt="Loading" style="vertical-align:middle">';
-       }
-       document.getElementById("info_box").innerHTML = loading_image + info_output;
-}
-
-function error_box(error_output) {
-       // Shows erros in red box
-       document.getElementById("error_box").style.display = "block";
-       document.getElementById("error_box").innerHTML = error_output;
-       document.getElementById("info_box").style.display = "none";
-}
-
-function upgrade_check() {
-       // Asks server for new firmware
-       // If data.upgrade_packages is set to true search for new package versions as well
-       document.getElementById("error_box").style.display = "none";
-       document.getElementById("server_div").style.display = "none";
-       info_box("Searching for upgrades", true);
-       var request_dict = {}
-       request_dict.version = data.release.version;
-       request_dict.packages = data.packages;
-       request_dict.upgrade_packages = data.upgrade_packages
-       server_request(request_dict, "api/upgrade-check", upgrade_check_callback)
-}
-
-function upgrade_check_callback(request_text) {
-       var request_json = JSON.parse(request_text)
-
-       // create simple output to tell user whats going to be upgrade (release/packages)
-       var info_output = ""
-       if(request_json.version != undefined) {
-               info_output += "<h3>New firmware release available</h3>"
-               info_output += data.release.version + " to " + request_json.version
-               data.latest_version = request_json.version;
-       }
-       if(request_json.upgrades != undefined) {
-               info_output += "<h3>Package upgrades available</h3>"
-               for (upgrade in request_json.upgrades) {
-                       info_output += "<b>" + upgrade + "</b>: " + request_json.upgrades[upgrade][1] + " to " + request_json.upgrades[upgrade][0] + "</br>"
-               }
-       }
-       data.packages = request_json.packages
-       info_box(info_output)
-
-       if(data.advanced_mode == 1) {
-               document.getElementById("edit_button").style.display = "block";
-       }
-       var upgrade_button = document.getElementById("upgrade_button")
-       upgrade_button.value = "Request firmware";
-       upgrade_button.style.display = "block";
-       upgrade_button.disabled = false;
-       upgrade_button.onclick = upgrade_request;
-
-}
-
-function upgrade_request() {
-       // Request the image
-       // Needed values
-       // version/release
-       // board_name or model (server tries to find the corrent profile)
-       // packages
-       // The rest is added by server_request()
-       document.getElementById("upgrade_button").disabled = true;
-       document.getElementById("edit_packages").style.display = "none";
-       document.getElementById("edit_button").style.display = "none";
-       document.getElementById("keep_container").style.display = "none";
-
-       var request_dict = {}
-       request_dict.version = data.latest_version;
-       request_dict.board = data.board_name
-       request_dict.model = data.model
-
-       if(data.edit_packages == true) {
-               request_dict.packages = document.getElementById("edit_packages").value.split("\n")
-       } else {
-               request_dict.packages = data.packages;
-       }
-
-       server_request(request_dict, "api/upgrade-request", upgrade_request_callback)
-}
-
-function upgrade_request_callback(request) {
-       // ready to download
-       var request_json = JSON.parse(request);
-       data.sysupgrade_url = request_json.sysupgrade;
-       data.checksum = request_json.checksum;
-       data.filesize = request_json.filesize;
-
-       info_output = "Firmware created"
-       if(data.advanced_mode == 1) {
-               info_output += '</br><a target="_blank" href="' + data.sysupgrade_url + '.log">Build log</a>'
-       }
-       info_box(info_output);
-
-       document.getElementById("keep_container").style.display = "block";
-       var upgrade_button = document.getElementById("upgrade_button")
-       upgrade_button.disabled = false;
-       upgrade_button.style.display = "block";
-       upgrade_button.value = "Flash firmware";
-       upgrade_button.onclick = download_image;
-}
-
-function flash_image() {
-       // Flash image via rpc-sys upgrade_start
-       info_box("Flashing firmware. Don't unpower device", true)
-       ubus_call("rpc-sys", "upgrade_start", { "keep": document.getElementById("keep").checked }, 'message');
-       ping_max = 3600; // in seconds
-       setTimeout(ping_ubus, 10000)
-}
-
-function ping_ubus() {
-       // Tries to connect to ubus. If the connection fails the device is likely still rebooting.
-       // If more time than ping_max passes update may failed
-       if(ping_max > 0) {
-               ping_max--;
-               var request = new XMLHttpRequest();
-               request.open("GET", ubus_url, true);
-               request.addEventListener('error', function(event) {
-                       info_box("Rebooting device", true);
-                       setTimeout(ping_ubus, 1000)
-               });
-               request.addEventListener('load', function(event) {
-                       info_box("Success! Please reload web interface");
-                       document.getElementById("upgrade_button").value = "reload page";
-                       document.getElementById("upgrade_button").style.display = "block";
-                       document.getElementById("upgrade_button").disabled = false;
-                       document.getElementById("upgrade_button").onclick = function() { location.reload(); }
-               });
-               request.send();
-       } else {
-               error_box("Web interface could not reconnect to your device. Please reload web interface or check device manually")
-       }
-}
-
-function upload_image(blob) {
-       // Uploads received blob data to the server using cgi-io
-       var request = new XMLHttpRequest();
-       var form_data  = new FormData();
-
-       form_data.append("sessionid", data.ubus_rpc_session)
-       form_data.append("filename", "/tmp/firmware.bin")
-       form_data.append("filemode", 755) // insecure?
-       form_data.append("filedata", blob)
-
-       request.addEventListener('load', function(event) {
-               request_json = JSON.parse(request.responseText)
-               if(data.checksum != request_json.checksum) {
-                       error_box("Checksum missmatch! Please retry")
-               } else {
-                       flash_image();
-               }
-       });
-
-       request.addEventListener('error', function(event) {
-               info_box("Upload of firmware failed, please retry by reloading web interface")
-       });
-
-       request.open('POST', origin + '/cgi-bin/cgi-upload');
-       request.send(form_data);
-}
-
-
-function download_image() {
-       // Download image from server once the url was received by upgrade_request
-       if(data.filesize > data.memory.free) {
-               error_box("Not enough free memory to download firmware. Please stop unneeded services on router and retry")
-       } else {
-               document.getElementById("keep_container").style.display = "none";
-               document.getElementById("upgrade_button").style.display = "none";
-               var download_request = new XMLHttpRequest();
-               download_request.open("GET", data.sysupgrade_url);
-               download_request.responseType = "arraybuffer";
-
-               download_request.onload = function () {
-                       if (this.status === 200) {
-                               var blob = new Blob([download_request.response], {type: "application/octet-stream"});
-                               upload_image(blob)
-                       }
-               };
-               info_box("Downloading firmware", true);
-               download_request.send();
-       }
-}
-
-function server_request(request_dict, path, callback) {
-       request_dict.distro = data.release.distribution;
-       request_dict.target = data.release.target.split("\/")[0];
-       request_dict.subtarget = data.release.target.split("\/")[1];
-       var request = new XMLHttpRequest();
-       request.open("POST", data.url + "/" + path, true);
-       request.setRequestHeader("Content-type", "application/json");
-       request.send(JSON.stringify(request_dict));
-       request.onerror = function(e) {
-               error_box("Upgrade server down or could not connect")
-               document.getElementById("server_div").style.display = "block";
-       }
-       request.addEventListener('load', function(event) {
-               request_text = request.responseText;
-               if (request.status === 200) {
-                       callback(request_text)
-
-               } else if (request.status === 202) {
-                       var imagebuilder = request.getResponseHeader("X-Imagebuilder-Status");
-                       if(imagebuilder === "queue") {
-                               // in queue
-                               var queue = request.getResponseHeader("X-Build-Queue-Position");
-                               info_box("In build queue position " + queue, true)
-                               console.log("queued");
-                       } else if(imagebuilder === "initialize") {
-                               info_box("Setting up ImageBuilder", true)
-                               console.log("Setting up imagebuilder");
-                       } else if(imagebuilder === "building") {
-                               info_box("Building image");
-                               console.log("building");
-                       } else {
-                               info_box("Processing request");
-                               console.log(imagebuilder)
-                       }
-                       setTimeout(function() { server_request(request_dict, path, callback) }, 5000)
-
-               } else if (request.status === 204) {
-                       // no upgrades available
-                       info_box("No upgrades available")
-
-               } else if (request.status === 400) {
-                       // bad request
-                       request_json = JSON.parse(request_text)
-                       error_box(request_json.error)
-
-               } else if (request.status === 412) {
-                       // this is a bit generic
-                       error_box("Unsupported device, release, target, subtraget or board")
-
-               } else if (request.status === 413) {
-                       error_box("No firmware created due to image size. Try again with less packages selected.")
-
-               } else if (request.status === 422) {
-                       error_box("Unknown package in request")
-
-               } else if (request.status === 500) {
-                       request_json = JSON.parse(request_text)
-
-                       error_box_content = "<b>Internal server error</b></br>"
-                       error_box_content += request_json.error
-                       if(request_json.log != undefined) {
-                               data.log_url = request_json.log
-                       }
-                       error_box(error_box_content)
-
-               } else if (request.status === 501) {
-                       error_box("No sysupgrade file produced, may not supported by modell.")
-
-               } else if (request.status === 502) {
-                       // python part offline
-                       error_box("Server down for maintenance")
-                       setTimeout(function() { server_request(request_dict, path, callback) }, 30000)
-               } else if (request.status === 503) {
-                       error_box("Server overloaded")
-                       setTimeout(function() { server_request(request_dict, path, callback) }, 30000)
-               }
-       });
-}
-document.onload = setup()
+       origin = document.location.href.replace(location.pathname, "")
+       ubus_url = origin + "/ubus/"
 </script>
-
+<script type="text/javascript" src="<%=resource%>/attendedsysupgrade.js"></script>
 <%+footer%>
index 832744f7d8b7b41ba0693d430da07781dab01473..1b890c0cbb87b12d6b786e33607c2c1682298397 100755 (executable)
@@ -2,5 +2,6 @@
 
 rm -rf /tmp/luci-indexcache /tmp/luci-modulecache/
 /etc/init.d/uhttpd restart
+/etc/init.d/rpcd reload
 
 return 0
diff --git a/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js b/applications/luci-app-attendedsysupgrade/root/www/luci-static/resources/attendedsysupgrade.js
new file mode 100644 (file)
index 0000000..60f586d
--- /dev/null
@@ -0,0 +1,402 @@
+function $(s) {
+       return document.getElementById(s.substring(1));
+}
+
+function show(s) {
+       $(s).style.display = 'block';
+}
+
+function hide(s) {
+       $(s).style.display = 'none';
+}
+
+function set_server() {
+       hide("#error_box");
+       data.url = $("#server").value;
+       ubus_call("uci", "set", { "config": "attendedsysupgrade", "section": "server", values: { "url": data.url } })
+       ubus_call("uci", "commit", { "config": "attendedsysupgrade" })
+       var server_button = $("#server")
+       server_button.type = 'button';
+       server_button.className = 'cbi-button cbi-button-edit';
+       server_button.parentElement.removeChild($("#button_set"));
+       server_button.onclick = edit_server;
+}
+
+function edit_server() {
+       $("#server").type = 'text';
+       $("#server").onkeydown = function(event) {
+               if(event.key === 'Enter') {
+                       set_server();
+                       return false;
+               }
+       }
+       $("#server").className = '';
+       $("#server").onclick = null;
+
+       button_set = document.createElement("input");
+       button_set.type = "button";
+       button_set.value = "Save";
+       button_set.name = "button_set";
+       button_set.id = "button_set";
+       button_set.className = 'cbi-button cbi-button-edit';
+       button_set.style = 'background-image: url("/luci-static/resources/cbi/save.gif");'
+       button_set.onclick = set_server
+       $("#server").parentElement.appendChild(button_set);
+}
+
+function edit_packages() {
+       data.edit_packages = true
+       hide("#edit_button");
+       $("#edit_packages").value = data.packages.join("\n");
+       show("#edit_packages");
+}
+
+// requests to the upgrade server
+function server_request(request_dict, path, callback) {
+       request_dict.distro = data.release.distribution;
+       request_dict.target = data.release.target.split("\/")[0];
+       request_dict.subtarget = data.release.target.split("\/")[1];
+       var request = new XMLHttpRequest();
+       request.open("POST", data.url + "/" + path, true);
+       request.setRequestHeader("Content-type", "application/json");
+       request.send(JSON.stringify(request_dict));
+       request.onerror = function(e) {
+               error_box("upgrade server down")
+               show("#server_div");
+       }
+       request.addEventListener('load', function(event) {
+               callback(request)
+       });
+}
+
+// initial setup, get system information
+function setup() {
+       ubus_call("rpc-sys", "packagelist", {}, "packages");
+       ubus_call("system", "board", {}, "release");
+       ubus_call("system", "board", {}, "board_name");
+       ubus_call("system", "board", {}, "model");
+       ubus_call("system", "info", {}, "memory");
+       uci_get({ "config": "attendedsysupgrade", "section": "server", "option": "url" })
+       uci_get({ "config": "attendedsysupgrade", "section": "client", "option": "upgrade_packages" })
+       uci_get({ "config": "attendedsysupgrade", "section": "client", "option": "advanced_mode" })
+       uci_get({ "config": "attendedsysupgrade", "section": "client", "option": "auto_search" })
+       setup_ready();
+}
+
+function setup_ready() {
+       // checks if a async ubus calls have finished
+       if(ubus_counter != ubus_closed) {
+               setTimeout(setup_ready, 300)
+       } else {
+               if(data.auto_search == 1) {
+                       upgrade_check();
+               } else {
+                       show("#upgrade_button");
+                       show("#server_div");
+                       $("#server").value = data.url;
+               }
+       }
+}
+
+function uci_get(option) {
+       // simple wrapper to get a uci value store in data.<option>
+       ubus_call("uci", "get", option, option["option"])
+}
+
+ubus_counter = 0;
+ubus_closed = 0;
+function ubus_call(command, argument, params, variable) {
+       var request_data = {};
+       request_data.jsonrpc = "2.0";
+       request_data.id = ubus_counter;
+       request_data.method = "call";
+       request_data.params = [ data.ubus_rpc_session, command, argument, params ]
+       request_json = JSON.stringify(request_data)
+       ubus_counter++;
+       var request = new XMLHttpRequest();
+       request.open("POST", ubus_url, true);
+       request.setRequestHeader("Content-type", "application/json");
+       request.onload = function(event) {
+               if(request.status === 200) {
+                       var response = JSON.parse(request.responseText)
+                       if(!("error" in response) && "result" in response) {
+                               if(response.result.length === 2) {
+                                       if(command === "uci") {
+                                               data[variable] = response.result[1].value
+                                       } else {
+                                               data[variable] = response.result[1][variable]
+                                       }
+                               }
+                       } else {
+                               error_box("<b>Ubus call faild:</b><br />Request: " + request_json + "<br />Response: " + JSON.stringify(response))
+                       }
+                       ubus_closed++;
+               }
+       }
+       request.send(request_json);
+}
+
+function info_box(info_output, loading) {
+       // Shows notification if upgrade is available
+       // If loading is true then an "processing" animation is added
+       show("#info_box");
+       var loading_image = '';
+       if(loading) {
+               loading_image = '<img src="/luci-static/resources/icons/loading.gif" alt="Loading" style="vertical-align:middle">';
+       }
+       $("#info_box").innerHTML = loading_image + info_output;
+}
+
+function error_box(error_output) {
+       // Shows erros in red box
+       show("#error_box");
+       $("#error_box").innerHTML = error_output;
+       hide("#info_box");
+}
+
+function upgrade_check() {
+       // Asks server for new firmware
+       // If data.upgrade_packages is set to true search for new package versions as well
+       hide("#error_box");
+       hide("#server_div");
+       info_box("Searching for upgrades", true);
+       var request_dict = {}
+       request_dict.version = data.release.version;
+       request_dict.packages = data.packages;
+       request_dict.upgrade_packages = data.upgrade_packages
+       server_request(request_dict, "api/upgrade-check", upgrade_check_callback)
+}
+
+function upgrade_check_callback(request_text) {
+       var request_json = JSON.parse(request_text)
+
+       // create simple output to tell user whats going to be upgrade (release/packages)
+       var info_output = ""
+       if(request_json.version != undefined) {
+               info_output += "<h3>New firmware release available</h3>"
+               info_output += data.release.version + " to " + request_json.version
+               data.latest_version = request_json.version;
+       }
+       if(request_json.upgrades != undefined) {
+               info_output += "<h3>Package upgrades available</h3>"
+               for (upgrade in request_json.upgrades) {
+                       info_output += "<b>" + upgrade + "</b>: " + request_json.upgrades[upgrade][1] + " to " + request_json.upgrades[upgrade][0] + "<br />"
+               }
+       }
+       data.packages = request_json.packages
+       info_box(info_output)
+
+       if(data.advanced_mode == 1) {
+               show("#edit_button");
+       }
+       var upgrade_button = $("#upgrade_button")
+       upgrade_button.value = "Request firmware";
+       upgrade_button.style.display = "block";
+       upgrade_button.disabled = false;
+       upgrade_button.onclick = upgrade_request;
+
+}
+
+function upgrade_request() {
+       // Request the image
+       // Needed values
+       // version/release
+       // board_name or model (server tries to find the corrent profile)
+       // packages
+       // The rest is added by server_request()
+       $("#upgrade_button").disabled = true;
+       hide("#edit_packages");
+       hide("#edit_button");
+       hide("#keep_container");
+
+       var request_dict = {}
+       request_dict.version = data.latest_version;
+       request_dict.board = data.board_name
+       request_dict.model = data.model
+
+       if(data.edit_packages == true) {
+               request_dict.packages = $("#edit_packages").value.split("\n")
+       } else {
+               request_dict.packages = data.packages;
+       }
+
+       server_request(request_dict, "api/upgrade-request", upgrade_request_callback)
+}
+
+function upgrade_request_callback(request) {
+       // ready to download
+       var request_json = JSON.parse(request);
+       data.sysupgrade_url = request_json.sysupgrade;
+
+       var filename_split = data.sysupgrade_url.split("/")
+       data.filename = filename_split[filename_split.length - 1]
+
+       info_output = 'Firmware created: <a href="' + data.sysupgrade_url + '"><b>' + data.filename + '</b></a>'
+       if(data.advanced_mode == 1) {
+               info_output += '<br /><a target="_blank" href="' + data.sysupgrade_url + '.log">Build log</a>'
+       }
+       info_box(info_output);
+
+       show("#keep_container");
+       var upgrade_button = $("#upgrade_button")
+       upgrade_button.disabled = false;
+       upgrade_button.style.display = "block";
+       upgrade_button.value = "Flash firmware";
+       upgrade_button.onclick = download_image;
+}
+
+function flash_image() {
+       // Flash image via rpc-sys upgrade_start
+       info_box("Flashing firmware. Don't unpower device", true)
+       ubus_call("rpc-sys", "upgrade_start", { "keep": $("#keep").checked }, 'message');
+       ping_max = 3600; // in seconds
+       setTimeout(ping_ubus, 10000)
+}
+
+function ping_ubus() {
+       // Tries to connect to ubus. If the connection fails the device is likely still rebooting.
+       // If more time than ping_max passes update may failed
+       if(ping_max > 0) {
+               ping_max--;
+               var request = new XMLHttpRequest();
+               request.open("GET", ubus_url, true);
+               request.addEventListener('error', function(event) {
+                       info_box("Rebooting device", true);
+                       setTimeout(ping_ubus, 1000)
+               });
+               request.addEventListener('load', function(event) {
+                       info_box("Success! Please reload web interface");
+                       $("#upgrade_button").value = "Reload page";
+                       show("#upgrade_button");
+                       $("#upgrade_button").disabled = false;
+                       $("#upgrade_button").onclick = function() { location.reload(); }
+               });
+               request.send();
+       } else {
+               error_box("Web interface could not reconnect to your device. Please reload web interface or check device manually")
+       }
+}
+
+function upload_image(blob) {
+       // Uploads received blob data to the server using cgi-io
+       var request = new XMLHttpRequest();
+       var form_data  = new FormData();
+
+       form_data.append("sessionid", data.ubus_rpc_session)
+       form_data.append("filename", "/tmp/firmware.bin")
+       form_data.append("filemode", 755) // insecure?
+       form_data.append("filedata", blob)
+
+       request.addEventListener('load', function(event) {
+               request_json = JSON.parse(request.responseText)
+               flash_image();
+       });
+
+       request.addEventListener('error', function(event) {
+               info_box("Upload of firmware failed, please retry by reloading web interface")
+       });
+
+       request.open('POST', origin + '/cgi-bin/cgi-upload');
+       request.send(form_data);
+}
+
+
+function download_image() {
+       // Download image from server once the url was received by upgrade_request
+       hide("#keep_container");
+       hide("#upgrade_button");
+       var download_request = new XMLHttpRequest();
+       download_request.open("GET", data.sysupgrade_url);
+       download_request.responseType = "arraybuffer";
+
+       download_request.onload = function () {
+               if (this.status === 200) {
+                       var blob = new Blob([download_request.response], {type: "application/octet-stream"});
+                       upload_image(blob)
+               }
+       };
+       info_box("Downloading firmware", true);
+       download_request.send();
+}
+
+function server_request(request_dict, path, callback) {
+       request_dict.distro = data.release.distribution;
+       request_dict.target = data.release.target.split("\/")[0];
+       request_dict.subtarget = data.release.target.split("\/")[1];
+       var request = new XMLHttpRequest();
+       request.open("POST", data.url + "/" + path, true);
+       request.setRequestHeader("Content-type", "application/json");
+       request.send(JSON.stringify(request_dict));
+       request.onerror = function(e) {
+               error_box("Upgrade server down or could not connect")
+               show("#server_div");
+       }
+       request.addEventListener('load', function(event) {
+               request_text = request.responseText;
+               if (request.status === 200) {
+                       callback(request_text)
+
+               } else if (request.status === 202) {
+                       var imagebuilder = request.getResponseHeader("X-Imagebuilder-Status");
+                       if(imagebuilder === "queue") {
+                               // in queue
+                               var queue = request.getResponseHeader("X-Build-Queue-Position");
+                               info_box("In build queue position " + queue, true)
+                               console.log("queued");
+                       } else if(imagebuilder === "initialize") {
+                               info_box("Setting up ImageBuilder", true)
+                               console.log("Setting up imagebuilder");
+                       } else if(imagebuilder === "building") {
+                               info_box("Building image", true);
+                               console.log("building");
+                       } else {
+                               // fallback if for some reasons the headers are missing e.g. browser blocks access
+                               info_box("Processing request", true);
+                               console.log(imagebuilder)
+                       }
+                       setTimeout(function() { server_request(request_dict, path, callback) }, 5000)
+
+               } else if (request.status === 204) {
+                       // no upgrades available
+                       info_box("No upgrades available")
+
+               } else if (request.status === 400) {
+                       // bad request
+                       request_json = JSON.parse(request_text)
+                       error_box(request_json.error)
+
+               } else if (request.status === 412) {
+                       // this is a bit generic
+                       error_box("Unsupported device, release, target, subtraget or board")
+
+               } else if (request.status === 413) {
+               error_box("No firmware created due to image size. Try again with less packages selected.")
+
+               } else if (request.status === 422) {
+                       var package_missing = request.getResponseHeader("X-Unknown-Package");
+                       error_box("Unknown package in request: <b>" + package_missing + "</b>")
+               } else if (request.status === 500) {
+                       request_json = JSON.parse(request_text)
+
+                       error_box_content = "<b>Internal server error</b><br />"
+                       error_box_content += request_json.error
+                       if(request_json.log != undefined) {
+                               data.log_url = request_json.log
+                       }
+                       error_box(error_box_content)
+
+               } else if (request.status === 501) {
+                       error_box("No sysupgrade file produced, may not supported by modell.")
+
+               } else if (request.status === 502) {
+                       // python part offline
+                       error_box("Server down for maintenance")
+                       setTimeout(function() { server_request(request_dict, path, callback) }, 30000)
+               } else if (request.status === 503) {
+                       error_box("Server overloaded")
+                       setTimeout(function() { server_request(request_dict, path, callback) }, 30000)
+               }
+       });
+}
+document.onload = setup()
+
diff --git a/applications/luci-app-bcp38/po/ru/bcp38.po b/applications/luci-app-bcp38/po/ru/bcp38.po
new file mode 100644 (file)
index 0000000..1b3b922
--- /dev/null
@@ -0,0 +1,71 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: bcp38\n"
+"POT-Creation-Date: 2017-12-01 14:00+0300\n"
+"PO-Revision-Date: 2018-02-07 17:35+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"
+
+msgid "Allowed IP ranges"
+msgstr "Диапазон разрешенных<br />IP-адресов"
+
+msgid ""
+"Attempt to automatically detect if the upstream IP will be blocked by the "
+"configuration, and add an exception if it will. If this does not work "
+"correctly, you can add exceptions manually below."
+msgstr ""
+"Попытается автоматически обнаружить, если будет настроена блокировка IP-"
+"адресов внешней сети, и добавить событие в исключения. Если автоматически не "
+"получится, можно добавить исключения вручную ниже."
+
+msgid "Auto-detect upstream IP"
+msgstr "Автоматическое определение IP внешней сети"
+
+msgid "BCP38"
+msgstr "BCP38"
+
+msgid "BCP38 config"
+msgstr "Настройка BCP38"
+
+msgid "Blocked IP ranges"
+msgstr "Диапазон запрещенных<br />IP-адресов"
+
+msgid "Enable"
+msgstr "Включить"
+
+msgid "Interface name"
+msgstr "Имя интерфейса"
+
+msgid ""
+"Interface to apply the blocking to (should be the upstream WAN interface)."
+msgstr ""
+"Интерфейс для применения блокировки (должен быть WAN интерфейсом для внешней "
+"сети)."
+
+msgid ""
+"Takes precedence over blocked ranges. Use to whitelist your upstream network "
+"if you're behind a double NAT and the auto-detection doesn't work."
+msgstr ""
+"Имеет приоритет над заблокированными диапазонами.<br />Используйте для "
+"вашего Белого списка внешней сети, если вы находитесь за двойным NAT-ом и "
+"автоматическое обнаружение не работает."
+
+msgid ""
+"This function blocks packets with private address destinations from going "
+"out onto the internet as per <a href=\"http://tools.ietf.org/html/"
+"bcp38\">BCP 38</a>. For IPv6, only source specific default routes are "
+"installed, so no BCP38 firewall routes are needed."
+msgstr ""
+"Приложение блокирует пакеты полученные из Интернета от поддельных адресов в "
+"соответствии с <a href=\"http://tools.ietf.org/html/ bcp38\">BCP 38</a>.<br /"
+">Для IPv6 устанавливаются только дефолтные исходные маршруты, поэтому BCP38 "
+"не используется межсетевым экраном."
diff --git a/applications/luci-app-clamav/po/ru/clamav.po b/applications/luci-app-clamav/po/ru/clamav.po
new file mode 100644 (file)
index 0000000..d12342b
--- /dev/null
@@ -0,0 +1,136 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: clamav\n"
+"POT-Creation-Date: 2017-10-17 22:00+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"
+
+msgid "10"
+msgstr "10"
+
+msgid "1024"
+msgstr "1024"
+
+msgid "15"
+msgstr "15"
+
+msgid "150M"
+msgstr "150M"
+
+msgid "1M"
+msgstr "1M"
+
+msgid "20"
+msgstr "20"
+
+msgid "2048"
+msgstr "2048"
+
+msgid "2M"
+msgstr "2M"
+
+msgid "50M"
+msgstr "50M"
+
+msgid "512K"
+msgstr "512K"
+
+msgid "600"
+msgstr "600"
+
+msgid "Block encrypted archives"
+msgstr "Блокировать зашифрованные архивы"
+
+msgid "ClamAV"
+msgstr "Антивирус ClamAV"
+
+msgid "Database check every N sec"
+msgstr "Проверка базы данных каждые N сек"
+
+msgid "Detect broken executables"
+msgstr "Обнаружение нерабочих исполняемых файлов"
+
+msgid "Detect possibly unwanted apps"
+msgstr "Обнаружение возможных нежелательных приложений"
+
+msgid "Enable verbose logging"
+msgstr "Включить подробное ведение системного журнала"
+
+msgid "Follow directory symlinks"
+msgstr "Следовать по<br />ссылкам на папки"
+
+msgid "Follow file symlinks"
+msgstr "Следовать по<br />ссылкам на файлы"
+
+msgid "Log"
+msgstr "Системный журнал"
+
+msgid "Log additional infection info"
+msgstr ""
+"Дополнительный файл системного журнала, содержащий информацию о заражении"
+
+msgid "Log time with each message"
+msgstr "Время записи в системный журнал - каждого сообщения"
+
+msgid "Max directory scan depth"
+msgstr "Максимальный размер сканируемой папки"
+
+msgid "Max number of threads"
+msgstr "Максимальное<br />кол-во потоков"
+
+msgid "Max size of log file"
+msgstr "Максимальный размер системного журнала"
+
+msgid "Max size of scanned file"
+msgstr "Максимальный размер сканируемого файла"
+
+msgid "No"
+msgstr "Нет"
+
+msgid "Port range, highest port"
+msgstr "Диапазон портов, максимальный номер порта"
+
+msgid "Port range, lowest port"
+msgstr "Диапазон портов, наименьший номер порта"
+
+msgid "Scan ELF files"
+msgstr "Сканировать elf файлы"
+
+msgid "Scan MS Office and .msi files"
+msgstr "Сканировать MS Office<br />и *.msi файлы"
+
+msgid "Scan RFC1341 messages split over many emails"
+msgstr ""
+"Сканирование сообщений RFC1341, разделенных на множество сообщений "
+"электронной почты"
+
+msgid "Scan archives"
+msgstr "Сканировать архивы"
+
+msgid "Scan emails"
+msgstr "Сканировать е-майлы"
+
+msgid "Scan pdf files"
+msgstr "Сканировать pdf файлы"
+
+msgid "Scan portable executables"
+msgstr "Сканировать портативные исполняемые файлы"
+
+msgid "Scan swf files"
+msgstr "Сканировать swf файлы"
+
+msgid "Settings"
+msgstr "Настройка"
+
+msgid "Yes"
+msgstr "Да"
index f094e186d43346e61719bcdeba021f6b5ed0aa53..4285f25cb20dd17c1d52139c6639bee36dc7d5a0 100644 (file)
 
                if (legend && output)
                {
-                       var prefix = location.protocol + '//' + location.hostname +
-                                  (location.port ? ':' + location.port : '') +
-                                          location.pathname.split(';')[0] + 'command/';
+                       var prefix = location.protocol + '//' + location.host + '<%=url('command')%>/';
                        var suffix = (args ? '/' + args : '');
                        
                        var link = prefix + id + suffix;
        uci:foreach("luci", "command", function(s) commands[#commands+1] = s end)
 %>
 
-<form method="get" action="<%=pcdata(luci.http.getenv("REQUEST_URI"))%>">
+<form method="get" action="<%=pcdata(FULL_REQUEST_URI)%>">
        <div class="cbi-map">
                <h2 name="content"><%:Custom Commands%></h2>
 
index 0c035ab731c7b1b801196b5268f2724164a7edd7..35046731cfc2c12cf8b1223b707d912a204f92af 100644 (file)
@@ -1,38 +1,40 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-10-15 16:48+0200\n"
-"Last-Translator: datasheet <michael.gritsaenko@gmail.com>\n"
-"Language-Team: none\n"
-"Language: ru\n"
-"MIME-Version: 1.0\n"
 "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"
-"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"
+"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"
 
 msgid "A short textual description of the configured command"
 msgstr "Короткое текстовое описание команды"
 
-#, fuzzy
 msgid ""
 "Allow executing the command and downloading its output without prior "
 "authentication"
 msgstr ""
-"Разрешить выполнение команды и загрузку ее вывода без предварительной "
-"аÑ\83Ñ\82енÑ\82иÑ\84икаÑ\86ии"
+"Разрешить выполнение команды и загрузку ее выходных данных без ввода пароля "
+"полÑ\8cзоваÑ\82елÑ\8f"
 
 msgid "Allow the user to provide additional command line arguments"
 msgstr ""
-"РазÑ\80еÑ\88иÑ\82Ñ\8c Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8fм Ð¸Ñ\81полÑ\8cзовать дополнительные аргументы командной "
+"РазÑ\80еÑ\88иÑ\82Ñ\8c Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8e Ð¿Ñ\80едоÑ\81Ñ\82авлÑ\8fть дополнительные аргументы командной "
 "строки"
 
 msgid "Arguments:"
 msgstr "Аргументы:"
 
 msgid "Binary data not displayed, download instead."
-msgstr "Двоичные данные не отображаются, вместо этого - выгружаются"
+msgstr "Двоичные данные не отображаются, вместо этого загружаются."
 
 msgid "Code:"
 msgstr "Код:"
@@ -44,16 +46,16 @@ msgid "Command"
 msgstr "Команда"
 
 msgid "Command executed successfully."
-msgstr ""
+msgstr "Команда выполнена успешно."
 
 msgid "Command exited with status code"
-msgstr ""
+msgstr "Команда вышла с кодом состояния."
 
 msgid "Command failed"
-msgstr "Ð\9aоманда Ð½Ðµ Ð²Ñ\8bполнена"
+msgstr "Ð\9eÑ\88ибка ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\8b"
 
 msgid "Command line to execute"
-msgstr "Командная строка для выполнения"
+msgstr "Командная строка<br />для выполнения"
 
 msgid "Command successful"
 msgstr "Команда выполнена"
@@ -62,7 +64,7 @@ msgid "Command:"
 msgstr "Команда:"
 
 msgid "Configure"
-msgstr "Ð\9dаÑ\81Ñ\82Ñ\80оиÑ\82Ñ\8c"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð°Ð½ÐµÐ»Ð¸ Ñ\83пÑ\80авлениÑ\8f"
 
 msgid "Custom Commands"
 msgstr "Пользовательские команды"
@@ -71,7 +73,7 @@ msgid "Custom arguments"
 msgstr "Пользовательские аргументы"
 
 msgid "Dashboard"
-msgstr "Ð\98нÑ\84оÑ\80маÑ\86ионнаÑ\8f Ð¿Ð°Ð½ÐµÐ»Ñ\8c"
+msgstr "Ð\9fанелÑ\8c Ñ\83пÑ\80авлениÑ\8f"
 
 msgid "Description"
 msgstr "Описание"
@@ -80,7 +82,7 @@ msgid "Download"
 msgstr "Скачать"
 
 msgid "Download execution result"
-msgstr ""
+msgstr "Результат выполнения загрузки"
 
 msgid "Failed to execute command!"
 msgstr "Ошибка выполнения команды!"
@@ -92,7 +94,7 @@ msgid "Loading"
 msgstr "Загрузка"
 
 msgid "Or display result"
-msgstr ""
+msgstr "Или отобразить результат"
 
 msgid "Public access"
 msgstr "Публичный доступ"
@@ -101,20 +103,18 @@ msgid "Run"
 msgstr "Запуск"
 
 msgid "Standard Error"
-msgstr ""
+msgstr "Стандартная ошибка"
 
 msgid "Standard Output"
-msgstr ""
+msgstr "Стандартный вывод"
 
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
 msgstr ""
-"Эта страница предоставляет возможность настраивать пользовательские "
-"консольные команды, которые могут быть легко вызваны из веб-интерфейса"
+"Страница позволяет настроить выполнение консольных команд пользователя, "
+"которые могут быть легко вызваны из веб-интерфейса по нажатию "
+"соответствующей кнопки. Здесь вы можете подписать кнопки и указать команды."
 
 msgid "Waiting for command to complete..."
-msgstr "Ожидание завершения команды..."
-
-#~ msgid "Access command with"
-#~ msgstr "Доступ к команде через"
+msgstr "Ожидание завершения выполнения команды..."
index 4d9bbba2904a101a7bdfbb6b407691db158abef4..43410a0045684f0ca90ac1d40c801dd2e6532dd1 100644 (file)
@@ -53,7 +53,13 @@ function cshark_iface_dump_start(ifname, value, flag, filter)
 
        luci.http.prepare_content("text/plain")
 
-       local res = os.execute("(/sbin/cshark -i " .. ifname .. " -" .. flag .. " " .. value .. " -p /tmp/cshark-luci.pid " .. filter .. " > /tmp/cshark-luci.out 2>&1) &")
+       local res = os.execute("(/sbin/cshark -i %s -%s %s -p /tmp/cshark-luci.pid %s > /tmp/cshark-luci.out 2>&1) &" %{
+               luci.util.shellquote(ifname),
+               luci.util.shellquote(flag),
+               luci.util.shellquote(value),
+               luci.util.shellquote(filter)
+       })
+
        luci.http.write(tostring(res))
 end
 
index 69f9880d4ff6896fb5cef695db5e41ddf5b1a0a9..bd6ddeb1b354c4f260b3d87e303c6f3da9ecd72e 100644 (file)
@@ -2,7 +2,7 @@
 # Copyright 2008 Steven Barth <steven@midlink.org>
 # Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
 # Copyright 2013 Manuel Munz <freifunk at somakoma dot de>
-# Copyright 2014-2017 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+# Copyright 2014-2018 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
 #
 # This is free software, licensed under the Apache License, Version 2.0
 
@@ -12,11 +12,11 @@ include $(TOPDIR)/rules.mk
 
 # Version == major.minor.patch
 # increase on new functionality (minor) or patches (patch)
-PKG_VERSION:=2.4.8
+PKG_VERSION:=2.4.9
 
 # Release == build
 # increase on changes of translation files
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_LICENSE:=Apache-2.0
 PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
index 1dfa6255417c1d73cf36c75ead165fe5a525d0e0..5f4a5118c387443d91f9c9fa5f4462c707fed177 100755 (executable)
@@ -1,7 +1,7 @@
 -- Copyright 2008 Steven Barth <steven@midlink.org>
 -- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
 -- Copyright 2013 Manuel Munz <freifunk at somakoma dot de>
--- Copyright 2014-2017 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+-- Copyright 2014-2018 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
 -- Licensed to the public under the Apache License 2.0.
 
 module("luci.controller.ddns", package.seeall)
@@ -20,11 +20,11 @@ local DDNS = require "luci.tools.ddns"              -- ddns multiused functions
 luci_helper = "/usr/lib/ddns/dynamic_dns_lucihelper.sh"
 
 local srv_name    = "ddns-scripts"
-local srv_ver_min = "2.7.6"                    -- minimum version of service required
+local srv_ver_min = "2.7.7"                    -- minimum version of service required
 local srv_ver_cmd = luci_helper .. [[ -V | awk {'print $2'}]]
 local app_name    = "luci-app-ddns"
 local app_title   = "Dynamic DNS"
-local app_version = "2.4.8-2"
+local app_version = "2.4.9-1"
 
 function index()
        local nxfs      = require "nixio.fs"            -- global definitions not available
@@ -187,19 +187,26 @@ local function _get_status()
 
                -- try to get registered IP
                local lookup_host = s["lookup_host"] or "_nolookup_"
-               local dnsserver = s["dns_server"] or ""
-               local force_ipversion = tonumber(s["force_ipversion"] or 0)
-               local force_dnstcp = tonumber(s["force_dnstcp"] or 0)
-               local is_glue = tonumber(s["is_glue"] or 0)
-               local command = luci_helper .. [[ -]]
-               if (use_ipv6 == 1) then command = command .. [[6]] end
-               if (force_ipversion == 1) then command = command .. [[f]] end
-               if (force_dnstcp == 1) then command = command .. [[t]] end
-               if (is_glue == 1) then command = command .. [[g]] end
-               command = command .. [[l ]] .. lookup_host
-               if (#dnsserver > 0) then command = command .. [[ -d ]] .. dnsserver end
-               command = command .. [[ -- get_registered_ip]]
-               local reg_ip = SYS.exec(command)
+               local chk_sec  = DDNS.calc_seconds(
+                                       tonumber(s["check_interval"]) or 10,
+                                       s["check_unit"] or "minutes" )
+               local reg_ip = DDNS.get_regip(section, chk_sec)
+               if reg_ip == "NOFILE" then
+                       local dnsserver = s["dns_server"] or ""
+                       local force_ipversion = tonumber(s["force_ipversion"] or 0)
+                       local force_dnstcp = tonumber(s["force_dnstcp"] or 0)
+                       local is_glue = tonumber(s["is_glue"] or 0)
+                       local command = luci_helper .. [[ -]]
+                       if (use_ipv6 == 1) then command = command .. [[6]] end
+                       if (force_ipversion == 1) then command = command .. [[f]] end
+                       if (force_dnstcp == 1) then command = command .. [[t]] end
+                       if (is_glue == 1) then command = command .. [[g]] end
+                       command = command .. [[l ]] .. lookup_host
+                       command = command .. [[ -S ]] .. section
+                       if (#dnsserver > 0) then command = command .. [[ -d ]] .. dnsserver end
+                       command = command .. [[ -- get_registered_ip]]
+                       reg_ip = SYS.exec(command)
+               end
                if reg_ip == "" then
                        reg_ip = "_nodata_"
                end
@@ -294,7 +301,7 @@ function startstop(section, enabled)
        uci:unload("ddns")
 
        -- start ddns-updater for section
-       local command = luci_helper .. [[ -S ]] .. section .. [[ -- start]]
+       local command = "%s -S %s -- start" %{ luci_helper, UTIL.shellquote(section) }
        os.execute(command)
        NX.nanosleep(3) -- 3 seconds "show time"
 
index a8f4cbf7ad0017f2b76f76c4ecf3d06d60cb2f29..977dbe34b1f52537e00a9cabde5cc11a988da0ae 100644 (file)
@@ -1229,7 +1229,7 @@ if DDNS.has_proxy or ( ( m:get(section, "proxy") or "" ) ~= "" ) then
                elseif DDNS.has_proxy then
                        local ipv6  = usev6:formvalue(section) or "0"
                        local force = fipv:formvalue(section) or "0"
-                       local command = CRTL.luci_helper .. [[ -]]
+                       local command = CTRL.luci_helper .. [[ -]]
                        if (ipv6 == 1)  then command = command .. [[6]] end
                        if (force == 1) then command = command .. [[f]] end
                        command = command .. [[p ]] .. value .. [[ -- verify_proxy]]
index 6ba3ea0dd846e23e0b786b38d0cb7f3aefdf9973..114f831c170f16a9a2b870c818b0bc9e7ec2842d 100644 (file)
@@ -1,4 +1,4 @@
--- Copyright 2014-2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+-- Copyright 2014-2018 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
 -- Licensed to the public under the Apache License 2.0.
 
 local NXFS = require "nixio.fs"
@@ -122,22 +122,29 @@ function dom.set_one(self, section)
        end
 end
 function dom.set_two(self, section)
-       local lookup_host = self.map:get(section, "lookup_host") or ""
-       if lookup_host == "" then return "" end
-       local dnsserver = self.map:get(section, "dnsserver") or ""
-       local use_ipv6 = tonumber(self.map:get(section, "use_ipv6") or 0)
-       local force_ipversion = tonumber(self.map:get(section, "force_ipversion") or 0)
-       local force_dnstcp = tonumber(self.map:get(section, "force_dnstcp") or 0)
-       local is_glue = tonumber(self.map:get(section, "is_glue") or 0)
-       local command = CTRL.luci_helper .. [[ -]]
-       if (use_ipv6 == 1) then command = command .. [[6]] end
-       if (force_ipversion == 1) then command = command .. [[f]] end
-       if (force_dnstcp == 1) then command = command .. [[t]] end
-       if (is_glue == 1) then command = command .. [[g]] end
-       command = command .. [[l ]] .. lookup_host
-       if (#dnsserver > 0) then command = command .. [[ -d ]] .. dnsserver end
-       command = command .. [[ -- get_registered_ip]]
-       local ip = SYS.exec(command)
+       local chk_sec  = DDNS.calc_seconds(
+                               tonumber(self.map:get(section, "check_interval")) or 10,
+                               self.map:get(section, "check_unit") or "minutes" )
+       local ip = DDNS.get_regip(section, chk_sec)
+       if ip == "NOFILE" then
+               local lookup_host = self.map:get(section, "lookup_host") or ""
+               if lookup_host == "" then return "" end
+               local dnsserver = self.map:get(section, "dnsserver") or ""
+               local use_ipv6 = tonumber(self.map:get(section, "use_ipv6") or 0)
+               local force_ipversion = tonumber(self.map:get(section, "force_ipversion") or 0)
+               local force_dnstcp = tonumber(self.map:get(section, "force_dnstcp") or 0)
+               local is_glue = tonumber(self.map:get(section, "is_glue") or 0)
+               local command = CTRL.luci_helper .. [[ -]]
+               if (use_ipv6 == 1) then command = command .. [[6]] end
+               if (force_ipversion == 1) then command = command .. [[f]] end
+               if (force_dnstcp == 1) then command = command .. [[t]] end
+               if (is_glue == 1) then command = command .. [[g]] end
+               command = command .. [[l ]] .. lookup_host
+               command = command .. [[ -S ]] .. section
+               if (#dnsserver > 0) then command = command .. [[ -d ]] .. dnsserver end
+               command = command .. [[ -- get_registered_ip]]
+               ip = SYS.exec(command)
+       end
        if ip == "" then ip = translate("no data") end
        return ip
 end
index 209d9c3a4152576ce8f44c7439f5a6306d2103a5..690b9b30ceb57d62a1ef3bce90917326e229d5ac 100755 (executable)
@@ -1,4 +1,4 @@
--- Copyright 2014-2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
+-- Copyright 2014-2018 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
 -- Licensed to the public under the Apache License 2.0.
 
 module("luci.tools.ddns", package.seeall)
@@ -74,6 +74,23 @@ function get_lastupd(section)
        return etime
 end
 
+-- read registered IP from [section].ip file
+function get_regip(section, chk_sec)
+       local uci   = UCI.cursor()
+       local rdir  = uci:get("ddns", "global", "ddns_rundir") or "/var/run/ddns"
+       local ip = "NOFILE"
+       if NXFS.access("%s/%s.ip" % { rdir, section }) then
+               local ftime = NXFS.stat("%s/%s.ip" % { rdir, section }, "ctime") or 0
+               local otime = os.time()
+               -- give ddns-scripts time (9 sec) to update file
+               if otime < (ftime + chk_sec + 9) then
+                       ip = NXFS.readfile("%s/%s.ip" % { rdir, section })
+               end
+       end
+       uci:unload("ddns")
+       return ip
+end
+
 -- read PID from run file and verify if still running
 function get_pid(section)
        local uci  = UCI.cursor()
index 23ec0591708499f31d0641517fc5b601308c044f..3cbb66b4bf4cb4336fe4170be7896c9c18747c2e 100644 (file)
@@ -25,9 +25,8 @@
 />
 <br />
 <div class="cbi-value-description">
-       <span class="cbi-value-helpicon"><img src="<%=resource%>/cbi/help.gif" alt="<%:help%>" /><%=self.description%></span>
-       <br />
-       <span id="<%=cbid%>.help" class="cbi-value-helpicon"><%:Current setting%>: <strong><%=self.date_string%></strong></span>
+       <span class="cbi-value-helpicon"><img src="<%=resource%>/cbi/help.gif" alt="<%:help%>" /></span><%=self.description%>
+       <br /><%:Current setting%>: <strong><%=self.date_string%></strong>
 </div> <!-- div class="cbi-value-description" -->
 </div> <!-- div class="cbi-value-field" -->
 </div> <!-- div class="cbi-value cbi-value-last" -->
index a41d1f498b39617bbb076b95dbb030b599f38510..fae11275d3371fe907a6d984ed6309f170a1000b 100644 (file)
 msgid ""
 msgstr ""
-"Project-Id-Version: luci-app-ddns 2.4.0-1\n"
-"POT-Creation-Date: 2016-01-30 11:07+0100\n"
-"PO-Revision-Date: 2012-11-01 21:54+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
-"MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: ddns\n"
+"POT-Creation-Date: 2017-10-17 21:00+0300\n"
+"PO-Revision-Date: 2018-01-24 14:58+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"
-"X-Generator: Poedit 1.8.4\n"
-"X-Poedit-SourceCharset: UTF-8\n"
+"Language: ru\n"
+"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
+"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
 
 msgid "&"
-msgstr ""
+msgstr "и"
 
 msgid "-- custom --"
-msgstr ""
+msgstr "-- пользовательский --"
 
 msgid "-- default --"
-msgstr ""
+msgstr "-- по умолчанию --"
 
 msgid "Advanced Settings"
-msgstr ""
+msgstr "Дополнительные настройки"
 
 msgid "Allow non-public IP's"
-msgstr ""
+msgstr "Разрешить<br />не публичные IP-адреса"
 
 msgid "Applying changes"
-msgstr ""
+msgstr "Применение изменений"
 
 msgid "Basic Settings"
-msgstr ""
+msgstr "Основные настройки"
 
 msgid ""
 "Below a list of configuration tips for your system to run Dynamic DNS "
 "updates without limitations"
 msgstr ""
+"Советы по настройке для запуска динамических обновлений DNS без ограничений."
 
 msgid ""
 "Below is a list of configured DDNS configurations and their current state."
-msgstr ""
+msgstr "Список настроек DDNS и их текущее состояние."
 
 msgid "Bind Network"
-msgstr ""
+msgstr "Привязать сеть"
 
 msgid "Binding to a specific network not supported"
-msgstr ""
+msgstr "Привязка к определенной сети, не поддерживается."
 
 msgid ""
 "BusyBox's nslookup and Wget do not support to specify the IP version to use "
 "for communication with DDNS Provider!"
 msgstr ""
+"nslookup и Wget - BusyBox-а, не поддерживают указание IP-версии, "
+"используемой для связи с DDNS провайдером!"
 
 msgid ""
 "BusyBox's nslookup and hostip do not support to specify to use TCP instead "
 "of default UDP when requesting DNS server!"
 msgstr ""
+"nslookup и hostip - BusyBox-а, не поддерживают указание использовать TCP "
+"вместо UDP по умолчанию при запросе DNS сервера!"
 
 msgid ""
 "BusyBox's nslookup in the current compiled version does not handle given DNS "
 "Servers correctly!"
 msgstr ""
+"Благодаря текущей скомпилированной версии nslookup, BusyBox не обрабатывает "
+"данные DNS сервера правильно!"
 
 msgid "Casual users should not change this setting"
-msgstr ""
+msgstr "Случайные пользователи, не должны изменять эти настройки"
 
 msgid "Change provider"
-msgstr ""
+msgstr "Сменить провайдера"
 
 msgid "Check Interval"
-msgstr ""
+msgstr "Интервал проверки"
 
 msgid "Collecting data..."
-msgstr ""
+msgstr "Сбор данных..."
 
 msgid "Config error"
-msgstr ""
+msgstr "Ошибка config файла"
 
 msgid "Configuration"
-msgstr ""
+msgstr "Настройка config файла"
 
 msgid ""
 "Configure here the details for all Dynamic DNS services including this LuCI "
 "application."
-msgstr ""
+msgstr "Настройка для всех служб DDNS, включая это приложение LuCI."
 
 msgid "Configure here the details for selected Dynamic DNS service."
-msgstr ""
+msgstr "Тонкая настройка выбранной службы DDNS."
 
 msgid "Current setting"
-msgstr ""
+msgstr "Текущие настройки"
 
 msgid ""
 "Currently DDNS updates are not started at boot or on interface events.<br /"
 ">This is the default if you run DDNS scripts by yourself (i.e. via cron with "
 "force_interval set to '0')"
 msgstr ""
+"В настоящее время, обновления DDNS не запускаются при загрузке или при "
+"событиях интерфейса.<br />по умолчанию, если вы запускаете DDNS скрипты сами "
+"(т.е. через cron с force_interval set to '0')"
 
 msgid ""
 "Currently DDNS updates are not started at boot or on interface events.<br /"
 ">You can start/stop each configuration here. It will run until next reboot."
 msgstr ""
+"В настоящее время, обновления DDNS не запускаются при загрузке или при "
+"событиях интерфейса.<br />.<br />Вы можете запустить/остановить каждый "
+"config здесь. Он будет работать до следующей перезагрузки."
 
 msgid "Custom update script to be used for updating your DDNS Provider."
 msgstr ""
+"Пользовательский скрипт обновления, который будет использоваться для вашего "
+"провайдера DDNS."
 
 msgid "Custom update-URL"
-msgstr "Пользовательский URL обновления"
+msgstr "Пользовательский<br />URL обновления"
 
 msgid "Custom update-script"
-msgstr ""
+msgstr "Пользовательский<br />скрипт обновления"
 
 msgid "DDNS Autostart disabled"
-msgstr ""
+msgstr "Автостарт DDNS отключен"
 
 msgid "DDNS Client Configuration"
-msgstr ""
+msgstr "Настройка клиента DDNS."
 
 msgid "DDNS Client Documentation"
-msgstr ""
+msgstr "Информация для клиента DDNS"
 
 msgid "DDNS Service provider"
-msgstr ""
+msgstr "Провайдер службы<br />DDNS"
 
 msgid "DNS requests via TCP not supported"
-msgstr ""
+msgstr "DNS запросы по протоколу TCP не поддерживаются"
 
 msgid "DNS-Server"
-msgstr ""
+msgstr "DNS сервер"
 
 msgid "Date format"
-msgstr ""
+msgstr "Формат даты"
 
 msgid "Defines the Web page to read systems IPv4-Address from"
-msgstr ""
+msgstr "Задайте веб-страницу для связи с системным IPv4-адресом из"
 
 msgid "Defines the Web page to read systems IPv6-Address from"
-msgstr ""
+msgstr "Задайте веб-страницу для связи с системным IPv6-адресом из"
 
 msgid "Defines the interface to read systems IP-Address from"
-msgstr ""
+msgstr "Задайте интерфейс для чтения системного IP-адреса из"
 
 msgid "Defines the network to read systems IPv4-Address from"
-msgstr ""
+msgstr "Задайте сеть для связи с системным IPv4-адресом из."
 
 msgid "Defines the network to read systems IPv6-Address from"
-msgstr ""
+msgstr "Задайте сеть для связи с системным IPv6-адреса из."
 
 msgid ""
 "Defines the source to read systems IPv4-Address from, that will be send to "
 "the DDNS provider"
 msgstr ""
+"Задайте источник для связи с системным IPv4-адресом, который будет отправлен "
+"DDNS провайдеру."
 
 msgid ""
 "Defines the source to read systems IPv6-Address from, that will be send to "
 "the DDNS provider"
 msgstr ""
+"Задайте источник для связи с системным IPv6-адресом, который будет отправлен "
+"DDNS провайдеру."
 
 msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider"
 msgstr ""
+"Задайте версию протокола IP-адреса 'IPv4/IPv6' отправляется провайдеру DDNS."
 
 msgid "Details for"
-msgstr ""
+msgstr "Подробности для"
 
 msgid "Directory contains Log files for each running section"
-msgstr ""
+msgstr "Папка содержит файлы системного журнала для каждого запуска."
 
 msgid ""
 "Directory contains PID and other status information for each running section"
-msgstr ""
+msgstr "Папка содержит PID и прочую информацию о состояниии каждого запуска."
 
 msgid "Disabled"
-msgstr ""
+msgstr "Отключено"
 
 msgid "Domain"
-msgstr ""
+msgstr "Домен"
 
 msgid "Dynamic DNS"
 msgstr "Динамический DNS"
@@ -186,136 +207,158 @@ msgid ""
 "Dynamic DNS allows that your router can be reached with a fixed hostname "
 "while having a dynamically changing IP address."
 msgstr ""
-"Динамический DNS позволяет вашему маршрутизатору иметь постоянное доменное "
-"имÑ\8f Ð¿Ñ\80и Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81ком IP-адресе."
+"DDNS разрешает вашему маршрутизатору иметь постоянное доменное имя, при "
+"динамиÑ\87еÑ\81ки Ð¸Ð·Ð¼ÐµÐ½Ñ\8fемом IP-адресе."
 
 msgid "Enable secure communication with DDNS provider"
-msgstr ""
+msgstr "Включить безопасное соединение с провайдером DDNS."
 
 msgid "Enabled"
-msgstr ""
+msgstr "Включено"
 
 msgid "Error"
-msgstr ""
+msgstr "Ошибка"
 
 msgid "Error Retry Counter"
-msgstr ""
+msgstr "Учет попыток повтора<br />при ошибке"
 
 msgid "Error Retry Interval"
-msgstr ""
+msgstr "Интервал попытки<br />повтора при ошибке"
 
 msgid "Event Network"
-msgstr ""
+msgstr "Событие сети"
 
 msgid "File"
-msgstr ""
+msgstr "Файл"
 
 msgid "File not found"
-msgstr ""
+msgstr "Файл не найден"
 
 msgid "File not found or empty"
-msgstr ""
+msgstr "Файл не найден или пустой"
 
 msgid ""
 "Follow this link<br />You will find more hints to optimize your system to "
 "run DDNS scripts with all options"
 msgstr ""
+"Пройдите по этой ссылке<br />там вы найдете больше информации, как настроить "
+"вашу систему с использованием DDNS скриптов с наиболее полным функционалом."
 
 msgid "For detailed information about parameter settings look here."
 msgstr ""
+"Здесь вы сможете получить, более подробную информацию о параметрах настройки."
 
 msgid "For supported codes look here"
-msgstr ""
+msgstr "С поддерживаемыми кодами, вы сможете ознакомится здесь."
 
 msgid "Force IP Version"
-msgstr ""
+msgstr "Назначенная версия<br />IP-адреса"
 
 msgid "Force IP Version not supported"
-msgstr ""
+msgstr "Назначенная версия протокола IP-адреса, не поддерживается"
 
 msgid "Force Interval"
-msgstr ""
+msgstr "Назначить интервал"
 
 msgid "Force TCP on DNS"
-msgstr ""
+msgstr "Выбрать протокол TCP для DNS"
 
 msgid "Forced IP Version don't matched"
-msgstr ""
+msgstr "Назначенная версия протокола IP-адреса не проверялась"
 
 msgid "Format"
-msgstr ""
+msgstr "Формат"
 
 msgid "Format: IP or FQDN"
-msgstr ""
+msgstr "В виде: IP-адрес или полное доменное имя."
 
 msgid ""
 "GNU Wget will use the IP of given network, cURL will use the physical "
 "interface."
 msgstr ""
+"GNU wget будет использовать IP присвоенный сетью, cURL будет использовать "
+"физический интерфейс."
 
 msgid "Global Settings"
-msgstr ""
+msgstr "Основные настройки"
 
 msgid "HTTPS not supported"
-msgstr ""
+msgstr "HTTPS не поддерживается"
 
 msgid "Hints"
-msgstr ""
+msgstr "Подсказки"
 
 msgid "Hostname/FQDN to validate, if IP update happen or necessary"
 msgstr ""
+"Имя хоста/полное доменное имя для проверки, если происходит обновление IP-"
+"адреса или оно необходимо."
 
 msgid "IP address source"
-msgstr ""
+msgstr "IP адрес источника"
 
 msgid "IP address version"
-msgstr ""
+msgstr "Версия IP-адреса"
 
 msgid "IPv4-Address"
-msgstr ""
+msgstr "IPv4-адрес"
 
 msgid "IPv6 address must be given in square brackets"
-msgstr ""
+msgstr "IPv6 адрес должен быть указан в квадратных скобках"
 
 msgid ""
 "IPv6 is currently not (fully) supported by this system<br />Please follow "
 "the instructions on OpenWrt's homepage to enable IPv6 support<br />or update "
 "your system to the latest OpenWrt Release"
 msgstr ""
+"IPv6 не поддерживается вашей прошивкой < br />, следуйте инструкциям на "
+"главной странице OpenWrt, чтобы включить поддержку IPv6<br / >или обновить "
+"прошивку до последнего выпуска OpenWrt с включением поддержки IPv6."
 
 msgid "IPv6 not supported"
-msgstr ""
+msgstr "IPv6 не поддерживается"
 
 msgid "IPv6-Address"
-msgstr ""
+msgstr "IPv6-адрес"
 
 msgid "If both cURL and GNU Wget are installed, Wget is used by default."
 msgstr ""
+"Если установлены cURL и GNU Wget вместе, Wget будет использоваться по "
+"умолчанию."
 
 msgid ""
 "If this service section is disabled it could not be started.<br />Neither "
 "from LuCI interface nor from console"
 msgstr ""
+"Если этот режим службы отключен, его нельзя будет запустить. Не с веб-"
+"интерфейса LuCI, ни с консоли."
 
 msgid "If using secure communication you should verify server certificates!"
 msgstr ""
+"Если используется безопасное соединение, необходимо проверить сертификаты "
+"сервера!"
 
 msgid ""
 "If you want to send updates for IPv4 and IPv6 you need to define two "
 "separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'"
 msgstr ""
+"Версии протоколов IPv4 и IPv6 необходимо настроить раздельно , т. е. "
+"'myddns_ipv4' и 'myddns_ipv6'."
 
 msgid ""
 "In some versions cURL/libcurl in OpenWrt is compiled without proxy support."
 msgstr ""
+"В некоторых случаях cURL/libcurl, если OpenWrt скомпилирован без поддержки "
+"прокси."
 
 msgid "Info"
-msgstr ""
+msgstr "Информация"
 
 msgid ""
 "Install 'ca-certificates' package or needed certificates by hand into /etc/"
 "ssl/certs default directory"
 msgstr ""
+"Установите 'ca-certificates' или пакет необходимых сертификатов вручную в "
+"папку/etc/ssl/certs"
 
 msgid "Interface"
 msgstr "Интерфейс"
@@ -324,408 +367,439 @@ msgid ""
 "Interval to check for changed IP<br />Values below 5 minutes == 300 seconds "
 "are not supported"
 msgstr ""
+"Интервал для проверки измененных IP-адресов.<br />ниже 5 минут = = 300 "
+"секунд не поддерживаются."
 
 msgid ""
 "Interval to force updates send to DDNS Provider<br />Setting this parameter "
 "to 0 will force the script to only run once<br />Values lower 'Check "
 "Interval' except '0' are not supported"
 msgstr ""
+"Интервал для назначения отправки обновлений провайдеру DDNS.<br />Установка "
+"значения '0', заставит сценарий отработать только один раз, значения ниже "
+"'Интервал проверки' за исключением '0' не поддерживаются."
 
 msgid "It is NOT recommended for casual users to change settings on this page."
 msgstr ""
+"Не рекомендуется случайным пользователям, изменять настройки на этой "
+"странице."
 
 msgid "Last Update"
-msgstr ""
+msgstr "Последнее обновление"
 
 msgid "Loading"
-msgstr ""
+msgstr "Загрузка"
 
 msgid "Log File Viewer"
-msgstr ""
+msgstr "Просмотр системного журнала"
 
 msgid "Log directory"
-msgstr ""
+msgstr "Папка системного<br />журнала"
 
 msgid "Log length"
-msgstr ""
+msgstr "Просмотр журнала"
 
 msgid "Log to file"
-msgstr ""
+msgstr "Запись в файл"
 
 msgid "Log to syslog"
-msgstr ""
+msgstr "Запись в журнал"
 
 msgid "Lookup Hostname"
-msgstr ""
+msgstr "Поиск имени хоста"
 
 msgid "NOT installed"
-msgstr ""
+msgstr "Не установлена"
 
 msgid ""
 "Neither GNU Wget with SSL nor cURL installed to select a network to use for "
 "communication."
-msgstr ""
+msgstr "Neither GNU Wget с SSL nor cURL установлены для выбора сети для связи."
 
 msgid ""
 "Neither GNU Wget with SSL nor cURL installed to support secure updates via "
 "HTTPS protocol."
 msgstr ""
+"Neither GNU Wget с SSL nor cURL установлены для поддержки безопасных "
+"обновлений  по протоколу HTTPS."
 
 msgid "Network"
 msgstr "Сеть"
 
 msgid "Network on which the ddns-updater scripts will be started"
-msgstr ""
+msgstr "Сеть, в которой будут запущены скрипты DDNS-updater"
 
 msgid "Never"
-msgstr ""
+msgstr "Никогда"
 
 msgid "Next Update"
-msgstr ""
+msgstr "Следующее обновление"
 
 msgid "No certificates found"
-msgstr ""
+msgstr "Сертификаты не найдены"
 
 msgid "No data"
-msgstr ""
+msgstr "Нет данных"
 
 msgid "No logging"
-msgstr ""
+msgstr "Нет записи в системный журнал"
 
 msgid "Non-public and by default blocked IP's"
-msgstr ""
+msgstr "Непубличные и по умолчанию заблокированные IP-адреса"
 
 msgid "Notice"
-msgstr ""
+msgstr "Заметка"
 
 msgid "Number of last lines stored in log files"
-msgstr ""
+msgstr "Число последних строк, системного журнала."
 
 msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication."
-msgstr ""
+msgstr "Необязательно: Назначить использование версии протоколов IPv4/IPv6."
 
 msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests."
 msgstr ""
+"Необязательно: Назначить использование протокола TCP вместо UDP по умолчанию "
+"для DNS-запросов."
 
 msgid "OPTIONAL: Network to use for communication"
-msgstr ""
+msgstr "Необязательно: Сеть для связи"
 
 msgid "OPTIONAL: Proxy-Server for detection and updates."
-msgstr ""
+msgstr "Необязательно: Прокси-сервер для обнаружения и обновления."
 
 msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'."
 msgstr ""
+"Необязательно: Использовать по умолчанию DNS сервер, чтобы обнаружить "
+"'Зарегистрированный IP-адрес'."
 
 msgid "On Error the script will retry the failed action after given time"
 msgstr ""
+"В случае ошибки, скрипт повторит неудавшееся действие по истечении заданного "
+"времени."
 
 msgid "On Error the script will stop execution after given number of retrys"
 msgstr ""
+"В случае ошибки, скрипт прекратит выполнение, после заданного количества "
+"повторных попыток."
 
 msgid "OpenWrt Wiki"
-msgstr ""
+msgstr "OpenWrt Wiki"
 
 msgid "Optional Encoded Parameter"
-msgstr ""
+msgstr "Необязательный кодированный параметр"
 
 msgid "Optional Parameter"
-msgstr ""
+msgstr "Необязательный<br />параметр"
 
 msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)"
-msgstr ""
+msgstr "Необязательно: заменяет [PARAMENC] в Update-URL-адрес (URL-encoded)."
 
 msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)"
 msgstr ""
+"Необязательно: заменяет [PARAMOPT] в Update-URL-адрес (не URL-encoded)."
 
 msgid "Overview"
-msgstr ""
+msgstr "Главное меню"
 
 msgid "PROXY-Server"
-msgstr ""
+msgstr "Прокси сервер"
 
 msgid "PROXY-Server not supported"
-msgstr ""
+msgstr "Прокси сервер не поддерживается"
 
 msgid "Password"
 msgstr "Пароль"
 
 msgid "Path to CA-Certificate"
-msgstr ""
+msgstr "Путь к CA-Сертификату"
 
 msgid "Please [Save & Apply] your changes first"
-msgstr ""
+msgstr "Нажмите [Сохранить и применить] чтобы сохранить ваши настройки."
 
 msgid "Please press [Read] button"
-msgstr ""
+msgstr "Нажмите кнопку [Читать / Перечитывать системный журнал]"
 
 msgid "Please update to the current version!"
-msgstr ""
+msgstr "Обновите до текущей версии!"
 
 msgid "Process ID"
-msgstr ""
+msgstr "ID процесса"
 
 msgid "Read / Reread log file"
-msgstr ""
+msgstr "Читать / Перечитывать системный журнал"
 
 msgid "Really change DDNS provider?"
-msgstr ""
+msgstr "Действительно сменить DDNS провайдера?"
 
 msgid "Registered IP"
-msgstr ""
+msgstr "Зарегистрированный<br />IP-адрес"
 
 msgid "Replaces [DOMAIN] in Update-URL"
-msgstr ""
+msgstr "Заменяет [ДОМЕН] в Update-URL."
 
 msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)"
-msgstr ""
+msgstr "Заменяет [ПАРОЛЬ] в Update-URL (URL-encoded)."
 
 msgid "Replaces [USERNAME] in Update-URL (URL-encoded)"
-msgstr ""
+msgstr "Заменяет [ЛОГИН] in Update-URL (URL-encoded)."
 
 msgid "Run once"
-msgstr ""
+msgstr "Запуск один раз"
 
 msgid "Script"
-msgstr ""
+msgstr "Скрипт"
 
 msgid "Show more"
-msgstr ""
+msgstr "Показать больше"
 
 msgid "Software update required"
-msgstr ""
+msgstr "Требуется обновление программного обеспечения."
 
 msgid "Specifying a DNS-Server is not supported"
-msgstr ""
+msgstr "Указанный DNS сервер не поддерживается"
 
 msgid "Start"
-msgstr ""
+msgstr "Старт"
 
 msgid "Start / Stop"
-msgstr ""
+msgstr "Старт / Стоп"
 
 msgid "Status directory"
-msgstr ""
+msgstr "Папка состояния"
 
 msgid "Stopped"
-msgstr ""
+msgstr "Остановлено"
 
 msgid ""
 "The currently installed 'ddns-scripts' package did not support all available "
 "settings."
 msgstr ""
+"Пакет установленных 'ddns-scripts' не поддерживает все доступные настройки."
 
 msgid "The default setting of '0' will retry infinite."
-msgstr ""
+msgstr "Значение по умолчанию '0' будет повторяться бесконечно."
 
 msgid "There is no service configured."
-msgstr ""
+msgstr "Сервис не настроен."
 
 msgid "Timer Settings"
-msgstr ""
+msgstr "Настройка таймера"
 
 msgid "To change global settings click here"
-msgstr ""
+msgstr "Чтобы изменить основные настройки, нажмите здесь."
 
 msgid "To use cURL activate this option."
-msgstr ""
+msgstr "Для использования cURL активируйте режим."
 
 msgid "URL"
 msgstr "URL"
 
 msgid "URL to detect"
-msgstr ""
+msgstr "обнаружен URL"
 
 msgid "Unknown error"
-msgstr ""
+msgstr "Неизвестная ошибка"
 
 msgid ""
 "Update URL to be used for updating your DDNS Provider.<br />Follow "
 "instructions you will find on their WEB page."
 msgstr ""
+"Update URL используется для обновления DDNS-провайдера.<br />Следуйте "
+"инструкциям, вы найдете их на веб-странице."
 
 msgid "Update error"
-msgstr ""
+msgstr "Ошибка обновления"
 
 msgid "Use HTTP Secure"
-msgstr ""
+msgstr "Использовать HTTPS"
 
 msgid "Use cURL"
-msgstr ""
+msgstr "Использовать cURL"
 
 msgid "User defined script to read systems IP-Address"
-msgstr ""
+msgstr "Заданный пользователем скрипт для чтения системного IP-адреса."
 
 msgid "Username"
 msgstr "Имя пользователя"
 
 msgid "Using specific DNS Server not supported"
-msgstr ""
+msgstr "Использование определенного DNS сервера не поддерживается."
 
 msgid "Verify"
-msgstr ""
+msgstr "Проверить"
 
 msgid "Version"
-msgstr ""
+msgstr "Версия"
 
 msgid "Version Information"
-msgstr ""
+msgstr "Информация о версии"
 
 msgid "Waiting for changes to be applied..."
-msgstr ""
+msgstr "Ожидание применения изменений..."
 
 msgid "Warning"
-msgstr ""
+msgstr "Внимание"
 
 msgid ""
 "Writes detailed messages to log file. File will be truncated automatically."
 msgstr ""
+"Записывать подробные сообщения в системный журнал. Файл будет автоматически "
+"обрезан."
 
 msgid ""
 "Writes log messages to syslog. Critical Errors will always be written to "
 "syslog."
 msgstr ""
+"Задайте уровень журналирования. Критические ошибки, всегда будут записаны в "
+"системный журнал."
 
 msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
 "package, if you need to specify a DNS server to detect your registered IP."
 msgstr ""
+"Установите 'bind-host' или 'knot-host' или 'drill' или 'hostip' пакеты если "
+"вам нужно указать DNS сервер для обнаружения вашего зарегистрированного IP-"
+"адреса."
 
 msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' package for DNS "
 "requests."
-msgstr ""
+msgstr "Установите 'bind-host' или 'knot-host' или 'drill' для DNS запросов."
 
 msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package."
-msgstr ""
+msgstr "Установите 'wget' или 'curl' или 'uclient-fetch' пакет."
 
 msgid ""
 "You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-"
 "*ssl' package."
 msgstr ""
+"Установите 'wget' или 'curl' или 'uclient-fetch' с 'libustream-*ssl' пакетом."
 
 msgid "You should install 'wget' or 'curl' package."
-msgstr ""
+msgstr "Установите 'wget' или 'curl' пакеты."
 
 msgid ""
 "You should install 'wget' or 'uclient-fetch' package or replace libcurl."
 msgstr ""
+"Вы должны установить 'wget' или пакет 'uclient-fetch' или заменить libcurl."
 
 msgid "cURL is installed, but libcurl was compiled without proxy support."
-msgstr ""
+msgstr "cURL установлен, но libcurl был скомпилирован без поддержки прокси."
 
 msgid "cURL without Proxy Support"
-msgstr ""
+msgstr "cURL без поддержки прокси"
 
 msgid "can not detect local IP. Please select a different Source combination"
-msgstr ""
+msgstr "не может определить локальный IP-адрес. Выберите другой вариант"
 
 msgid "can not resolve host:"
-msgstr ""
+msgstr "не может разрешить хост:"
 
 msgid "config error"
-msgstr ""
+msgstr "ошибка в config файле"
 
 msgid "days"
-msgstr ""
+msgstr "дни"
 
 msgid "directory or path/file"
-msgstr ""
+msgstr "папка или путь/к файлу"
 
 msgid "either url or script could be set"
-msgstr ""
+msgstr "или url или скрипт смог быть установлен"
 
 msgid "enable here"
-msgstr ""
+msgstr "Включить здесь"
 
 msgid "file or directory not found or not 'IGNORE'"
-msgstr ""
+msgstr "файл или папка не найдена или не 'Игнорировать'"
 
 msgid "help"
-msgstr ""
+msgstr "помощь"
 
 msgid "hours"
-msgstr ""
+msgstr "часа(ов)"
 
 msgid "installed"
-msgstr ""
+msgstr "установлено"
 
 msgid "invalid FQDN / required - Sample"
-msgstr ""
+msgstr "недопустимое полное доменное имя / обязательный образец"
 
 msgid "minimum value '0'"
-msgstr ""
+msgstr "минимальное значение '0'"
 
 msgid "minimum value '1'"
-msgstr ""
+msgstr "минимальное значение '1'"
 
 msgid "minimum value 5 minutes == 300 seconds"
-msgstr ""
+msgstr "минимальное значение 5 минут == 300 секунд"
 
 msgid "minutes"
-msgstr ""
+msgstr "минут(ы)"
 
 msgid "missing / required"
-msgstr ""
+msgstr "отсутствует / не требуется"
 
 msgid "must be greater or equal 'Check Interval'"
-msgstr ""
+msgstr "должно быть больше или равно 'Интервал проверки'"
 
 msgid "must start with 'http://'"
-msgstr ""
+msgstr "должны начинаться с 'http://'"
 
 msgid "nc (netcat) can not connect"
-msgstr ""
+msgstr "NC (netcat) не может подключиться"
 
 msgid "never"
-msgstr ""
+msgstr "никогда"
 
 msgid "no data"
-msgstr ""
+msgstr "нет данных"
 
 msgid "not found or not executable - Sample: '/path/to/script.sh'"
 msgstr ""
+"не найден или не является исполнительным, например: '/path/to/script.sh'"
 
 msgid "nslookup can not resolve host"
-msgstr ""
+msgstr "nslookup не может разрешить хост"
 
 msgid "or"
-msgstr ""
+msgstr "или"
 
 msgid "or higher"
-msgstr ""
+msgstr "или выше"
 
 msgid "please disable"
-msgstr ""
+msgstr "отключите"
 
 msgid "please remove entry"
-msgstr ""
+msgstr "удалите эту запись"
 
 msgid "please select 'IPv4' address version"
-msgstr ""
+msgstr "выберите версию протокола 'IPv4' адреса"
 
 msgid "please select 'IPv4' address version in"
-msgstr ""
+msgstr "выберите версию протокола 'IPv4' адреса в"
 
 msgid "please set to 'default'"
-msgstr ""
+msgstr "установите режим 'по умолчанию'"
 
 msgid "proxy port missing"
-msgstr ""
+msgstr "отсутствует прокси порт"
 
 msgid "required"
-msgstr ""
+msgstr "требовать"
 
 msgid "seconds"
-msgstr ""
+msgstr "секунд(ы)"
 
 msgid "to run HTTPS without verification of server certificates (insecure)"
-msgstr ""
+msgstr "использовать HTTPS без проверки сертификатов сервера (небезопасно)"
 
 msgid "unknown error"
-msgstr ""
+msgstr "неизвестная ошибка"
 
 msgid "unspecific error"
-msgstr ""
+msgstr "нетипичная ошибка"
 
 msgid "use hostname, FQDN, IPv4- or IPv6-Address"
-msgstr ""
+msgstr "использовать имя хоста, полное доменное имя, IPv4 или IPv6-адрес"
index 1abaa8c6c86b76c88449e64c68a46c6bc57226a2..5101a9f10086c525f9e8fd58dd83f3a4173f8558 100644 (file)
@@ -1,21 +1,22 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: diag_core\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2012-08-15 11:44+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2012-08-15 11:44+0300\n"
+"PO-Revision-Date: 2018-01-22 15:14+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "Configure Diagnostics"
-msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойки диагностики"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка диагностики"
 
 msgid "Diagnostics"
 msgstr "Диагностика"
@@ -24,22 +25,19 @@ msgid ""
 "The diagnostics available under this menu depend on what modules you have "
 "installed on your device."
 msgstr ""
-"Доступные в данном меню виды диагностики зависят от установленных на вашем "
-"устройстве модулей. "
+"Доступные виды диагностики зависят от установленных в прошивке устройства "
+"пакетов модулей."
 
 msgid ""
 "The entries in the menu allow you to perform diagnostic tests on your system "
 "to aid in troubleshooting."
 msgstr ""
-"Ð\97апиÑ\81и Ð² Ð¼ÐµÐ½Ñ\8e Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñ\8fÑ\82Ñ\8c вам выполнить диагностику системы, чтобы помочь в "
+"Ð\9dаÑ\81Ñ\82Ñ\80ойки Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñ\8fÑ\82 вам выполнить диагностику системы, чтобы помочь в "
 "обнаружении проблем."
 
 msgid ""
 "With this menu you can configure network diagnostics, such as network device "
 "scans and ping tests."
 msgstr ""
-"Используя это меню, вы можете настроить диагностику сети, например, "
-"сканирование сетевых устройств или ping-тест."
-
-#~ msgid "l_d_diag"
-#~ msgstr "l_d_diag"
+"На этой странице вы можете настроить диагностику сети, например сканирование "
+"сетевых устройств или ping-тест."
diff --git a/applications/luci-app-diag-devinfo/Makefile b/applications/luci-app-diag-devinfo/Makefile
deleted file mode 100644 (file)
index 1505b62..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# 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 Diagnostics Tools (Device Info)
-LUCI_DEPENDS:=+luci-app-diag-core +smap +netdiscover +mac-to-devinfo +httping +smap-to-devinfo +netdiscover-to-devinfo @BROKEN
-
-define Package/luci-app-diag-devinfo/conffiles
-/etc/config/luci_devinfo
-endef
-
-include ../../luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/devinfo_common.lua b/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/devinfo_common.lua
deleted file mode 100644 (file)
index 93f735c..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
--- Copyright 2009 Daniel Dickinson
--- Licensed to the public under the Apache License 2.0.
-
-module("luci.controller.luci_diag.devinfo_common", package.seeall)
-
-require("luci.i18n")
-require("luci.util")
-require("luci.sys")
-require("luci.cbi")
-require("luci.model.uci")
-
-local translate = luci.i18n.translate
-local DummyValue = luci.cbi.DummyValue
-local SimpleSection = luci.cbi.SimpleSection
-
-function index()
-       return -- no-op
-end
-
-function run_processes(outnets, cmdfunc)
-   i = next(outnets, nil)
-   while (i) do
-      outnets[i]["output"] = luci.sys.exec(cmdfunc(outnets, i))
-      i = next(outnets, i)
-   end
-end
-
-function parse_output(devmap, outnets, haslink, type, mini, debug)
-   local curnet = next(outnets, nil)
-
-   while (curnet) do
-      local output = outnets[curnet]["output"]
-      local subnet = outnets[curnet]["subnet"]
-      local ports = outnets[curnet]["ports"]
-      local interface = outnets[curnet]["interface"]
-      local netdevs = {}
-      devlines = luci.util.split(output)
-      if not devlines then
-        devlines = {}
-        table.insert(devlines, output)
-      end
-           
-      local j = nil
-      j = next(devlines, j)
-      
-      local found_a_device = false
-      
-      while (j) do
-        if devlines[j] and ( devlines[j] ~= "" ) then
-           found_a_device = true
-           local devtable
-           local row = {}
-           devtable = luci.util.split(devlines[j], ' | ')
-           row["ip"] = devtable[1]
-           if (not mini) then
-              row["mac"] = devtable[2]
-           end
-           if ( devtable[4] == 'unknown' ) then 
-              row["vendor"] = devtable[3]
-           else
-              row["vendor"] = devtable[4]
-           end
-           row["type"] = devtable[5]
-           if (not mini) then
-              row["model"] = devtable[6]
-           end
-           if (haslink) then
-              row["config_page"] = devtable[7]
-           end
-           
-           if (debug) then
-              row["raw"] = devlines[j]
-           end
-           table.insert(netdevs, row)
-        end
-        j = next(devlines, j)
-      end
-      if not found_a_device then
-        local row = {}
-        row["ip"] = curnet
-        if (not mini) then
-           row["mac"] = ""
-        end
-        if (type == "smap") then
-           row["vendor"] = luci.i18n.translate("No SIP devices")
-        else
-           row["vendor"] = luci.i18n.translate("No devices detected")
-        end
-        row["type"] = luci.i18n.translate("check other networks")
-        if (not mini) then
-           row["model"] = ""
-        end
-        if (haslink) then
-           row["config_page"] = ""
-        end
-        if (debug) then
-           row["raw"] = output
-        end
-        table.insert(netdevs, row)
-      end       
-      local s
-      if (type == "smap") then
-        if (mini) then
-           s = devmap:section(luci.cbi.Table, netdevs, luci.i18n.translate("SIP devices discovered for") .. " " .. curnet)
-        else
-           local interfacestring = ""
-           if ( interface ~= "" ) then
-              interfacestring = ", " .. interface
-           end
-           s = devmap:section(luci.cbi.Table, netdevs, luci.i18n.translate("SIP devices discovered for") .. " " .. curnet .. " (" .. subnet .. ":" .. ports .. interfacestring .. ")")
-        end
-        s.template = "diag/smapsection"
-      else
-        if (mini) then
-           s = devmap:section(luci.cbi.Table, netdevs, luci.i18n.translate("Devices discovered for") .. " " .. curnet)
-        else
-           local interfacestring = ""
-           if ( interface ~= "" ) then
-              interfacestring = ", " .. interface
-           end
-           s = devmap:section(luci.cbi.Table, netdevs, luci.i18n.translate("Devices discovered for") .. " " .. curnet .. " (" .. subnet .. interfacestring .. ")")
-        end
-      end
-      s:option(DummyValue, "ip", translate("IP Address"))
-      if (not mini) then
-        s:option(DummyValue, "mac", translate("MAC Address"))
-      end
-      s:option(DummyValue, "vendor", translate("Vendor"))
-      s:option(DummyValue, "type", translate("Device Type"))
-      if (not mini) then
-        s:option(DummyValue, "model", translate("Model"))
-      end
-      if (haslink) then
-        s:option(DummyValue, "config_page", translate("Link to Device"))
-      end
-      if (debug) then
-        s:option(DummyValue, "raw", translate("Raw"))
-      end
-      curnet = next(outnets, curnet)
-   end
-end
-
-function get_network_device(interface)
-   local state = luci.model.uci.cursor_state()
-   state:load("network")
-   local dev
-   
-   return state:get("network", interface, "ifname")
-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 config_devinfo_scan(map, scannet)
-   local o
-   o = scannet:option(luci.cbi.Flag, "enable", translate("Enable"))
-   o.optional = false
-   o.rmempty = false
-
-   o = scannet:option(luci.cbi.Value, "interface", translate("Interface"))
-   o.optional = false
-   luci.controller.luci_diag.devinfo_common.cbi_add_networks(o)
-   
-   local scansubnet
-   scansubnet = scannet:option(luci.cbi.Value, "subnet", translate("Subnet"))
-   scansubnet.optional = false
-   
-   o = scannet:option(luci.cbi.Value, "timeout", translate("Timeout"), translate("Time to wait for responses in seconds (default 10)"))
-   o.optional = true
-   
-   o = scannet:option(luci.cbi.Value, "repeat_count", translate("Repeat Count"), translate("Number of times to send requests (default 1)"))
-   o.optional = true
-   
-   o = scannet:option(luci.cbi.Value, "sleepreq", translate("Sleep Between Requests"), translate("Milliseconds to sleep between requests (default 100)"))
-   o.optional = true
-end
diff --git a/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/luci_diag_devinfo.lua b/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/luci_diag_devinfo.lua
deleted file mode 100644 (file)
index ebba03f..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
--- Copyright 2009 Daniel Dickinson
--- Licensed to the public under the Apache License 2.0.
-
-module("luci.controller.luci_diag.luci_diag_devinfo", package.seeall)
-
-function index()
-   local e
-
-   e = entry({"admin", "voice", "diag", "phones"}, arcombine(cbi("luci_diag/smap_devinfo"), cbi("luci_diag/smap_devinfo_config")), _("Phones"), 10)
-   e.leaf = true
-   e.subindex = true
-   e.dependent = true
-
-   e = entry({"admin", "voice", "diag", "phones", "config"}, cbi("luci_diag/smap_devinfo_config"), _("Configure"), 10)
-
-   e = entry({"admin", "status", "smap_devinfo"}, cbi("luci_diag/smap_devinfo"), _("SIP Devices on Network"), 120)
-   e.leaf = true
-   e.dependent = true
-
-   e = entry({"admin", "network", "diag_config", "netdiscover_devinfo_config"}, cbi("luci_diag/netdiscover_devinfo_config"), _("Network Device Scan"), 100)
-   e.leaf = true
-   e.dependent = true
-
-   e = entry({"admin", "network", "diag_config", "smap_devinfo_config"}, cbi("luci_diag/smap_devinfo_config"), _("SIP Device Scan"))
-   e.leaf = true
-   e.dependent = true
-
-   e = entry({"admin", "status", "netdiscover_devinfo"}, cbi("luci_diag/netdiscover_devinfo"), _("Devices on Network"), 90)
-   e.dependent = true
-
-   e = entry({"admin", "network", "mactodevinfo"}, cbi("luci_diag/mactodevinfo"), _("MAC Device Info Overrides"), 190)
-   e.dependent = true
-
-   e = entry({"mini", "diag", "phone_scan"}, cbi("luci_diag/smap_devinfo_mini"), _("Phone Scan"), 100)
-   e.dependent = true
-
-   e = entry({"mini", "voice", "phones", "phone_scan_config"}, cbi("luci_diag/smap_devinfo_config_mini"), _("Config Phone Scan"), 90)
-   e.dependent = true
-
-   e = entry({"mini", "diag", "netdiscover_devinfo"}, cbi("luci_diag/netdiscover_devinfo_mini"), _("Network Device Scan"), 10)
-   e.dependent = true
-
-   e = entry({"mini", "network", "netdiscover_devinfo_config"}, cbi("luci_diag/netdiscover_devinfo_config_mini"), _("Device Scan Config"))
-   e.dependent = true
-
-end
diff --git a/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/netdiscover_common.lua b/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/netdiscover_common.lua
deleted file mode 100644 (file)
index 2e879a6..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
--- Copyright 2009 Daniel Dickinson
--- Licensed to the public under the Apache License 2.0.
-
-module("luci.controller.luci_diag.netdiscover_common", package.seeall)
-
-require("luci.i18n")
-require("luci.util")
-require("luci.sys")
-require("luci.cbi")
-require("luci.model.uci")
-
-local translate = luci.i18n.translate
-local DummyValue = luci.cbi.DummyValue
-local SimpleSection = luci.cbi.SimpleSection
-
-function index()
-       return -- no-op
-end
-        
-function get_params()
-
-   local netdiscover_uci = luci.model.uci.cursor()
-   netdiscover_uci:load("luci_devinfo")
-   local nettable = netdiscover_uci:get_all("luci_devinfo")
-
-   local i 
-   local subnet
-   local netdout
-
-   local outnets = {}
-
-   i = next(nettable, nil)
-
-   while (i) do
-      if (netdiscover_uci:get("luci_devinfo", i) == "netdiscover_scannet") then 
-        local scannet = netdiscover_uci:get_all("luci_devinfo", i)
-        if scannet["subnet"] and (scannet["subnet"] ~= "") and scannet["enable"] and ( scannet["enable"] == "1") then
-           local output = ""
-           local outrow = {}
-           outrow["interface"] = scannet["interface"]
-           outrow["timeout"] = 10
-           local timeout = tonumber(scannet["timeout"]) 
-           if timeout and ( timeout > 0 ) then
-              outrow["timeout"] = scannet["timeout"]
-           end
-
-           outrow["repeat_count"] = 1
-           local repcount = tonumber(scannet["repeat_count"]) 
-           if repcount and ( repcount > 0 ) then
-              outrow["repeat_count"] = scannet["repeat_count"]
-           end
-
-           outrow["sleepreq"] = 100
-           local repcount = tonumber(scannet["sleepreq"]) 
-           if repcount and ( repcount > 0 ) then
-              outrow["sleepreq"] = scannet["sleepreq"]
-           end
-
-           outrow["subnet"] = scannet["subnet"]    
-           outrow["output"] = output
-           outnets[i] = outrow
-        end
-      end
-      i = next(nettable, i)
-   end
-   return outnets
-end
-
-function command_function(outnets, i)
-   local interface = luci.controller.luci_diag.devinfo_common.get_network_device(outnets[i]["interface"])
-   
-   return "/usr/bin/netdiscover-to-devinfo " .. outnets[i]["subnet"] .. " " .. interface .. " " .. outnets[i]["timeout"] .. " -r " .. outnets[i]["repeat_count"] .. " -s " .. outnets[i]["sleepreq"] .. " </dev/null"
-end
-
-function action_links(netdiscovermap, mini) 
-   s = netdiscovermap:section(SimpleSection, "", translate("Actions")) 
-   b = s:option(DummyValue, "_config", translate("Configure Scans"))
-   b.value = ""
-   if (mini) then
-      b.titleref = luci.dispatcher.build_url("mini", "network", "netdiscover_devinfo_config")
-   else
-      b.titleref = luci.dispatcher.build_url("admin", "network", "diag_config", "netdiscover_devinfo_config")
-   end
-   b = s:option(DummyValue, "_scans", translate("Repeat Scans (this can take a few minutes)"))
-   b.value = ""
-   if (mini) then
-      b.titleref = luci.dispatcher.build_url("mini", "diag", "netdiscover_devinfo")
-   else
-      b.titleref = luci.dispatcher.build_url("admin", "status", "netdiscover_devinfo")
-   end
-end
diff --git a/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/smap_common.lua b/applications/luci-app-diag-devinfo/luasrc/controller/luci_diag/smap_common.lua
deleted file mode 100644 (file)
index 82a1e05..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
--- Copyright 2009 Daniel Dickinson
--- Licensed to the public under the Apache License 2.0.
-
-module("luci.controller.luci_diag.smap_common", package.seeall)
-
-require("luci.i18n")
-require("luci.util")
-require("luci.sys")
-require("luci.cbi")
-require("luci.model.uci")
-
-local translate = luci.i18n.translate
-local DummyValue = luci.cbi.DummyValue
-local SimpleSection = luci.cbi.SimpleSection
-
-function index()
-       return -- no-op
-end
-
-function get_params()
-
-   local smapnets_uci = luci.model.uci.cursor()
-   smapnets_uci:load("luci_devinfo")
-   local nettable = smapnets_uci:get_all("luci_devinfo")
-
-   local i 
-   local subnet
-   local smapout
-
-   local outnets = {}
-
-   i = next(nettable, nil)
-
-   while (i) do
-      if (smapnets_uci:get("luci_devinfo", i) == "smap_scannet") then 
-        local scannet = smapnets_uci:get_all("luci_devinfo", i)
-        if scannet["subnet"] and (scannet["subnet"] ~= "") and scannet["enable"] and ( scannet["enable"] == "1") then
-           local output = ""
-           local outrow = {}
-           outrow["subnet"] = scannet["subnet"]
-           ports = "5060"
-           if scannet["ports"] and ( scannet["ports"] ~= "" ) then
-              ports = scannet["ports"]          
-           end
-           outrow["timeout"] = 10
-           local timeout = tonumber(scannet["timeout"]) 
-           if timeout and ( timeout > 0 ) then
-              outrow["timeout"] = scannet["timeout"]
-           end
-
-           outrow["repeat_count"] = 1
-           local repcount = tonumber(scannet["repeat_count"]) 
-           if repcount and ( repcount > 0 ) then
-              outrow["repeat_count"] = scannet["repeat_count"]
-           end
-
-           outrow["sleepreq"] = 100
-           local repcount = tonumber(scannet["sleepreq"]) 
-           if repcount and ( repcount > 0 ) then
-              outrow["sleepreq"] = scannet["sleepreq"]
-           end
-
-           if scannet["interface"] and ( scannet["interface"] ~= "" ) then
-              outrow["interface"] = scannet["interface"]
-           else
-              outrow["interface"] = ""
-           end
-
-           outrow["ports"] = ports
-           outrow["output"] = output
-           outnets[i] = outrow
-        end
-      end
-      i = next(nettable, i)
-   end
-   return outnets
-end
-
-function command_function(outnets, i) 
-
-   local interface = luci.controller.luci_diag.devinfo_common.get_network_device(outnets[i]["interface"])
-
-   return "/usr/bin/netsmap-to-devinfo -r " .. outnets[i]["subnet"] .. " -t " .. outnets[i]["timeout"] .. " -i " .. interface .. " -x -p " ..  outnets[i]["ports"]  .. " -c " .. outnets[i]["repeat_count"] .. " -s " .. outnets[i]["sleepreq"] .. " </dev/null"
-end
-
-function action_links(smapmap, mini) 
-   s = smapmap:section(SimpleSection, "", translate("Actions")) 
-   b = s:option(DummyValue, "_config", translate("Configure Scans"))
-   b.value = ""
-   if (mini) then
-      b.titleref = luci.dispatcher.build_url("mini", "voice", "phones", "phone_scan_config")
-   else
-      b.titleref = luci.dispatcher.build_url("admin", "network", "diag_config", "smap_devinfo_config")
-   end
-   b = s:option(DummyValue, "_scans", translate("Repeat Scans (this can take a few minutes)"))
-   b.value = ""
-   if (mini) then
-      b.titleref = luci.dispatcher.build_url("mini", "diag", "phone_scan")
-   else
-      b.titleref = luci.dispatcher.build_url("admin", "status", "smap_devinfo")
-   end
-end
diff --git a/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/mactodevinfo.lua b/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/mactodevinfo.lua
deleted file mode 100644 (file)
index 2ecb359..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
--- Copyright 2009 Daniel Dickinson
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("mactodevinfo", luci.i18n.translate("MAC Device Info Overrides"), translate("Override the information returned by the MAC to Device Info Script (mac-to-devinfo) for a specified range of MAC Addresses"))
-
-s = m:section(TypedSection, "mactodevinfo", translate("MAC Device Override"), translate("MAC range and information used to override system and IEEE databases"))
-s.addremove = true
-s.anonymous = true
-
-v = s:option(Value, "name", translate("Name"))
-v.optional = true
-v = s:option(Value, "maclow", translate("Beginning of MAC address range"))
-v.optional = false
-v = s:option(Value, "machigh", translate("End of MAC address range"))
-v.optional = false
-v = s:option(Value, "vendor", translate("Vendor"))
-v.optional = false
-v = s:option(Value, "devtype", translate("Device Type"))
-v.optional = false
-v = s:option(Value, "model", translate("Model"))
-v.optional = false
-v = s:option(Value, "ouiowneroverride", translate("OUI Owner"))
-v.optional = true
-
-return m
diff --git a/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo.lua b/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo.lua
deleted file mode 100644 (file)
index 535c46b..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
---[[
-netdiscover_devinfo - SIP Device Information
-
-(c) 2009 Daniel Dickinson
-
-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$
-]]--
-
-require("luci.i18n")
-require("luci.util")
-require("luci.sys")
-require("luci.model.uci")
-require("luci.controller.luci_diag.netdiscover_common")
-require("luci.controller.luci_diag.devinfo_common")
-
-local debug = false
-
-m = SimpleForm("luci_devinfo", translate("Network Device Scan"), translate("Scans for devices on specified networks."))
-m.reset = false
-m.submit = false
-
-local outnets = luci.controller.luci_diag.netdiscover_common.get_params()
-luci.controller.luci_diag.devinfo_common.run_processes(outnets, luci.controller.luci_diag.netdiscover_common.command_function)
-luci.controller.luci_diag.devinfo_common.parse_output(m, outnets, false, "netdiscover", false, debug)
-luci.controller.luci_diag.netdiscover_common.action_links(m, false)
-
-return m
diff --git a/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo_config.lua b/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo_config.lua
deleted file mode 100644 (file)
index ea8a64e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
--- Copyright 2009 Daniel Dickinson
--- Licensed to the public under the Apache License 2.0.
-
-require("luci.controller.luci_diag.devinfo_common")
-
-m = Map("luci_devinfo", translate("Network Device Scanning Configuration"), translate("Configure scanning for devices on specified networks. Decreasing \'Timeout\', \'Repeat Count\', and/or \'Sleep Between Requests\' may speed up scans, but also may fail to find some devices."))
-
-s = m:section(SimpleSection, "", translate("Use Configuration"))
-b = s:option(DummyValue, "_scans", translate("Perform Scans (this can take a few minutes)"))
-b.value = ""
-b.titleref = luci.dispatcher.build_url("admin", "status", "netdiscover_devinfo")
-
-scannet = m:section(TypedSection, "netdiscover_scannet", translate("Scanning Configuration"), translate("Networks to scan for devices"))
-scannet.addremove = true
-scannet.anonymous = false
-
-luci.controller.luci_diag.devinfo_common.config_devinfo_scan(m, scannet)
-
-return m
diff --git a/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo_config_mini.lua b/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo_config_mini.lua
deleted file mode 100644 (file)
index 6d89bd6..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
--- Copyright 2009 Daniel Dickinson
--- Licensed to the public under the Apache License 2.0.
-
-require("luci.controller.luci_diag.devinfo_common")
-
-m = Map("luci_devinfo", translate("Network Device Scanning Configuration"), translate("Configure scanning for devices on specified networks. Decreasing \'Timeout\', \'Repeat Count\', and/or \'Sleep Between Requests\' may speed up scans, but also may fail to find some devices."))
-
-s = m:section(SimpleSection, "", translate("Use Configuration"))
-b = s:option(DummyValue, "_scans", translate("Perform Scans (this can take a few minutes)"))
-b.value = ""
-b.titleref = luci.dispatcher.build_url("mini", "diag", "netdiscover_devinfo")
-
-scannet = m:section(TypedSection, "netdiscover_scannet", translate("Scanning Configuration"), translate("Networks to scan for devices"))
-scannet.addremove = true
-scannet.anonymous = false
-
-luci.controller.luci_diag.devinfo_common.config_devinfo_scan(m, scannet)
-
-return m
diff --git a/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo_mini.lua b/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/netdiscover_devinfo_mini.lua
deleted file mode 100644 (file)
index 271c114..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
---[[
-netdiscover_devinfo - SIP Device Information
-
-(c) 2009 Daniel Dickinson
-
-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$
-]]--
-
-require("luci.i18n")
-require("luci.util")
-require("luci.sys")
-require("luci.model.uci")
-require("luci.controller.luci_diag.netdiscover_common")
-require("luci.controller.luci_diag.devinfo_common")
-
-local debug = false
-
-m = SimpleForm("luci_devinfo", translate("Network Device Scan"), translate("Scan for devices on specified networks."))
-m.reset = false
-m.submit = false
-
-local outnets = luci.controller.luci_diag.netdiscover_common.get_params()
-luci.controller.luci_diag.devinfo_common.run_processes(outnets, luci.controller.luci_diag.netdiscover_common.command_function)
-luci.controller.luci_diag.devinfo_common.parse_output(m, outnets, false, "netdiscover", true, debug)
-luci.controller.luci_diag.netdiscover_common.action_links(m, true)
-
-return m
diff --git a/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo.lua b/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo.lua
deleted file mode 100644 (file)
index ff808d9..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
---[[
-smap_devinfo - SIP Device Information
-
-(c) 2009 Daniel Dickinson
-
-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$
-]]--
-
-require("luci.i18n")
-require("luci.util")
-require("luci.sys")
-require("luci.model.uci")
-require("luci.controller.luci_diag.smap_common")
-require("luci.controller.luci_diag.devinfo_common")
-
-local debug = false
-
-m = SimpleForm("luci-smap-to-devinfo", translate("SIP Device Information"), translate("Scan for supported SIP devices on specified networks."))
-m.reset = false
-m.submit = false
-
-local outnets = luci.controller.luci_diag.smap_common.get_params()
-luci.controller.luci_diag.devinfo_common.run_processes(outnets, luci.controller.luci_diag.smap_common.command_function)
-luci.controller.luci_diag.devinfo_common.parse_output(m, outnets, true, "smap", false, debug)
-luci.controller.luci_diag.smap_common.action_links(m, false)
-
-return m
diff --git a/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo_config.lua b/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo_config.lua
deleted file mode 100644 (file)
index aab2406..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
--- Copyright 2009 Daniel Dickinson
--- Licensed to the public under the Apache License 2.0.
-
-require("luci.controller.luci_diag.devinfo_common")
-
-m = Map("luci_devinfo", translate("SIP Device Scanning Configuration"), translate("Configure scanning for supported SIP devices on specified networks. Decreasing \'Timeout\', \'Repeat Count\', and/or \'Sleep Between Requests\' may speed up scans, but also may fail to find some devices."))
-
-s = m:section(SimpleSection, "", translate("Use Configuration"))
-b = s:option(DummyValue, "_scans", translate("Perform Scans (this can take a few minutes)"))
-b.value = ""
-b.titleref = luci.dispatcher.build_url("admin", "status", "smap_devinfo")
-
-scannet = m:section(TypedSection, "smap_scannet", translate("Scanning Configuration"), translate("Networks to scan for supported devices"))
-scannet.addremove = true
-scannet.anonymous = false
-
-local ports
-ports = scannet:option(Value, "ports", translate("Ports"))
-ports.optional = true
-ports.rmempty = true
-
-luci.controller.luci_diag.devinfo_common.config_devinfo_scan(m, scannet)
-
-return m
diff --git a/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo_config_mini.lua b/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo_config_mini.lua
deleted file mode 100644 (file)
index 01fc9b5..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
--- Copyright 2009 Daniel Dickinson
--- Licensed to the public under the Apache License 2.0.
-
-require("luci.controller.luci_diag.devinfo_common")
-
-m = Map("luci_devinfo", translate("Phone Scanning Configuration"), translate("Configure scanning for supported SIP devices on specified networks. Decreasing \'Timeout\', \'Repeat Count\', and/or \'Sleep Between Requests\' may speed up scans, but also may fail to find some devices."))
-
-s = m:section(SimpleSection, "", translate("Use Configuration"))
-b = s:option(DummyValue, "_scans", translate("Perform Scans (this can take a few minutes)"))
-b.value = ""
-b.titleref = luci.dispatcher.build_url("mini", "diag", "phone_scan")
-
-scannet = m:section(TypedSection, "smap_scannet", translate("Scanning Configuration"), translate("Networks to scan for supported devices"))
-scannet.addremove = true
-scannet.anonymous = false
-
-local ports
-ports = scannet:option(Value, "ports", translate("Ports"))
-ports.optional = true
-ports.rmempty = true
-
-luci.controller.luci_diag.devinfo_common.config_devinfo_scan(m, scannet)
-
-
-return m
diff --git a/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo_mini.lua b/applications/luci-app-diag-devinfo/luasrc/model/cbi/luci_diag/smap_devinfo_mini.lua
deleted file mode 100644 (file)
index 5b7bb0f..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
---[[
-smap_devinfo - SIP Device Information
-
-(c) 2009 Daniel Dickinson
-
-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$
-]]--
-
-require("luci.i18n")
-require("luci.util")
-require("luci.sys")
-require("luci.model.uci")
-require("luci.controller.luci_diag.smap_common")
-require("luci.controller.luci_diag.devinfo_common")
-
-local debug = false
-
-m = SimpleForm("luci-smap-to-devinfo", translate("Phone Information"), translate("Scan for supported SIP devices on specified networks."))
-m.reset = false
-m.submit = false
-
-local outnets = luci.controller.luci_diag.smap_common.get_params()
-luci.controller.luci_diag.devinfo_common.run_processes(outnets, luci.controller.luci_diag.smap_common.command_function)
-luci.controller.luci_diag.devinfo_common.parse_output(m, outnets, true, "smap", true, debug)
-luci.controller.luci_diag.smap_common.action_links(m, true)
-
-return m
diff --git a/applications/luci-app-diag-devinfo/luasrc/view/diag/smapsection.htm b/applications/luci-app-diag-devinfo/luasrc/view/diag/smapsection.htm
deleted file mode 100644 (file)
index b9ad8a5..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-<%#
- Copyright 2009 Daniel Dickinson
- Licensed to the public under the Apache License 2.0.
--%>
-
-<%-
-local rowcnt = 1
-function rowstyle()
-       rowcnt = rowcnt + 1
-       return (rowcnt % 2) + 1
-end
--%>
-
-<!-- smapsection -->
-<fieldset class="cbi-section" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
-       <% if self.title and #self.title > 0 then -%>
-               <legend><%=self.title%></legend>
-       <%- end %>
-       <div class="cbi-section-descr"><%=self.description%></div>
-       <div class="cbi-section-node">
-               <%- local count = 0 -%>
-               <table class="cbi-section-table">
-                       <tr class="cbi-section-table-titles">
-                       <%- if not self.anonymous then -%>
-                               <%- if self.sectionhead then -%>
-                                       <th class="cbi-section-table-cell"><%=self.sectionhead%></th>
-                               <%- else -%>
-                                       <th>&#160;</th>
-                               <%- end -%>
-                       <%- end -%>
-                       <%- for i, k in pairs(self.children) do if not k.optional then -%>
-                               <th class="cbi-section-table-cell">
-                               <%- if k.titleref then -%><a title="<%=self.titledesc or translate('Go to relevant configuration page')%>" class="cbi-title-ref" href="<%=k.titleref%>"><%- end -%>
-                                       <%-=k.title-%>
-                               <%- if k.titleref then -%></a><%- end -%>
-                               </th>
-                       <%- count = count + 1; end; end; if self.extedit or self.addremove then -%>
-                               <th class="cbi-section-table-cell">&#160;</th>
-                       <%- count = count + 1; end -%>
-                       </tr>
-                       <tr class="cbi-section-table-descr">
-                       <%- if not self.anonymous then -%>
-                               <%- if self.sectiondesc then -%>
-                                       <th class="cbi-section-table-cell"><%=self.sectiondesc%></th>
-                               <%- else -%>
-                                       <th></th>
-                               <%- end -%>
-                       <%- end -%>
-                       <%- for i, k in pairs(self.children) do if not k.optional then -%>
-                               <th class="cbi-section-table-cell"><%=k.description%></th>
-                       <%- end; end; if self.extedit or self.addremove then -%>
-                               <th class="cbi-section-table-cell"></th>
-                       <%- end -%>
-                       </tr>
-                       <%- local isempty = true
-                           for i, k in ipairs(self:cfgsections()) do
-                                       section = k
-                                       isempty = false
-                                       scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" }
-                       -%>
-                       <tr class="cbi-section-table-row<% if self.extedit or self.rowcolors then %> cbi-rowstyle-<%=rowstyle()%><% end %>" id="cbi-<%=self.config%>-<%=section%>">
-                               <% if not self.anonymous then -%>
-                                       <th><h3><%=k%></h3></th>
-                               <%- end %>
-
-                               <%-     for k, node in ipairs(self.children) do -%>
-                                       <%-    if not node.optional then -%>
-                                              <%- nodevalue = node:cfgvalue(section) -%>
-                                              <%- if nodevalue and ( nodevalue ~= "" ) and string.find(nodevalue, 'http://', 1, plain) then
-                                                      node.href = nodevalue
-                                                      node.template = "diag/smapvalue"
-                                                   end 
-                                               -%>
-                                              <%- node:render(section, scope or {}) -%>
-                                       <%- end -%>
-                                <%- end -%>
-
-                               <%- if self.extedit or self.addremove then -%>
-                                       <td class="cbi-section-table-cell">
-                                               <%- if self.extedit then -%>
-                                                       <a href="
-                                                       <%- if type(self.extedit) == "string" then -%>
-                                                               <%=self.extedit:format(section)%>
-                                                       <%- elseif type(self.extedit) == "function" then -%>
-                                                               <%=self:extedit(section)%>
-                                                       <%- end -%>
-                                                       " title="<%:Edit%>"><img style="border: none" src="<%=resource%>/cbi/edit.gif" alt="<%:Edit%>" /></a>
-                                               <%- end; if self.addremove then %>
-                                                       <input type="image" value="<%:Delete%>" name="cbi.rts.<%=self.config%>.<%=k%>" alt="<%:Delete%>" title="<%:Delete%>" src="<%=resource%>/cbi/remove.gif" />
-                                               <%- end -%>
-                                       </td>
-                               <%- end -%>
-                       </tr>
-                       <%- end -%>
-
-                       <%- if isempty then -%>
-                       <tr class="cbi-section-table-row">
-                               <td colspan="<%=count%>"><em><br /><%:This section contains no values yet%></em></td>
-                       </tr>
-                       <%- end -%>
-               </table>
-
-               <% if self.error then %>
-                       <div class="cbi-section-error">
-                               <ul><% for _, c in pairs(self.error) do for _, e in ipairs(c) do -%>
-                                       <li><%=luci.util.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-smapsection-create">
-                               <% if self.anonymous then %>
-                                       <input class="cbi-button cbi-button-add" type="submit" value="<%:Add%>" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>" title="<%:Add%>" />
-                               <% else %>
-                                       <% if self.invalid_cts then -%><div class="cbi-section-error"><% end %>
-                                       <input type="text" class="cbi-section-create-name" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>" />
-                                       <input class="cbi-button cbi-button-add" type="submit" value="<%:Add%>" title="<%:Add%>" />
-                                       <% if self.invalid_cts then -%>
-                                               <br /><%:Invalid%></div>
-                                       <%- end %>
-                               <% end %>
-                       </div>
-                       <%- end %>
-               <%- end -%>
-       </div>
-</fieldset>
-<!-- /smapsection -->
diff --git a/applications/luci-app-diag-devinfo/luasrc/view/diag/smapvalue.htm b/applications/luci-app-diag-devinfo/luasrc/view/diag/smapvalue.htm
deleted file mode 100644 (file)
index 278985c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<%#
- Copyright 2009 Daniel Dickinson
- Licensed to the public under the Apache License 2.0.
--%>
-
-<%+cbi/valueheader%>
-<% if self.href then %><a href="<%=self.href%>" target="_blank"><% end -%>
-       <%=luci.util.pcdata(self:cfgvalue(section))%>
-<%- if self.href then %></a><%end%>
-&#160;
-<input type="hidden" id="<%=cbid%>" value="<%=luci.util.pcdata(self:cfgvalue(section))%>" />
-<%+cbi/valuefooter%>
diff --git a/applications/luci-app-diag-devinfo/po/ca/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/ca/diag_devinfo.po
deleted file mode 100644 (file)
index 9739a4b..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-06-02 05:29+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"
-
-msgid "Actions"
-msgstr "Accions"
-
-msgid "Add"
-msgstr "Afegeix"
-
-msgid "Beginning of MAC address range"
-msgstr ""
-
-msgid "Config Phone Scan"
-msgstr ""
-
-msgid "Configure"
-msgstr "Configura"
-
-msgid "Configure Scans"
-msgstr ""
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr "Suprimeix"
-
-msgid "Device Scan Config"
-msgstr ""
-
-msgid "Device Type"
-msgstr ""
-
-msgid "Devices discovered for"
-msgstr "Devices discovered for"
-
-msgid "Devices on Network"
-msgstr ""
-
-msgid "Edit"
-msgstr "Edita"
-
-msgid "Enable"
-msgstr "Habilita"
-
-msgid "End of MAC address range"
-msgstr ""
-
-msgid "Go to relevant configuration page"
-msgstr ""
-
-msgid "IP Address"
-msgstr "Adreça IP"
-
-msgid "Interface"
-msgstr ""
-
-msgid "Invalid"
-msgstr ""
-
-msgid "Link to Device"
-msgstr ""
-
-msgid "MAC Address"
-msgstr ""
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr ""
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr ""
-
-msgid "Model"
-msgstr "Model"
-
-msgid "Name"
-msgstr "Nom"
-
-msgid "Network Device Scan"
-msgstr ""
-
-msgid "Network Device Scanning Configuration"
-msgstr ""
-
-msgid "Networks to scan for devices"
-msgstr ""
-
-msgid "Networks to scan for supported devices"
-msgstr ""
-
-msgid "No SIP devices"
-msgstr "Cap dispositiu SIP"
-
-msgid "No devices detected"
-msgstr "Cap dispositiu detectat"
-
-msgid "Number of times to send requests (default 1)"
-msgstr ""
-
-msgid "OUI Owner"
-msgstr "Propietari OUI"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "Phone Information"
-msgstr "Informació de telèfon"
-
-msgid "Phone Scan"
-msgstr ""
-
-msgid "Phone Scanning Configuration"
-msgstr ""
-
-msgid "Phones"
-msgstr "Telèfons"
-
-msgid "Ports"
-msgstr "Ports"
-
-msgid "Raw"
-msgstr ""
-
-msgid "Repeat Count"
-msgstr ""
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "SIP Device Information"
-msgstr ""
-
-msgid "SIP Device Scan"
-msgstr ""
-
-msgid "SIP Device Scanning Configuration"
-msgstr ""
-
-msgid "SIP Devices on Network"
-msgstr ""
-
-msgid "SIP devices discovered for"
-msgstr ""
-
-msgid "Scan for devices on specified networks."
-msgstr ""
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
-
-msgid "Scanning Configuration"
-msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
-
-msgid "Sleep Between Requests"
-msgstr ""
-
-msgid "Subnet"
-msgstr "Subxarxa"
-
-msgid "This section contains no values yet"
-msgstr "Esta secció encara no conté valors"
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr ""
-
-msgid "Timeout"
-msgstr "Temps d'espera"
-
-msgid "Use Configuration"
-msgstr ""
-
-msgid "Vendor"
-msgstr "Venedor"
-
-msgid "check other networks"
-msgstr ""
diff --git a/applications/luci-app-diag-devinfo/po/cs/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/cs/diag_devinfo.po
deleted file mode 100644 (file)
index 73fe67e..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-07-11 19:32+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"
-
-msgid "Actions"
-msgstr "Akce"
-
-msgid "Add"
-msgstr "Přidat"
-
-msgid "Beginning of MAC address range"
-msgstr "Začátek rozsahu MAC adres"
-
-msgid "Config Phone Scan"
-msgstr ""
-
-msgid "Configure"
-msgstr "Konfigurace"
-
-msgid "Configure Scans"
-msgstr "Konfigurace skenů"
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr "Odstranit"
-
-msgid "Device Scan Config"
-msgstr ""
-
-msgid "Device Type"
-msgstr "Typ zařízení"
-
-msgid "Devices discovered for"
-msgstr "Devices discovered for"
-
-msgid "Devices on Network"
-msgstr "Zařízení na síti"
-
-msgid "Edit"
-msgstr "Upravit"
-
-msgid "Enable"
-msgstr "Povolit"
-
-msgid "End of MAC address range"
-msgstr "Konec rozsahu MAC adres"
-
-msgid "Go to relevant configuration page"
-msgstr "Přejít na příslušnou konfigurační stránku"
-
-msgid "IP Address"
-msgstr "IP adresa"
-
-msgid "Interface"
-msgstr "Rozhraní"
-
-msgid "Invalid"
-msgstr "Neplatný"
-
-msgid "Link to Device"
-msgstr "Odkaz na zařízení"
-
-msgid "MAC Address"
-msgstr "MAC adresa"
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr ""
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "Jak dlouho spát mezi požadavky (milisekundy, výchozí 100)"
-
-msgid "Model"
-msgstr "Model"
-
-msgid "Name"
-msgstr "Jméno"
-
-msgid "Network Device Scan"
-msgstr "Vyhledání síťových zařízení"
-
-msgid "Network Device Scanning Configuration"
-msgstr ""
-
-msgid "Networks to scan for devices"
-msgstr ""
-
-msgid "Networks to scan for supported devices"
-msgstr ""
-
-msgid "No SIP devices"
-msgstr "Žádná zařízení SIP"
-
-msgid "No devices detected"
-msgstr "Nebyla detekována žádná zařízení"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "Kolikrát odeslat požadavek (standardně 1)"
-
-msgid "OUI Owner"
-msgstr "Vlastník OUI"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr "Provést skenování (může trvat několik minut)"
-
-msgid "Phone Information"
-msgstr "Informace o telefonu"
-
-msgid "Phone Scan"
-msgstr "Vyhledání telefonů"
-
-msgid "Phone Scanning Configuration"
-msgstr ""
-
-msgid "Phones"
-msgstr "Telefony"
-
-msgid "Ports"
-msgstr "Porty"
-
-msgid "Raw"
-msgstr ""
-
-msgid "Repeat Count"
-msgstr "Počet opakování"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr "Opakování skenování (může trvat několik minut)"
-
-msgid "SIP Device Information"
-msgstr "Informace o zařízení SIP"
-
-msgid "SIP Device Scan"
-msgstr "Skenování SIP zařízení"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "Konfigurace skenování SIP zařízení"
-
-msgid "SIP Devices on Network"
-msgstr "Zařízení SIP na síti"
-
-msgid "SIP devices discovered for"
-msgstr ""
-
-msgid "Scan for devices on specified networks."
-msgstr "Hledat zařízení na zadané síti"
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
-
-msgid "Scanning Configuration"
-msgstr "Nastavení skenování"
-
-msgid "Scans for devices on specified networks."
-msgstr ""
-
-msgid "Sleep Between Requests"
-msgstr "Uspat mezi jednotlivými požadavky"
-
-msgid "Subnet"
-msgstr "Podsíť"
-
-msgid "This section contains no values yet"
-msgstr "Tato sekce zatím neobsahuje žádné hodnoty"
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "Doba čekání na odpovědi v sekundách (výchozí 10)"
-
-msgid "Timeout"
-msgstr "Časový limit"
-
-msgid "Use Configuration"
-msgstr "Použít nastavení"
-
-msgid "Vendor"
-msgstr "Prodejce"
-
-msgid "check other networks"
-msgstr "zkontrolovat ostatní sítě"
diff --git a/applications/luci-app-diag-devinfo/po/de/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/de/diag_devinfo.po
deleted file mode 100644 (file)
index 2401ece..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-08-10 02:08+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"
-
-msgid "Actions"
-msgstr "Aktionen"
-
-msgid "Add"
-msgstr "Hinzufügen"
-
-msgid "Beginning of MAC address range"
-msgstr "Beginn des MAC-Adress-Bereiches"
-
-msgid "Config Phone Scan"
-msgstr "Telefonsuche konfigurieren"
-
-msgid "Configure"
-msgstr "Konfigurieren"
-
-msgid "Configure Scans"
-msgstr "Suche konfigurieren"
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-"Konfiguriere Suche für Geräte in gewählten Netzwerken. Das Verringern von "
-"'Zeitüberschreitung', 'Wiederholungszähler' und/oder 'Pause zwischen "
-"Anfragen' kann die Geschwindigkeit der Suche erhöhen, aber auch das Finden "
-"einzelner Geräte verhindern."
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-"Konfiguriere Suche für SIP-Gerätein gewählten Netzwerken. Das Verringern von "
-"'Zeitüberschreitung', 'Wiederholungszähler' und/oder 'Pause zwischen "
-"Anfragen' kann die Geschwindigkeit der Suche erhöhen, aber auch das Finden "
-"einzelner Geräte verhindern."
-
-msgid "Delete"
-msgstr "Löschen"
-
-msgid "Device Scan Config"
-msgstr "Gerätesuche konfigurieren"
-
-msgid "Device Type"
-msgstr "Geräte-Typ"
-
-msgid "Devices discovered for"
-msgstr "Geräte gefunden für"
-
-msgid "Devices on Network"
-msgstr "Geräte im Netzwerk"
-
-msgid "Edit"
-msgstr "Bearbeiten"
-
-msgid "Enable"
-msgstr "Aktivieren"
-
-msgid "End of MAC address range"
-msgstr "Ende des MAC-Adress-Bereiches"
-
-msgid "Go to relevant configuration page"
-msgstr "Gehe zu entsprechender Konfigurations-Seite"
-
-msgid "IP Address"
-msgstr "IP-Adresse"
-
-msgid "Interface"
-msgstr "Schnittstelle"
-
-msgid "Invalid"
-msgstr "Ungültig"
-
-msgid "Link to Device"
-msgstr "Verknüpfung zu Gerät"
-
-msgid "MAC Address"
-msgstr "MAC-Adresse"
-
-msgid "MAC Device Info Overrides"
-msgstr "Benutzerdefinierte MAC-zu-Gerät-Benennungen"
-
-msgid "MAC Device Override"
-msgstr "Benutzerdefinierte MAC-zu-Gerät-Benennung"
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-"MAC-Adressbereich und Benennungen um die Informationen der System- und IEEE-"
-"Datenbanken zu überschreiben"
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "Wartezeit zwischen den Anfragen in Millisekunden (Standard 100)"
-
-msgid "Model"
-msgstr "Modell"
-
-msgid "Name"
-msgstr "Name"
-
-msgid "Network Device Scan"
-msgstr "Netzwerkgerätesuche"
-
-msgid "Network Device Scanning Configuration"
-msgstr "Konfiguration der Netzwerkgerätesuche"
-
-msgid "Networks to scan for devices"
-msgstr "Zu durchsuchende Netzwerke"
-
-msgid "Networks to scan for supported devices"
-msgstr "Nach unterstützten Geräten zu durchsuchende Netzwerke"
-
-msgid "No SIP devices"
-msgstr "keine SIP-Geräte"
-
-msgid "No devices detected"
-msgstr "keine Geräte gefunden"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "Anzahl der Versuche Anfragen zu senden (Standard 1)"
-
-msgid "OUI Owner"
-msgstr "OUI-Organisation"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-"Überschreibt die Informationen die durch das MAC-zu-Gerätename-Programm (mac-"
-"to-devinfo) für einen bestimmten MAC-Adressbereich zurückgegeben werden"
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr "Führe Suche aus (Dies kann einige Minuten dauern)"
-
-msgid "Phone Information"
-msgstr "Informationen zum Telefon"
-
-msgid "Phone Scan"
-msgstr "Telefonsuche"
-
-msgid "Phone Scanning Configuration"
-msgstr "Konfiguration der Telefonsuche"
-
-msgid "Phones"
-msgstr "Telefone"
-
-msgid "Ports"
-msgstr "Ports"
-
-msgid "Raw"
-msgstr "Rohdaten"
-
-msgid "Repeat Count"
-msgstr "Wiederholungsanzahl"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr "Wiederhole Suche (Dies kann einige Minuten dauern)"
-
-msgid "SIP Device Information"
-msgstr "SIP-Geräteinformationen"
-
-msgid "SIP Device Scan"
-msgstr "SIP-Gerätesuche"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "Konfiguration der SIP-Gerätesuche"
-
-msgid "SIP Devices on Network"
-msgstr "SIP-Geräte im Netzwerk"
-
-msgid "SIP devices discovered for"
-msgstr "SIP-Geräte entdeckt für"
-
-msgid "Scan for devices on specified networks."
-msgstr "Suche nach Geräten im spezifizierten Netzwerk"
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr "Suche nach SIP-unterstützenden Geräten im spezifizierten Netzwerk"
-
-msgid "Scanning Configuration"
-msgstr "Such-Konfiguration"
-
-msgid "Scans for devices on specified networks."
-msgstr "Scans for devices on specified networks."
-
-msgid "Sleep Between Requests"
-msgstr "Wartezeit zwischen den Versuchen"
-
-msgid "Subnet"
-msgstr "Subnetz"
-
-msgid "This section contains no values yet"
-msgstr "Dieser Abschnitt enthält noch keine Werte"
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "Antwortwartezeit in Sekunden (Standard: 10)"
-
-msgid "Timeout"
-msgstr "Zeitüberschreitung"
-
-msgid "Use Configuration"
-msgstr "Verwende Konfiguration"
-
-msgid "Vendor"
-msgstr "Hersteller"
-
-msgid "check other networks"
-msgstr "Prüfe andere Netzwerke"
diff --git a/applications/luci-app-diag-devinfo/po/el/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/el/diag_devinfo.po
deleted file mode 100644 (file)
index 7a247cb..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-03-19 15:30+0200\n"
-"Last-Translator: Vasilis <acinonyx@openwrt.gr>\n"
-"Language-Team: none\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"
-
-msgid "Actions"
-msgstr ""
-
-msgid "Add"
-msgstr "Προσθήκη"
-
-msgid "Beginning of MAC address range"
-msgstr "Αρχή εύρους διευθύνσεων MAC"
-
-msgid "Config Phone Scan"
-msgstr "Ρύθμιση Σάρωσης Τηλεφώνων"
-
-msgid "Configure"
-msgstr "Παραμετροποίηση"
-
-msgid "Configure Scans"
-msgstr ""
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr "Διαγραφή"
-
-msgid "Device Scan Config"
-msgstr "Ρύθμιση Σάρωσης Συσκευών"
-
-msgid "Device Type"
-msgstr ""
-
-msgid "Devices discovered for"
-msgstr "Devices discovered for"
-
-msgid "Devices on Network"
-msgstr "Συσκευές στο Δίκτυο"
-
-msgid "Edit"
-msgstr "Επεξεργασία"
-
-msgid "Enable"
-msgstr "Ενεργοποίηση"
-
-msgid "End of MAC address range"
-msgstr "Τέλος εύρους διευθύνσεων MAC"
-
-msgid "Go to relevant configuration page"
-msgstr ""
-
-msgid "IP Address"
-msgstr "Διεύθυνση IP"
-
-msgid "Interface"
-msgstr "Διεπαφή"
-
-msgid "Invalid"
-msgstr "Μη έγκυρο"
-
-msgid "Link to Device"
-msgstr "Ζεύξη με Συσκευή"
-
-msgid "MAC Address"
-msgstr "Διεύθυνση MAC"
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr ""
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr ""
-
-msgid "Model"
-msgstr ""
-
-msgid "Name"
-msgstr "Όνομα"
-
-msgid "Network Device Scan"
-msgstr ""
-
-msgid "Network Device Scanning Configuration"
-msgstr ""
-
-msgid "Networks to scan for devices"
-msgstr ""
-
-msgid "Networks to scan for supported devices"
-msgstr ""
-
-msgid "No SIP devices"
-msgstr "Δεν υπάρχουν συσκευές SIP"
-
-msgid "No devices detected"
-msgstr "Δεν ανιχνεύτηκαν συσκευές"
-
-msgid "Number of times to send requests (default 1)"
-msgstr ""
-
-msgid "OUI Owner"
-msgstr "Ιδιοκτήτης OUI"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "Phone Information"
-msgstr "Πληροφορίες Τηλεφώνου"
-
-msgid "Phone Scan"
-msgstr "Σάρωση Τηλεφώνων"
-
-msgid "Phone Scanning Configuration"
-msgstr "Παραμετροποίηση Σάρωσης Τηλεφώνων"
-
-msgid "Phones"
-msgstr "Τηλέφωνα"
-
-msgid "Ports"
-msgstr ""
-
-msgid "Raw"
-msgstr "Ανεπεξέργαστα"
-
-msgid "Repeat Count"
-msgstr "Επανάληψη Μέτρησης"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "SIP Device Information"
-msgstr "Πληροφορίες Συσκευής SIP"
-
-msgid "SIP Device Scan"
-msgstr "Σάρωση για συσκευές SIP"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "Παραμετροποίηση Σάρωσης Συσκευών SIP"
-
-msgid "SIP Devices on Network"
-msgstr "Συσκευές SIP στο Δίκτυο"
-
-msgid "SIP devices discovered for"
-msgstr ""
-
-msgid "Scan for devices on specified networks."
-msgstr "Σάρωση για συσκευές σε καθορισμένα δίκτυα."
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
-
-msgid "Scanning Configuration"
-msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr "Scans for devices on specified networks."
-
-msgid "Sleep Between Requests"
-msgstr ""
-
-msgid "Subnet"
-msgstr "Υποδίκτυο"
-
-msgid "This section contains no values yet"
-msgstr ""
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr ""
-
-msgid "Timeout"
-msgstr ""
-
-msgid "Use Configuration"
-msgstr ""
-
-msgid "Vendor"
-msgstr ""
-
-msgid "check other networks"
-msgstr "έλεγχος άλλων δικτύων"
diff --git a/applications/luci-app-diag-devinfo/po/en/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/en/diag_devinfo.po
deleted file mode 100644 (file)
index 7adbbea..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-# Diagnostics (Device Info).
-# Copyright (C) 2009 Daniel Dickinson
-# Daniel Dickinson <crazycshore@gmail.com>, 2009.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2009-07-17 04:22-0400\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"
-
-msgid "Actions"
-msgstr ""
-
-msgid "Add"
-msgstr "Add"
-
-msgid "Beginning of MAC address range"
-msgstr "Beginning of MAC address range"
-
-msgid "Config Phone Scan"
-msgstr "Config Phone Scan"
-
-msgid "Configure"
-msgstr "Configure"
-
-msgid "Configure Scans"
-msgstr ""
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr "Delete"
-
-msgid "Device Scan Config"
-msgstr "Device Scan Config"
-
-msgid "Device Type"
-msgstr ""
-
-msgid "Devices discovered for"
-msgstr ""
-
-msgid "Devices on Network"
-msgstr "Devices on Network"
-
-msgid "Edit"
-msgstr "Edit"
-
-msgid "Enable"
-msgstr "Enable"
-
-msgid "End of MAC address range"
-msgstr "End of MAC address range"
-
-msgid "Go to relevant configuration page"
-msgstr ""
-
-msgid "IP Address"
-msgstr "IP Address"
-
-msgid "Interface"
-msgstr "Interface"
-
-msgid "Invalid"
-msgstr "Invalid"
-
-msgid "Link to Device"
-msgstr "Link to Device"
-
-msgid "MAC Address"
-msgstr "MAC Address"
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr "MAC Device Override"
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr "MAC range and information used to override system and IEEE databases"
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "Milliseconds to sleep between requests (default 100)"
-
-msgid "Model"
-msgstr ""
-
-msgid "Name"
-msgstr "Name"
-
-msgid "Network Device Scan"
-msgstr ""
-
-msgid "Network Device Scanning Configuration"
-msgstr ""
-
-msgid "Networks to scan for devices"
-msgstr ""
-
-msgid "Networks to scan for supported devices"
-msgstr ""
-
-msgid "No SIP devices"
-msgstr "No SIP devices"
-
-msgid "No devices detected"
-msgstr "No devices detected"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "Number of times to send requests (default 1)"
-
-msgid "OUI Owner"
-msgstr "OUI Owner"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "Phone Information"
-msgstr "Phone Information"
-
-msgid "Phone Scan"
-msgstr "Phone Scan"
-
-msgid "Phone Scanning Configuration"
-msgstr "Phone Scanning Configuration"
-
-msgid "Phones"
-msgstr "Phones"
-
-msgid "Ports"
-msgstr ""
-
-msgid "Raw"
-msgstr "Raw"
-
-msgid "Repeat Count"
-msgstr "Repeat Count"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "SIP Device Information"
-msgstr "SIP Device Information"
-
-msgid "SIP Device Scan"
-msgstr "SIP Device Scan"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "SIP Device Scanning Configuration"
-
-msgid "SIP Devices on Network"
-msgstr "SIP Devices on Network"
-
-msgid "SIP devices discovered for"
-msgstr ""
-
-msgid "Scan for devices on specified networks."
-msgstr "Scan for devices on specified networks."
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
-
-msgid "Scanning Configuration"
-msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr "Scans for devices on specified networks."
-
-msgid "Sleep Between Requests"
-msgstr "Sleep Between Requests"
-
-msgid "Subnet"
-msgstr "Subnet"
-
-msgid "This section contains no values yet"
-msgstr ""
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "Time to wait for responses in seconds (default 10)"
-
-msgid "Timeout"
-msgstr "Timeout"
-
-msgid "Use Configuration"
-msgstr ""
-
-msgid "Vendor"
-msgstr ""
-
-msgid "check other networks"
-msgstr "check other networks"
diff --git a/applications/luci-app-diag-devinfo/po/es/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/es/diag_devinfo.po
deleted file mode 100644 (file)
index 0b44ff3..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-08-26 20:14+0200\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: Pootle 2.0.6\n"
-
-msgid "Actions"
-msgstr "Acciones"
-
-msgid "Add"
-msgstr "Añadir"
-
-msgid "Beginning of MAC address range"
-msgstr "Inicio del rango de direcciones MAC"
-
-msgid "Config Phone Scan"
-msgstr "Configurar escaneo de teléfono"
-
-msgid "Configure"
-msgstr "Configurar"
-
-msgid "Configure Scans"
-msgstr "Explorar configuraciones"
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-"Configure la exploración de dispositivos en las redes especificadas. "
-"Reduciendo \"Espera\", \"Repeticiones\" y/o \"Parar entre peticiones\" puede "
-"acelerar las exploración, pero también puede que no encuentre algunos "
-"dispositivos."
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-"Configure la exploración de dispositivos SIP soportados en las redes "
-"especificadas. Reduciendo \"Espera\", \"Repeticiones\" y/o \"Parar entre "
-"peticiones\" puede acelerar la exploración, pero también puede que no "
-"encuentre algunos dispositivos."
-
-msgid "Delete"
-msgstr "Borrar"
-
-msgid "Device Scan Config"
-msgstr "Configuración del escaneo de dispositivos"
-
-msgid "Device Type"
-msgstr "Tipo de dispositivo"
-
-msgid "Devices discovered for"
-msgstr "Dispositivos encontrados para"
-
-msgid "Devices on Network"
-msgstr "Dispositivos en red"
-
-msgid "Edit"
-msgstr "Editar"
-
-msgid "Enable"
-msgstr "Activar"
-
-msgid "End of MAC address range"
-msgstr "Fin del rango de direcciones MAC"
-
-msgid "Go to relevant configuration page"
-msgstr "Ir a la página de configuración pertinente"
-
-msgid "IP Address"
-msgstr "Dirección IP"
-
-msgid "Interface"
-msgstr "Interfaz"
-
-msgid "Invalid"
-msgstr "No válido"
-
-msgid "Link to Device"
-msgstr "Enlazar con dispositivo"
-
-msgid "MAC Address"
-msgstr "Dirección MAC"
-
-msgid "MAC Device Info Overrides"
-msgstr "Ignorar la información del dispositivo MAC"
-
-msgid "MAC Device Override"
-msgstr "Ignorar MAC del dispositivo"
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-"Dirección MAC e información usada para ignorar el sistema y bases de datos "
-"IEEE"
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "Milisegundos a detenerse entre peticiones (100 por defecto)"
-
-msgid "Model"
-msgstr "Modelo"
-
-msgid "Name"
-msgstr "Nombre"
-
-msgid "Network Device Scan"
-msgstr "Exploración de dispositivos de red"
-
-msgid "Network Device Scanning Configuration"
-msgstr "Configuración de la exploración de dispositivos de red"
-
-msgid "Networks to scan for devices"
-msgstr "Redes en las que escanear dispositivos"
-
-msgid "Networks to scan for supported devices"
-msgstr "Redes en las que escanear dispositivos soportados"
-
-msgid "No SIP devices"
-msgstr "No hay dispositivos SIP"
-
-msgid "No devices detected"
-msgstr "No se detectan dispositivos"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "Número de veces que se enviarán peticiones (1 por defecto)"
-
-msgid "OUI Owner"
-msgstr "Propietario del OUI"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-"Ignorar la información devuelta por el script de información MAC a "
-"dispositivo (mac-to-devinfo) para el rango de direcciones MAC que se "
-"especifica"
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr "Realizar exploraciones (puede llevar unos minutos)"
-
-msgid "Phone Information"
-msgstr "Información de teléfono"
-
-msgid "Phone Scan"
-msgstr "Escanear teléfono"
-
-msgid "Phone Scanning Configuration"
-msgstr "Configuración del escaneo telefónico"
-
-msgid "Phones"
-msgstr "Teléfonos"
-
-msgid "Ports"
-msgstr "Puertos"
-
-msgid "Raw"
-msgstr "Sin tratar"
-
-msgid "Repeat Count"
-msgstr "Número de repeticiones"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr "Repetir exploraciones (puede llevar unos minutos)"
-
-msgid "SIP Device Information"
-msgstr "Información de dispositivos SIP"
-
-msgid "SIP Device Scan"
-msgstr "Escanear dispositivos SIP"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "Configuración de escaneo de dispositivos SIP"
-
-msgid "SIP Devices on Network"
-msgstr "Dispositivos SIP en red"
-
-msgid "SIP devices discovered for"
-msgstr "Dispositivos SIP para los que descubrir"
-
-msgid "Scan for devices on specified networks."
-msgstr "Buscar dispositivos en las redes especificadas."
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr "Explorar dispositivos SIP soportados en las redes especificadas."
-
-msgid "Scanning Configuration"
-msgstr "Configuración de la exploración"
-
-msgid "Scans for devices on specified networks."
-msgstr "Explora dispositivos en las redes especificadas."
-
-msgid "Sleep Between Requests"
-msgstr "Detenerse entre peticiones"
-
-msgid "Subnet"
-msgstr "Subred"
-
-msgid "This section contains no values yet"
-msgstr "Esta sección aún no tiene valores"
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "Esperar de respuestas en segundos (10 por defecto)"
-
-msgid "Timeout"
-msgstr "Espera"
-
-msgid "Use Configuration"
-msgstr "Use la configuración"
-
-msgid "Vendor"
-msgstr "Vendedor"
-
-msgid "check other networks"
-msgstr "comprueba otras redes"
diff --git a/applications/luci-app-diag-devinfo/po/fr/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/fr/diag_devinfo.po
deleted file mode 100644 (file)
index e3d3809..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-01-26 12:49+0200\n"
-"Last-Translator: kyas <rimk_71@hotmail.com>\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"
-
-msgid "Actions"
-msgstr "Actions"
-
-msgid "Add"
-msgstr "Ajouter"
-
-msgid "Beginning of MAC address range"
-msgstr "Début de la plage d'adresses MAC"
-
-msgid "Config Phone Scan"
-msgstr "Configurer la recherche de téléphone"
-
-msgid "Configure"
-msgstr "Configurer"
-
-msgid "Configure Scans"
-msgstr "Configurer la recherche"
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-"Configurer la recherche d'appareils sur un réseau spécifié. Réduire le "
-"'Timeout', 'Repeat Count', et/ou  'Sleep Between Requests' peut augmenter la "
-"vitesse des scans, mais peut aussi ne pas trouver certains appareils."
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-"Configurer la recherche d'appareils SIP supporté sur un réseau spécifié. "
-"Réduire le 'Timeout', 'Repeat Count', et/ou 'Sleep Between Requests' peut "
-"augmenter la vitesse des scans, mais peut aussi ne pas trouver certains "
-"appareils."
-
-msgid "Delete"
-msgstr "Supprimer"
-
-msgid "Device Scan Config"
-msgstr "Configuration de la recherche de périphériques"
-
-msgid "Device Type"
-msgstr "Type d'appareil"
-
-msgid "Devices discovered for"
-msgstr "Devices discovered for"
-
-msgid "Devices on Network"
-msgstr "Périphériques sur le réseau"
-
-msgid "Edit"
-msgstr "Éditer"
-
-msgid "Enable"
-msgstr "Activer"
-
-msgid "End of MAC address range"
-msgstr "Fin de la plage d'adresses MAC"
-
-msgid "Go to relevant configuration page"
-msgstr "Aller à la page de configuration appropriée"
-
-msgid "IP Address"
-msgstr "Adresse IP"
-
-msgid "Interface"
-msgstr "Interface"
-
-msgid "Invalid"
-msgstr "Invalide"
-
-msgid "Link to Device"
-msgstr "Lien vers le périphérique"
-
-msgid "MAC Address"
-msgstr "Adresse MAC"
-
-msgid "MAC Device Info Overrides"
-msgstr "Modification info MAC du périphérique"
-
-msgid "MAC Device Override"
-msgstr "Modification de MAC de périphériques"
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-"Gamme d'adresses MAC et informations utilisées pour modifier les bases "
-"système et IEEE"
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "Durée d'attente en millisecondes entre les requêtes (par défaut 100)"
-
-msgid "Model"
-msgstr "Modèle"
-
-msgid "Name"
-msgstr "Nom"
-
-msgid "Network Device Scan"
-msgstr "Analyse des périphériques réseau"
-
-msgid "Network Device Scanning Configuration"
-msgstr "Configuration de l'analyse des périphériques réseau"
-
-msgid "Networks to scan for devices"
-msgstr "Réseaux à scanner pour les périphériques "
-
-msgid "Networks to scan for supported devices"
-msgstr "Réseaux à scanner pour les périphériques supporté"
-
-msgid "No SIP devices"
-msgstr "Pas de périphérique SIP"
-
-msgid "No devices detected"
-msgstr "Pas de périphérique détecté"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "Nombre de tentatives d'envois des requêtes (1 par défaut)"
-
-msgid "OUI Owner"
-msgstr "OUI du fabricant"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-"Modifie les informations renvoyées par le script d'information « MAC vers "
-"Périphérique » (mac-to-devinfo) pour une gamme donnée d'adresses MAC"
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr "Faire un scan ( Cela peut prendre quelques minutes)"
-
-msgid "Phone Information"
-msgstr "Informations concernant le téléphone"
-
-msgid "Phone Scan"
-msgstr "Recherche d'un téléphone"
-
-msgid "Phone Scanning Configuration"
-msgstr "Configuration de la recherche d'un téléphone"
-
-msgid "Phones"
-msgstr "Téléphones"
-
-msgid "Ports"
-msgstr "Ports"
-
-msgid "Raw"
-msgstr "Brut"
-
-msgid "Repeat Count"
-msgstr "Nombre de tentatives"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr "Refaire scans (cela peut prendre quelques minutes )"
-
-msgid "SIP Device Information"
-msgstr "Informations concernant le périphérique SIP"
-
-msgid "SIP Device Scan"
-msgstr "Recherche de périphérique SIP"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "Configuration de la recherche de périphériques SIP"
-
-msgid "SIP Devices on Network"
-msgstr "Périphériques SIP sur le réseau"
-
-msgid "SIP devices discovered for"
-msgstr "Périphériques SIP  découvert pour"
-
-msgid "Scan for devices on specified networks."
-msgstr "Rechercher des périphériques sur les réseaux spécifiés."
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr "Rechercher des périphériques SIP supportés sur les réseaux spécifiés."
-
-msgid "Scanning Configuration"
-msgstr "Analyse de la configuration"
-
-msgid "Scans for devices on specified networks."
-msgstr "Recherches des périphériques sur les réseaux spécifiés."
-
-msgid "Sleep Between Requests"
-msgstr "Attente entre les requêtes"
-
-msgid "Subnet"
-msgstr "Sous-réseau"
-
-msgid "This section contains no values yet"
-msgstr "Cette partie ne contient pas encore de valeur."
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "Durée d'attente des réponses en secondes (par défaut 10)"
-
-msgid "Timeout"
-msgstr "Timeout"
-
-msgid "Use Configuration"
-msgstr "Utiliser la configuration"
-
-msgid "Vendor"
-msgstr "Vendeur"
-
-msgid "check other networks"
-msgstr "Explorer d'autres réseaux"
diff --git a/applications/luci-app-diag-devinfo/po/he/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/he/diag_devinfo.po
deleted file mode 100644 (file)
index 7161955..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-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"
-
-msgid "Actions"
-msgstr ""
-
-msgid "Add"
-msgstr ""
-
-msgid "Beginning of MAC address range"
-msgstr ""
-
-msgid "Config Phone Scan"
-msgstr ""
-
-msgid "Configure"
-msgstr ""
-
-msgid "Configure Scans"
-msgstr ""
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr ""
-
-msgid "Device Scan Config"
-msgstr ""
-
-msgid "Device Type"
-msgstr ""
-
-msgid "Devices discovered for"
-msgstr "Devices discovered for"
-
-msgid "Devices on Network"
-msgstr ""
-
-msgid "Edit"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "End of MAC address range"
-msgstr ""
-
-msgid "Go to relevant configuration page"
-msgstr ""
-
-msgid "IP Address"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Invalid"
-msgstr ""
-
-msgid "Link to Device"
-msgstr ""
-
-msgid "MAC Address"
-msgstr ""
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr ""
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr ""
-
-msgid "Model"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Network Device Scan"
-msgstr ""
-
-msgid "Network Device Scanning Configuration"
-msgstr ""
-
-msgid "Networks to scan for devices"
-msgstr ""
-
-msgid "Networks to scan for supported devices"
-msgstr ""
-
-msgid "No SIP devices"
-msgstr ""
-
-msgid "No devices detected"
-msgstr ""
-
-msgid "Number of times to send requests (default 1)"
-msgstr ""
-
-msgid "OUI Owner"
-msgstr ""
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "Phone Information"
-msgstr ""
-
-msgid "Phone Scan"
-msgstr ""
-
-msgid "Phone Scanning Configuration"
-msgstr ""
-
-msgid "Phones"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Raw"
-msgstr ""
-
-msgid "Repeat Count"
-msgstr ""
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "SIP Device Information"
-msgstr ""
-
-msgid "SIP Device Scan"
-msgstr ""
-
-msgid "SIP Device Scanning Configuration"
-msgstr ""
-
-msgid "SIP Devices on Network"
-msgstr ""
-
-msgid "SIP devices discovered for"
-msgstr ""
-
-msgid "Scan for devices on specified networks."
-msgstr ""
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
-
-msgid "Scanning Configuration"
-msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
-
-msgid "Sleep Between Requests"
-msgstr ""
-
-msgid "Subnet"
-msgstr ""
-
-msgid "This section contains no values yet"
-msgstr ""
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr ""
-
-msgid "Timeout"
-msgstr ""
-
-msgid "Use Configuration"
-msgstr ""
-
-msgid "Vendor"
-msgstr ""
-
-msgid "check other networks"
-msgstr ""
diff --git a/applications/luci-app-diag-devinfo/po/hu/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/hu/diag_devinfo.po
deleted file mode 100644 (file)
index 5201994..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-01-31 10:01+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"
-
-msgid "Actions"
-msgstr "Műveletek"
-
-msgid "Add"
-msgstr "Hozzáadás"
-
-msgid "Beginning of MAC address range"
-msgstr "MAC cím tartomány kezdete"
-
-msgid "Config Phone Scan"
-msgstr "Telefon keresés beállításai"
-
-msgid "Configure"
-msgstr "Beállítás"
-
-msgid "Configure Scans"
-msgstr "Keresési beállítások"
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-"Állítsa be az eszközkeresést a megadott hálózatokon. Az 'Időlimit', "
-"'Ismétlésszám', és/vagy 'Alvás a lekérdezések között' csökkentése "
-"felgyorsíthatja a keresést, de lehet, hogy nem talál meg néhány eszközt."
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-"Állítsa be a támogatott SIP eszközök keresését a megadott hálózatokon. Az "
-"'Időlimit', 'Ismétlésszám', és/vagy 'Alvás a lekérdezések között' "
-"csökkentése felgyorsíthatja a keresést, de lehet, hogy nem talál meg néhány "
-"eszközt."
-
-msgid "Delete"
-msgstr "Törlés"
-
-msgid "Device Scan Config"
-msgstr "Eszköz keresés beállításai"
-
-msgid "Device Type"
-msgstr "Eszköztípus"
-
-msgid "Devices discovered for"
-msgstr "Felfedezett eszközök"
-
-msgid "Devices on Network"
-msgstr "Eszközök a hálózatban"
-
-msgid "Edit"
-msgstr "Szerkesztés"
-
-msgid "Enable"
-msgstr "Engedélyezés"
-
-msgid "End of MAC address range"
-msgstr "MAC cím tartomány vége"
-
-msgid "Go to relevant configuration page"
-msgstr "Ugrás a kapcsolódó beállítások oldalára"
-
-msgid "IP Address"
-msgstr "IP cím"
-
-msgid "Interface"
-msgstr "Interfész"
-
-msgid "Invalid"
-msgstr "Érvénytelen"
-
-msgid "Link to Device"
-msgstr "Eszközre mutató hivatkozás"
-
-msgid "MAC Address"
-msgstr "MAC cím"
-
-msgid "MAC Device Info Overrides"
-msgstr "MAC eszköz információ felülbírálások"
-
-msgid "MAC Device Override"
-msgstr "MAC eszköz felülbírálása"
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-"A rendszer és IEEE adatbázisok felülbíráláshoz használt MAC cím tartomány és "
-"információ"
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr ""
-"A kérések küldése közötti szünet időtartama ezredmásodpercben "
-"(alapértelmezés: 100)"
-
-msgid "Model"
-msgstr "Típus"
-
-msgid "Name"
-msgstr "Név"
-
-msgid "Network Device Scan"
-msgstr "Hálózati eszközök keresése"
-
-msgid "Network Device Scanning Configuration"
-msgstr "Hálózati eszközök keresési beállításai"
-
-msgid "Networks to scan for devices"
-msgstr "Eszközök keresése ezekben a hálózatokban"
-
-msgid "Networks to scan for supported devices"
-msgstr "Támogatott eszközök keresése ezekben a hálózatokban"
-
-msgid "No SIP devices"
-msgstr "Nem találhatóak SIP eszközök"
-
-msgid "No devices detected"
-msgstr "Nem található semmilyen eszköz"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "Az elküldött kérések száma (alapértelmezés: 1)"
-
-msgid "OUI Owner"
-msgstr "OUI tulajdonos"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-"A meghatározott tartományba tartozó MAC címeknél felülbírálja a 'MAC to "
-"Device Info' szkript (mac-to-devinfo) által visszadott információt."
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr "Keresés (ez eltarthat néhány percig)"
-
-msgid "Phone Information"
-msgstr "Telefon információ"
-
-msgid "Phone Scan"
-msgstr "Telefon keresés"
-
-msgid "Phone Scanning Configuration"
-msgstr "Telefon keresési beállítások"
-
-msgid "Phones"
-msgstr "Telefonok"
-
-msgid "Ports"
-msgstr "Portok"
-
-msgid "Raw"
-msgstr "Nyers"
-
-msgid "Repeat Count"
-msgstr "Ismétlés száma"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr "Keresés megismétlése (ez eltarthat néhány percig)"
-
-msgid "SIP Device Information"
-msgstr "SIP eszköz információ"
-
-msgid "SIP Device Scan"
-msgstr "SIP eszközök keresése"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "SIP eszköz keresés beállításai"
-
-msgid "SIP Devices on Network"
-msgstr "SIP eszközök a hálózatban"
-
-msgid "SIP devices discovered for"
-msgstr "Megtalált SIP eszközök ehhez:"
-
-msgid "Scan for devices on specified networks."
-msgstr "Eszközök keresése a megadott hálózatokban."
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr "Támogatott SIP eszközök keresése a megadott hálózatokban."
-
-msgid "Scanning Configuration"
-msgstr "Keresési beállítások"
-
-msgid "Scans for devices on specified networks."
-msgstr "Scans for devices on specified networks."
-
-msgid "Sleep Between Requests"
-msgstr "Kérések közötti szünet"
-
-msgid "Subnet"
-msgstr "Alhálózat"
-
-msgid "This section contains no values yet"
-msgstr "Ez a rész még nem tartlamaz értékeket"
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "Várakozási idő a válasz beérkezésére (alapértelemezés: 10)"
-
-msgid "Timeout"
-msgstr "Várakozási idő"
-
-msgid "Use Configuration"
-msgstr "Beállítás használata"
-
-msgid "Vendor"
-msgstr "Gyártó"
-
-msgid "check other networks"
-msgstr "egyéb hálózatok ellenőrzése"
diff --git a/applications/luci-app-diag-devinfo/po/it/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/it/diag_devinfo.po
deleted file mode 100644 (file)
index 767245c..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-02-09 20:40+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"
-
-msgid "Actions"
-msgstr "Azioni"
-
-msgid "Add"
-msgstr "Aggiungi"
-
-msgid "Beginning of MAC address range"
-msgstr "Inizio del campo di indirizzi MAC"
-
-msgid "Config Phone Scan"
-msgstr "Configura Scansione Telefono"
-
-msgid "Configure"
-msgstr "Configura"
-
-msgid "Configure Scans"
-msgstr "Configura Scansioni"
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-"Configurare la scansione per i dispositivi su reti specifiche. Diminuendo il "
-"'Timeout', 'Numero Ripetizioni' e/o ''Pausa tra le Richieste'  è possibile "
-"aumentare la velocità delle scansioni, ma può anche non riuscire a trovare "
-"alcuni dispositivo."
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-"Configurare la scansione dei dispositivi SIP supportati  su reti specifiche. "
-"Diminuendo il 'Timeout', 'Numero ripetizioni' e / o ''Pausa tra le "
-"richieste' è possibile aumentare la velocità delle scansioni, ma può anche "
-"non riuscire a trovare alcuni dispositivo."
-
-msgid "Delete"
-msgstr "Elimina"
-
-msgid "Device Scan Config"
-msgstr "Configura Scansione Periferica"
-
-msgid "Device Type"
-msgstr "Tipo di Periferica"
-
-msgid "Devices discovered for"
-msgstr "Devices discovered for"
-
-msgid "Devices on Network"
-msgstr "Periferiche in Rete"
-
-msgid "Edit"
-msgstr "Modifica"
-
-msgid "Enable"
-msgstr "Attiva"
-
-msgid "End of MAC address range"
-msgstr "Fine intervallo dell' indirizzo MAC"
-
-msgid "Go to relevant configuration page"
-msgstr "Vai alla pagina di configurazione rilevanti"
-
-msgid "IP Address"
-msgstr "Indirizzo IP"
-
-msgid "Interface"
-msgstr "Interfaccia"
-
-msgid "Invalid"
-msgstr "Non valido"
-
-msgid "Link to Device"
-msgstr "Collegamento alla Periferica"
-
-msgid "MAC Address"
-msgstr "Indirizzo MAC"
-
-msgid "MAC Device Info Overrides"
-msgstr "Informazioni su Sostituzioni della Periferica MAC"
-
-msgid "MAC Device Override"
-msgstr "Sostituzione del MAC del dispositivo"
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-"La gamma e le informazioni MAC  utilizzate per eseguire la sostituzione dei "
-"database di sistema e IEEE"
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "Millisecondi di attesa tra le richieste (predefinito: 100)"
-
-msgid "Model"
-msgstr "Modello"
-
-msgid "Name"
-msgstr "Nome"
-
-msgid "Network Device Scan"
-msgstr "Dispositivo Scansione della Rete"
-
-msgid "Network Device Scanning Configuration"
-msgstr "Configurazione Dispositivo di Scansione della Rete"
-
-msgid "Networks to scan for devices"
-msgstr "Reti da scandire per i dispositivi"
-
-msgid "Networks to scan for supported devices"
-msgstr "Reti da scandire per i dispositivi supportati"
-
-msgid "No SIP devices"
-msgstr "Nessun dispositivo SIP"
-
-msgid "No devices detected"
-msgstr "Nessun dispositivo rilevato"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "Numero di volte delle richieste da inviare (predefinito: 1)"
-
-msgid "OUI Owner"
-msgstr "Proprietario OUI"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-"Ignora le informazioni restituite dal MAC su Script per le Informazioni sul "
-"dispositivo (mac-in-devinfo) per un determinato intervallo di indirizzi MAC"
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr "Rilevamento (richiede alcuni minuti)"
-
-msgid "Phone Information"
-msgstr "Informazione Telefono"
-
-msgid "Phone Scan"
-msgstr "Rilevamento Telefono"
-
-msgid "Phone Scanning Configuration"
-msgstr "Configurazione Rilevamento Telefono"
-
-msgid "Phones"
-msgstr "Telefoni"
-
-msgid "Ports"
-msgstr "Porte"
-
-msgid "Raw"
-msgstr "Raw"
-
-msgid "Repeat Count"
-msgstr "Ripetizione Conteggio"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr "Ripetizione Rilevamento (richiede alcuni minuti)"
-
-msgid "SIP Device Information"
-msgstr "Informazioni Periferica SIP"
-
-msgid "SIP Device Scan"
-msgstr "Rilevamento Periferica SIP"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "Configurazione Rilevamento Periferica SIP"
-
-msgid "SIP Devices on Network"
-msgstr "Periferiche SIP in Rete"
-
-msgid "SIP devices discovered for"
-msgstr "Periferiche SIP rilevate per"
-
-msgid "Scan for devices on specified networks."
-msgstr "Rilevamento per periferiche su reti specificate."
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr "Rilevamento per periferiche SIP supportate sulle reti specificate."
-
-msgid "Scanning Configuration"
-msgstr "Configurazione Rilevamento"
-
-msgid "Scans for devices on specified networks."
-msgstr "Rilevamento periferiche sulle reti specificate."
-
-msgid "Sleep Between Requests"
-msgstr "Attendi tra le richieste"
-
-msgid "Subnet"
-msgstr "Sottorete"
-
-msgid "This section contains no values yet"
-msgstr "Questa sezione non contiene ancora valori"
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "Tempo di attesa per le risposte in secondi (predefinito: 10)"
-
-msgid "Timeout"
-msgstr "Timeout"
-
-msgid "Use Configuration"
-msgstr "Usa Configurazione"
-
-msgid "Vendor"
-msgstr "Produttore"
-
-msgid "check other networks"
-msgstr "Controlla altre reti"
diff --git a/applications/luci-app-diag-devinfo/po/ja/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/ja/diag_devinfo.po
deleted file mode 100644 (file)
index 1ef3dad..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-04-19 07:59+0200\n"
-"Last-Translator: Kentaro <kentaro.matsuyama@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: Pootle 2.0.4\n"
-
-msgid "Actions"
-msgstr ""
-
-msgid "Add"
-msgstr "追加"
-
-msgid "Beginning of MAC address range"
-msgstr ""
-
-msgid "Config Phone Scan"
-msgstr ""
-
-msgid "Configure"
-msgstr "設定"
-
-msgid "Configure Scans"
-msgstr ""
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr "削除"
-
-msgid "Device Scan Config"
-msgstr "デバイススキャン設定"
-
-msgid "Device Type"
-msgstr ""
-
-msgid "Devices discovered for"
-msgstr ""
-
-msgid "Devices on Network"
-msgstr "ネットワーク上のデバイス"
-
-msgid "Edit"
-msgstr "編集"
-
-msgid "Enable"
-msgstr "有効"
-
-msgid "End of MAC address range"
-msgstr ""
-
-msgid "Go to relevant configuration page"
-msgstr ""
-
-msgid "IP Address"
-msgstr "IPアドレス"
-
-msgid "Interface"
-msgstr "インターフェース"
-
-msgid "Invalid"
-msgstr ""
-
-msgid "Link to Device"
-msgstr ""
-
-msgid "MAC Address"
-msgstr "MACアドレス"
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr ""
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "リクエスト間のスリープ時間 (単位:ミリ秒, 標準設定:100)"
-
-msgid "Model"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Network Device Scan"
-msgstr ""
-
-msgid "Network Device Scanning Configuration"
-msgstr ""
-
-msgid "Networks to scan for devices"
-msgstr ""
-
-msgid "Networks to scan for supported devices"
-msgstr ""
-
-msgid "No SIP devices"
-msgstr "SIPデバイスは見つかりませんでした。"
-
-msgid "No devices detected"
-msgstr "デバイスは検出されませんでした。"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "リクエスト送信回数 (標準設定:1)"
-
-msgid "OUI Owner"
-msgstr ""
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "Phone Information"
-msgstr ""
-
-msgid "Phone Scan"
-msgstr ""
-
-msgid "Phone Scanning Configuration"
-msgstr ""
-
-msgid "Phones"
-msgstr "電話"
-
-msgid "Ports"
-msgstr ""
-
-msgid "Raw"
-msgstr ""
-
-msgid "Repeat Count"
-msgstr "リピート回数"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "SIP Device Information"
-msgstr "SIPデバイス情報"
-
-msgid "SIP Device Scan"
-msgstr "SIPデバイスのスキャン"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "SIPデバイススキャン設定"
-
-msgid "SIP Devices on Network"
-msgstr "ネットワーク上のSIPデバイス"
-
-msgid "SIP devices discovered for"
-msgstr ""
-
-msgid "Scan for devices on specified networks."
-msgstr ""
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
-
-msgid "Scanning Configuration"
-msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
-
-msgid "Sleep Between Requests"
-msgstr "リクエスト間のスリープ時間"
-
-msgid "Subnet"
-msgstr "サブネット"
-
-msgid "This section contains no values yet"
-msgstr ""
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "応答待ち時間 (単位:秒, 標準設定:10)"
-
-msgid "Timeout"
-msgstr "タイムアウト"
-
-msgid "Use Configuration"
-msgstr ""
-
-msgid "Vendor"
-msgstr ""
-
-msgid "check other networks"
-msgstr ""
diff --git a/applications/luci-app-diag-devinfo/po/ms/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/ms/diag_devinfo.po
deleted file mode 100644 (file)
index 27d2b46..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-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"
-
-msgid "Actions"
-msgstr ""
-
-msgid "Add"
-msgstr ""
-
-msgid "Beginning of MAC address range"
-msgstr ""
-
-msgid "Config Phone Scan"
-msgstr ""
-
-msgid "Configure"
-msgstr ""
-
-msgid "Configure Scans"
-msgstr ""
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr ""
-
-msgid "Device Scan Config"
-msgstr ""
-
-msgid "Device Type"
-msgstr ""
-
-msgid "Devices discovered for"
-msgstr "Devices discovered for"
-
-msgid "Devices on Network"
-msgstr ""
-
-msgid "Edit"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "End of MAC address range"
-msgstr ""
-
-msgid "Go to relevant configuration page"
-msgstr ""
-
-msgid "IP Address"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Invalid"
-msgstr ""
-
-msgid "Link to Device"
-msgstr ""
-
-msgid "MAC Address"
-msgstr ""
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr ""
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr ""
-
-msgid "Model"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Network Device Scan"
-msgstr ""
-
-msgid "Network Device Scanning Configuration"
-msgstr ""
-
-msgid "Networks to scan for devices"
-msgstr ""
-
-msgid "Networks to scan for supported devices"
-msgstr ""
-
-msgid "No SIP devices"
-msgstr ""
-
-msgid "No devices detected"
-msgstr ""
-
-msgid "Number of times to send requests (default 1)"
-msgstr ""
-
-msgid "OUI Owner"
-msgstr ""
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "Phone Information"
-msgstr ""
-
-msgid "Phone Scan"
-msgstr ""
-
-msgid "Phone Scanning Configuration"
-msgstr ""
-
-msgid "Phones"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Raw"
-msgstr ""
-
-msgid "Repeat Count"
-msgstr ""
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "SIP Device Information"
-msgstr ""
-
-msgid "SIP Device Scan"
-msgstr ""
-
-msgid "SIP Device Scanning Configuration"
-msgstr ""
-
-msgid "SIP Devices on Network"
-msgstr ""
-
-msgid "SIP devices discovered for"
-msgstr ""
-
-msgid "Scan for devices on specified networks."
-msgstr ""
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
-
-msgid "Scanning Configuration"
-msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
-
-msgid "Sleep Between Requests"
-msgstr ""
-
-msgid "Subnet"
-msgstr ""
-
-msgid "This section contains no values yet"
-msgstr ""
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr ""
-
-msgid "Timeout"
-msgstr ""
-
-msgid "Use Configuration"
-msgstr ""
-
-msgid "Vendor"
-msgstr ""
-
-msgid "check other networks"
-msgstr ""
diff --git a/applications/luci-app-diag-devinfo/po/no/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/no/diag_devinfo.po
deleted file mode 100644 (file)
index 4ada96b..0000000
+++ /dev/null
@@ -1,213 +0,0 @@
-msgid ""
-msgstr ""
-"Last-Translator: Lars Hardy <lars.hardy@gmail.com>\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-msgid "Actions"
-msgstr "Handlinger"
-
-msgid "Add"
-msgstr "Legg til"
-
-msgid "Beginning of MAC address range"
-msgstr "Begynnelsen av MAC adresseområde"
-
-msgid "Config Phone Scan"
-msgstr "Konfigurer Telefon Skanning"
-
-msgid "Configure"
-msgstr "Konfigurer"
-
-msgid "Configure Scans"
-msgstr "Konfigurer Skanning"
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-"Konfigurer skanning etter enheter på angitte nettverk. Ved å minske verdiene "
-"til 'Tidsavbrudd', 'Gjentagelser' og/eller Tid mellom forespørsler blir "
-"skanningen utført raskere, men det kan også medføre at noen enheter ikke "
-"blir funnet."
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-"Konfigurer skanning etter støttede SIP enheter på angitte nettverk. Ved å "
-"minske verdiene til 'Tidsavbrudd', 'Gjentagelser' og/eller tid mellom "
-"forespørsler blir skanningen utført raskere, men det kan også medføre at "
-"noen enheter ikke blir funnet."
-
-msgid "Delete"
-msgstr "Slett"
-
-msgid "Device Scan Config"
-msgstr "Enhets skann konfigurasjon"
-
-msgid "Device Type"
-msgstr "Enhets type"
-
-msgid "Devices discovered for"
-msgstr "Enheter oppdaget for"
-
-msgid "Devices on Network"
-msgstr "Enheter i Nettverket"
-
-msgid "Edit"
-msgstr "Rediger"
-
-msgid "Enable"
-msgstr "Aktiver"
-
-msgid "End of MAC address range"
-msgstr "Slutten av MAC område"
-
-msgid "Go to relevant configuration page"
-msgstr "Gå til relevant konfigurasjons side"
-
-msgid "IP Address"
-msgstr "IP Adresse"
-
-msgid "Interface"
-msgstr "Grensesnitt"
-
-msgid "Invalid"
-msgstr "Ugyldig"
-
-msgid "Link to Device"
-msgstr "Link til Enhet"
-
-msgid "MAC Address"
-msgstr "MAC Adresse"
-
-msgid "MAC Device Info Overrides"
-msgstr "MAC Enhets Info Overstyring"
-
-msgid "MAC Device Override"
-msgstr "MAC Enhets Overstyring"
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-"MAC område og informasjon brukt til å overstyre system og IEEE databaser"
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "Antall millisekunder ventetid mellom forespørsler (standard 100)"
-
-msgid "Model"
-msgstr "Modell"
-
-msgid "Name"
-msgstr "Navn"
-
-msgid "Network Device Scan"
-msgstr "Nettverks Enhets Skanning"
-
-msgid "Network Device Scanning Configuration"
-msgstr "Nettverks Enhets Skanning Konfigurasjon"
-
-msgid "Networks to scan for devices"
-msgstr "Nettverk som blir skannet"
-
-msgid "Networks to scan for supported devices"
-msgstr "Nettverk som blir skannet for støttede enheter"
-
-msgid "No SIP devices"
-msgstr "Ingen SIP enheter"
-
-msgid "No devices detected"
-msgstr "Ingen enheter oppdaget"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "Antall ganger å sende forespørsel (standard 1)"
-
-msgid "OUI Owner"
-msgstr "OUI Eier"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-"Overstyr informasjonen hentet fra MAC til enhets info skriptet (mac-til-"
-"devinfo) for et gitt område med MAC adresser"
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr "Utfør Skanning (dette kan ta noen minutter)"
-
-msgid "Phone Information"
-msgstr "Telefon Informasjon"
-
-msgid "Phone Scan"
-msgstr "Telefon skanning"
-
-msgid "Phone Scanning Configuration"
-msgstr "Telefon skanning konfigurasjon"
-
-msgid "Phones"
-msgstr "Telefoner"
-
-msgid "Ports"
-msgstr "Porter"
-
-msgid "Raw"
-msgstr "Rå"
-
-msgid "Repeat Count"
-msgstr "Gjentagelser"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr "Gjennta Skanning (dette kan ta noen minutter)"
-
-msgid "SIP Device Information"
-msgstr "SIP Enhets Informasjon"
-
-msgid "SIP Device Scan"
-msgstr "SIP Enhets Skanning"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "SIP Enhets Skann Konfigurasjon"
-
-msgid "SIP Devices on Network"
-msgstr "SIP Enheter i Nettverket"
-
-msgid "SIP devices discovered for"
-msgstr "SIP enheter oppdaget på"
-
-msgid "Scan for devices on specified networks."
-msgstr "Skann etter enheter på spesifiserte nettverk"
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr "Skann etter SIP enheter på spesifiserte nettverk"
-
-msgid "Scanning Configuration"
-msgstr "Skanning Konfigurasjon"
-
-msgid "Scans for devices on specified networks."
-msgstr "Nettverks Skanning Informasjon"
-
-msgid "Sleep Between Requests"
-msgstr "Tid mellom forespørsler"
-
-msgid "Subnet"
-msgstr "Subnett"
-
-msgid "This section contains no values yet"
-msgstr "Denne seksjonen inneholder ennå ingen verdier"
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "Tid for å vente på svar i sekunder (standard 10)"
-
-msgid "Timeout"
-msgstr "Tidsavbrudd"
-
-msgid "Use Configuration"
-msgstr "Bruk Konfigurasjonen"
-
-msgid "Vendor"
-msgstr "Leverandør"
-
-msgid "check other networks"
-msgstr "skjekk andre nettverk"
diff --git a/applications/luci-app-diag-devinfo/po/pl/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/pl/diag_devinfo.po
deleted file mode 100644 (file)
index 32ccdce..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-10-11 13:44+0200\n"
-"Last-Translator: mesiu84 <kmesek84@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"
-
-msgid "Actions"
-msgstr "Akcje"
-
-msgid "Add"
-msgstr "Dodaj"
-
-msgid "Beginning of MAC address range"
-msgstr "Początek zakresu MAC adresów"
-
-msgid "Config Phone Scan"
-msgstr "Konfiguruj skanowanie telefonów"
-
-msgid "Configure"
-msgstr "Konfiguruj"
-
-msgid "Configure Scans"
-msgstr "Konfiguruj skany"
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-"Konfiguruj skanowanie dla urządzeń w wybranych sieciach. Zmniejszanie "
-"\"Limitu czasu\", \"Liczby powtórzeń\" i/lub \"Oczekiwania między żądaniami"
-"\" może przyspieszyć skany, ale może też uniemożliwić wykrycie niektórych "
-"urządzeń."
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-"Konfiguruj skanowanie dla wspieranych urządzeń SIP w wybranych sieciach. "
-"Zmniejszanie \"Limitu czasu\", \"Liczby powtórzeń\" i/lub \"Oczekiwania "
-"między żądaniami\" może przyspieszyć skany, ale może też uniemożliwić "
-"wykrycie niektórych urządzeń."
-
-msgid "Delete"
-msgstr "Usuń"
-
-msgid "Device Scan Config"
-msgstr "Konfiguruj skanowanie urządzeń"
-
-msgid "Device Type"
-msgstr "Typ urządzenia"
-
-msgid "Devices discovered for"
-msgstr "Devices discovered for"
-
-msgid "Devices on Network"
-msgstr "Urządzenia w sieci"
-
-msgid "Edit"
-msgstr "Edytuj"
-
-msgid "Enable"
-msgstr "Włącz"
-
-msgid "End of MAC address range"
-msgstr "Koniec zakresu adresów MAC"
-
-msgid "Go to relevant configuration page"
-msgstr "Idź do stosownej strony konfiguracyjnej"
-
-msgid "IP Address"
-msgstr "Adres IP"
-
-msgid "Interface"
-msgstr "Interfejs"
-
-msgid "Invalid"
-msgstr "Nieprawidłowe"
-
-msgid "Link to Device"
-msgstr "Połączenie do urządzenia"
-
-msgid "MAC Address"
-msgstr "Adres MAC"
-
-msgid "MAC Device Info Overrides"
-msgstr "Nadpisywanie informacji o adresie MAC urządzenia"
-
-msgid "MAC Device Override"
-msgstr "Pomijanie adresu MAC urządzenia"
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-"Zakres adresów MAC i informacje użyte do zastąpienia baz danych systemowych "
-"i IEEE"
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "Ilośś milisekund pauzy pomiędzy zapytaniami (domyślnie 100)"
-
-msgid "Model"
-msgstr "Model"
-
-msgid "Name"
-msgstr "Nazwa"
-
-msgid "Network Device Scan"
-msgstr "Skan urządzeń w sieci"
-
-msgid "Network Device Scanning Configuration"
-msgstr "Ustawienia skanowania urządzeń w sieci"
-
-msgid "Networks to scan for devices"
-msgstr "Sieci do skanowania w poszukiwaniu urządzeń"
-
-msgid "Networks to scan for supported devices"
-msgstr "Sieci do skanowania w poszukiwaniu wspieranych urządzeń"
-
-msgid "No SIP devices"
-msgstr "Brak urządzeń SIP"
-
-msgid "No devices detected"
-msgstr "Nie wykryto urządzeń"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "Ilość powtórzeń wysłania żądania (domyślnie 1)"
-
-msgid "OUI Owner"
-msgstr "Właściciel OUI"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-"Zastąp informacje zwracanych przez skrypt MAC to Device Info Script (MAC-to-"
-"devinfo) dla określonego zakresu adresów MAC"
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr "Wykonaj skany (to może potrwać kilka minut)"
-
-msgid "Phone Information"
-msgstr "Informacje o telefonie"
-
-msgid "Phone Scan"
-msgstr "Skanowanie telefonów"
-
-msgid "Phone Scanning Configuration"
-msgstr "Konfiguracja skanowania telefonu"
-
-msgid "Phones"
-msgstr "Telefony"
-
-msgid "Ports"
-msgstr "Porty"
-
-msgid "Raw"
-msgstr "Surowe"
-
-msgid "Repeat Count"
-msgstr "Ilość powtórzeń"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr "Powtórz skany (to może potrwać kilka minut)"
-
-msgid "SIP Device Information"
-msgstr "Informacje o urządzeniu SIP"
-
-msgid "SIP Device Scan"
-msgstr "Skanowanie urządzeń SIP"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "Konfiguracja skanowania urządzeń SIP"
-
-msgid "SIP Devices on Network"
-msgstr "Urządzenia SIP w sieci"
-
-msgid "SIP devices discovered for"
-msgstr "Urządzenia SIP znalezione dla"
-
-msgid "Scan for devices on specified networks."
-msgstr "Skanuj w poszukiwaniu urządzeń w wybranych sieciach."
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr "Skanuj w poszukiwaniu wspieranych urządzeń SIP w wybranych sieciach."
-
-msgid "Scanning Configuration"
-msgstr "Ustawienia skanowania"
-
-msgid "Scans for devices on specified networks."
-msgstr "Scans for devices on specified networks."
-
-msgid "Sleep Between Requests"
-msgstr "Pauza pomiędzy zapytaniami"
-
-msgid "Subnet"
-msgstr "Podsieć"
-
-msgid "This section contains no values yet"
-msgstr "Ta sekcja nie zawiera jeszcze wartości"
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "Czas oczekiwania na odpowiedź w sekundach (domyślnie 10)"
-
-msgid "Timeout"
-msgstr "Czas oczekiwania"
-
-msgid "Use Configuration"
-msgstr "Użyj konfiguracji"
-
-msgid "Vendor"
-msgstr "Sprzedawca"
-
-msgid "check other networks"
-msgstr "sprawdź inne sieci"
diff --git a/applications/luci-app-diag-devinfo/po/pt-br/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/pt-br/diag_devinfo.po
deleted file mode 100644 (file)
index 53face0..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-10-17 23:51+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
-"Language-Team: none\n"
-"Language: pt_BR\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
-
-msgid "Actions"
-msgstr "Ações"
-
-msgid "Add"
-msgstr "Adicionar"
-
-msgid "Beginning of MAC address range"
-msgstr "Começo da faixa de endereços MAC"
-
-msgid "Config Phone Scan"
-msgstr "Configurar a Busca por Telefone"
-
-msgid "Configure"
-msgstr "Configurar"
-
-msgid "Configure Scans"
-msgstr "Configurar Scans"
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-"Configura busca por dispositivos em redes específicas. Ao se reduzir "
-"'Timeout', 'Repeat Count' e/ou 'Sleep Between Requests' pode-se agilizar "
-"buscas, mas também pode não encontrar alguns dispositivos."
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-"Configura busca por dispositivos com suporte a SIP em redes específicas. Ao "
-"se reduzir 'Timeout', 'Repeat Count' e/ou 'Sleep Between Requests' pode-se "
-"agilizar buscas, mas também pode não encontrar alguns dispositivos."
-
-msgid "Delete"
-msgstr "Apagar"
-
-msgid "Device Scan Config"
-msgstr "Configurar a Busca por Dispositivos"
-
-msgid "Device Type"
-msgstr "Tipo de dispositivo"
-
-msgid "Devices discovered for"
-msgstr "Dispositivos descobertos para"
-
-msgid "Devices on Network"
-msgstr "Dispositivos na Rede"
-
-msgid "Edit"
-msgstr "Editar"
-
-msgid "Enable"
-msgstr "Habilitar"
-
-msgid "End of MAC address range"
-msgstr "Final da faixa de endereços MAC"
-
-msgid "Go to relevant configuration page"
-msgstr "Vá para página de configuração relevante"
-
-msgid "IP Address"
-msgstr "Endereço IP"
-
-msgid "Interface"
-msgstr "Interface"
-
-msgid "Invalid"
-msgstr "Inválido"
-
-# Link like <a> or network link?
-msgid "Link to Device"
-msgstr "Ligar ao Dispositivo"
-
-msgid "MAC Address"
-msgstr "Endereço MAC"
-
-msgid "MAC Device Info Overrides"
-msgstr "Sobrescrição da informação do dispositivo MAC"
-
-msgid "MAC Device Override"
-msgstr "Sobrescreve o Dispositivo MAC"
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-"Faixa MAC e informação usada para sobrescrever os bancos de dados do sistema "
-"e IEEE"
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "Milissegundos para esperar entre requisições (padrão 100)"
-
-msgid "Model"
-msgstr "Modelo"
-
-msgid "Name"
-msgstr "Nome"
-
-msgid "Network Device Scan"
-msgstr "Busca por dispositivo de rede"
-
-msgid "Network Device Scanning Configuration"
-msgstr "Configuração de busca por dispositivo de rede"
-
-msgid "Networks to scan for devices"
-msgstr "Redes a serem pesquisadas por dispositivos"
-
-msgid "Networks to scan for supported devices"
-msgstr "Redes a serem pesquisadas por dispositivos suportados"
-
-msgid "No SIP devices"
-msgstr "Nenhum dispositivo SIP"
-
-msgid "No devices detected"
-msgstr "Nenhum dispositivo detectado"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "Número de vezes para enviar requisições (padrão 1 )"
-
-msgid "OUI Owner"
-msgstr "Dono da OUI"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-"Sobrescrever a informação retornada pelo MAC para o Script de Informação do "
-"Dispositivo (mac-to_devinfo) para uma faixa especificada de Endereços MAC"
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr "Realiza buscas (pode levar alguns minutos)"
-
-msgid "Phone Information"
-msgstr "Informação do Telefone"
-
-msgid "Phone Scan"
-msgstr "Busca por Telefone"
-
-msgid "Phone Scanning Configuration"
-msgstr "Configuração da Busca por Telefone"
-
-msgid "Phones"
-msgstr "Telefones"
-
-msgid "Ports"
-msgstr "Portas"
-
-msgid "Raw"
-msgstr "Bruto"
-
-msgid "Repeat Count"
-msgstr "Quantidade de Repetições"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr "Buscas Repetidas (pode levar alguns minutos)"
-
-msgid "SIP Device Information"
-msgstr "Informação de Dispositivo SIP"
-
-msgid "SIP Device Scan"
-msgstr "Busca por Dispositivos SIP"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "Configuração da Busca por Dispositivos SIP"
-
-msgid "SIP Devices on Network"
-msgstr "Dispositivos SIP na Rede"
-
-msgid "SIP devices discovered for"
-msgstr "Dispositivos SIP descobertos para"
-
-msgid "Scan for devices on specified networks."
-msgstr "Busca por dispositivos nas redes especificadas."
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr "Busca por dispositivos com suporte a SIP em redes especificadas."
-
-msgid "Scanning Configuration"
-msgstr "Configuração de busca"
-
-msgid "Scans for devices on specified networks."
-msgstr "Busca por dispositivos nas redes especificadas."
-
-msgid "Sleep Between Requests"
-msgstr "Espera Entre Requisições"
-
-msgid "Subnet"
-msgstr "Subrede"
-
-msgid "This section contains no values yet"
-msgstr "Esta seção contém nenhum valor ainda"
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "Tempo para esperar por respostas em segundos (padrão 10)"
-
-msgid "Timeout"
-msgstr "Estouro de tempo"
-
-msgid "Use Configuration"
-msgstr "Usar configuração"
-
-msgid "Vendor"
-msgstr "Fabricante"
-
-msgid "check other networks"
-msgstr "verifique outras redes"
diff --git a/applications/luci-app-diag-devinfo/po/pt/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/pt/diag_devinfo.po
deleted file mode 100644 (file)
index afe4885..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-06-03 12:23+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"
-
-msgid "Actions"
-msgstr "Acções"
-
-msgid "Add"
-msgstr "Adicionar"
-
-msgid "Beginning of MAC address range"
-msgstr "Inicio da gama de endereços MAC"
-
-msgid "Config Phone Scan"
-msgstr ""
-
-msgid "Configure"
-msgstr "Configurar"
-
-msgid "Configure Scans"
-msgstr ""
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr "Apagar"
-
-msgid "Device Scan Config"
-msgstr ""
-
-msgid "Device Type"
-msgstr "Tipo de Dispositivo"
-
-msgid "Devices discovered for"
-msgstr "Dispositivos descobertos para"
-
-msgid "Devices on Network"
-msgstr "Dispositivos na Rede"
-
-msgid "Edit"
-msgstr "Editar"
-
-msgid "Enable"
-msgstr "Ativar"
-
-msgid "End of MAC address range"
-msgstr "Fim da gama de endereços MAC"
-
-msgid "Go to relevant configuration page"
-msgstr ""
-
-msgid "IP Address"
-msgstr "Endereço IP"
-
-msgid "Interface"
-msgstr "Interface"
-
-msgid "Invalid"
-msgstr "Inválido"
-
-msgid "Link to Device"
-msgstr ""
-
-msgid "MAC Address"
-msgstr "Endereço MAC"
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr ""
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr ""
-
-msgid "Model"
-msgstr "Modelo"
-
-msgid "Name"
-msgstr "Nome"
-
-msgid "Network Device Scan"
-msgstr ""
-
-msgid "Network Device Scanning Configuration"
-msgstr ""
-
-msgid "Networks to scan for devices"
-msgstr ""
-
-msgid "Networks to scan for supported devices"
-msgstr ""
-
-msgid "No SIP devices"
-msgstr "Não há dispositivos SIP"
-
-msgid "No devices detected"
-msgstr "Não foram detetados dispositivos"
-
-msgid "Number of times to send requests (default 1)"
-msgstr ""
-
-msgid "OUI Owner"
-msgstr "Dono OUI"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "Phone Information"
-msgstr "Informação do Telefone"
-
-msgid "Phone Scan"
-msgstr ""
-
-msgid "Phone Scanning Configuration"
-msgstr ""
-
-msgid "Phones"
-msgstr ""
-
-msgid "Ports"
-msgstr "Portas"
-
-msgid "Raw"
-msgstr ""
-
-msgid "Repeat Count"
-msgstr "Repetir Contagem"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "SIP Device Information"
-msgstr ""
-
-msgid "SIP Device Scan"
-msgstr ""
-
-msgid "SIP Device Scanning Configuration"
-msgstr ""
-
-msgid "SIP Devices on Network"
-msgstr ""
-
-msgid "SIP devices discovered for"
-msgstr ""
-
-msgid "Scan for devices on specified networks."
-msgstr ""
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
-
-msgid "Scanning Configuration"
-msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
-
-msgid "Sleep Between Requests"
-msgstr ""
-
-msgid "Subnet"
-msgstr "Sub-rede"
-
-msgid "This section contains no values yet"
-msgstr ""
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr ""
-
-msgid "Timeout"
-msgstr ""
-
-msgid "Use Configuration"
-msgstr ""
-
-msgid "Vendor"
-msgstr ""
-
-msgid "check other networks"
-msgstr "verificar outras redes"
diff --git a/applications/luci-app-diag-devinfo/po/ro/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/ro/diag_devinfo.po
deleted file mode 100644 (file)
index eefbd5e..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-07-09 14:27+0200\n"
-"Last-Translator: lex404 <alex.qwq@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"
-
-msgid "Actions"
-msgstr "Acțiuni"
-
-msgid "Add"
-msgstr "Adauga"
-
-msgid "Beginning of MAC address range"
-msgstr ""
-
-msgid "Config Phone Scan"
-msgstr "Configureaza scanarea telefonului"
-
-msgid "Configure"
-msgstr "Configureaza"
-
-msgid "Configure Scans"
-msgstr "Configurează scanări"
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr "Sterge"
-
-msgid "Device Scan Config"
-msgstr "Configureaza scanarea dispozitivului"
-
-msgid "Device Type"
-msgstr ""
-
-msgid "Devices discovered for"
-msgstr "Dispozitive descoperite pentru"
-
-msgid "Devices on Network"
-msgstr "Dispozitive in retea"
-
-msgid "Edit"
-msgstr "Editeaza"
-
-msgid "Enable"
-msgstr "Activeaza"
-
-msgid "End of MAC address range"
-msgstr ""
-
-msgid "Go to relevant configuration page"
-msgstr ""
-
-msgid "IP Address"
-msgstr "Adresa IP"
-
-msgid "Interface"
-msgstr "Interfata"
-
-msgid "Invalid"
-msgstr "Invalid"
-
-msgid "Link to Device"
-msgstr "Legatura spre dispozitiv"
-
-msgid "MAC Address"
-msgstr "Adresa MAC"
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr ""
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "Milisecunde de asteptare intre cereri (100 implicit)"
-
-msgid "Model"
-msgstr ""
-
-msgid "Name"
-msgstr "Nume"
-
-msgid "Network Device Scan"
-msgstr ""
-
-msgid "Network Device Scanning Configuration"
-msgstr ""
-
-msgid "Networks to scan for devices"
-msgstr ""
-
-msgid "Networks to scan for supported devices"
-msgstr ""
-
-msgid "No SIP devices"
-msgstr "Nici un device SIP"
-
-msgid "No devices detected"
-msgstr "Nici un dispozitiv detectat"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "Numarul de trimiteri cereri (1 implicit)"
-
-msgid "OUI Owner"
-msgstr ""
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "Phone Information"
-msgstr "Informatii despre telefon"
-
-msgid "Phone Scan"
-msgstr "Scanare telefon"
-
-msgid "Phone Scanning Configuration"
-msgstr ""
-
-msgid "Phones"
-msgstr "Telefoane"
-
-msgid "Ports"
-msgstr ""
-
-msgid "Raw"
-msgstr ""
-
-msgid "Repeat Count"
-msgstr "Numarul de repetitii"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "SIP Device Information"
-msgstr "Informatii despre dispozitivul SIP"
-
-msgid "SIP Device Scan"
-msgstr "Scanare dispozitiv SIP"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "Configurarea scanarii dispozitivului SIP"
-
-msgid "SIP Devices on Network"
-msgstr "Dispozitive SIP in retea"
-
-msgid "SIP devices discovered for"
-msgstr ""
-
-msgid "Scan for devices on specified networks."
-msgstr ""
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
-
-msgid "Scanning Configuration"
-msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
-
-msgid "Sleep Between Requests"
-msgstr "Pauza dintre cereri"
-
-msgid "Subnet"
-msgstr ""
-
-msgid "This section contains no values yet"
-msgstr ""
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "Timpul de asteptare pentru raspunsuri in secunde (10 implicit)"
-
-msgid "Timeout"
-msgstr ""
-
-msgid "Use Configuration"
-msgstr ""
-
-msgid "Vendor"
-msgstr ""
-
-msgid "check other networks"
-msgstr "verifica alte retele"
diff --git a/applications/luci-app-diag-devinfo/po/ru/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/ru/diag_devinfo.po
deleted file mode 100644 (file)
index 7531dde..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: LuCI: diag_devinfo\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2014-01-31 21:07+0200\n"
-"Last-Translator: Moon_dark <lenayxa@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\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"
-"X-Poedit-SourceCharset: UTF-8\n"
-
-msgid "Actions"
-msgstr "Действия"
-
-msgid "Add"
-msgstr "Добавить"
-
-msgid "Beginning of MAC address range"
-msgstr "Начало диапазона MAC-адресов"
-
-msgid "Config Phone Scan"
-msgstr "Настроить сканирование телефонов"
-
-msgid "Configure"
-msgstr "Настроить"
-
-msgid "Configure Scans"
-msgstr "Настроить сканирование"
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-"Настроить сканирование устройств в указанных сетях. Уменьшение таймаута, "
-"количества повторов и/или паузы между запросами может ускорить сканирование, "
-"но также вызвать проблемы поиска некоторых устройств."
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-"Настроить сканирование поддерживаемых SIP-устройств в указанных сетях. "
-"Уменьшение таймаута, количества повторов и/или паузы между запросами может "
-"ускорить сканирование, но также вызвать проблемы поиска некоторых устройств."
-
-msgid "Delete"
-msgstr "Удалить"
-
-msgid "Device Scan Config"
-msgstr "Конфигурация сканирования устройства"
-
-msgid "Device Type"
-msgstr "Тип устройства"
-
-msgid "Devices discovered for"
-msgstr "Устройства, найденные в"
-
-msgid "Devices on Network"
-msgstr "Устройства в сети"
-
-msgid "Edit"
-msgstr "Редактировать"
-
-msgid "Enable"
-msgstr "Включить"
-
-msgid "End of MAC address range"
-msgstr "Конец диапазона MAC адресов"
-
-msgid "Go to relevant configuration page"
-msgstr "Перейти на соответствующую страницу конфигурации"
-
-msgid "IP Address"
-msgstr "IP-адрес"
-
-msgid "Interface"
-msgstr "Интерфейс"
-
-msgid "Invalid"
-msgstr "Неверный"
-
-msgid "Link to Device"
-msgstr "Соединение с устройством"
-
-msgid "MAC Address"
-msgstr "MAC-адрес"
-
-#, fuzzy
-msgid "MAC Device Info Overrides"
-msgstr "Переопределение информации о MAC-устройстве"
-
-msgid "MAC Device Override"
-msgstr "Задать MAC-адрес устройства"
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-"Диапазон MAC-адресов и информация для переопределения системной базы данных "
-"и базы данных IEEE"
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "Время бездействия между запросами (мс, 100 по умолчанию)"
-
-msgid "Model"
-msgstr "Модель"
-
-msgid "Name"
-msgstr "Имя"
-
-msgid "Network Device Scan"
-msgstr "Сканирование сетевых устройств"
-
-msgid "Network Device Scanning Configuration"
-msgstr "Конфигурация сканирования сетевых устройств"
-
-msgid "Networks to scan for devices"
-msgstr "Сети, в которых производить сканирование устройств"
-
-msgid "Networks to scan for supported devices"
-msgstr "Сети, в которых производить сканирование поддерживаемых устройств"
-
-msgid "No SIP devices"
-msgstr "SIP-устройства отсутствуют"
-
-msgid "No devices detected"
-msgstr "Устройства не обнаружены"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "Количество запросов (1 по умолчанию)"
-
-msgid "OUI Owner"
-msgstr "Владелец OUI"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-"Переопределить значения, полученные из скрипта \"MAC to Device\" (mac-to-"
-"devinfo), для заданного диапазона MAC-адресов"
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr "Произвести сканирование (это может занять несколько минут)"
-
-msgid "Phone Information"
-msgstr "Информация о телефоне"
-
-msgid "Phone Scan"
-msgstr "Сканировать телефоны"
-
-msgid "Phone Scanning Configuration"
-msgstr "Конфигурация сканирования телефонов"
-
-msgid "Phones"
-msgstr "Телефоны"
-
-msgid "Ports"
-msgstr "Порты"
-
-msgid "Raw"
-msgstr "Необработанные (сырые) данные"
-
-msgid "Repeat Count"
-msgstr "Количество повторов"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr "Повторить сканирование (это может занять несколько минут)"
-
-msgid "SIP Device Information"
-msgstr "Информация о SIP-устройстве"
-
-msgid "SIP Device Scan"
-msgstr "Сканировать SIP-устройства"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "Конфигурация сканирования SIP-устройств"
-
-msgid "SIP Devices on Network"
-msgstr "SIP-устройства в сети"
-
-msgid "SIP devices discovered for"
-msgstr "SIP-устройства, найденные в"
-
-msgid "Scan for devices on specified networks."
-msgstr "Сканировать устройства в заданных сетях."
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr "Сканировать поддерживаемые SIP-устройства в заданных сетях."
-
-msgid "Scanning Configuration"
-msgstr "Конфигурация сканирования"
-
-msgid "Scans for devices on specified networks."
-msgstr "Сканирует устройства в заданных сетях."
-
-msgid "Sleep Between Requests"
-msgstr "Пауза между запросами"
-
-msgid "Subnet"
-msgstr "Подсеть"
-
-msgid "This section contains no values yet"
-msgstr "Эта секция пока не содержит значений."
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "Время ожидания ответов (сек, 10 по умолчанию)"
-
-msgid "Timeout"
-msgstr "Таймаут"
-
-msgid "Use Configuration"
-msgstr "Использовать конфигурацию"
-
-msgid "Vendor"
-msgstr "Производитель"
-
-msgid "check other networks"
-msgstr "проверить другие сети"
diff --git a/applications/luci-app-diag-devinfo/po/sk/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/sk/diag_devinfo.po
deleted file mode 100644 (file)
index 0d62204..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"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"
-
-msgid "Actions"
-msgstr ""
-
-msgid "Add"
-msgstr ""
-
-msgid "Beginning of MAC address range"
-msgstr ""
-
-msgid "Config Phone Scan"
-msgstr ""
-
-msgid "Configure"
-msgstr ""
-
-msgid "Configure Scans"
-msgstr ""
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr ""
-
-msgid "Device Scan Config"
-msgstr ""
-
-msgid "Device Type"
-msgstr ""
-
-msgid "Devices discovered for"
-msgstr ""
-
-msgid "Devices on Network"
-msgstr ""
-
-msgid "Edit"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "End of MAC address range"
-msgstr ""
-
-msgid "Go to relevant configuration page"
-msgstr ""
-
-msgid "IP Address"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Invalid"
-msgstr ""
-
-msgid "Link to Device"
-msgstr ""
-
-msgid "MAC Address"
-msgstr ""
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr ""
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr ""
-
-msgid "Model"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Network Device Scan"
-msgstr ""
-
-msgid "Network Device Scanning Configuration"
-msgstr ""
-
-msgid "Networks to scan for devices"
-msgstr ""
-
-msgid "Networks to scan for supported devices"
-msgstr ""
-
-msgid "No SIP devices"
-msgstr ""
-
-msgid "No devices detected"
-msgstr ""
-
-msgid "Number of times to send requests (default 1)"
-msgstr ""
-
-msgid "OUI Owner"
-msgstr ""
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "Phone Information"
-msgstr ""
-
-msgid "Phone Scan"
-msgstr ""
-
-msgid "Phone Scanning Configuration"
-msgstr ""
-
-msgid "Phones"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Raw"
-msgstr ""
-
-msgid "Repeat Count"
-msgstr ""
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "SIP Device Information"
-msgstr ""
-
-msgid "SIP Device Scan"
-msgstr ""
-
-msgid "SIP Device Scanning Configuration"
-msgstr ""
-
-msgid "SIP Devices on Network"
-msgstr ""
-
-msgid "SIP devices discovered for"
-msgstr ""
-
-msgid "Scan for devices on specified networks."
-msgstr ""
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
-
-msgid "Scanning Configuration"
-msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
-
-msgid "Sleep Between Requests"
-msgstr ""
-
-msgid "Subnet"
-msgstr ""
-
-msgid "This section contains no values yet"
-msgstr ""
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr ""
-
-msgid "Timeout"
-msgstr ""
-
-msgid "Use Configuration"
-msgstr ""
-
-msgid "Vendor"
-msgstr ""
-
-msgid "check other networks"
-msgstr ""
diff --git a/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po
deleted file mode 100644 (file)
index d68116b..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-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"
-
-msgid "Actions"
-msgstr "Åtgärder"
-
-msgid "Add"
-msgstr "Lägg till"
-
-msgid "Beginning of MAC address range"
-msgstr "Början av räckvidd för MAC-adress"
-
-msgid "Config Phone Scan"
-msgstr "Konfigurera skanning av telefon"
-
-msgid "Configure"
-msgstr "Konfigurera"
-
-msgid "Configure Scans"
-msgstr "Konfigurera skanningar"
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr "Radera"
-
-msgid "Device Scan Config"
-msgstr ""
-
-msgid "Device Type"
-msgstr "Enhetstyp"
-
-msgid "Devices discovered for"
-msgstr ""
-
-msgid "Devices on Network"
-msgstr "Enheter på nätverket"
-
-msgid "Edit"
-msgstr "Redigera"
-
-msgid "Enable"
-msgstr "Aktivera"
-
-msgid "End of MAC address range"
-msgstr ""
-
-msgid "Go to relevant configuration page"
-msgstr "Gå till relevant konfigurationssida"
-
-msgid "IP Address"
-msgstr "IP-adress"
-
-msgid "Interface"
-msgstr "Gränssnitt"
-
-msgid "Invalid"
-msgstr "Ogiltig"
-
-msgid "Link to Device"
-msgstr "Länka till enhet"
-
-msgid "MAC Address"
-msgstr "MAC-adress"
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr ""
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "Millisekunder att sova mellan förfrågningar (100 är standard)"
-
-msgid "Model"
-msgstr "Modell"
-
-msgid "Name"
-msgstr "Namn"
-
-msgid "Network Device Scan"
-msgstr ""
-
-msgid "Network Device Scanning Configuration"
-msgstr ""
-
-msgid "Networks to scan for devices"
-msgstr "Nätverk att skanna efter enheter i"
-
-msgid "Networks to scan for supported devices"
-msgstr "Nätverk att skanna efter enheter som stöds"
-
-msgid "No SIP devices"
-msgstr "Inga SIP-enheter"
-
-msgid "No devices detected"
-msgstr "Upptäckte inga enheter"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "Antalet gånger att skicka förfrågningar (1 är standard)"
-
-msgid "OUI Owner"
-msgstr "OUI-ägare"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr "Utför skanningar (det här kan ta ett par minuter)"
-
-msgid "Phone Information"
-msgstr "Information om telefon"
-
-msgid "Phone Scan"
-msgstr "Skanna telefon"
-
-msgid "Phone Scanning Configuration"
-msgstr "Konfiguration av skanning i telefon"
-
-msgid "Phones"
-msgstr "Telefoner"
-
-msgid "Ports"
-msgstr "Portar"
-
-msgid "Raw"
-msgstr "Rå"
-
-msgid "Repeat Count"
-msgstr ""
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr "Repetera skanningar (det här kan ta några minuter)"
-
-msgid "SIP Device Information"
-msgstr "Information om SIP-enhet"
-
-msgid "SIP Device Scan"
-msgstr ""
-
-msgid "SIP Device Scanning Configuration"
-msgstr "Skanningskonfiguration för SIP-enhet"
-
-msgid "SIP Devices on Network"
-msgstr "SIP-enheter på nätverk"
-
-msgid "SIP devices discovered for"
-msgstr "Upptäckta SIP-enheter för"
-
-msgid "Scan for devices on specified networks."
-msgstr "Skanna efter enheter i angivna nätverk."
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr "Skannar efter SIP-enheter som stöds i angivna nätverk."
-
-msgid "Scanning Configuration"
-msgstr "Skannar konfiguration"
-
-msgid "Scans for devices on specified networks."
-msgstr "Skannar efter enheter i angivna nätverk."
-
-msgid "Sleep Between Requests"
-msgstr "Sov mellan förfrågningar"
-
-msgid "Subnet"
-msgstr "Subnät"
-
-msgid "This section contains no values yet"
-msgstr "Den här sektionen innehåller inga värden än"
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "Tid att vänta på svar i sekunder (standard 10)"
-
-msgid "Timeout"
-msgstr "Avbrott"
-
-msgid "Use Configuration"
-msgstr "Använd konfiguration"
-
-msgid "Vendor"
-msgstr "Tillverkare"
-
-msgid "check other networks"
-msgstr "kolla andra nätverk"
diff --git a/applications/luci-app-diag-devinfo/po/templates/diag_devinfo.pot b/applications/luci-app-diag-devinfo/po/templates/diag_devinfo.pot
deleted file mode 100644 (file)
index 350466c..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-msgid "Actions"
-msgstr ""
-
-msgid "Add"
-msgstr ""
-
-msgid "Beginning of MAC address range"
-msgstr ""
-
-msgid "Config Phone Scan"
-msgstr ""
-
-msgid "Configure"
-msgstr ""
-
-msgid "Configure Scans"
-msgstr ""
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr ""
-
-msgid "Device Scan Config"
-msgstr ""
-
-msgid "Device Type"
-msgstr ""
-
-msgid "Devices discovered for"
-msgstr ""
-
-msgid "Devices on Network"
-msgstr ""
-
-msgid "Edit"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "End of MAC address range"
-msgstr ""
-
-msgid "Go to relevant configuration page"
-msgstr ""
-
-msgid "IP Address"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Invalid"
-msgstr ""
-
-msgid "Link to Device"
-msgstr ""
-
-msgid "MAC Address"
-msgstr ""
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr ""
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr ""
-
-msgid "Model"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Network Device Scan"
-msgstr ""
-
-msgid "Network Device Scanning Configuration"
-msgstr ""
-
-msgid "Networks to scan for devices"
-msgstr ""
-
-msgid "Networks to scan for supported devices"
-msgstr ""
-
-msgid "No SIP devices"
-msgstr ""
-
-msgid "No devices detected"
-msgstr ""
-
-msgid "Number of times to send requests (default 1)"
-msgstr ""
-
-msgid "OUI Owner"
-msgstr ""
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "Phone Information"
-msgstr ""
-
-msgid "Phone Scan"
-msgstr ""
-
-msgid "Phone Scanning Configuration"
-msgstr ""
-
-msgid "Phones"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Raw"
-msgstr ""
-
-msgid "Repeat Count"
-msgstr ""
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "SIP Device Information"
-msgstr ""
-
-msgid "SIP Device Scan"
-msgstr ""
-
-msgid "SIP Device Scanning Configuration"
-msgstr ""
-
-msgid "SIP Devices on Network"
-msgstr ""
-
-msgid "SIP devices discovered for"
-msgstr ""
-
-msgid "Scan for devices on specified networks."
-msgstr ""
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
-
-msgid "Scanning Configuration"
-msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
-
-msgid "Sleep Between Requests"
-msgstr ""
-
-msgid "Subnet"
-msgstr ""
-
-msgid "This section contains no values yet"
-msgstr ""
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr ""
-
-msgid "Timeout"
-msgstr ""
-
-msgid "Use Configuration"
-msgstr ""
-
-msgid "Vendor"
-msgstr ""
-
-msgid "check other networks"
-msgstr ""
diff --git a/applications/luci-app-diag-devinfo/po/tr/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/tr/diag_devinfo.po
deleted file mode 100644 (file)
index 3251675..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-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"
-
-msgid "Actions"
-msgstr ""
-
-msgid "Add"
-msgstr ""
-
-msgid "Beginning of MAC address range"
-msgstr ""
-
-msgid "Config Phone Scan"
-msgstr ""
-
-msgid "Configure"
-msgstr ""
-
-msgid "Configure Scans"
-msgstr ""
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr ""
-
-msgid "Device Scan Config"
-msgstr ""
-
-msgid "Device Type"
-msgstr ""
-
-msgid "Devices discovered for"
-msgstr "Devices discovered for"
-
-msgid "Devices on Network"
-msgstr ""
-
-msgid "Edit"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "End of MAC address range"
-msgstr ""
-
-msgid "Go to relevant configuration page"
-msgstr ""
-
-msgid "IP Address"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Invalid"
-msgstr ""
-
-msgid "Link to Device"
-msgstr ""
-
-msgid "MAC Address"
-msgstr ""
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr ""
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr ""
-
-msgid "Model"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Network Device Scan"
-msgstr ""
-
-msgid "Network Device Scanning Configuration"
-msgstr ""
-
-msgid "Networks to scan for devices"
-msgstr ""
-
-msgid "Networks to scan for supported devices"
-msgstr ""
-
-msgid "No SIP devices"
-msgstr ""
-
-msgid "No devices detected"
-msgstr ""
-
-msgid "Number of times to send requests (default 1)"
-msgstr ""
-
-msgid "OUI Owner"
-msgstr ""
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "Phone Information"
-msgstr ""
-
-msgid "Phone Scan"
-msgstr ""
-
-msgid "Phone Scanning Configuration"
-msgstr ""
-
-msgid "Phones"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Raw"
-msgstr ""
-
-msgid "Repeat Count"
-msgstr ""
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "SIP Device Information"
-msgstr ""
-
-msgid "SIP Device Scan"
-msgstr ""
-
-msgid "SIP Device Scanning Configuration"
-msgstr ""
-
-msgid "SIP Devices on Network"
-msgstr ""
-
-msgid "SIP devices discovered for"
-msgstr ""
-
-msgid "Scan for devices on specified networks."
-msgstr ""
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
-
-msgid "Scanning Configuration"
-msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
-
-msgid "Sleep Between Requests"
-msgstr ""
-
-msgid "Subnet"
-msgstr ""
-
-msgid "This section contains no values yet"
-msgstr ""
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr ""
-
-msgid "Timeout"
-msgstr ""
-
-msgid "Use Configuration"
-msgstr ""
-
-msgid "Vendor"
-msgstr ""
-
-msgid "check other networks"
-msgstr ""
diff --git a/applications/luci-app-diag-devinfo/po/uk/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/uk/diag_devinfo.po
deleted file mode 100644 (file)
index 03f49eb..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-08-13 15:23+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"
-
-msgid "Actions"
-msgstr ""
-
-msgid "Add"
-msgstr "Додати"
-
-msgid "Beginning of MAC address range"
-msgstr ""
-
-msgid "Config Phone Scan"
-msgstr ""
-
-msgid "Configure"
-msgstr "Конфігурація"
-
-msgid "Configure Scans"
-msgstr ""
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr "Вилучити"
-
-msgid "Device Scan Config"
-msgstr "Конфігурація пристрою сканування"
-
-msgid "Device Type"
-msgstr "Тип пристрою"
-
-msgid "Devices discovered for"
-msgstr "Виявленні пристрої на"
-
-msgid "Devices on Network"
-msgstr "Пристрої в мережі"
-
-msgid "Edit"
-msgstr "Редагувати"
-
-msgid "Enable"
-msgstr "Активувати"
-
-msgid "End of MAC address range"
-msgstr ""
-
-#, fuzzy
-msgid "Go to relevant configuration page"
-msgstr "Перейти до відповідної сторінки конфігурації"
-
-msgid "IP Address"
-msgstr "IP-адреса"
-
-msgid "Interface"
-msgstr "Інтерфейс"
-
-msgid "Invalid"
-msgstr "Несправність"
-
-msgid "Link to Device"
-msgstr "Посилання на пристрій"
-
-msgid "MAC Address"
-msgstr "MAC-адреса"
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr ""
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr ""
-
-msgid "Model"
-msgstr "Модель"
-
-msgid "Name"
-msgstr "Назва"
-
-msgid "Network Device Scan"
-msgstr "Сканування мережевих пристроїв"
-
-msgid "Network Device Scanning Configuration"
-msgstr "Мережевий Пристрій Конфігурація Сканування"
-
-#, fuzzy
-msgid "Networks to scan for devices"
-msgstr "Мережі для сканування пристроїв"
-
-#, fuzzy
-msgid "Networks to scan for supported devices"
-msgstr "Мережі для пошуку підтримуваних пристроїв"
-
-msgid "No SIP devices"
-msgstr "Немає SIP пристроїв"
-
-msgid "No devices detected"
-msgstr ""
-
-msgid "Number of times to send requests (default 1)"
-msgstr ""
-
-msgid "OUI Owner"
-msgstr ""
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "Phone Information"
-msgstr ""
-
-msgid "Phone Scan"
-msgstr ""
-
-msgid "Phone Scanning Configuration"
-msgstr ""
-
-msgid "Phones"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Raw"
-msgstr ""
-
-msgid "Repeat Count"
-msgstr ""
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "SIP Device Information"
-msgstr ""
-
-msgid "SIP Device Scan"
-msgstr ""
-
-msgid "SIP Device Scanning Configuration"
-msgstr ""
-
-msgid "SIP Devices on Network"
-msgstr ""
-
-msgid "SIP devices discovered for"
-msgstr ""
-
-msgid "Scan for devices on specified networks."
-msgstr ""
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
-
-msgid "Scanning Configuration"
-msgstr "Конфігурація Сканування"
-
-#, fuzzy
-msgid "Scans for devices on specified networks."
-msgstr "Сканування пристроїв у вказаних мережах."
-
-#, fuzzy
-msgid "Sleep Between Requests"
-msgstr "Сон між запитами"
-
-#, fuzzy
-msgid "Subnet"
-msgstr "Підмережі"
-
-#, fuzzy
-msgid "This section contains no values yet"
-msgstr "Цей розділ ще не містить значень"
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "Час очікування відповіді в секундах (типово 10)"
-
-#, fuzzy
-msgid "Timeout"
-msgstr "Затримка"
-
-#, fuzzy
-msgid "Use Configuration"
-msgstr "Використання конфігурації"
-
-msgid "Vendor"
-msgstr ""
-
-msgid "check other networks"
-msgstr "перевірити інші мережі"
diff --git a/applications/luci-app-diag-devinfo/po/vi/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/vi/diag_devinfo.po
deleted file mode 100644 (file)
index 3251675..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-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"
-
-msgid "Actions"
-msgstr ""
-
-msgid "Add"
-msgstr ""
-
-msgid "Beginning of MAC address range"
-msgstr ""
-
-msgid "Config Phone Scan"
-msgstr ""
-
-msgid "Configure"
-msgstr ""
-
-msgid "Configure Scans"
-msgstr ""
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr ""
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-
-msgid "Delete"
-msgstr ""
-
-msgid "Device Scan Config"
-msgstr ""
-
-msgid "Device Type"
-msgstr ""
-
-msgid "Devices discovered for"
-msgstr "Devices discovered for"
-
-msgid "Devices on Network"
-msgstr ""
-
-msgid "Edit"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "End of MAC address range"
-msgstr ""
-
-msgid "Go to relevant configuration page"
-msgstr ""
-
-msgid "IP Address"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Invalid"
-msgstr ""
-
-msgid "Link to Device"
-msgstr ""
-
-msgid "MAC Address"
-msgstr ""
-
-msgid "MAC Device Info Overrides"
-msgstr ""
-
-msgid "MAC Device Override"
-msgstr ""
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr ""
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr ""
-
-msgid "Model"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Network Device Scan"
-msgstr ""
-
-msgid "Network Device Scanning Configuration"
-msgstr ""
-
-msgid "Networks to scan for devices"
-msgstr ""
-
-msgid "Networks to scan for supported devices"
-msgstr ""
-
-msgid "No SIP devices"
-msgstr ""
-
-msgid "No devices detected"
-msgstr ""
-
-msgid "Number of times to send requests (default 1)"
-msgstr ""
-
-msgid "OUI Owner"
-msgstr ""
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr ""
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "Phone Information"
-msgstr ""
-
-msgid "Phone Scan"
-msgstr ""
-
-msgid "Phone Scanning Configuration"
-msgstr ""
-
-msgid "Phones"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Raw"
-msgstr ""
-
-msgid "Repeat Count"
-msgstr ""
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
-
-msgid "SIP Device Information"
-msgstr ""
-
-msgid "SIP Device Scan"
-msgstr ""
-
-msgid "SIP Device Scanning Configuration"
-msgstr ""
-
-msgid "SIP Devices on Network"
-msgstr ""
-
-msgid "SIP devices discovered for"
-msgstr ""
-
-msgid "Scan for devices on specified networks."
-msgstr ""
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
-
-msgid "Scanning Configuration"
-msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
-
-msgid "Sleep Between Requests"
-msgstr ""
-
-msgid "Subnet"
-msgstr ""
-
-msgid "This section contains no values yet"
-msgstr ""
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr ""
-
-msgid "Timeout"
-msgstr ""
-
-msgid "Use Configuration"
-msgstr ""
-
-msgid "Vendor"
-msgstr ""
-
-msgid "check other networks"
-msgstr ""
diff --git a/applications/luci-app-diag-devinfo/po/zh-cn/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/zh-cn/diag_devinfo.po
deleted file mode 100644 (file)
index fe4d241..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-10-10 05:33+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
-"Language-Team: none\n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Actions"
-msgstr "动作"
-
-msgid "Add"
-msgstr "添加"
-
-msgid "Beginning of MAC address range"
-msgstr "MAC起始地址"
-
-msgid "Config Phone Scan"
-msgstr "配置话机识别参数"
-
-msgid "Configure"
-msgstr "配置"
-
-msgid "Configure Scans"
-msgstr "识别参数配置"
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr "配置识别指定网络上设备的过程参数。减小'​​超时时长','重复次数',和/或“休眠请求”可加快识别过程,但也可能因此导致识别一些设备会失败。"
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-"配置识别指定网络上SIP设备的过程参数。降低'​​超时时长','重复次数',和/或“休眠请求”可加快识别过程,但也可能因此导致识别一些设备会失败。"
-
-msgid "Delete"
-msgstr "删除"
-
-msgid "Device Scan Config"
-msgstr "设备识别参数配置"
-
-msgid "Device Type"
-msgstr "设备类型"
-
-msgid "Devices discovered for"
-msgstr "对发现​​的设备"
-
-msgid "Devices on Network"
-msgstr "网络上的设备"
-
-msgid "Edit"
-msgstr "编辑"
-
-msgid "Enable"
-msgstr "启用"
-
-msgid "End of MAC address range"
-msgstr "MAC地址段结束"
-
-msgid "Go to relevant configuration page"
-msgstr "相关配置页面"
-
-msgid "IP Address"
-msgstr "IP地址"
-
-msgid "Interface"
-msgstr "接口"
-
-msgid "Invalid"
-msgstr "不合法"
-
-msgid "Link to Device"
-msgstr "连接到设备"
-
-msgid "MAC Address"
-msgstr "MAC地址"
-
-msgid "MAC Device Info Overrides"
-msgstr "覆盖MAC设备信息"
-
-msgid "MAC Device Override"
-msgstr "覆盖MAC设备"
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr "MAC范围和使用信息覆盖系统和IEEE数据库"
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "两次请求间睡眠毫秒数(默认为100)"
-
-msgid "Model"
-msgstr "型号"
-
-msgid "Name"
-msgstr "名字"
-
-msgid "Network Device Scan"
-msgstr "识别网络设备"
-
-msgid "Network Device Scanning Configuration"
-msgstr "网络设备识别参数"
-
-msgid "Networks to scan for devices"
-msgstr "网络识别设备"
-
-msgid "Networks to scan for supported devices"
-msgstr "网络识别支持的设备"
-
-msgid "No SIP devices"
-msgstr "无SIP设备"
-
-msgid "No devices detected"
-msgstr "没有识别到设备"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "发送请求次数(默认为1)"
-
-msgid "OUI Owner"
-msgstr "OUI所有者"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr "返回指定MAC地址范围内覆盖MAC设备信息脚本(mac-to-devinfo)的信息。"
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr "执行识别过程(这可能需要几分钟)"
-
-msgid "Phone Information"
-msgstr "话机信息"
-
-msgid "Phone Scan"
-msgstr "识别话机"
-
-msgid "Phone Scanning Configuration"
-msgstr "话机识别过程参数"
-
-msgid "Phones"
-msgstr "话机"
-
-msgid "Ports"
-msgstr "端口"
-
-msgid "Raw"
-msgstr "原始数据"
-
-msgid "Repeat Count"
-msgstr "重复次数"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr "重复识别(这可能需要几分钟)"
-
-msgid "SIP Device Information"
-msgstr "SIP设备信息"
-
-msgid "SIP Device Scan"
-msgstr "SIP设备识别"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "SIP设备识别过程参数配置"
-
-msgid "SIP Devices on Network"
-msgstr "在线的SIP设备"
-
-msgid "SIP devices discovered for"
-msgstr "发掘SIP设备"
-
-msgid "Scan for devices on specified networks."
-msgstr "在指定网络上识别设备"
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr "在指定网络上识别SIP设备"
-
-msgid "Scanning Configuration"
-msgstr "识别过程配置"
-
-msgid "Scans for devices on specified networks."
-msgstr "识别指定网络上的设备"
-
-msgid "Sleep Between Requests"
-msgstr "请求间等待间隙"
-
-msgid "Subnet"
-msgstr "子网"
-
-msgid "This section contains no values yet"
-msgstr "这部分任然不包含的值"
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "等待响应秒数(默认10)"
-
-msgid "Timeout"
-msgstr "超时"
-
-msgid "Use Configuration"
-msgstr "使用配置"
-
-msgid "Vendor"
-msgstr "厂商"
-
-msgid "check other networks"
-msgstr "检查其他网络"
diff --git a/applications/luci-app-diag-devinfo/po/zh-tw/diag_devinfo.po b/applications/luci-app-diag-devinfo/po/zh-tw/diag_devinfo.po
deleted file mode 100644 (file)
index fe14f68..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-14 14:54+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"
-
-msgid "Actions"
-msgstr "操作"
-
-msgid "Add"
-msgstr "新增"
-
-msgid "Beginning of MAC address range"
-msgstr "MAC位址起始範圍"
-
-msgid "Config Phone Scan"
-msgstr "設定電話掃描"
-
-msgid "Configure"
-msgstr "設置"
-
-msgid "Configure Scans"
-msgstr "掃描設置"
-
-msgid ""
-"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
-"'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
-"may fail to find some devices."
-msgstr "針對特定網路的掃描設定值. 增加\"超時\",\"重複數量,\"並且/或者\"傳到睡著者\"可以加速掃描, 但也有可能將要去搜尋某些設備時會失敗."
-
-msgid ""
-"Configure scanning for supported SIP devices on specified networks. "
-"Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
-"speed up scans, but also may fail to find some devices."
-msgstr ""
-"對指定的網路上已支援的SIP設備設定掃描,減少\"超時\",\"重複數量,\"並且/或者\"傳到睡著者\"可以加速描, 但也有可能將要去搜尋某些設備時會失敗."
-
-msgid "Delete"
-msgstr "刪除"
-
-msgid "Device Scan Config"
-msgstr "設備掃描設定"
-
-msgid "Device Type"
-msgstr "設備型態"
-
-msgid "Devices discovered for"
-msgstr "已發現的設備為"
-
-msgid "Devices on Network"
-msgstr "網路中的設備"
-
-msgid "Edit"
-msgstr "編輯"
-
-msgid "Enable"
-msgstr "啟用"
-
-msgid "End of MAC address range"
-msgstr "MAC位址的結束範圍"
-
-msgid "Go to relevant configuration page"
-msgstr "到相應的設定頁面"
-
-msgid "IP Address"
-msgstr "IP位址"
-
-msgid "Interface"
-msgstr "介面"
-
-msgid "Invalid"
-msgstr "無效"
-
-msgid "Link to Device"
-msgstr "連結到設備上"
-
-msgid "MAC Address"
-msgstr "MAC位址"
-
-msgid "MAC Device Info Overrides"
-msgstr "MAC設備資訊覆寫"
-
-msgid "MAC Device Override"
-msgstr "MAC設備覆寫"
-
-msgid "MAC range and information used to override system and IEEE databases"
-msgstr "MAC範圍及資訊用來覆寫系統和IEEE資料庫"
-
-msgid "Milliseconds to sleep between requests (default 100)"
-msgstr "要求多久(毫)秒後進入睡眠"
-
-msgid "Model"
-msgstr "型號"
-
-msgid "Name"
-msgstr "名稱"
-
-msgid "Network Device Scan"
-msgstr "網路設備掃描"
-
-msgid "Network Device Scanning Configuration"
-msgstr "網路設備掃描設定值"
-
-msgid "Networks to scan for devices"
-msgstr "要掃描的網路設備"
-
-msgid "Networks to scan for supported devices"
-msgstr "要掃描的已支援網路設備"
-
-msgid "No SIP devices"
-msgstr "無任何SIP設備"
-
-msgid "No devices detected"
-msgstr "偵測不到設備"
-
-msgid "Number of times to send requests (default 1)"
-msgstr "傳送要求的次數(預設1)"
-
-msgid "OUI Owner"
-msgstr "OUI擁有者"
-
-msgid ""
-"Override the information returned by the MAC to Device Info Script (mac-to-"
-"devinfo) for a specified range of MAC Addresses"
-msgstr "針對指定範圍的MAC位址,由設備資訊腳本回傳的MAC位址資訊進行覆蓋"
-
-msgid "Perform Scans (this can take a few minutes)"
-msgstr "掃描操作(可能會花費數分鐘)"
-
-msgid "Phone Information"
-msgstr "電話資訊"
-
-msgid "Phone Scan"
-msgstr "電話掃描"
-
-msgid "Phone Scanning Configuration"
-msgstr "電話掃描設定值"
-
-msgid "Phones"
-msgstr "電話"
-
-msgid "Ports"
-msgstr "埠"
-
-msgid "Raw"
-msgstr "原生RAW"
-
-msgid "Repeat Count"
-msgstr "重複次數"
-
-msgid "Repeat Scans (this can take a few minutes)"
-msgstr "重複掃描(可能花費數分鐘)"
-
-msgid "SIP Device Information"
-msgstr "SIP設備資訊"
-
-msgid "SIP Device Scan"
-msgstr "SIP設備掃描"
-
-msgid "SIP Device Scanning Configuration"
-msgstr "SIP設備掃描設定值"
-
-msgid "SIP Devices on Network"
-msgstr "網路中的SIP設備"
-
-msgid "SIP devices discovered for"
-msgstr "已發現的SIP設備"
-
-msgid "Scan for devices on specified networks."
-msgstr "針對特定網路掃描設備"
-
-msgid "Scan for supported SIP devices on specified networks."
-msgstr "針對特定網路掃描有支援的SIP設備"
-
-msgid "Scanning Configuration"
-msgstr "掃描設定值"
-
-msgid "Scans for devices on specified networks."
-msgstr "針對特定網路掃描設備"
-
-msgid "Sleep Between Requests"
-msgstr "請求之間的睡眠"
-
-msgid "Subnet"
-msgstr "子網路"
-
-msgid "This section contains no values yet"
-msgstr "這個部分尚無任何數值"
-
-msgid "Time to wait for responses in seconds (default 10)"
-msgstr "秒計等待回應時間(預設10)"
-
-msgid "Timeout"
-msgstr "超時"
-
-msgid "Use Configuration"
-msgstr "使用設定值"
-
-msgid "Vendor"
-msgstr "供應製造商"
-
-msgid "check other networks"
-msgstr "檢查它網"
diff --git a/applications/luci-app-diag-devinfo/root/etc/config/luci_devinfo b/applications/luci-app-diag-devinfo/root/etc/config/luci_devinfo
deleted file mode 100644 (file)
index 1bcdc19..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-config 'smap_scannet' 'SIP_LAN'
-        option 'enable' '0'
-       option 'interface' 'lan'
-       option 'subnet' '192.168.99.0/24'
-       
-config 'smap_scannet' 'SIP_WAN'
-        option 'enable' '0'
-       option 'interface' 'wan'
-       option 'subnet' '216.218.0.0/16'
-
-config 'netdiscover_scannet' 'SCAN_LAN'
-        option 'enable' '0'
-       option 'interface' 'lan'
-       option 'subnet' '192.168.99.0/24'
-       
-config 'netdiscover_scannet' 'SCAN_WAN'
-        option 'enable' '0'
-       option 'interface' 'wan'
-       option 'subnet' '216.218.0.0/16'
-
index 4b632b8d04be9304c579a6b322acb2afc56690a7..d34fec87d7c8192780d5d381a261904ecd1e9133 100644 (file)
@@ -5,7 +5,7 @@
 include $(TOPDIR)/rules.mk
 
 LUCI_TITLE:=LuCI support for DNSCrypt-Proxy
-LUCI_DEPENDS:=+uclient-fetch +dnscrypt-proxy
+LUCI_DEPENDS:=+uclient-fetch +dnscrypt-proxy +luci-lib-httpprotoutils
 LUCI_PKGARCH:=all
 
 include ../../luci.mk
index 9f6472e7ded78090f9cbd9122105a3972750dd9f..ca078f0cd374a9444e23a20a29e84fd796522b8e 100644 (file)
@@ -15,9 +15,9 @@ function index()
        entry({"admin", "services", "dnscrypt-proxy", "tab_from_cbi"}, cbi("dnscrypt-proxy/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true
        entry({"admin", "services", "dnscrypt-proxy", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true
        entry({"admin", "services", "dnscrypt-proxy", "advanced"}, firstchild(), _("Advanced"), 100)
-       entry({"admin", "services", "dnscrypt-proxy", "advanced", "configuration"}, cbi("dnscrypt-proxy/configuration_tab"), _("Edit DNSCrypt-Proxy Configuration"), 110).leaf = true
-       entry({"admin", "services", "dnscrypt-proxy", "advanced", "cfg_dnsmasq"}, cbi("dnscrypt-proxy/cfg_dnsmasq_tab"), _("Edit Dnsmasq Configuration"), 120).leaf = true
-       entry({"admin", "services", "dnscrypt-proxy", "advanced", "cfg_resolvcrypt"}, cbi("dnscrypt-proxy/cfg_resolvcrypt_tab"), _("Edit Resolvcrypt Configuration"), 130).leaf = true
+       entry({"admin", "services", "dnscrypt-proxy", "advanced", "configuration"}, form("dnscrypt-proxy/configuration_tab"), _("Edit DNSCrypt-Proxy Configuration"), 110).leaf = true
+       entry({"admin", "services", "dnscrypt-proxy", "advanced", "cfg_dnsmasq"}, form("dnscrypt-proxy/cfg_dnsmasq_tab"), _("Edit Dnsmasq Configuration"), 120).leaf = true
+       entry({"admin", "services", "dnscrypt-proxy", "advanced", "cfg_resolvcrypt"}, form("dnscrypt-proxy/cfg_resolvcrypt_tab"), _("Edit Resolvcrypt Configuration"), 130).leaf = true
        entry({"admin", "services", "dnscrypt-proxy", "advanced", "view_reslist"}, call("view_reslist"), _("View Resolver List"), 140).leaf = true
 end
 
index 368c6673ad5cfa6c242325e03d0a4568567fdba7..8f0e3224b49be626d4a438154533e167cc3ce12c 100644 (file)
@@ -1,15 +1,20 @@
--- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 -- This is free software, licensed under the Apache License, Version 2.0
 
 local fs        = require("nixio.fs")
 local uci       = require("luci.model.uci").cursor()
 local util      = require("luci.util")
-local date      = require("luci.http.protocol.date")
 local res_input = "/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv"
+local res_dir   = fs.dirname(res_input)
 local dump      = util.ubus("network.interface", "dump", {})
 local plug_cnt  = tonumber(luci.sys.exec("env -i /usr/sbin/dnscrypt-proxy --version | grep 'Support for plugins: present' | wc -l"))
 local res_list  = {}
-local url       = "https://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-resolvers.csv"
+local url       = "https://raw.githubusercontent.com/dyne/dnscrypt-proxy/master/dnscrypt-resolvers.csv"
+
+local _, date = pcall(require, "luci.http.date")
+if not date then
+       _, date = pcall(require, "luci.http.protocol.date")
+end
 
 if not fs.access(res_input) then
        if not fs.access("/lib/libustream-ssl.so") then
@@ -29,22 +34,24 @@ if not uci:get_first("dnscrypt-proxy", "global") then
        uci:commit("dnscrypt-proxy")
 end
 
-for line in io.lines(res_input) do
-       local name,
-       location,
-       dnssec,
-       nolog = line:match("^([^,]+),.-,\".-\",\"*(.-)\"*,.-,[0-9],\"*([yesno]+)\"*,\"*([yesno]+)\"*,.*")
-       if name ~= "" and name ~= "Name" then
-               if location == "" then
-                       location = "-"
-               end
-               if dnssec == "" then
-                       dnssec = "-"
-               end
-               if nolog == "" then
-                       nolog = "-"
+if fs.access(res_input) then
+       for line in io.lines(res_input) or {} do
+               local name,
+               location,
+               dnssec,
+               nolog = line:match("^([^,]+),.-,\".-\",\"*(.-)\"*,.-,[0-9],\"*([yesno]+)\"*,\"*([yesno]+)\"*,.*")
+               if name ~= "" and name ~= "Name" then
+                       if location == "" then
+                               location = "-"
+                       end
+                       if dnssec == "" then
+                               dnssec = "-"
+                       end
+                       if nolog == "" then
+                               nolog = "-"
+                       end
+                       res_list[#res_list + 1] = { name = name, location = location, dnssec = dnssec, nolog = nolog }
                end
-               res_list[#res_list + 1] = { name = name, location = location, dnssec = dnssec, nolog = nolog }
        end
 end
 
@@ -60,7 +67,7 @@ function m.on_after_commit(self)
                if value == "1" then
                        uci:commit("dnscrypt-proxy")
                        uci:set("dhcp", s1, "noresolv", 1)
-                       if not fs.access("/etc/resolv-crypt.conf") or nixio.fs.stat("/etc/resolv-crypt.conf").size == 0 then
+                       if not fs.access("/etc/resolv-crypt.conf") or fs.stat("/etc/resolv-crypt.conf").size == 0 then
                                uci:set("dhcp", s1, "resolvfile", "/tmp/resolv.conf.auto")
                        else
                                uci:set("dhcp", s1, "resolvfile", "/etc/resolv-crypt.conf")
@@ -98,32 +105,43 @@ o1.value = res_input
 
 o2 = s:option(DummyValue, "", translate("File Date"))
 o2.template = "dnscrypt-proxy/res_options"
-o2.value = date.to_http(nixio.fs.stat(res_input).mtime)
+if fs.access(res_input) then
+       o2.value = date.to_http(fs.stat(res_input).mtime)
+else
+       o2.value = "-"
+end
 
 o3 = s:option(DummyValue, "", translate("File Checksum"))
 o3.template = "dnscrypt-proxy/res_options"
-o3.value = luci.sys.exec("sha256sum " .. res_input .. " | awk '{print $1}'")
+if fs.access(res_input) then
+       o3.value = luci.sys.exec("sha256sum " .. res_input .. " | awk '{print $1}'")
+else
+       o3.value = "-"
+end
 
 if fs.access("/lib/libustream-ssl.so") then
        btn1 = s:option(Button, "", translate("Refresh Resolver List"),
-               translate("Download the current resolver list from 'download.dnscrypt.org'."))
+               translate("Download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."))
        btn1.inputtitle = translate("Refresh List")
        btn1.inputstyle = "apply"
        btn1.disabled = false
        function btn1.write()
+               if not fs.access(res_dir) then
+                       fs.mkdir(res_dir)
+               end
                luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1")
                luci.http.redirect(luci.dispatcher.build_url("admin", "services", "dnscrypt-proxy"))
        end
 else
        btn1 = s:option(Button, "", translate("Refresh Resolver List"),
                translate("No SSL support available.<br />")
-               .. translate("Please install a 'libustream-ssl' library to download the current resolver list from 'download.dnscrypt.org'."))
+               .. translate("Please install a 'libustream-ssl' library to download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."))
        btn1.inputtitle = translate("-------")
        btn1.inputstyle = "button"
        btn1.disabled = true
 end
 
-if not fs.access("/etc/resolv-crypt.conf") or nixio.fs.stat("/etc/resolv-crypt.conf").size == 0 then
+if not fs.access("/etc/resolv-crypt.conf") or fs.stat("/etc/resolv-crypt.conf").size == 0 then
        btn2 = s:option(Button, "", translate("Create Custom Config File"),
                translate("Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS upstream timeouts with multiple DNSCrypt instances.<br />")
                .. translatef("For further information "
index 2cd01c019e5d8ebb5a34d7454aa88e0790807ec0..e35efa871bda5627ae8a9f6f55f3f72c6f423fcb 100644 (file)
@@ -7,7 +7,7 @@ msgstr ""
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.4\n"
+"X-Generator: Poedit 2.0.7\n"
 "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "Language: ja\n"
@@ -76,9 +76,11 @@ msgstr "DNSCrypt-Proxy の高速化のため、IPv6 を無効化します。"
 msgid "Dnsmasq Options"
 msgstr "Dnsmasq オプション"
 
-msgid "Download the current resolver list from 'download.dnscrypt.org'."
+msgid ""
+"Download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."
 msgstr ""
-"現在のリゾルバ リストを 'download.dnscrypt.org' からダウンロードします。"
+"現在のリゾルバ リストを 'github.com/dyne/dnscrypt-proxy' からダウンロードしま"
+"す。"
 
 msgid "Edit DNSCrypt-Proxy Configuration"
 msgstr "DNSCrypt-Proxy 設定の編集"
@@ -162,10 +164,10 @@ msgstr "'詳細' タブで手動でファイルを編集してください。"
 
 msgid ""
 "Please install a 'libustream-ssl' library to download the current resolver "
-"list from 'download.dnscrypt.org'."
+"list from 'github.com/dyne/dnscrypt-proxy'."
 msgstr ""
-"現在のリゾルバ リストを 'download.dnscrypt.org' からダウンロードするために、 "
-"'libustream-ssl' ライブラリをインストールしてください。"
+"現在のリゾルバ リストを 'github.com/dyne/dnscrypt-proxy' からダウンロードする"
+"ために、 'libustream-ssl' ライブラリをインストールしてください。"
 
 msgid ""
 "Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-"
diff --git a/applications/luci-app-dnscrypt-proxy/po/ru/dnscrypt-proxy.po b/applications/luci-app-dnscrypt-proxy/po/ru/dnscrypt-proxy.po
new file mode 100644 (file)
index 0000000..1b5e364
--- /dev/null
@@ -0,0 +1,282 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: dnscrypt-proxy\n"
+"POT-Creation-Date: 2017-10-17 14:30+0300\n"
+"PO-Revision-Date: 2018-01-24 14:58+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"
+
+msgid "-------"
+msgstr "-------"
+
+msgid "Advanced"
+msgstr "Дополнительно"
+
+msgid "Alternate Resolver List"
+msgstr "Альтернативный список разрешенных серверов"
+
+msgid ""
+"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />"
+msgstr ""
+"Применить специальные настройки DNSCrypt-Proxy для Dnsmasq config файла.<br /"
+">"
+
+msgid "Blacklist"
+msgstr "Чёрный список"
+
+msgid "Block IPv6"
+msgstr "Блокировать IPv6"
+
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"'All' available network interfaces.<br />"
+msgstr ""
+"По дефолту DNSCrypt-Proxy стартует на всех доступных интерфейсах 'All'.<br />"
+
+msgid "Configuration of the DNSCrypt-Proxy package."
+msgstr "Настройка DNSCrypt-Proxy. "
+
+msgid ""
+"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS "
+"upstream timeouts with multiple DNSCrypt instances.<br />"
+msgstr ""
+"Создать config файл /etc/resolv-crypt.none со строкой 'options timeout:1' "
+"для уменьшения времени ожидания ответов DNS серверов внешней сети с "
+"многократной обработкой запросов DNSCrypt-ом.<br />"
+
+msgid "Create Config File"
+msgstr "Создать сonfig файл"
+
+msgid "Create Custom Config File"
+msgstr "Создать config"
+
+msgid "DNS Query Logfile"
+msgstr "Файл системного журнала запроса DNS"
+
+msgid "DNSCrypt-Proxy"
+msgstr "DNSCrypt-Proxy"
+
+msgid "DNSCrypt-Proxy Logfile"
+msgstr "Файл системного журнала DNSCrypt-Proxy"
+
+msgid "DNSCrypt-Proxy Resolver List"
+msgstr "DNSCrypt-Proxy список разрешенных серверов"
+
+msgid "Default Resolver List"
+msgstr "Дефолтный список разрешенных серверов"
+
+msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
+msgstr "Отключить IPv6 для DNSCrypt-Proxy."
+
+msgid "Dnsmasq Options"
+msgstr "Настройка Dnsmasq"
+
+msgid ""
+"Download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr ""
+"Загрузить текущий список клиентов  из 'github.com/dyne/dnscrypt-proxy'."
+
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr "Настройка config файла DNSCrypt-Proxy"
+
+msgid "Edit Dnsmasq Configuration"
+msgstr "Настройка config файла Dnsmasq"
+
+msgid "Edit Resolvcrypt Configuration"
+msgstr "Настройка config файла Resolvcrypt"
+
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr "Включить кэширование для ускорения DNSCcrypt-Proxy."
+
+msgid "Ephemeral Keys"
+msgstr "Эфемерные ключи"
+
+msgid "File Checksum"
+msgstr "Контрольная сумма файла"
+
+msgid "File Date"
+msgstr "Дата и время<br />создания файла"
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see the wiki "
+"online</a>"
+msgstr ""
+"Для более подробной информации <a href=\"%s\" target=\"_blank\">обратитесь к "
+"wiki онлайн</a>."
+
+msgid "General Options"
+msgstr "Основные настройки"
+
+msgid "IP Address"
+msgstr "IP-Адрес"
+
+msgid "Improve privacy by using an ephemeral public key for each query."
+msgstr ""
+"Улучшить безопасность, используя эфемерный Публичный ключ для каждого "
+"запроса."
+
+msgid "Input file not found, please check your configuration."
+msgstr "Config файл не найден, настройте config файл."
+
+msgid "Instance Options"
+msgstr "Дополнительные настройки"
+
+msgid "Local Cache"
+msgstr "Локальный кэш"
+
+msgid ""
+"Local blacklists allow you to block abuse sites by domains or ip addresses."
+msgstr ""
+"Локальные Черные списки, позволяют блокировать сайты по их доменам или IP-"
+"адресам."
+
+msgid ""
+"Log the received DNS queries to a file, so you can watch in real-time what "
+"is happening on the network."
+msgstr ""
+"Записывайте в журнал полученные запросы DNS. Таким образом, Вы сможете "
+"наблюдать в режиме реального времени, что происходит в сети."
+
+msgid ""
+"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- "
+"and NOLOG-Flag."
+msgstr ""
+"Имя удаленного сервера DNS для разрешения запросов к нему.<br /"
+">Расположение, DNSSEC- и NOLOG-Flag (LOC/SEC/NOLOG)."
+
+msgid "No SSL support available.<br />"
+msgstr "Отсутствует поддержка SSL.<br />"
+
+msgid "No default resolver list and no SSL support available.<br />"
+msgstr "Отсутствует список разрешенных серверов и не поддерживается SSL.<br />"
+
+msgid "Overview"
+msgstr "Главное меню"
+
+msgid "Please edit the file manually in the 'Advanced' section."
+msgstr "Отредактируйте файл вручную в разделе 'Дополнительно'."
+
+msgid ""
+"Please install a 'libustream-ssl' library to download the current resolver "
+"list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr ""
+"Установите библиотеку 'libustream-ssl', чтобы скачать текущий список "
+"клиентов с адреса 'github.com/dyne/dnscrypt-proxy'."
+
+msgid ""
+"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv' to use this package."
+msgstr ""
+"Установите список разрешенных серверов в /usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv для использования данного сервиса."
+
+msgid ""
+"Please note: This may change the values for 'noresolv', 'resolvfile', "
+"'allservers' and the list 'server' settings."
+msgstr ""
+"Примечание: Этот режим, может изменить значения для 'noresolv', "
+"'resolvfile', 'allservers' и параметры настройки списка 'серверов'."
+
+msgid "Port"
+msgstr "Порт"
+
+msgid "Refresh List"
+msgstr "Обновить список"
+
+msgid "Refresh Resolver List"
+msgstr "Обновить список разрешенных серверов"
+
+msgid "Resolver (LOC/SEC/NOLOG)"
+msgstr "Разрешено<br />(LOC/SEC/NOLOG)"
+
+msgid "Save"
+msgstr "Сохранить"
+
+msgid "Specify a non-default Resolver List."
+msgstr "Специальный не дефолтный список разрешенных серверов."
+
+msgid "Startup Trigger"
+msgstr "Назначить"
+
+msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />"
+msgstr "Config файл /etc/resolv-crypt.conf уже существует.<br />"
+
+msgid "The listening port for DNS queries."
+msgstr "Прослушивание порта для DNS запросов."
+
+msgid ""
+"The local IPv4 or IPv6 address. The latter one should be specified within "
+"brackets, e.g. '[::1]'."
+msgstr ""
+"Локальные IPv4 или IPv6 адреса. Заключить в скобки, как образец '[::1]'."
+
+msgid ""
+"The value for this property is the blocklist type and path to the file, e."
+"g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'."
+msgstr ""
+"Обозначить содержимое Черного списка, используя в его названии содержимое "
+"его списка и указав путь к файлу соответствующим образом 'domains:/path/to/"
+"dbl.txt' или 'ips:/path/to/ipbl.txt'."
+
+msgid ""
+"This form allows you to modify the content of the main DNSCrypt-Proxy "
+"configuration file (/etc/config/dnscrypt-proxy)."
+msgstr ""
+"Страница позволяет изменять содержимое config файла DNSCrypt-Proxy (/etc/"
+"config/dnscrypt-proxy)."
+
+msgid ""
+"This form allows you to modify the content of the main Dnsmasq configuration "
+"file (/etc/config/dhcp)."
+msgstr ""
+"Страница позволяет изменять содержимое config файла Dnsmasq (/etc/config/"
+"dhcp)."
+
+msgid ""
+"This form allows you to modify the content of the resolv-crypt configuration "
+"file (/etc/resolv-crypt.conf)."
+msgstr ""
+"Страница позволяет изменять содержимое config файла resolv-crypt (/etc/"
+"resolv-crypt.conf)."
+
+msgid "This form shows the content of the current DNSCrypt Resolver List."
+msgstr ""
+"Страница демонстрирует содержимое DNSCrypt списка разрешенных серверов."
+
+msgid ""
+"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related "
+"messages only."
+msgstr ""
+"Страница показывает вывод системного журнала, предварительно фильтруемый "
+"только для DNSCrypt-Proxy."
+
+msgid ""
+"This option requires extra CPU cycles and is useless with most DNSCrypt "
+"server."
+msgstr ""
+"Этот режим нагружает CPU и большинством DNSCrypt серверов не поддерживается."
+
+msgid ""
+"To restrict the trigger, select only the relevant network interface. Usually "
+"the 'wan' interface should work for most users."
+msgstr ""
+"Выберите только соответствующий сетевой интерфейс.<br />Обычно интерфейса "
+"'wan', достаточно для большинства пользователей."
+
+msgid "Transfer Options To Dnsmasq"
+msgstr "Режим передачи Dnsmasq-у"
+
+msgid "View Logfile"
+msgstr "Показать системный журнал"
+
+msgid "View Resolver List"
+msgstr "Список разрешенных серверов"
index 59bded87b82d9522da6a77a95e88a3b5709ec7d4..8302f48ec285273b039a039c4d9ef1e349ab08eb 100644 (file)
@@ -60,7 +60,8 @@ msgstr ""
 msgid "Dnsmasq Options"
 msgstr ""
 
-msgid "Download the current resolver list from 'download.dnscrypt.org'."
+msgid ""
+"Download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."
 msgstr ""
 
 msgid "Edit DNSCrypt-Proxy Configuration"
@@ -135,7 +136,7 @@ msgstr ""
 
 msgid ""
 "Please install a 'libustream-ssl' library to download the current resolver "
-"list from 'download.dnscrypt.org'."
+"list from 'github.com/dyne/dnscrypt-proxy'."
 msgstr ""
 
 msgid ""
index e6871a5bc489444d6e005b132f4c6d840ba94a40..2527e4248cd91958cc7965509cfb5bca57531379 100644 (file)
@@ -41,11 +41,10 @@ if (a.installed("curl") == true) then
   curl_interface:depends("use_curl","1")
   curl_interface.placeholder = "eth0"
 else
-  use_curl = s:option(Flag, "use_curl", translate("Use curl instead of wget"), translate("Curl is currently not installed.")
-  .." Please install the package in the "
-  ..[[<a href="]] .. DISP.build_url("admin", "system", "packages")
+  use_curl = s:option(Flag, "use_curl", translate("Use curl instead of wget"), translate("Curl is currently not installed. Please install the package in the")
+  ..[[ <a href="]] .. DISP.build_url("admin", "system", "packages")
   .. "?display=available&query=curl"..[[">]]
-  .. "Software Section" .. [[</a>]]
+  .. translate ("Software Section") .. [[</a>]]
   .. "."
   )
   use_curl.rmempty = false
index e2507e493e2c1e603df149ff76fb90e661ab1834..0de677a19375310db208812f2d2495c044d54d41 100644 (file)
@@ -26,8 +26,8 @@ msgstr "Testen der Internetverfügbarkeit via HTTP header download"
 msgid "Configuration"
 msgstr "Konfiguration"
 
-msgid "Curl is currently not installed."
-msgstr "Curl ist momentan nicht installiert."
+msgid "Curl is currently not installed. Please install the package in the"
+msgstr "Curl ist momentan nicht installiert. Bitte installieren Sie das Paket im"
 
 msgid "Device"
 msgstr "Gerät"
@@ -48,7 +48,8 @@ msgid ""
 "Failure counter after how many failed download attempts, the state is "
 "considered as offline"
 msgstr ""
-"Anzahl der fehlgeschlagenen Downloadversuche, nach denen die Verbindung als offline angesehen wird"
+"Anzahl der fehlgeschlagenen Downloadversuche, nach denen die Verbindung als "
+"offline angesehen wird"
 
 msgid "List of Wireless Virtual Interfaces (wVIF)"
 msgstr "Liste der Drahtlosen virtuellen Schnittstellen"
@@ -75,6 +76,9 @@ msgstr "Online"
 msgid "SSID"
 msgstr ""
 
+msgid "Software Section"
+msgstr ""
+
 msgid "Switch_to_offline threshold"
 msgstr "Offline-Schwelle"
 
@@ -104,3 +108,5 @@ msgstr ""
 msgid "WiFi Status"
 msgstr ""
 
+#~ msgid "Curl is currently not installed."
+#~ msgstr "Curl ist momentan nicht installiert."
index 75031985f748e237a8abf31cb92cc6f711c271cb..25046208f9bb24b5fd99a227dfd4d1259e93076d 100644 (file)
@@ -28,8 +28,9 @@ msgstr ""
 msgid "Configuration"
 msgstr "設定"
 
-msgid "Curl is currently not installed."
-msgstr "curl は現在インストールされていません。"
+msgid "Curl is currently not installed. Please install the package in the"
+msgstr ""
+"curl は現在インストールされていません。パッケージをインストールしてください。"
 
 msgid "Device"
 msgstr "デバイス"
@@ -78,6 +79,9 @@ msgstr "オンライン"
 msgid "SSID"
 msgstr "SSID"
 
+msgid "Software Section"
+msgstr ""
+
 msgid "Switch_to_offline threshold"
 msgstr "オフライン化閾値"
 
@@ -106,3 +110,6 @@ msgstr ""
 
 msgid "WiFi Status"
 msgstr "無線ステータス"
+
+#~ msgid "Curl is currently not installed."
+#~ msgstr "curl は現在インストールされていません。"
index 59b02629a968c50c5f730c8ab132143d5c846b48..f69a1322c93725a6f6ee23191970502d2597be1a 100644 (file)
@@ -29,8 +29,8 @@ msgstr "Cerifique a conectividade com a internet baixando o cabeçalho HTTP "
 msgid "Configuration"
 msgstr "Configuração"
 
-msgid "Curl is currently not installed."
-msgstr "O cURL não está instalado."
+msgid "Curl is currently not installed. Please install the package in the"
+msgstr "O cURL não está instalado. Por favor instale o pacote no"
 
 msgid "Device"
 msgstr "Dispositivo"
@@ -79,6 +79,9 @@ msgstr "Conectado"
 msgid "SSID"
 msgstr "SSID"
 
+msgid "Software Section"
+msgstr ""
+
 msgid "Switch_to_offline threshold"
 msgstr "Limiar para mudar para desconectado"
 
@@ -105,3 +108,6 @@ msgstr "Qual dispositivo o cURL deve usar. (Use ifconfig para listá-las)"
 
 msgid "WiFi Status"
 msgstr "Estado da WiFi"
+
+#~ msgid "Curl is currently not installed."
+#~ msgstr "O cURL não está instalado."
diff --git a/applications/luci-app-dynapoint/po/ru/dynapoint.po b/applications/luci-app-dynapoint/po/ru/dynapoint.po
new file mode 100644 (file)
index 0000000..35d565b
--- /dev/null
@@ -0,0 +1,119 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: dynapoint\n"
+"POT-Creation-Date: 2017-12-01 16:15+0300\n"
+"PO-Revision-Date: 2018-01-18 21:27+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"
+
+msgid "Activate this wVIF if status is:"
+msgstr "Применение DynaPoint-а"
+
+msgid "Append hostname to ssid"
+msgstr "Изменить SSID"
+
+msgid "Append the router's hostname to the SSID when connectivity check fails"
+msgstr ""
+"Добавление имени хоста роутера к SSID, если подключение к интернету "
+"отсутствует."
+
+msgid "Check Internet connectivity via HTTP header download"
+msgstr "Проверка подключения к интернету, с помощью получения HTTP-ответа."
+
+msgid "Configuration"
+msgstr "Настройка config файла"
+
+msgid "Curl is currently not installed. Please install the package in the"
+msgstr "Curl в настоящее время не установлен. Установите пакет на странице"
+
+msgid "Device"
+msgstr "Устройство"
+
+msgid "Disabled"
+msgstr "Отключено"
+
+msgid "DynaPoint"
+msgstr "DynaPoint"
+
+msgid "Dynamic Access Point Manager"
+msgstr "Диспетчер динамических точек доступа."
+
+msgid "Enabled"
+msgstr "Включено"
+
+msgid ""
+"Failure counter after how many failed download attempts, the state is "
+"considered as offline"
+msgstr ""
+"Кол-во попыток получить HTTP-ответ, после чего подключение к интернету будет "
+"считаться разорванным."
+
+msgid "List of Wireless Virtual Interfaces (wVIF)"
+msgstr "Список беспроводных сетей (точек доступа):"
+
+msgid "List of host addresses"
+msgstr "HTTP-адреса"
+
+msgid ""
+"List of host addresses (url or IP) to track and request http headers from"
+msgstr ""
+"Список HTTP-адресов (ссылка или IP-адрес) для проверки подключения к "
+"интернету."
+
+msgid "Mode"
+msgstr "Режим"
+
+msgid "Not used by DynaPoint"
+msgstr "Не используется DynaPoint"
+
+msgid "Offline"
+msgstr "Отключен"
+
+msgid "Online"
+msgstr "Онлайн"
+
+msgid "SSID"
+msgstr "SSID"
+
+msgid "Software Section"
+msgstr "'Программное обеспечение'"
+
+msgid "Switch_to_offline threshold"
+msgstr "Кол-во попыток"
+
+msgid "Test-run interval"
+msgstr "Интервал"
+
+msgid "Time interval in seconds to re-start a new test run"
+msgstr ""
+"Временной интервал в секундах, для повторного запуска проверки подключения к "
+"интернету."
+
+msgid "Use curl"
+msgstr "Использовать curl"
+
+msgid "Use curl instead of wget"
+msgstr "Curl вместо wget"
+
+msgid "Use curl instead of wget for testing the connectivity."
+msgstr "Используйте curl вместо команды wget для тестирования подключения."
+
+msgid "Used interface"
+msgstr "Используемый интерфейс"
+
+msgid "Which interface should curl use. (Use ifconfig to find out)"
+msgstr ""
+"Какой интерфейс должен использовать curl. (Использовать команду ifconfig, "
+"чтобы узнать)."
+
+msgid "WiFi Status"
+msgstr "Состояние"
index f352425be36f0c4ff5c8faa42297ec24862a6d7c..4a225162ffe72bc8cc4be6f955aad2ca7e35ce70 100644 (file)
@@ -16,7 +16,7 @@ msgstr ""
 msgid "Configuration"
 msgstr ""
 
-msgid "Curl is currently not installed."
+msgid "Curl is currently not installed. Please install the package in the"
 msgstr ""
 
 msgid "Device"
@@ -64,6 +64,9 @@ msgstr ""
 msgid "SSID"
 msgstr ""
 
+msgid "Software Section"
+msgstr ""
+
 msgid "Switch_to_offline threshold"
 msgstr ""
 
index 5a6ab0ad310b2cbc2db697297b512e317cd8430a..4fe7770efc55ab1f9aae31cebceb707487a1c2c5 100644 (file)
@@ -18,6 +18,6 @@ function index()
                _("Traffic Rules"), 30).leaf = true
 
        entry({"admin", "network", "firewall", "custom"},
-               cbi("firewall/custom"),
+               form("firewall/custom"),
                _("Custom Rules"), 40).leaf = true
 end
index 7553504572bbf4cbe577e19e6960269586472464..a42c1499f09f59a138ebd47d2b4d24998e3b3ffa 100644 (file)
@@ -68,12 +68,6 @@ function name.write(self, section, value)
                out.exclude = value
                inp.exclude = value
        end
-
-       m.redirect = ds.build_url("admin/network/firewall/zones", value)
-       m.title = "%s - %s" %{
-               translate("Firewall - Zone Settings"),
-               translatef("Zone %q", value or "?")
-       }
 end
 
 p = {
index 6d08fe13a910aee9d1a446c4393bdc7e45669c41..2d89bfa2a6e6792f1f47215531568853d1ff27b4 100644 (file)
@@ -9,7 +9,7 @@ local nx = require "nixio"
 
 local translate, translatef = luci.i18n.translate, luci.i18n.translatef
 
-local function tr(...)
+local function _(...)
        return tostring(translate(...))
 end
 
@@ -17,7 +17,7 @@ function fmt_neg(x)
        if type(x) == "string" then
                local v, neg = x:gsub("^ *! *", "")
                if neg > 0 then
-                       return v, "%s " % tr("not")
+                       return v, "%s " % _("not")
                else
                        return x, ""
                end
@@ -28,7 +28,7 @@ end
 function fmt_mac(x)
        if x and #x > 0 then
                local m, n
-               local l = { tr("MAC"), " " }
+               local l = { _("MAC"), " " }
                for m in ut.imatch(x) do
                        m, n = fmt_neg(m)
                        l[#l+1] = "<var>%s%s</var>" %{ n, m }
@@ -37,7 +37,7 @@ function fmt_mac(x)
                if #l > 1 then
                        l[#l] = nil
                        if #l > 3 then
-                               l[1] = tr("MACs")
+                               l[1] = _("MACs")
                        end
                        return table.concat(l, "")
                end
@@ -47,12 +47,12 @@ end
 function fmt_port(x, d)
        if x and #x > 0 then
                local p, n
-               local l = { tr("port"), " " }
+               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] = tr("ports")
+                               l[1] = _("ports")
                                l[#l+1] = "<var>%s%d-%d</var>" %{ n, a, b }
                        else
                                l[#l+1] = "<var>%s%d</var>" %{ n, p }
@@ -62,7 +62,7 @@ function fmt_port(x, d)
                if #l > 1 then
                        l[#l] = nil
                        if #l > 3 then
-                               l[1] = tr("ports")
+                               l[1] = _("ports")
                        end
                        return table.concat(l, "")
                end
@@ -72,7 +72,7 @@ end
 
 function fmt_ip(x, d)
        if x and #x > 0 then
-               local l = { tr("IP"), " " }
+               local l = { _("IP"), " " }
                local v, a, n
                for v in ut.imatch(x) do
                        v, n = fmt_neg(v)
@@ -80,7 +80,7 @@ function fmt_ip(x, d)
                        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] = tr("IP range")
+                               l[1] = _("IP range")
                                l[#l+1] = "<var title='%s - %s'>%s%s</var>" %{
                                        a:minhost():string(),
                                        a:maxhost():string(),
@@ -97,7 +97,7 @@ function fmt_ip(x, d)
                if #l > 1 then
                        l[#l] = nil
                        if #l > 3 then
-                               l[1] = tr("IPs")
+                               l[1] = _("IPs")
                        end
                        return table.concat(l, "")
                end
@@ -107,7 +107,7 @@ end
 
 function fmt_zone(x, d)
        if x == "*" then
-               return "<var>%s</var>" % tr("any zone")
+               return "<var>%s</var>" % _("any zone")
        elseif x and #x > 0 then
                return "<var>%s</var>" % x
        elseif d then
@@ -118,7 +118,7 @@ end
 function fmt_icmp_type(x)
        if x and #x > 0 then
                local t, v, n
-               local l = { tr("type"), " " }
+               local l = { _("type"), " " }
                for v in ut.imatch(x) do
                        v, n = fmt_neg(v)
                        l[#l+1] = "<var>%s%s</var>" %{ n, v }
@@ -127,7 +127,7 @@ function fmt_icmp_type(x)
                if #l > 1 then
                        l[#l] = nil
                        if #l > 3 then
-                               l[1] = tr("types")
+                               l[1] = _("types")
                        end
                        return table.concat(l, "")
                end
@@ -180,13 +180,13 @@ function fmt_limit(limit, burst)
                u = u or "second"
                if l then
                        if u:match("^s") then
-                               u = tr("second")
+                               u = _("second")
                        elseif u:match("^m") then
-                               u = tr("minute")
+                               u = _("minute")
                        elseif u:match("^h") then
-                               u = tr("hour")
+                               u = _("hour")
                        elseif u:match("^d") then
-                               u = tr("day")
+                               u = _("day")
                        end
                        if burst and burst > 0 then
                                return translatef("<var>%d</var> pkts. per <var>%s</var>, \
@@ -201,23 +201,23 @@ end
 function fmt_target(x, dest)
        if dest and #dest > 0 then
                if x == "ACCEPT" then
-                       return tr("Accept forward")
+                       return _("Accept forward")
                elseif x == "REJECT" then
-                       return tr("Refuse forward")
+                       return _("Refuse forward")
                elseif x == "NOTRACK" then
-                       return tr("Do not track forward")
+                       return _("Do not track forward")
                else --if x == "DROP" then
-                       return tr("Discard forward")
+                       return _("Discard forward")
                end
        else
                if x == "ACCEPT" then
-                       return tr("Accept input")
+                       return _("Accept input")
                elseif x == "REJECT" then
-                       return tr("Refuse input")
+                       return _("Refuse input")
                elseif x == "NOTRACK" then
-                       return tr("Do not track input")
+                       return _("Do not track input")
                else --if x == "DROP" then
-                       return tr("Discard input")
+                       return _("Discard input")
                end
        end
 end
@@ -228,12 +228,12 @@ function opt_enabled(s, t, ...)
                local o = s:option(t, "__enabled")
                function o.render(self, section)
                        if self.map:get(section, "enabled") ~= "0" then
-                               self.title      = tr("Rule is enabled")
-                               self.inputtitle = tr("Disable")
+                               self.title      = _("Rule is enabled")
+                               self.inputtitle = _("Disable")
                                self.inputstyle = "reset"
                        else
-                               self.title      = tr("Rule is disabled")
-                               self.inputtitle = tr("Enable")
+                               self.title      = _("Rule is disabled")
+                               self.inputtitle = _("Enable")
                                self.inputstyle = "apply"
                        end
                        t.render(self, section)
index 463b2e05f4990e57afdb77ec58115332076057a7..b06fac3de424f60bae3a7c2a41003a5d6eb2b143 100644 (file)
@@ -2,10 +2,11 @@
        local fw = require "luci.model.firewall".init()
        local wz = fw:get_zone("wan")
        local lz = fw:get_zone("lan")
+       local zones = fw:get_zones()
 %>
 
 <div class="cbi-section-create cbi-tblsection-create">
-       <% if wz and lz then %>
+       <% if wz then %>
                <br />
                <table class="cbi-section-table" style="margin-left:5px">
                        <tr class="cbi-section-table-titles">
@@ -37,7 +38,8 @@
                                </td>
                        </tr>
                </table>
-
+       <% end %>
+       <% if #zones > 1 then %>
                <table class="cbi-section-table" style="margin-left:5px">
                        <tr class="cbi-section-table-titles">
                                <th class="cbi-section-table-cell left" colspan="6"><br /><%:New forward rule%>:</th>
                                <td class="cbi-section-table-cell" style="width:110px">
                                        <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() == "lan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
+                                                       <option<%=ifattr(v:name() == "wan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
                                                <%- end %>
                                        </select>
                                </td>
                                <td class="cbi-section-table-cell" style="width:110px">
                                        <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() == "wan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
+                                                       <option<%=ifattr(v:name() == "lan", "selected", "selected")%> value="<%=v:name()%>"><%=v:name()%></option>
                                                <%- end %>
                                        </select>
                                </td>
                                </td>
                        </tr>
                </table>
+       <% else %>
+               <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
+       <% end %>
 
+       <% if wz then %>
                <script type="text/javascript">//<![CDATA[
                        cbi_validate_field('_newopen.extport', true, 'list(neg(portrange))');
                        cbi_bind(document.getElementById('_newopen.extport'), 'blur',
 
                        cbi_validate_field('cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>', true, 'uciname');
                //]]></script>
-       <% else %>
-               <input type="submit" class="cbi-button cbi-button-add" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" value="<%:Add%>" />
        <% end %>
 </div>
index ce275111d877b70a8160f308481712434d2f8fdc..0a5913fc00c13e051c37d9f19f59f5f7cd5e873f 100644 (file)
@@ -1,8 +1,7 @@
 <%
        local fw = require "luci.model.firewall".init()
        local nw = require "luci.model.network".init()
-       local wz = fw:get_zone("wan")
-       local lz = fw:get_zone("lan")
+       local zones = fw:get_zones()
 
        local keys, vals, a, k, v = {}, {}
        for k, v in ipairs(nw:get_interfaces()) do
@@ -14,7 +13,7 @@
 %>
 
 <div class="cbi-section-create cbi-tblsection-create">
-       <% if wz and lz then %>
+       <% if #zones > 1 then %>
                <br />
                <table class="cbi-section-table" style="width:700px; margin-left:5px">
                        <tr class="cbi-section-table-titles">
index 3abdc892d87f0724d5f6d57ea290097cc05efb1f..ff43427eed07aa08608f957e382c90cd85ce9e7a 100644 (file)
@@ -42,6 +42,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var> i limita a %s"
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Acció"
 
@@ -91,9 +97,24 @@ msgstr "Port de destí"
 msgid "Destination zone"
 msgstr "Zona de destí"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr "No reescriguis"
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Descarta els paquets invàlids"
 
@@ -160,6 +181,15 @@ msgstr "Des de %s en %s amb orígens %s i %s"
 msgid "General Settings"
 msgstr "Ajusts generals"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -193,6 +223,12 @@ msgstr "Zona interna"
 msgid "Limit log messages"
 msgstr "Limita els missatges de registre"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr "Fixació MSS"
 
@@ -295,6 +331,12 @@ msgstr "Redirigeix trànsit entrant coincidit al port donat en el host intern"
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Redirigeix trànsit entrant coincidit al host intern especificat"
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -323,6 +365,12 @@ msgstr "Reescriu a l'origen %s"
 msgid "Rewrite to source %s, %s"
 msgstr "Reescriu als orígens %s, %s"
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr "Adreça IP de SNAT"
 
@@ -508,14 +556,41 @@ msgstr "qualsevol IP d'encaminador"
 msgid "any zone"
 msgstr "qualsevol zona"
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr "no rastregis"
 
 msgid "drop"
 msgstr "descarta"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "rebutja"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr "trànsit"
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index c796873ded70f10a492f240cba9d50d4d4a86571..caa7e199884325f0f19ac66b6e9fb1a752211bc3 100644 (file)
@@ -38,6 +38,12 @@ msgstr "<var>%d</var> paketů za <var>%s</var>, burst <var>%d</var> paketů."
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var> a omezit na %s"
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Akce"
 
@@ -86,9 +92,24 @@ msgstr "Cílový port"
 msgid "Destination zone"
 msgstr "Cílová oblast"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr "Nepřepisovat"
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Zahazovat neplatné pakety"
 
@@ -155,6 +176,15 @@ msgstr "Z %s v %s se zdrojovou %s a %s"
 msgid "General Settings"
 msgstr "Obecné nastavení"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -189,6 +219,12 @@ msgstr "Vnitřní zóna"
 msgid "Limit log messages"
 msgstr "Omezit logovací zprávy"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr "MSS clamping"
 
@@ -292,6 +328,12 @@ msgstr ""
 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."
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -320,6 +362,12 @@ msgstr "Přepsat na zdrojovou %s"
 msgid "Rewrite to source %s, %s"
 msgstr "Přepsat na zdrojovou %s, %s"
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr "IP adresa SNATu"
 
@@ -503,14 +551,41 @@ msgstr "libovolná IP routeru"
 msgid "any zone"
 msgstr "libovolná zóna"
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr "nesledovat"
 
 msgid "drop"
 msgstr "zahodit"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "odmítnout"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr "provoz"
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index 00e259ca7066ea1bda298baedd8916b17042d098..fcf8bec6798ed50c3fa03694beba110718601008 100644 (file)
@@ -40,6 +40,12 @@ msgstr "<var>%d</var> Pkte. pro <var>%s</var>, Häufung <var>%d</var> Pkte."
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var> und limitieren auf %s"
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Aktion"
 
@@ -89,9 +95,24 @@ msgstr "Zielport"
 msgid "Destination zone"
 msgstr "Ziel-Zone"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr "Nicht umschreiben"
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Ungültige Pakete verwerfen"
 
@@ -158,6 +179,15 @@ msgstr "Von %s in %s mit Quell-%s und %s"
 msgid "General Settings"
 msgstr "Allgemein"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -191,6 +221,12 @@ msgstr "Interne Zone"
 msgid "Limit log messages"
 msgstr "Protokollnachrichten limitieren"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr "MSS Korrektur"
 
@@ -292,6 +328,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Gefilterte Verbindungen an den angegeben internen Host weiterleiten"
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -320,6 +362,12 @@ msgstr "Schreibe um auf Quell-%s"
 msgid "Rewrite to source %s, %s"
 msgstr "Schreibe um auf Quell-%s, %s"
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr "SNAT-IP-Adresse"
 
@@ -509,14 +557,41 @@ msgstr "beliebige Router-IP"
 msgid "any zone"
 msgstr "beliebige Zone"
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr "nicht verfolgen"
 
 msgid "drop"
 msgstr "verwerfen"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "zurückweisen"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index 6ebc2286abe81ac058b87024526fab1417d1a29b..598927557b4b3ee1549e30f4ff43b546657d606e 100644 (file)
@@ -40,6 +40,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr ""
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Ενέργεια"
 
@@ -86,9 +92,24 @@ msgstr "Θύρα προορισμού"
 msgid "Destination zone"
 msgstr "Ζώνη προορισμού"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr ""
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Αγνόηση μη-έγκυρων πακετών"
 
@@ -156,6 +177,15 @@ msgstr ""
 msgid "General Settings"
 msgstr "Γενικές Ρυθμίσεις"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -191,6 +221,12 @@ msgstr "Εσωτερική ζώνη"
 msgid "Limit log messages"
 msgstr "Περιορισμός καταγραφών συστήματος"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 #, fuzzy
 msgid "MSS clamping"
 msgstr "Περιορισμός MSS"
@@ -285,6 +321,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -311,6 +353,12 @@ msgstr ""
 msgid "Rewrite to source %s, %s"
 msgstr ""
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr ""
 
@@ -473,14 +521,41 @@ msgstr ""
 msgid "any zone"
 msgstr ""
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr ""
 
 msgid "drop"
 msgstr "αγνόηση"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "απόρριψη"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index f7658a5b0ca019aed144b031ef23b16ab5a9236c..df1ed4a088114e9fe09aed09cceaa0fe031a1f41 100644 (file)
@@ -38,6 +38,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr ""
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Action"
 
@@ -83,9 +89,24 @@ msgstr "Destination port"
 msgid "Destination zone"
 msgstr "Destination zone"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr ""
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Drop invalid packets"
 
@@ -156,6 +177,15 @@ msgstr ""
 msgid "General Settings"
 msgstr ""
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr ""
 
@@ -189,6 +219,12 @@ msgstr ""
 msgid "Limit log messages"
 msgstr ""
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr "MSS clamping"
 
@@ -285,6 +321,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Redirect matched incoming traffic to the specified internal host"
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -311,6 +353,12 @@ msgstr ""
 msgid "Rewrite to source %s, %s"
 msgstr ""
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr ""
 
@@ -500,14 +548,41 @@ msgstr ""
 msgid "any zone"
 msgstr ""
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr ""
 
 msgid "drop"
 msgstr "drop"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "reject"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index 8550d0567a42223d5e8df4f3a12a0d20131de401..bae8b693daa0bbf04c68cc9c63d1daaefd6633f0 100644 (file)
@@ -41,6 +41,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var> y límite a %s"
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Acción"
 
@@ -90,9 +96,24 @@ msgstr "Puerto de destino"
 msgid "Destination zone"
 msgstr "Zona de destino"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr "No reescribir"
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Descartar paquetes no válidos"
 
@@ -159,6 +180,15 @@ msgstr "Desde %s en %s con origen %s y %s"
 msgid "General Settings"
 msgstr "Configuración general"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -192,6 +222,12 @@ msgstr "Zona interna"
 msgid "Limit log messages"
 msgstr "Limitar registro de mensajes"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr "Fijado de MSS"
 
@@ -294,6 +330,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Redirigir el tráfico de entrada que coincida a la máquina interna"
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -322,6 +364,12 @@ msgstr "Reescribir a origen %s"
 msgid "Rewrite to source %s, %s"
 msgstr "Reescribir a origen %s, %s"
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr "Dirección IP SNAT"
 
@@ -506,14 +554,41 @@ msgstr "cualquier router IP"
 msgid "any zone"
 msgstr "cualquier zona"
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr "no seguir"
 
 msgid "drop"
 msgstr "descartar"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "rechazar"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr "tráfico"
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index 7be4d8f4f4784bada87556d9d11e5fe414d76d81..281999b550a64f832433d957f9bd77110038047b 100644 (file)
@@ -40,6 +40,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr ""
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Action"
 
@@ -85,9 +91,24 @@ msgstr "Port de destination"
 msgid "Destination zone"
 msgstr "Zone de destination"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr ""
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Supprimer les paquets invalides"
 
@@ -158,6 +179,15 @@ msgstr ""
 msgid "General Settings"
 msgstr "Paramètres généraux"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -191,6 +221,12 @@ msgstr "Zone interne"
 msgid "Limit log messages"
 msgstr "Limiter les messages de journalisation"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr "Contrainte du MSS"
 
@@ -290,6 +326,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Rediriger le trafic entrant correspondant vers l'hôte interne spécifié"
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -320,6 +362,12 @@ msgstr ""
 msgid "Rewrite to source %s, %s"
 msgstr ""
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr "Adresse IP SNAT"
 
@@ -527,14 +575,41 @@ msgstr ""
 msgid "any zone"
 msgstr ""
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr ""
 
 msgid "drop"
 msgstr "ignorer"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "rejeter"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index e269e58cb2c014b6b6308c3bade2740400752522..06952d49018356a9419771e7dac0193d86fc6dc0 100644 (file)
@@ -35,6 +35,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr ""
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr ""
 
@@ -80,9 +86,24 @@ msgstr ""
 msgid "Destination zone"
 msgstr ""
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr ""
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr ""
 
@@ -149,6 +170,15 @@ msgstr ""
 msgid "General Settings"
 msgstr ""
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr ""
 
@@ -182,6 +212,12 @@ msgstr ""
 msgid "Limit log messages"
 msgstr ""
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr ""
 
@@ -275,6 +311,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -301,6 +343,12 @@ msgstr ""
 msgid "Rewrite to source %s, %s"
 msgstr ""
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr ""
 
@@ -458,14 +506,41 @@ msgstr ""
 msgid "any zone"
 msgstr ""
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr ""
 
 msgid "drop"
 msgstr ""
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr ""
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index 2c3ae02f610543ea760f38a792661a7d972b7bf6..29aa3241876c45b6106b63e8d4b7e07ec9895e97 100644 (file)
@@ -38,6 +38,12 @@ msgstr "<var>%d</var> csom. <var>%s</var>-enként, burst <var>%d</var> csom."
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var> és korlátozás %s-re"
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Művelet"
 
@@ -87,9 +93,24 @@ msgstr "Cél port"
 msgid "Destination zone"
 msgstr "Cél zóna"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr "Ne írja felül"
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Érvénytelen csomagok eldobása"
 
@@ -156,6 +177,15 @@ msgstr "%s felől %s-ben %s és %s forrással"
 msgid "General Settings"
 msgstr "Általános beállítások"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -189,6 +219,12 @@ msgstr "Belső zóna"
 msgid "Limit log messages"
 msgstr "Napló üzenetek korlátozása"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr "MSS clamping engegélyezése"
 
@@ -296,6 +332,12 @@ msgstr "Átirányítja az egyező bejövő forgalmat a belső gép megadott port
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Átirányítja az egyező bejövő forgalmat a megadott belső géphez"
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -324,6 +366,12 @@ msgstr "Átírás %s forrásra"
 msgid "Rewrite to source %s, %s"
 msgstr "Átírás %s, %s forrásra"
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr "SNAT IP cím"
 
@@ -510,14 +558,41 @@ msgstr "bármelyik router IP"
 msgid "any zone"
 msgstr "bármelyik zóna"
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr "ne kövesse"
 
 msgid "drop"
 msgstr "eldobás"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "visszautasítás"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index a5c4a1ee08fff0c0919ad078aa28b9ae4fe21dac..43b90a9e9b4d7f220de6bad42b54026fe94e79d0 100644 (file)
@@ -40,6 +40,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var> e limita a %s"
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Azione"
 
@@ -89,9 +95,24 @@ msgstr "Porta di destinazione"
 msgid "Destination zone"
 msgstr "Zona di destinazione"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr "Non riscrivere"
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Scarta pacchetti invalidi"
 
@@ -158,6 +179,15 @@ msgstr "Da %s a %s con sorgente %s e %s"
 msgid "General Settings"
 msgstr "Opzioni Generali"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr ""
 
@@ -191,6 +221,12 @@ msgstr "Zona Interna"
 msgid "Limit log messages"
 msgstr "Limita messaggi del registro"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr ""
 
@@ -210,15 +246,15 @@ 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"
+"Corrispondi traffico in entrata diretto alla porta o intervallo di porte "
+"dato su questo host"
 
 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"
+"Corrispondi traffico in entrata originato dalla porta o intervallo di porte "
+"dato su host cliente"
 
 msgid "Monday"
 msgstr "Lunedì"
@@ -280,20 +316,24 @@ msgid ""
 "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"
+"connettersi a uno specifico computer o servizio presente nella LAN privata"
 
 msgid "Protocol"
 msgstr "Protocollo"
 
 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"
+msgstr "Reindirizza il traffico in entrata alla porta data su host interno"
 
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Reindirizza il traffico in entrata allo specifico host interno"
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr "Riavvia Firewall"
 
@@ -322,6 +362,12 @@ msgstr "Riscrivi alla sorgente %s"
 msgid "Rewrite to source %s, %s"
 msgstr "Riscrivi alla sorgente %s, %s"
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr "Indirizzo IP SNAT"
 
@@ -366,10 +412,9 @@ msgid ""
 "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."
-
+"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."
 
 msgid "Source address"
 msgstr "Indirizzo di origine"
@@ -410,26 +455,28 @@ msgid ""
 "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."
+"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."
 
 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."
+"Questa pagina ti consente di cambiare le opzioni avanzate della voce porta "
+"di inoltro. Nella maggioranza dei casi non serve modificare queste "
+"impostazioni."
 
 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."
+"Questa pagina ti consente di cambiare le opzioni avanzate della voce regola "
+"del traffico, come la sorgente corrispondente e gli host di destinazione."
 
 msgid ""
 "This section defines common properties of %q. The <em>input</em> and "
@@ -438,11 +485,12 @@ msgid ""
 "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."
+"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."
 
 msgid "Thursday"
 msgstr "Giovedì"
@@ -476,9 +524,9 @@ msgid ""
 "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."
+"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."
 
 msgid "Tuesday"
 msgstr "Martedì"
@@ -499,8 +547,8 @@ msgid ""
 "You may specify multiple by selecting \"-- custom --\" and then entering "
 "protocols separated by space."
 msgstr ""
-"Puoi specificare multipli selezionando \"-- custom --\" e poi inserendo "
-"protocolli separati da uno spazio."
+"Puoi specificare multipli selezionando \"-- custom --\" e poi inserendo "
+"protocolli separati da uno spazio."
 
 msgid "Zone %q"
 msgstr "Zona %q"
@@ -526,14 +574,41 @@ msgstr "qualsiasi router IP"
 msgid "any zone"
 msgstr "qualsiasi zona"
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr "non tracciare"
 
 msgid "drop"
 msgstr "scarta"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "rifiuta"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr "traffico"
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index eb4b06f29afbd63478acbe2accd9acf1e3704d73..2d252797ff6742a7a4063179465021d4aefc0999 100644 (file)
@@ -3,14 +3,14 @@ msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-03-30 17:00+0200\n"
-"PO-Revision-Date: 2016-12-24 02:55+0900\n"
+"PO-Revision-Date: 2018-01-15 14:56+0900\n"
 "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
 "Language: ja\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0.5\n"
 "Language-Team: \n"
 
 msgid "%s in %s"
@@ -41,6 +41,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var>, %s を上限に設定"
 
+msgid "Accept forward"
+msgstr "転送を許可"
+
+msgid "Accept input"
+msgstr "入力を許可"
+
 msgid "Action"
 msgstr "動作"
 
@@ -90,9 +96,24 @@ msgstr "宛先ポート"
 msgid "Destination zone"
 msgstr "宛先ゾーン"
 
+msgid "Disable"
+msgstr "無効"
+
+msgid "Discard forward"
+msgstr "転送を破棄"
+
+msgid "Discard input"
+msgstr "入力を破棄"
+
 msgid "Do not rewrite"
 msgstr "リライトしない"
 
+msgid "Do not track forward"
+msgstr "転送を追跡しない"
+
+msgid "Do not track input"
+msgstr "入力を追跡しない"
+
 msgid "Drop invalid packets"
 msgstr "無効なパケットを遮断する"
 
@@ -159,6 +180,15 @@ msgstr "送信元 %s (%s) , 送信元 %s, 送信元 %s"
 msgid "General Settings"
 msgstr "一般設定"
 
+msgid "IP"
+msgstr "IP"
+
+msgid "IP range"
+msgstr "IP の範囲"
+
+msgid "IPs"
+msgstr "IP"
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -192,6 +222,12 @@ msgstr "内部ゾーン"
 msgid "Limit log messages"
 msgstr "ログメッセージを制限"
 
+msgid "MAC"
+msgstr "MAC"
+
+msgid "MACs"
+msgstr "MAC"
+
 msgid "MSS clamping"
 msgstr "MSSクランプ"
 
@@ -301,6 +337,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "ルールに一致した受信トラフィックを、設定された内部ホストへ転送します"
 
+msgid "Refuse forward"
+msgstr "転送を拒否"
+
+msgid "Refuse input"
+msgstr "入力を拒否"
+
 msgid "Restart Firewall"
 msgstr "ファイアウォールの再起動"
 
@@ -330,6 +372,12 @@ msgstr "送信元 %s にリライト"
 msgid "Rewrite to source %s, %s"
 msgstr "送信元 %s, %s にリライト"
 
+msgid "Rule is disabled"
+msgstr "ルールは無効です"
+
+msgid "Rule is enabled"
+msgstr "ルールは有効です"
+
 msgid "SNAT IP address"
 msgstr "SNAT IPアドレス"
 
@@ -542,14 +590,41 @@ msgstr "全てのルーターIP"
 msgid "any zone"
 msgstr "全てのゾーン"
 
+msgid "day"
+msgstr "日"
+
 msgid "don't track"
 msgstr "コネクション追跡を行わない"
 
 msgid "drop"
-msgstr "遮断"
+msgstr "破棄"
+
+msgid "hour"
+msgstr "時間"
+
+msgid "minute"
+msgstr "分"
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr "ポート"
+
+msgid "ports"
+msgstr "ポート"
 
 msgid "reject"
 msgstr "拒否"
 
+msgid "second"
+msgstr "秒"
+
 msgid "traffic"
 msgstr "トラフィック"
+
+msgid "type"
+msgstr "タイプ"
+
+msgid "types"
+msgstr "タイプ"
index e5e0e871eef7b5c8dcf34f82c9e794baaddacf17..bfe94d04a8bd5a3f9834b3c46854c5ed25b21bdb 100644 (file)
@@ -40,6 +40,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr ""
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr ""
 
@@ -88,9 +94,24 @@ msgstr ""
 msgid "Destination zone"
 msgstr ""
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr ""
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr ""
 
@@ -157,6 +178,15 @@ msgstr ""
 msgid "General Settings"
 msgstr ""
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr ""
 
@@ -190,6 +220,12 @@ msgstr "내부 zone"
 msgid "Limit log messages"
 msgstr ""
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr ""
 
@@ -285,6 +321,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -311,6 +353,12 @@ msgstr ""
 msgid "Rewrite to source %s, %s"
 msgstr ""
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr ""
 
@@ -492,14 +540,41 @@ msgstr ""
 msgid "any zone"
 msgstr ""
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr ""
 
 msgid "drop"
 msgstr ""
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr ""
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index edc92514fb16a9e784444f28c6a18d25310e09c1..c6ab19791eaa0ca032ef253127feac82876cbf41 100644 (file)
@@ -34,6 +34,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr ""
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr ""
 
@@ -79,9 +85,24 @@ msgstr ""
 msgid "Destination zone"
 msgstr ""
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr ""
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr ""
 
@@ -148,6 +169,15 @@ msgstr ""
 msgid "General Settings"
 msgstr ""
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr ""
 
@@ -181,6 +211,12 @@ msgstr ""
 msgid "Limit log messages"
 msgstr ""
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr ""
 
@@ -274,6 +310,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -300,6 +342,12 @@ msgstr ""
 msgid "Rewrite to source %s, %s"
 msgstr ""
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr ""
 
@@ -457,14 +505,41 @@ msgstr ""
 msgid "any zone"
 msgstr ""
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr ""
 
 msgid "drop"
 msgstr ""
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr ""
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index e26e36564d9c3db9fd4eddfb09dec15da84a2eb0..e9ecb2b63c6212524a9ef0a160beea828bec7f81 100644 (file)
@@ -35,6 +35,12 @@ msgstr "<var>%d</var> pakker per <var>%s</var>, burst <var>%d</var>pakker."
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var> og begrens til %s"
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Handling"
 
@@ -83,9 +89,24 @@ msgstr "Destinasjon port"
 msgid "Destination zone"
 msgstr "Destinasjon sone"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr "Ikke omskriv"
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Forkast ugyldige pakker"
 
@@ -153,6 +174,15 @@ msgstr "Fra %s i %s med kilde %s og %s"
 msgid "General Settings"
 msgstr "Generelle Innstillinger"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -186,6 +216,12 @@ msgstr "Intern sone"
 msgid "Limit log messages"
 msgstr "Begrens logging"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr "MSS Kontroll (Clamping)"
 
@@ -291,6 +327,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Viderekoble matchet innkommende trafikk til den angitte interne vert"
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -319,6 +361,12 @@ msgstr "Omskriv til kilde %s"
 msgid "Rewrite to source %s, %s"
 msgstr "Omskriv til kilde %s, %s"
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr "SNAT IP adresse"
 
@@ -504,14 +552,41 @@ msgstr "enhver ruter IP"
 msgid "any zone"
 msgstr "enhver sone"
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr "ikke track"
 
 msgid "drop"
 msgstr "forkast"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "avslå"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index 77e6a956a287d49aba035566de496213658ab765..fe48060237a835574c468a71ff9c43c5d188bfd4 100644 (file)
@@ -42,6 +42,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var> i ograniczone do %s"
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Działanie"
 
@@ -90,9 +96,24 @@ msgstr "Port docelowy"
 msgid "Destination zone"
 msgstr "Strefa docelowa"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr "Nie przepisuj"
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Porzuć wadliwe pakiety"
 
@@ -162,6 +183,15 @@ msgstr "Z %s w %s ze źródłem %s i %s"
 msgid "General Settings"
 msgstr "Ustawienia ogólne"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -195,6 +225,12 @@ msgstr "Strefa wewnętrzna"
 msgid "Limit log messages"
 msgstr "Ograniczenie logowania"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr "Dostosuj MSS"
 
@@ -300,6 +336,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Przekieruj ruch przychodzący do wskazanego hosta w sieci wewnętrznej"
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -332,6 +374,12 @@ msgstr "Przepisz do źródła %s"
 msgid "Rewrite to source %s, %s"
 msgstr "Przepisz do źródła %s, %s"
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr "Adres IP SNAT"
 
@@ -517,14 +565,41 @@ msgstr "dowolne IP routera"
 msgid "any zone"
 msgstr "dowolna strefa"
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr "nie śledź"
 
 msgid "drop"
 msgstr "porzucaj"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "odrzucaj"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index 1ee89cfbfbd7f07f85b6a9eb3b92628d89dae5fb..b49adccdda974c1c867d5d6a6a9b5e4c6db5b8df 100644 (file)
@@ -40,6 +40,12 @@ msgstr "<var>%d</var> pcts. por <var>%s</var>, pico <var>%d</var> pcts."
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var> e limite a %s"
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Ação"
 
@@ -88,9 +94,24 @@ msgstr "Porta de destino"
 msgid "Destination zone"
 msgstr "Zona de destino"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr "Não sobrescreva"
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Descartar pacotes inválidos"
 
@@ -157,6 +178,15 @@ msgstr "Vindo de %s em %s com origem %s e %s"
 msgid "General Settings"
 msgstr "Configurações Gerais"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -190,6 +220,12 @@ msgstr "Zona interna"
 msgid "Limit log messages"
 msgstr "Limita as mensagens de registro"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr "Ajuste do MSS"
 
@@ -295,6 +331,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Redireciona tráfego entrante para o computador interno especificado"
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr "Reiniciar o Firewall"
 
@@ -323,6 +365,12 @@ msgstr "Reescrever para a origem %s"
 msgid "Rewrite to source %s, %s"
 msgstr "Reescrever para a origem %s, %s"
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr "Endereço IP da SNAT"
 
@@ -507,15 +555,42 @@ msgstr "qualquer endereço IP do roteador"
 msgid "any zone"
 msgstr "qualquer zona"
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr "não rastrear"
 
 msgid "drop"
 msgstr "descartar"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "rejeitar"
 
+msgid "second"
+msgstr ""
+
 # 20140621: edersg: tradução
 msgid "traffic"
 msgstr "Tráfego"
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index d803dfab10574004ea52a22b10e3515b540cc20f..29a7c7c2c73b42cb975114d3712acd8e85aaed7a 100644 (file)
@@ -40,6 +40,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr ""
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Acção"
 
@@ -89,9 +95,24 @@ msgstr "Porta de destino"
 msgid "Destination zone"
 msgstr "Zona de destino"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr "Não re-escrever"
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Cancelar pacotes inválidos"
 
@@ -158,6 +179,15 @@ msgstr "De %s em %s com origem %s e %s"
 msgid "General Settings"
 msgstr "Definições Gerais"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -191,6 +221,12 @@ msgstr "Zona Interna"
 msgid "Limit log messages"
 msgstr "Limitar registo de mensagens"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 #, fuzzy
 msgid "MSS clamping"
 msgstr "MSS-Correction"
@@ -297,6 +333,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Redirecionar o tráfego de entrada correspondente para o host interno"
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -323,6 +365,12 @@ msgstr "Re-escrever para a origem %s"
 msgid "Rewrite to source %s, %s"
 msgstr "Re-escrever para a origem %s, %s"
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr "Endereço IP da SNAT"
 
@@ -492,14 +540,41 @@ msgstr "qualquer IP do router"
 msgid "any zone"
 msgstr "qualquer zona"
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr "não seguir"
 
 msgid "drop"
 msgstr "drop"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "rejeitar"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index e0027de417e63b8784d1864145021e556101091e..cc4d7a62af83c0923c5d2fa896acf590ca4a6286 100644 (file)
@@ -39,6 +39,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr ""
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Acţiune"
 
@@ -84,9 +90,24 @@ msgstr "Portul destinatie"
 msgid "Destination zone"
 msgstr "Zona destinatie"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr "Nu rescrie"
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Descarcă pachetele invalide"
 
@@ -153,6 +174,15 @@ msgstr ""
 msgid "General Settings"
 msgstr "Setari generale"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -186,6 +216,12 @@ msgstr "Zonă internă"
 msgid "Limit log messages"
 msgstr "Limitează mesaje în log"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr "Ajustare MSS"
 
@@ -279,6 +315,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -305,6 +347,12 @@ msgstr ""
 msgid "Rewrite to source %s, %s"
 msgstr ""
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr ""
 
@@ -462,14 +510,41 @@ msgstr ""
 msgid "any zone"
 msgstr ""
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr ""
 
 msgid "drop"
 msgstr ""
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr ""
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index be16fece884fbb7aae0099fcc141c7da43d72aaa..b8611af780b318762e90cd197d79d0feeb3eea7e 100644 (file)
@@ -1,19 +1,19 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: firewall\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-30 17:00+0200\n"
-"PO-Revision-Date: 2013-09-05 16:02+0200\n"
-"Last-Translator: datasheet <michael.gritsaenko@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2013-09-05 16:02+0200\n"
+"PO-Revision-Date: 2018-01-18 21:58+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "%s in %s"
 msgstr "%s в %s"
@@ -42,6 +42,12 @@ msgstr "<var>%d</var> пакетов за <var>%s</var>, подряд <var>%d</v
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var> с пределом в %s"
 
+msgid "Accept forward"
+msgstr "Принять перенаправление"
+
+msgid "Accept input"
+msgstr "Принять входящий трафик"
+
 msgid "Action"
 msgstr "Действие"
 
@@ -52,13 +58,13 @@ msgid "Add and edit..."
 msgstr "Добавить и редактировать..."
 
 msgid "Advanced Settings"
-msgstr "РаÑ\81Ñ\88иÑ\80енные настройки"
+msgstr "Ð\94ополниÑ\82елÑ\8cные настройки"
 
 msgid "Allow forward from <em>source zones</em>:"
-msgstr "Разрешить перенаправление из <em>зон-источников</em>:"
+msgstr "Разрешить перенаправление из <em>'зон-источников'</em>:"
 
 msgid "Allow forward to <em>destination zones</em>:"
-msgstr "Разрешить перенаправление в <em>зоны назначения</em>:"
+msgstr "Разрешить перенаправление в <em>'зоны назначения'</em>:"
 
 msgid "Any"
 msgstr "Любой"
@@ -75,9 +81,9 @@ msgid ""
 "each firewall restart, right after the default ruleset has been loaded."
 msgstr ""
 "Пользовательские правила позволяют выполнять произвольные команды iptables, "
-"которые так или иначе не покрываются данным фреймворком межсетевого экрана. "
-"Ð\9aомандÑ\8b Ð²Ñ\8bполнÑ\8fÑ\8eÑ\82Ñ\81Ñ\8f Ð¿Ñ\80и ÐºÐ°Ð¶Ð´Ð¾Ð¼ Ð¿ÐµÑ\80езапÑ\83Ñ\81ке Ð¼ÐµÐ¶Ñ\81еÑ\82евого Ñ\8dкÑ\80ана, Ñ\81Ñ\80азÑ\83 Ð¿Ð¾Ñ\81ле "
-"того, как загружен набор правил по умолчанию."
+"которые не охвачены рамками межсетевого экрана.<br />Команды выполняются "
+"поÑ\81ле ÐºÐ°Ð¶Ð´Ð¾Ð¹ Ð¿ÐµÑ\80езагÑ\80Ñ\83зки Ð¼ÐµÐ¶Ñ\81еÑ\82евого Ñ\8dкÑ\80ана, Ñ\81Ñ\80азÑ\83 Ð¿Ð¾Ñ\81ле Ð·Ð°Ð³Ñ\80Ñ\83зки Ð½Ð°Ð±Ð¾Ñ\80а "
+"правил по умолчанию."
 
 msgid "Destination IP address"
 msgstr "IP-адрес назначения"
@@ -91,21 +97,35 @@ msgstr "Порт назначения"
 msgid "Destination zone"
 msgstr "Зона назначения"
 
+msgid "Disable"
+msgstr "Отключить"
+
+msgid "Discard forward"
+msgstr "Отключить перенаправление"
+
+msgid "Discard input"
+msgstr "Отключить входящий трафик"
+
 msgid "Do not rewrite"
 msgstr "Не перезаписывать"
 
+msgid "Do not track forward"
+msgstr "Не отслеживать перенаправление"
+
+msgid "Do not track input"
+msgstr "Не отслеживать входящий трафик"
+
 msgid "Drop invalid packets"
-msgstr "Не пропускать некорректные пакеты"
+msgstr "Не пропускать<br />некорректные пакеты"
 
 msgid "Enable"
 msgstr "Включить"
 
-#, fuzzy
 msgid "Enable NAT Loopback"
 msgstr "Включить NAT Loopback"
 
 msgid "Enable SYN-flood protection"
-msgstr "Включить защиту от SYN-flood атак"
+msgstr "Включить защиту<br />от SYN-flood атак"
 
 msgid "Enable logging on this zone"
 msgstr "Включить журналирование в этой зоне"
@@ -120,7 +140,7 @@ msgid "External zone"
 msgstr "Внешняя зона"
 
 msgid "Extra arguments"
-msgstr "Дополнительные аргументы"
+msgstr "Дополнительные<br />аргументы"
 
 msgid "Firewall"
 msgstr "Межсетевой экран"
@@ -144,10 +164,10 @@ msgid "Forward"
 msgstr "Перенаправление"
 
 msgid "Forward to"
-msgstr "Ð\9fеÑ\80енапÑ\80авлÑ\8fÑ\82Ñ\8c Ð²"
+msgstr "Ð\9fеÑ\80енапÑ\80авлÑ\8fÑ\82Ñ\8c Ð¸Ð·"
 
 msgid "Friday"
-msgstr ""
+msgstr "Пятница"
 
 msgid "From %s in %s"
 msgstr "Из %s в %s"
@@ -159,7 +179,16 @@ msgid "From %s in %s with source %s and %s"
 msgstr "Из %s в %s с источниками %s и %s"
 
 msgid "General Settings"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
+
+msgid "IP"
+msgstr "IP-адрес"
+
+msgid "IP range"
+msgstr "Диапазон IP-адресов"
+
+msgid "IPs"
+msgstr "IP-адреса"
 
 msgid "IPv4"
 msgstr "IPv4"
@@ -177,7 +206,7 @@ msgid "IPv6 only"
 msgstr "Только IPv6"
 
 msgid "Input"
-msgstr "Входящий"
+msgstr "Входящий трафик"
 
 msgid "Inter-Zone Forwarding"
 msgstr "Перенаправление между зонами"
@@ -194,18 +223,23 @@ msgstr "Внутренняя зона"
 msgid "Limit log messages"
 msgstr "Ограничить журнал сообщений"
 
+msgid "MAC"
+msgstr "MAC-адрес"
+
+msgid "MACs"
+msgstr "MAC-адреса"
+
 msgid "MSS clamping"
 msgstr "Ограничение MSS"
 
 msgid "Masquerading"
 msgstr "Маскарадинг"
 
-#, fuzzy
 msgid "Match"
-msgstr "Ð\92Ñ\8bбиÑ\80аÑ\82Ñ\8c"
+msgstr "Ð\9fеÑ\80енапÑ\80авлÑ\8fÑ\82Ñ\8c Ð²"
 
 msgid "Match ICMP type"
-msgstr "Соответствовать ICMP типу"
+msgstr "Соответствовать<br />ICMP типу"
 
 msgid "Match forwarded traffic to the given destination port or port range."
 msgstr ""
@@ -216,8 +250,8 @@ msgid ""
 "Match incoming traffic directed at the given destination port or port range "
 "on this host"
 msgstr ""
-"Ð\92Ñ\8bбиÑ\80аÑ\82Ñ\8c Ð²Ñ\85одÑ\8fÑ\89ий Ñ\82Ñ\80аÑ\84ик, Ð½Ð°Ð¿Ñ\80авленнÑ\8bй Ð½Ð° Ð¿Ð¾Ñ\80Ñ\82 Ð¸Ð»Ð¸ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ Ð¿Ð¾Ñ\80Ñ\82ов Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ "
-"хоста"
+"Ð\9fоÑ\80Ñ\82 ÐºÐ¾Ñ\82оÑ\80Ñ\8bй Ð±Ñ\83деÑ\82 Ð¿Ñ\80инимаÑ\82Ñ\8c Ð²Ñ\85одÑ\8fÑ\89ий Ñ\82Ñ\80аÑ\84ик Ð¸Ð· Ð¸Ñ\81Ñ\82оÑ\87ника 'Ð\92нÑ\83Ñ\82Ñ\80енний "
+"порт' (см.ниже)."
 
 msgid ""
 "Match incoming traffic originating from the given source port or port range "
@@ -227,10 +261,10 @@ msgstr ""
 "клиентского хоста."
 
 msgid "Monday"
-msgstr ""
+msgstr "Понедельник"
 
 msgid "Month Days"
-msgstr ""
+msgstr "Дни Месяца"
 
 msgid "Name"
 msgstr "Имя"
@@ -251,7 +285,9 @@ msgid "New source NAT"
 msgstr "Новый SNAT"
 
 msgid "Only match incoming traffic directed at the given IP address."
-msgstr "Выбирать только входящий трафик, направленный на указанный IP-адрес."
+msgstr ""
+"IP-адрес который будет принимать входящий трафик из источника 'Внутренний IP-"
+"адрес' (см.ниже) ."
 
 msgid "Only match incoming traffic from these MACs."
 msgstr "Выбирать только входящий трафик от этих MAC-адресов."
@@ -274,14 +310,15 @@ msgid "Other..."
 msgstr "Другое..."
 
 msgid "Output"
-msgstr "Исходящий"
+msgstr "Исходящий трафик"
 
 msgid "Passes additional arguments to iptables. Use with care!"
 msgstr ""
-"Передаёт дополнительные аргументы iptables. Используйте с осторожностью!"
+"Передаёт дополнительные аргументы таблице iptables. Используйте с "
+"осторожностью!"
 
 msgid "Port Forwards"
-msgstr "Перенаправления портов"
+msgstr "Перенаправление портов"
 
 msgid ""
 "Port forwarding allows remote computers on the Internet to connect to a "
@@ -295,13 +332,22 @@ msgstr "Протокол"
 
 msgid ""
 "Redirect matched incoming traffic to the given port on the internal host"
-msgstr "Перенаправить входящий трафик на указанный порт хоста внутренней сети"
+msgstr ""
+"Перенаправить исходящий трафик с данного порта на 'Внешний порт' (см.выше)."
 
 msgid "Redirect matched incoming traffic to the specified internal host"
-msgstr "Перенаправить входящий трафик на указанный хост внутренней сети"
+msgstr ""
+"Перенаправить исходящий трафик с данного IP-адреса на 'Внешний IP-адрес' (см."
+"выше)."
+
+msgid "Refuse forward"
+msgstr "Сбрасывать перенаправление"
+
+msgid "Refuse input"
+msgstr "Сбрасывать входящий трафик"
 
 msgid "Restart Firewall"
-msgstr ""
+msgstr "Перезапустить межсетевой экран"
 
 msgid "Restrict Masquerading to given destination subnets"
 msgstr "Использовать маскарадинг только для указанных подсетей-получателей"
@@ -310,7 +356,7 @@ msgid "Restrict Masquerading to given source subnets"
 msgstr "Использовать маскарадинг только для указанных подсетей-отправителей"
 
 msgid "Restrict to address family"
-msgstr "Использовать только семейство протоколов"
+msgstr "Использовать протокол"
 
 msgid "Rewrite matched traffic to the given address."
 msgstr "Перенаправлять соответствующий трафик к указанному адресу."
@@ -328,6 +374,12 @@ msgstr "Перенаправлять к источнику %s"
 msgid "Rewrite to source %s, %s"
 msgstr "Перенаправлять к источнику %s, %s"
 
+msgid "Rule is disabled"
+msgstr "Правило отключено"
+
+msgid "Rule is enabled"
+msgstr "Правило включено"
+
 msgid "SNAT IP address"
 msgstr "IP-адрес SNAT"
 
@@ -335,29 +387,8 @@ msgid "SNAT port"
 msgstr "Порт SNAT"
 
 msgid "Saturday"
-msgstr ""
+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 ""
 msgid "Source IP address"
 msgstr "IP-адрес источника"
 
@@ -365,7 +396,7 @@ msgid "Source MAC address"
 msgstr "MAC-адрес источника"
 
 msgid "Source NAT"
-msgstr "SNAT"
+msgstr "NAT источника"
 
 msgid ""
 "Source NAT is a specific form of masquerading which allows fine grained "
@@ -384,22 +415,22 @@ msgid "Source port"
 msgstr "Порт источника"
 
 msgid "Source zone"
-msgstr "Зона-источник"
+msgstr "Зона источника"
 
 msgid "Start Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Дата начала<br />(год-мес-день)"
 
 msgid "Start Time (hh:mm:ss)"
-msgstr ""
+msgstr "Время начала<br />(чч:мм:сс)"
 
 msgid "Stop Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Дата остановки<br />(год-мес-день)"
 
 msgid "Stop Time (hh:mm:ss)"
-msgstr ""
+msgstr "Время остановки<br />(чч:мм:сс)"
 
 msgid "Sunday"
-msgstr ""
+msgstr "Воскресенье"
 
 msgid ""
 "The firewall creates zones over your network interfaces to control network "
@@ -414,28 +445,27 @@ msgid ""
 "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 ""
-"Ð\94аннÑ\8bе Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ñ\83пÑ\80авлÑ\8fÑ\8eÑ\82 Ð¿ÐµÑ\80енапÑ\80авлением Ð¼ÐµÐ¶Ð´Ñ\83 Ñ\8dÑ\82ой (%s) Ð¸ Ð´Ñ\80Ñ\83гими "
-"зонами. Ð¢Ñ\80аÑ\84иком <em>зон-полÑ\83Ñ\87аÑ\82елей</em> Ñ\8fвлÑ\8fеÑ\82Ñ\81Ñ\8f Ñ\82Ñ\80аÑ\84ик <strong>иÑ\81Ñ\85одÑ\8fÑ\89ий "
-"из %q</strong>. Трафиком <em>зон-источников</em> является трафик "
-"<strong>направленый в %q</strong>. Перенаправление является "
-"<em>однонаправленным</em>, то есть перанаправление из lan в wan <em>не</em> "
-"допускает перенаправление трафика из wan в lan."
+"Ð\94аннÑ\8bе Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ñ\83пÑ\80авлÑ\8fÑ\8eÑ\82 Ð¿Ð¾Ð»Ð¸Ñ\82иками Ð¿ÐµÑ\80енапÑ\80авлениÑ\8f Ð¼ÐµÐ¶Ð´Ñ\83 Ñ\8dÑ\82ой (%s) и "
+"дÑ\80Ñ\83гими Ð·Ð¾Ð½Ð°Ð¼Ð¸. Ð¢Ñ\80аÑ\84иком <em>'зон-назнаÑ\87ениÑ\8f'</em> Ñ\8fвлÑ\8fеÑ\82Ñ\81Ñ\8f Ð¿ÐµÑ\80енапÑ\80авленнÑ\8bй "
+"трафик <strong>'исходящий из %q'</strong>. Трафиком <em>'зон-источников'</"
+"em> является трафик <strong>'направленый в %q'</strong>. Перенаправление "
+"является <em>'однонаправленным'</em>, то есть перенаправление из lan в wan "
+"<em>'не'</em> допускает перенаправление трафика из wan в lan."
 
 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 ""
-"На этой странице можно изменить расширенные настройки перенаправления "
-"портов. В большинстве случаев нет необходимости изменять эти параметры."
+"На этой странице можно изменить расширенные настройки перенаправления портов."
+"<br />В большинстве случаев нет необходимости изменять эти параметры."
 
 msgid ""
 "This page allows you to change advanced properties of the traffic rule "
 "entry, such as matched source and destination hosts."
 msgstr ""
-"На этой странице можно изменить расширенные настройки правил для трафика. В "
-"большинстве случаев нет необходимости изменять эти параметры."
+"На этой странице можно изменить расширенные настройки правил для трафика."
+"<br />В большинстве случаев нет необходимости изменять эти параметры."
 
-#, 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 "
@@ -443,18 +473,18 @@ msgid ""
 "forwarded traffic between different networks within the zone. <em>Covered "
 "networks</em> specifies which available networks are members of this zone."
 msgstr ""
-"Ð\94аннаÑ\8f Ñ\81екÑ\86иÑ\8f Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñ\8fеÑ\82 Ð¸Ð·Ð¼ÐµÐ½Ñ\8fÑ\82Ñ\8c Ð¾Ð±Ñ\89ие Ð½Ð°Ñ\81Ñ\82Ñ\80ойки %q. Ð\9eпÑ\86ии <em>вÑ\85одÑ\8fÑ\89ий</em> "
-"и <em>исходящий</em> устанавливают политику по умолчанию для входящего и "
-"иÑ\81Ñ\85одÑ\8fÑ\89его Ñ\82Ñ\80аÑ\84ика. Ð\9eпÑ\86иÑ\8f <em>пеÑ\80енапÑ\80авление</em> Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñ\8fеÑ\82 Ñ\83Ñ\81Ñ\82ановиÑ\82Ñ\8c "
-"политику для трафика, который перенаправляется через несколько сетей в зоне. "
-"Пункт <em>использовать сети</em> позволяет указать, какие сети являются "
-"частью данной зоны."
+"СÑ\82Ñ\80аниÑ\86а Ñ\81одеÑ\80жиÑ\82 Ð¾Ð±Ñ\89ие Ñ\81войÑ\81Ñ\82ва %q. Ð ÐµÐ¶Ð¸Ð¼Ñ\8b <em>'Ð\92Ñ\85одÑ\8fÑ\89ий Ñ\82Ñ\80аÑ\84ик'</em> Ð¸ "
+"<em>'Исходящий трафик'</em> устанавливают политики по умолчанию для трафика, "
+"поÑ\81Ñ\82Ñ\83паÑ\8eÑ\89его Ð¸ Ð¿Ð¾ÐºÐ¸Ð´Ð°Ñ\8eÑ\89его Ñ\8dÑ\82Ñ\83 Ð·Ð¾Ð½Ñ\83, Ð² Ñ\82о Ð²Ñ\80емÑ\8f ÐºÐ°Ðº Ñ\80ежим "
+"<em>'Перенаправление'</em> описывает политику пересылки трафика между "
+"различными сетями внутри зоны. <em>'Использовать сети'</em> указывает, какие "
+"доступные сети являются членами этой зоны."
 
 msgid "Thursday"
-msgstr ""
+msgstr "Четверг"
 
 msgid "Time in UTC"
-msgstr ""
+msgstr "Время UTC"
 
 msgid "To %s at %s on <var>this device</var>"
 msgstr "К %s, порту %s на <var>этом устройстве</var>"
@@ -487,7 +517,7 @@ msgstr ""
 "портов маршрутизатора."
 
 msgid "Tuesday"
-msgstr ""
+msgstr "Вторник"
 
 msgid "Via %s"
 msgstr "Через %s"
@@ -496,16 +526,16 @@ msgid "Via %s at %s"
 msgstr "Через %s, порт %s"
 
 msgid "Wednesday"
-msgstr ""
+msgstr "Среда"
 
 msgid "Week Days"
-msgstr ""
+msgstr "Дни недели"
 
 msgid ""
 "You may specify multiple by selecting \"-- custom --\" and then entering "
 "protocols separated by space."
 msgstr ""
-"Вы можете указать несколько, выбрав \"-- пользовательский --\" и перечислив "
+"Вы можете указать несколько, выбрав '-- пользовательский --' и перечислив "
 "через пробел названия протоколов."
 
 msgid "Zone %q"
@@ -532,14 +562,41 @@ msgstr "любой IP-адрес маршрутизатора"
 msgid "any zone"
 msgstr "любой зоны"
 
+msgid "day"
+msgstr "день"
+
 msgid "don't track"
 msgstr "не отслеживать"
 
 msgid "drop"
 msgstr "не обрабатывать"
 
+msgid "hour"
+msgstr "час"
+
+msgid "minute"
+msgstr "минута"
+
+msgid "not"
+msgstr "нет"
+
+msgid "port"
+msgstr "порт"
+
+msgid "ports"
+msgstr "порты"
+
 msgid "reject"
 msgstr "отвергать"
 
+msgid "second"
+msgstr "секунда"
+
 msgid "traffic"
-msgstr ""
+msgstr "трафик"
+
+msgid "type"
+msgstr "тип"
+
+msgid "types"
+msgstr "типы"
index 1dda5bf53a441a5e6a4bcb87ef2455c3274ea5c0..a185625a027a08d6731e7f946b3a3fd30589b068 100644 (file)
@@ -35,6 +35,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr ""
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr ""
 
@@ -80,9 +86,24 @@ msgstr ""
 msgid "Destination zone"
 msgstr ""
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr ""
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr ""
 
@@ -149,6 +170,15 @@ msgstr ""
 msgid "General Settings"
 msgstr ""
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr ""
 
@@ -182,6 +212,12 @@ msgstr ""
 msgid "Limit log messages"
 msgstr ""
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr ""
 
@@ -275,6 +311,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -301,6 +343,12 @@ msgstr ""
 msgid "Rewrite to source %s, %s"
 msgstr ""
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr ""
 
@@ -458,14 +506,41 @@ msgstr ""
 msgid "any zone"
 msgstr ""
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr ""
 
 msgid "drop"
 msgstr ""
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr ""
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index f9fd92072775dea7924f2faba29188b1ca1373b9..c98eafa09aa08c803e53eefe88ed4d90ac6b7db5 100644 (file)
@@ -36,6 +36,12 @@ msgstr "<var>%d</var> pkt. per <var>%s</var>, brustna <var>%d</var> pkt."
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var> och gränsen till %s"
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Åtgärd"
 
@@ -81,9 +87,24 @@ msgstr "Destinationsport"
 msgid "Destination zone"
 msgstr "Destinationens zon"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr "Skriv inte om igen"
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Släpp ogiltiga paket"
 
@@ -150,6 +171,15 @@ msgstr "Från %s i %s med källa %s och %s"
 msgid "General Settings"
 msgstr "Generella inställningar"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -183,6 +213,12 @@ msgstr "Intern zon"
 msgid "Limit log messages"
 msgstr "Begränsa loggmeddelanden"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr ""
 
@@ -281,6 +317,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr "Starta om brandvägg"
 
@@ -307,6 +349,12 @@ msgstr "Skriv om igen till källan %s"
 msgid "Rewrite to source %s, %s"
 msgstr ""
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr "IP-adress för SNAT"
 
@@ -464,14 +512,41 @@ msgstr ""
 msgid "any zone"
 msgstr "alla zoner"
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr "spåra inte"
 
 msgid "drop"
 msgstr "släpp"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "neka"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr "trafik"
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index bec02d4486736a44abf9856307ede0713200e342..62c4a2e84a7e153edd4b3b0e6f2b82e89a41e49e 100644 (file)
@@ -28,6 +28,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr ""
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr ""
 
@@ -73,9 +79,24 @@ msgstr ""
 msgid "Destination zone"
 msgstr ""
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr ""
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr ""
 
@@ -142,6 +163,15 @@ msgstr ""
 msgid "General Settings"
 msgstr ""
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr ""
 
@@ -175,6 +205,12 @@ msgstr ""
 msgid "Limit log messages"
 msgstr ""
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr ""
 
@@ -268,6 +304,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -294,6 +336,12 @@ msgstr ""
 msgid "Rewrite to source %s, %s"
 msgstr ""
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr ""
 
@@ -451,14 +499,41 @@ msgstr ""
 msgid "any zone"
 msgstr ""
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr ""
 
 msgid "drop"
 msgstr ""
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr ""
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index 5bb897cc28e336076d51b42289b21fc6d61184a1..f23d10aafc677fb12414ebfc03510bdf7ab22bdb 100644 (file)
@@ -35,6 +35,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr ""
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr ""
 
@@ -80,9 +86,24 @@ msgstr ""
 msgid "Destination zone"
 msgstr ""
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr ""
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr ""
 
@@ -149,6 +170,15 @@ msgstr ""
 msgid "General Settings"
 msgstr ""
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr ""
 
@@ -182,6 +212,12 @@ msgstr ""
 msgid "Limit log messages"
 msgstr ""
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr ""
 
@@ -275,6 +311,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -301,6 +343,12 @@ msgstr ""
 msgid "Rewrite to source %s, %s"
 msgstr ""
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr ""
 
@@ -458,14 +506,41 @@ msgstr ""
 msgid "any zone"
 msgstr ""
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr ""
 
 msgid "drop"
 msgstr ""
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr ""
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index 8ca1428e712e724eec37264367a422765790799d..de72ec6e0afa25d8e3f454fc0d91093dcc2d31c8 100644 (file)
@@ -39,6 +39,12 @@ msgstr "<var>%d</var> пакетів за <var>%s</var>, підряд <var>%d</v
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var> з лімітом %s"
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Дія"
 
@@ -88,9 +94,24 @@ msgstr "Порт призначення"
 msgid "Destination zone"
 msgstr "Зона призначення"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr "Не перезаписувати"
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Відкидати помилкові пакети"
 
@@ -157,6 +178,15 @@ msgstr "%s у %s з вихідним %s та %s"
 msgid "General Settings"
 msgstr "Загальні настройки"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -190,6 +220,12 @@ msgstr "Внутрішня зона"
 msgid "Limit log messages"
 msgstr "Обмеження повідомлень журналу"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr "Затискання MSS"
 
@@ -295,6 +331,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "Переспрямувати відповідний вхідний трафік на заданий внутрішній вузол"
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -323,6 +365,12 @@ msgstr "перезапис на вихідний %s"
 msgid "Rewrite to source %s, %s"
 msgstr "перезапис на вихідний %s, %s"
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr "IP-адреса SNAT"
 
@@ -506,14 +554,41 @@ msgstr "будь-який IP роутера"
 msgid "any zone"
 msgstr "будь-якій зоні"
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr "не відстеж."
 
 msgid "drop"
 msgstr "опускати"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "відкидати"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index 9509613f238531efae07dafc73336fe7124d8028..24452ff1c00cbb547c04d4a389770c2fb78ac3ea 100644 (file)
@@ -40,6 +40,12 @@ msgstr ""
 msgid "<var>%s</var> and limit to %s"
 msgstr ""
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "Action"
 
@@ -86,9 +92,24 @@ msgstr "Cổng điểm đến"
 msgid "Destination zone"
 msgstr "Điểm đến"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr ""
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "Bỏ qua nhưng gói không hợp lý"
 
@@ -156,6 +177,15 @@ msgstr ""
 msgid "General Settings"
 msgstr ""
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr ""
 
@@ -191,6 +221,12 @@ msgstr ""
 msgid "Limit log messages"
 msgstr ""
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 #, fuzzy
 msgid "MSS clamping"
 msgstr "MSS Clamping"
@@ -285,6 +321,12 @@ msgstr ""
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr ""
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr ""
 
@@ -311,6 +353,12 @@ msgstr ""
 msgid "Rewrite to source %s, %s"
 msgstr ""
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr ""
 
@@ -473,14 +521,41 @@ msgstr ""
 msgid "any zone"
 msgstr ""
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr ""
 
 msgid "drop"
 msgstr "drop"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "Không chấp nhận"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr ""
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index f21d49250afed0e5280862c11d4dde24e20e9f41..9e9c64d6704b584b90c98ec243801e801ffc5ff9 100644 (file)
@@ -30,14 +30,20 @@ msgid "(Unnamed SNAT)"
 msgstr "(未命名 SNAT)"
 
 msgid "<var>%d</var> pkts. per <var>%s</var>"
-msgstr "<var>%d</var> 数据包。每 <var>%s</var>"
+msgstr "<var>%d</var> 数据包/<var>%s</var>"
 
 msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
-msgstr "<var>%d</var> 数据包。每 <var>%s</var>,突发 <var>%d</var> 数据包。"
+msgstr "<var>%d</var> 数据包/<var>%s</var>,突发 <var>%d</var> 数据包。"
 
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var> 并限制到 %s"
 
+msgid "Accept forward"
+msgstr "接受转发"
+
+msgid "Accept input"
+msgstr "接受入站"
+
 msgid "Action"
 msgstr "动作"
 
@@ -85,9 +91,24 @@ msgstr "目标端口"
 msgid "Destination zone"
 msgstr "目标区域"
 
+msgid "Disable"
+msgstr "禁用"
+
+msgid "Discard forward"
+msgstr "丢弃转发"
+
+msgid "Discard input"
+msgstr "丢弃入站"
+
 msgid "Do not rewrite"
 msgstr "不重写"
 
+msgid "Do not track forward"
+msgstr "不跟踪转发"
+
+msgid "Do not track input"
+msgstr "不跟踪入站"
+
 msgid "Drop invalid packets"
 msgstr "丢弃无效数据包"
 
@@ -154,6 +175,15 @@ msgstr "来自 %s 位于 %s 源端口 %s 源 MAC %s"
 msgid "General Settings"
 msgstr "基本设置"
 
+msgid "IP"
+msgstr "IP"
+
+msgid "IP range"
+msgstr "IP 范围"
+
+msgid "IPs"
+msgstr "IP"
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -187,6 +217,12 @@ msgstr "内部区域"
 msgid "Limit log messages"
 msgstr "限制日志信息"
 
+msgid "MAC"
+msgstr "MAC"
+
+msgid "MACs"
+msgstr "MAC"
+
 msgid "MSS clamping"
 msgstr "MSS 钳制"
 
@@ -281,6 +317,12 @@ msgstr "重定向匹配的入站流量到内部主机的端口"
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "重定向匹配的入站流量到指定的内部主机"
 
+msgid "Refuse forward"
+msgstr "拒绝转发"
+
+msgid "Refuse input"
+msgstr "拒绝入站"
+
 msgid "Restart Firewall"
 msgstr "重启防火墙"
 
@@ -307,6 +349,12 @@ msgstr "源地址改写成 %s"
 msgid "Rewrite to source %s, %s"
 msgstr "源地址改写成 %s, %s"
 
+msgid "Rule is disabled"
+msgstr "规则已禁用"
+
+msgid "Rule is enabled"
+msgstr "规则已启用"
+
 msgid "SNAT IP address"
 msgstr "SNAT IP 地址"
 
@@ -475,14 +523,41 @@ msgstr "所有路由 IP"
 msgid "any zone"
 msgstr "所有区域"
 
+msgid "day"
+msgstr "日"
+
 msgid "don't track"
 msgstr "不跟踪"
 
 msgid "drop"
 msgstr "丢弃"
 
+msgid "hour"
+msgstr "小时"
+
+msgid "minute"
+msgstr "分钟"
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr "端口"
+
+msgid "ports"
+msgstr "端口"
+
 msgid "reject"
 msgstr "拒绝"
 
+msgid "second"
+msgstr "秒"
+
 msgid "traffic"
 msgstr "通信"
+
+msgid "type"
+msgstr "类型"
+
+msgid "types"
+msgstr "类型"
index eceef36632d6004afbb3742eabccd9a5c4975bb1..afc9c4e33c1d19e6b75f0242a99b60a8e8138670 100644 (file)
@@ -38,6 +38,12 @@ msgstr "<var>%d</var> 資料包。每 <var>%s</var>,突發 <var>%d</var> 資
 msgid "<var>%s</var> and limit to %s"
 msgstr "<var>%s</var> 並限制到 %s"
 
+msgid "Accept forward"
+msgstr ""
+
+msgid "Accept input"
+msgstr ""
+
 msgid "Action"
 msgstr "動作"
 
@@ -85,9 +91,24 @@ msgstr "目標埠"
 msgid "Destination zone"
 msgstr "目標區域"
 
+msgid "Disable"
+msgstr ""
+
+msgid "Discard forward"
+msgstr ""
+
+msgid "Discard input"
+msgstr ""
+
 msgid "Do not rewrite"
 msgstr "不重寫"
 
+msgid "Do not track forward"
+msgstr ""
+
+msgid "Do not track input"
+msgstr ""
+
 msgid "Drop invalid packets"
 msgstr "丟棄無效資料包"
 
@@ -154,6 +175,15 @@ msgstr "來自 %s 位於 %s 源埠 %s 源 MAC %s"
 msgid "General Settings"
 msgstr "基本設定"
 
+msgid "IP"
+msgstr ""
+
+msgid "IP range"
+msgstr ""
+
+msgid "IPs"
+msgstr ""
+
 msgid "IPv4"
 msgstr "IPv4"
 
@@ -187,6 +217,12 @@ msgstr "內部區域"
 msgid "Limit log messages"
 msgstr "限制日誌資訊"
 
+msgid "MAC"
+msgstr ""
+
+msgid "MACs"
+msgstr ""
+
 msgid "MSS clamping"
 msgstr "MSS 鉗制"
 
@@ -280,6 +316,12 @@ msgstr "重定向匹配的入站流量到內部主機的埠"
 msgid "Redirect matched incoming traffic to the specified internal host"
 msgstr "重定向匹配的入站流量到指定的內部主機"
 
+msgid "Refuse forward"
+msgstr ""
+
+msgid "Refuse input"
+msgstr ""
+
 msgid "Restart Firewall"
 msgstr "重啟防火牆"
 
@@ -306,6 +348,12 @@ msgstr "源位址改寫成 %s"
 msgid "Rewrite to source %s, %s"
 msgstr "源位址改寫成 %s, %s"
 
+msgid "Rule is disabled"
+msgstr ""
+
+msgid "Rule is enabled"
+msgstr ""
+
 msgid "SNAT IP address"
 msgstr "SNAT IP 位址"
 
@@ -474,14 +522,41 @@ msgstr "所有路由 IP"
 msgid "any zone"
 msgstr "所有區域"
 
+msgid "day"
+msgstr ""
+
 msgid "don't track"
 msgstr "不跟蹤"
 
 msgid "drop"
 msgstr "丟棄"
 
+msgid "hour"
+msgstr ""
+
+msgid "minute"
+msgstr ""
+
+msgid "not"
+msgstr ""
+
+msgid "port"
+msgstr ""
+
+msgid "ports"
+msgstr ""
+
 msgid "reject"
 msgstr "拒絕"
 
+msgid "second"
+msgstr ""
+
 msgid "traffic"
 msgstr "通訊"
+
+msgid "type"
+msgstr ""
+
+msgid "types"
+msgstr ""
index 7bb47612b6bf8bcb5e611996aa7269dddcb8b302..92b3afc80dd857f3b9fc803499be1e62a9f2f8b7 100644 (file)
@@ -33,7 +33,7 @@ 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 % addr)
+               local util = io.popen(cmd % luci.util.shellquote(addr))
                if util then
                        while true do
                                local ln = util:read("*l")
@@ -52,21 +52,21 @@ function diag_command(cmd, addr)
 end
 
 function diag_ping(addr)
-       diag_command("ping -c 5 -W 1 %q 2>&1", 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 %q 2>&1", addr)
+       diag_command("traceroute -q 1 -w 1 -n %s 2>&1", addr)
 end
 
 function diag_nslookup(addr)
-       diag_command("nslookup %q 2>&1", addr)
+       diag_command("nslookup %s 2>&1", addr)
 end
 
 function diag_ping6(addr)
-       diag_command("ping6 -c 5 %q 2>&1", addr)
+       diag_command("ping6 -c 5 %s 2>&1", addr)
 end
 
 function diag_traceroute6(addr)
-       diag_command("traceroute6 -q 1 -w 2 -n %q 2>&1", addr)
+       diag_command("traceroute6 -q 1 -w 2 -n %s 2>&1", addr)
 end
index fe205d053b73cb315f7662be8934507882413a85..eac1ecdcf547bc243f2a7c7f6d0ba5f5219c3983 100644 (file)
@@ -53,7 +53,7 @@ local has_traceroute6 = fs.access("/usr/bin/traceroute6")
        }
 //]]></script>
 
-<form method="post" action="<%=pcdata(luci.http.getenv("REQUEST_URI"))%>">
+<form method="post" action="<%=pcdata(FULL_REQUEST_URI)%>">
        <div class="cbi-map">
                <h2 name="content"><%:Diagnostics%></h2>
 
index a4ba704f71b8fd4c6cd0af633550435c8a2adc7e..7dd2c8a17a778465bb06d25534c06f083cad9285 100644 (file)
@@ -1,33 +1,32 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: freifunk-policyrouting\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-25 12:26+0200\n"
-"PO-Revision-Date: 2012-08-15 15:27+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2012-08-15 15:27+0300\n"
+"PO-Revision-Date: 2018-01-26 01:21+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid ""
 "All traffic from interfaces belonging to these zones will be sent via a "
 "gateway in the mesh network."
 msgstr ""
-"Ð\92еÑ\81Ñ\8c Ñ\82Ñ\80аÑ\84ик Ð¾Ñ\82 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81ов, Ð¿Ñ\80инадлежаÑ\89иÑ\85 Ñ\8dÑ\82им Ð·Ð¾Ð½Ð°Ð¼, Ð±Ñ\83деÑ\82 Ð¿Ð¾Ñ\81лан Ñ\87еÑ\80ез "
-"Ñ\88лÑ\8eз Ð² Ñ\8fÑ\87еиÑ\81Ñ\82ой Ñ\81еÑ\82и."
+"Ð\92еÑ\81Ñ\8c Ñ\82Ñ\80аÑ\84ик Ð¸Ð· Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81ов, Ð¿Ñ\80инадлежаÑ\89иÑ\85 Ðº Ñ\8dÑ\82им Ð·Ð¾Ð½Ð°Ð¼, Ð±Ñ\83деÑ\82 Ð¾Ñ\82пÑ\80авлен "
+"Ñ\87еÑ\80ез Ñ\88лÑ\8eз Ð² Ñ\81еÑ\82и Mesh."
 
 msgid "Enable Policy Routing"
 msgstr "Разрешить политику маршрутизации"
 
-#, fuzzy
 msgid "Fallback to mesh"
-msgstr "Откат к ячеистой сети"
+msgstr "Oткат к Mesh сети"
 
 msgid "Firewall zones"
 msgstr "Зоны межсетевого экрана"
@@ -38,16 +37,16 @@ msgid ""
 "connection as a fallback. If you do not want this and instead block that "
 "traffic then you should select this option."
 msgstr ""
-"ТÑ\80аÑ\84ик, Ð¿Ñ\80инадлежаÑ\89ий Ð²Ñ\8bбÑ\80аннÑ\8bм Ð·Ð¾Ð½Ð°Ð¼ Ð¼ÐµÐ¶Ñ\81еÑ\82евого Ñ\8dкÑ\80ана, Ð¼Ð°Ñ\80Ñ\88Ñ\80Ñ\83Ñ\82изиÑ\80Ñ\83еÑ\82Ñ\81Ñ\8f "
-"через ваше интернет-соединение, если маршрут по умолчанию не был получен из "
-"ячеистой сети. Если вас это не устраивает, то выберите эту опцию и данный "
-"трафик будет заблокирован."
+"Ð\95Ñ\81ли Ð¼Ð°Ñ\80Ñ\88Ñ\80Ñ\83Ñ\82 Ð¿Ð¾ Ñ\83молÑ\87аниÑ\8e Ð½Ðµ Ð¿Ð¾Ð»Ñ\83Ñ\87ен Ð¾Ñ\82 Ñ\81еÑ\82и Mesh, Ñ\82о Ñ\82Ñ\80аÑ\84ик Ð¿Ñ\80инадлежаÑ\89ий "
+"выбранным зонам межсетевого экрана, перенаправляется через Интернет в "
+"качестве резервного. Если вас это не устраивает, то выберите эту опцию и "
+"данный трафик будет заблокирован."
 
 msgid ""
 "If your own gateway is not available then fallback to the mesh default "
 "gateway."
 msgstr ""
-"Если ваш шлюз не доступен, откатиться к использованию шлюза ячеистой сети по "
+"Если ваш шлюз не доступен, откатиться к использованию шлюза Mesh сети по "
 "умолчанию."
 
 msgid "Policy Routing"
@@ -65,6 +64,6 @@ msgid ""
 msgstr ""
 "На этих страницах Вы можете настроить политику маршрутизации для "
 "определённых зон межсетевого экрана. Это может быть полезно, если вы хотите "
-"иÑ\81полÑ\8cзоваÑ\82Ñ\8c Ð¸Ð½Ñ\82еÑ\80неÑ\82-соединения только для себя. Ваш трафик в этом случае "
-"бÑ\83деÑ\82 Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ñ\82олÑ\8cко Ð²Ð°Ñ\88е Ð¸Ð½Ñ\82еÑ\80неÑ\82-соединение, в то время как трафик "
-"ячеистой сети будет использовать другой шлюз."
+"иÑ\81полÑ\8cзоваÑ\82Ñ\8c Ð\98нÑ\82еÑ\80неÑ\82 соединения только для себя. Ваш трафик в этом случае "
+"бÑ\83деÑ\82 Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ñ\82олÑ\8cко Ð²Ð°Ñ\88е Ð\98нÑ\82еÑ\80неÑ\82 соединение, в то время как трафик "
+"Mesh сети будет использовать другой шлюз в сети Mesh."
diff --git a/applications/luci-app-fwknopd/po/ru/fwknopd.po b/applications/luci-app-fwknopd/po/ru/fwknopd.po
new file mode 100644 (file)
index 0000000..c892282
--- /dev/null
@@ -0,0 +1,119 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: fwknopd\n"
+"POT-Creation-Date: 2017-12-01 12:15+0300\n"
+"PO-Revision-Date: 2018-01-13 14:53+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"
+
+msgid ""
+"Allow SPA clients to request access to services through an iptables firewall "
+"instead of just to it."
+msgstr ""
+"Разрешить SPA клиентам запрашивать доступ к сервисам через iptables "
+"межсетевого экрана, а не напрямую."
+
+msgid "Allow SPA clients to request forwarding destination by DNS name."
+msgstr ""
+"Разрешить SPA клиентам запрашивать направление переадресации по DNS-имени."
+
+msgid "Base 64 key"
+msgstr "64-битный ключ"
+
+msgid ""
+"Define a set of ports and protocols (tcp or udp) that will be opened if a "
+"valid knock sequence is seen. If this entry is not set, fwknopd will attempt "
+"to honor any proto/port request specified in the SPA data (unless of it "
+"matches any “RESTRICT_PORTS” entries). Multiple entries are comma-separated."
+msgstr ""
+"Задайте порты и протоколы (TCP или UDP), которые будут открыты, если задана "
+"допустимая последовательность защищенного постукивания. Если порты и "
+"протоколы не заданы, fwknopd постарается исполнить любой прото/порт запрос, "
+"указанный в SPA данных (если он соответствует любой 'RESTRICT_PORTS' "
+"записи). Последовательность данных, разделенных запятыми."
+
+msgid ""
+"Define the length of time access will be granted by fwknopd through the "
+"firewall after a valid knock sequence from a source IP address. If "
+"“FW_ACCESS_TIMEOUT” is not set then the default timeout of 30 seconds will "
+"automatically be set."
+msgstr ""
+"Задайте промежуток времени, в течение которого демоном fwknopd будет "
+"предоставлен доступ через  межсетевой экран, после допустимой "
+"последовательности защищенного постукивания из исходящего IP-адреса. Если "
+"параметр 'FW_ACCESS_TIMEOUT' не установлен, то автоматически устанавливается "
+"время ожидания по умолчанию 30 секунд."
+
+msgid ""
+"Define the symmetric key used for decrypting an incoming SPA packet that is "
+"encrypted by the fwknop client with Rijndael."
+msgstr ""
+"Задайте симметричный ключ, используемый для расшифровки входящего SPA пакета "
+"зашифрованного fwknop клиентом с помощью Rijndael."
+
+msgid "Enable Uci/Luci control"
+msgstr "Включить управление в Uci/LuCI"
+
+msgid "Enable config overwrite"
+msgstr "Настроить config файл"
+
+msgid "Firewall Knock Daemon"
+msgstr "Firewall Knock Daemon"
+
+msgid "Firewall Knock Operator"
+msgstr "Настройка защищенного постукивания межсетевого экрана"
+
+msgid ""
+"Force all SPA packets to contain a real IP address within the encrypted "
+"data. This makes it impossible to use the -s command line argument on the "
+"fwknop client command line, so either -R has to be used to automatically "
+"resolve the external address (if the client behind a NAT) or the client must "
+"know the external IP and set it via the -a argument."
+msgstr ""
+"Обязать все SPA пакеты содержать реальный IP-адрес в зашифрованных данных. "
+"Это делает невозможным использование аргумента командной строки '-s' в "
+"командной строке fwknop клиента, поэтому либо аргумент '-R' должен "
+"использоваться для автоматического разрешения внешнего адреса (если клиент "
+"за NAT), либо клиент должен знать внешний IP и установить его используя "
+"аргумент '-a'."
+
+msgid ""
+"Maximum age in seconds that an SPA packet will be accepted. defaults to 120 "
+"seconds"
+msgstr ""
+"Максимальное время в секундах, в течение которых будет принят SPA пакет, по "
+"умолчанию 120 секунд."
+
+msgid "Normal Key"
+msgstr "Нормальный ключ"
+
+msgid "Specify the ethernet interface on which fwknopd will sniff packets."
+msgstr "Укажите ethernet интерфейс, пакеты которого fwknopd будет снифить."
+
+msgid "The base64 hmac key"
+msgstr "Ключ Base64 HMAC."
+
+msgid "Use ANY for any source ip"
+msgstr "Использовать ЛЮБОЙ, для любого исходящего IP."
+
+msgid ""
+"When unchecked, the config files in /etc/fwknopd will be used as is, "
+"ignoring any settings here."
+msgstr ""
+"Если не отмечено, будет использоваться дефолтный config файл fwknopd  (/etc/"
+"fwknopd), игнорируя любые изменения настроек fwknopd здесь. "
+
+msgid "access.conf stanzas"
+msgstr "Строки config файла access.conf"
+
+msgid "fwknopd.conf config options"
+msgstr "Настройка config файла - fwknopd.conf"
index e58a32f1de941f5fb5f70688e25f82beafcb40b2..206778ffd64134f8a2db8d070491c02a4a41e849 100644 (file)
@@ -1,19 +1,19 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: LuCI: hd_idle\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-04-14 10:33+0200\n"
-"PO-Revision-Date: 2012-08-15 11:24+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
-"MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: hd_idle\n"
+"POT-Creation-Date: 2012-08-15 11:24+0300\n"
+"PO-Revision-Date: 2018-01-07 19:56+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "Disk"
 msgstr "Диск"
@@ -38,15 +38,10 @@ msgid "Idle time unit"
 msgstr "Единицы времени бездействия"
 
 msgid "Settings"
-msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойки"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка"
 
-# Hours
 msgid "h"
 msgstr "ч"
 
-# Minutes (not minimum)
 msgid "min"
 msgstr "мин"
-
-#~ msgid "Enable debug"
-#~ msgstr "Включить отладку"
index 9f313dfb114147dcf1ddda85b40f406a99a5f501..379cccbfc96faef040fb3c8557f217186748b548 100644 (file)
@@ -7,7 +7,7 @@
 include $(TOPDIR)/rules.mk
 
 LUCI_TITLE:=LXC management Web UI
-LUCI_DEPENDS:=+luci-mod-admin-full +lxc +lxc-create +liblxc +rpcd-mod-lxc +getopt +xz
+LUCI_DEPENDS:=+luci-mod-admin-full +lxc +lxc-attach +lxc-console +lxc-create +liblxc +rpcd-mod-lxc +getopt +!LXC_BUSYBOX_OPTIONS:tar
 LUCI_PKGARCH:=all
 
 PKG_MAINTAINER:=Petar Koretic <petar.koretic@sartura.hr>
index ea7adbafbba8884734855e27d0d42b065dc35830..e15915df5df7cd2a2f579fcdaff1c22c1fbd0244 100644 (file)
@@ -14,36 +14,33 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
 
 ]]--
 
-module("luci.controller.lxc", package.seeall)
-
-require "ubus"
-local conn = ubus.connect()
-if not conn then
-    error("Failed to connect to ubus")
-end
+local uci  = require "luci.model.uci".cursor()
+local util = require "luci.util"
+local fs   = require "nixio"
 
+module("luci.controller.lxc", package.seeall)
 
 function fork_exec(command)
-       local pid = nixio.fork()
+       local pid = fs.fork()
        if pid > 0 then
                return
        elseif pid == 0 then
                -- change to root dir
-               nixio.chdir("/")
+               fs.chdir("/")
 
                -- patch stdin, out, err to /dev/null
-               local null = nixio.open("/dev/null", "w+")
+               local null = fs.open("/dev/null", "w+")
                if null then
-                       nixio.dup(null, nixio.stderr)
-                       nixio.dup(null, nixio.stdout)
-                       nixio.dup(null, nixio.stdin)
+                       fs.dup(null, fs.stderr)
+                       fs.dup(null, fs.stdout)
+                       fs.dup(null, fs.stdin)
                        if null:fileno() > 2 then
                                null:close()
                        end
                end
 
                -- replace with target command
-               nixio.exec("/bin/sh", "-c", command)
+               fs.exec("/bin/sh", "-c", command)
        end
 end
 
@@ -71,55 +68,51 @@ function index()
 end
 
 function lxc_get_downloadable()
-       luci.http.prepare_content("application/json")
-
-       local f = io.popen('uname -m', 'r')
-       local target = f:read('*a')
-       f:close()
-       target = target:gsub("^%s*(.-)%s*$", "%1")
-
+       local target = lxc_get_arch_target()
        local templates = {}
 
-       local f = io.popen('lxc-create -n just_want_to_list_available_lxc_templates -t download -- --list', 'r')
-
+       local f = io.popen('sh /usr/share/lxc/templates/lxc-download --list --no-validate --server %s 2>/dev/null'
+               % util.shellquote(uci:get("lxc", "lxc", "url")), 'r')
+       local line
        for line in f:lines() do
-               local dist,version = line:match("^(%S+)%s+(%S+)%s+" .. target .. "%s+default%s+%S+$")
-               if dist~=nil and version~=nil then templates[#templates + 1] = dist .. ":" .. version end
+               local dist, version, dist_target = line:match("^(%S+)%s+(%S+)%s+(%S+)%s+default%s+%S+$")
+               if dist and version and dist_target == target then
+                       templates[#templates+1] = "%s:%s" %{ dist, version }
+               end
        end
 
        f:close()
+
+       luci.http.prepare_content("application/json")
        luci.http.write_json(templates)
 end
 
 function lxc_create(lxc_name, lxc_template)
        luci.http.prepare_content("text/plain")
 
-       local uci = require("uci").cursor()
-
-       local url = uci:get("lxc", "lxc", "url")
-
        if not pcall(dofile, "/etc/openwrt_release") then
                return luci.http.write("1")
        end
 
-       local f = io.popen('uname -m', 'r')
-       local target = f:read('*a')
-       f:close()
-       target = target:gsub("^%s*(.-)%s*$", "%1")
-
-       local lxc_dist = lxc_template:gsub("(.*):(.*)", '%1')
-       local lxc_release = lxc_template:gsub("(.*):(.*)", '%2')
-
-       local data = conn:call("lxc", "create", { name = lxc_name, template = "download", args = { "--server", url,  "--no-validate", "--dist", lxc_dist, "--release", lxc_release, "--arch", target } } )
-
-       luci.http.write(data)
+       local lxc_dist, lxc_release = lxc_template:match("^(.+):(.+)$")
+
+       luci.http.write(util.ubus("lxc", "create", {
+               name = lxc_name,
+               template = "download",
+               args = {
+                       "--server", uci:get("lxc", "lxc", "url"),
+                       "--no-validate",
+                       "--dist", lxc_dist,
+                       "--release", lxc_release,
+                       "--arch", lxc_get_arch_target()
+               }
+       }))
 end
 
 function lxc_action(lxc_action, lxc_name)
-       luci.http.prepare_content("application/json")
-
-       local data, ec = conn:call("lxc", lxc_action, lxc_name and { name = lxc_name} or {} )
+       local data, ec = util.ubus("lxc", lxc_action, lxc_name and { name = lxc_name } or {})
 
+       luci.http.prepare_content("application/json")
        luci.http.write_json(ec and {} or data)
 end
 
@@ -127,6 +120,7 @@ function lxc_get_config_path()
        local f = io.open("/etc/lxc/lxc.conf", "r")
        local content = f:read("*all")
        f:close()
+
        local ret = content:match('^%s*lxc.lxcpath%s*=%s*([^%s]*)')
        if ret then
                return ret .. "/"
@@ -165,3 +159,22 @@ function lxc_configuration_set(lxc_name)
        luci.http.write("0")
 end
 
+function lxc_get_arch_target()
+       local target = fs.uname().machine
+       local target_map = {
+               armv5  = "armel",
+               armv6  = "armel",
+               armv7  = "armhf",
+               armv8  = "arm64",
+               x86_64 = "amd64"
+       }
+
+       local k, v
+       for k, v in pairs(target_map) do
+               if target:find(k) then
+                       return v
+               end
+       end
+
+       return target
+end
index ac0fdff332b529eac2c16999781bce011b3bc90a..7040f0ecff70e1029e1a148b2624d96425ecd199 100644 (file)
@@ -16,7 +16,9 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
 
 local fs = require "nixio.fs"
 
-m = Map("lxc", translate("LXC Containers"))
+m = Map("lxc", translate("LXC Containers"),
+       translate("<b>Please note:</b> For LXC Containers you need a custom OpenWrt image.<br />")
+       .. translate("The image should include at least support for 'kernel cgroups', 'kernel namespaces' and 'miscellaneous LXC related options'."))
 
 if fs.access("/etc/config/lxc") then
        m:section(SimpleSection).template = "lxc"
index edfff8e063765fb81b61b2df71ec263b00f2eb14..5b1fb0411c1a43f98adf654fcca4acfac77194ce 100644 (file)
@@ -14,6 +14,32 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
 
 -%>
 
+<%
+local fs     = require "nixio"
+local target = fs.uname().machine
+%>
+
+<style type="text/css">
+table.cbi-section-table th,
+table.cbi-section-table td,
+.cbi-section-table-cell,
+.cbi-input-select,
+.cbi-input-text
+{
+       text-align:left;
+       vertical-align:top;
+       padding-left:2px;
+       margin-right:auto;
+       margin-left:0px;
+}
+
+.cbi-input-select,
+.cbi-input-text
+{
+       width:15em;
+}
+</style>
+
 <fieldset class="cbi-section">
        <legend><%:Available Containers%></legend>
        <div class="cbi-section-node">
@@ -43,7 +69,7 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
                        </tr>
                        <tr id="tr_holder">
                                <td>
-                                       <input type="text" id="tx_name" placeholder="<%:Enter new name%>" value='' />
+                                       <input class="cbi-input-text" type="text" id="tx_name" placeholder="<%:Enter new name%>" value='' />
                                </td>
                                <td>
                                        <select id="s_template" class="cbi-input-select cbi-button">
@@ -65,21 +91,23 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
 <hr/>
 
 <script type="text/javascript" src="<%=resource%>/cbi.js"></script>
-<script type="text/javascript">//<![CDATA[
-
-       window.img = { "red" : "<%=resource%>/cbi/red.gif", "green" : "<%=resource%>/cbi/green.gif", "purple" : "<%=resource%>/cbi/purple.gif" }
-       window.states = {  "STOPPED" : "red", "RUNNING" : "green", "FROZEN" : "purple"}
+<script type="text/javascript">
+//<![CDATA[
+       window.img    = { "red" : "<%=resource%>/cbi/red.gif", "green" : "<%=resource%>/cbi/green.gif", "purple" : "<%=resource%>/cbi/purple.gif" }
+       window.states = { "STOPPED" : "red", "RUNNING" : "green", "FROZEN" : "purple" }
 
-       var t_lxc_list = document.getElementById('t_lxc_list');
-       var loader_html = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" width="16" height="16" style="vertical-align:middle" /> ';
+       var t_lxc_list  = document.getElementById('t_lxc_list');
+       var loader_html = '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" width="16" height="16" style="vertical-align:middle" />';
        var timeout_msg = 0
        var output_list = document.getElementById("lxc-list-output")
-       var output_add = document.getElementById("lxc-add-output")
-       var loader_add = document.getElementById("lxc-add-loader")
+       var output_add  = document.getElementById("lxc-add-output")
+       var loader_add  = document.getElementById("lxc-add-loader")
+
+       info_message(output_add, "Template download in progress, please be patient!", 10000)
 
        function lxc_create(tr)
        {
-               var lxc_name = tr.querySelector("#tx_name").value.trim()
+               var lxc_name = tr.querySelector("#tx_name").value.replace(/\s/g,'')
                var lxc_template = tr.querySelector("#s_template").value
                var bt_create = tr.querySelector("#bt_create")
 
@@ -92,7 +120,13 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
                if (!lxc_name || !lxc_name.length)
                {
                        bt_create.disabled = false
-                       return info_message(output_add, "Name cannot be empty!", 4000)
+                       return info_message(output_add, "The 'Name' field must not be empty!", 4000)
+               }
+
+               if (!lxc_template)
+               {
+                       bt_create.disabled = false
+                       return info_message(output_add, "The 'Template' field must not be empty!", 4000)
                }
 
                loading(loader_add)
@@ -101,6 +135,7 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
                function(x)
                {
                        bt_create.disabled = false
+
                        loading(loader_add, 0)
 
                        if (!x)
@@ -116,16 +151,16 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
 
                var actions = ''
                actions += '<input type="button" onclick="action_handler(this)" data-action="start" value="<%:Start%>" class="cbi-button cbi-button-apply" />'
-               actions+= '<input type="button" onclick="action_handler(this)" data-action="stop" value="<%:Stop%>" class="cbi-button cbi-button-reset" />'
-               actions+= '<input type="button" onclick="action_handler(this)" data-action="destroy" value="<%:Delete%>" class="cbi-button cbi-button-remove" />'
-               actions+= ' <select class="cbi-input-select cbi-button" onchange="action_more_handler(this)">\
-                                               <option selected disabled>more</option>\
+               actions += '&#160;<input type="button" onclick="action_handler(this)" data-action="stop" value="<%:Stop%>" class="cbi-button cbi-button-reset" />'
+               actions += '&#160;<input type="button" onclick="action_handler(this)" data-action="destroy" value="<%:Delete%>" class="cbi-button cbi-button-remove" />'
+               actions += '&#160;<select class="cbi-input-select cbi-button" onchange="action_more_handler(this)">\
+                                               <option selected="selected" disabled="disabled">more</option>\
                                                <option>configure</option>\
                                                <option>freeze</option>\
                                                <option>unfreeze</option>\
                                                <option>reboot</option>\
                                        </select>'
-               actions+= '<span data-loader style="display:inline-block; width:16px; height:16px; margin:0 5px"></span>'
+               actions += '<span data-loader="" style="display:inline-block; width:16px; height:16px; margin:0 5px"></span>'
 
                var row = t_lxc_list.insertRow(-1)
                var cell = row.insertCell(-1)
@@ -144,12 +179,11 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
 
        function action_handler(self)
        {
-               var action = self.getAttribute("data-action");
-
-               var bt_action = self
-               var lxc_name = self.parentNode.parentNode.children[0].getAttribute('data-id')
+               var action     = self.getAttribute("data-action");
+               var bt_action  = self
+               var lxc_name   = self.parentNode.parentNode.children[0].getAttribute('data-id')
                var status_img = self.parentNode.parentNode.querySelector('img')
-               var loader = self.parentNode.querySelector('[data-loader]')
+               var loader     = self.parentNode.querySelector('[data-loader]')
 
                bt_action.disabled = true
 
@@ -181,18 +215,16 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
                                loading(loader, 0)
                                bt_action.disabled = false
 
-                               //FIXME: uncomment after fixing 'lxc-start'
                                if (!x /*|| ec */)
                                        return info_message(output_list,"Action failed!")
 
-                               //FIXME: uncomment after fixing 'lxc-start'
-                               //set_status(status_img, "green")
+                               set_status(status_img, "green")
                        });
                }
 
                else if (action == "destroy")
                {
-                       if (!confirm("This will completely remove LXC container from the disk. Are you sure? (container will be stopped if running)"))
+                       if (!confirm("This will completely remove a stopped LXC container from disk. Are you sure?"))
                                return
 
                        loading(loader)
@@ -253,13 +285,12 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
        function action_more_handler(self)
        {
                var lxc_name = self.parentNode.parentNode.querySelector('[data-id]').getAttribute('data-id')
-               var loader = self.parentNode.parentNode.querySelector('[data-loader]')
-
-               var option = self.options[self.selectedIndex].text
+               var loader   = self.parentNode.parentNode.querySelector('[data-loader]')
+               var option   = self.options[self.selectedIndex].text
 
                self.value = "more"
 
-               switch (option)
+               switch(option)
                {
                        case "configure":
                                var tr = document.createElement('tr')
@@ -352,10 +383,22 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
                var row = t_lxc_list.insertRow(-1);
                row.id = 'empty'
                var cell = row.insertCell(0);
-               cell.colSpan = 4;
+               cell.colSpan = 3;
                cell.innerHTML = '<em><br />There are no containers available yet.</em>';
        }
 
+       function set_empty_template()
+       {
+               var row_count = t_lxc_create.rows.length;
+               while(--row_count) t_lxc_create.deleteRow(row_count);
+
+               var row = t_lxc_create.insertRow(-1);
+               row.id = 'tr_holder'
+               var cell = row.insertCell(0);
+               cell.colSpan = 3;
+               cell.innerHTML = '<em><br />There are no templates for your architecture (<%=target%>) available, please select another Containers URL.</em>';
+       }
+
        function lxc_list_update()
        {
                XHR.poll(4, '<%=luci.dispatcher.build_url("admin", "services")%>/lxc_action/list', null,
@@ -363,8 +406,11 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
                {
                        if (!x) return;
 
+                       if (!data)
+                               return set_empty(t_lxc_list)
+
                        var lxc_count = Object.keys(data).length
-                       if (!data || !lxc_count)
+                       if (!lxc_count)
                                return set_empty(t_lxc_list)
 
                        if (document.getElementById('empty') !== null)
@@ -443,8 +489,11 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
        {
                if (!x) return;
 
-               var lxc_count = Object.keys(data).length
-               if (!data || !lxc_count) return;
+               if (!data) return set_empty_template();
+
+               var lxc_count = Object.keys(data).length;
+               if (!lxc_count) return set_empty_template();
+
                var select = document.getElementById("s_template");
                for(var key in data)
                {
@@ -454,5 +503,5 @@ Author: Petar Koretic <petar.koretic@sartura.hr>
                        select.add(option, -1);
                }
        })
-
-//]]></script>
+//]]>
+</script>
index 5572c735fad4700ddd901d28c4209af4612a6f9d..3b35951e1b9df5b2827ec18079d8fb94a2d551a3 100644 (file)
@@ -1,6 +1,3 @@
-#
-# lxc uci configuration
-#
 
 config lxc 'lxc'
-       option url 'virtualwrt.org/containers/'
+       option url 'images.linuxcontainers.org'
index 876ac36daed53e3711f67b5dba8df825cf3b1488..7180ad4c6fc2dba6d541cc5e53510394e28c8a8f 100644 (file)
@@ -1,34 +1,33 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: meshwizard\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-07-20 09:47+0200\n"
-"PO-Revision-Date: 2013-09-06 09:43+0200\n"
-"Last-Translator: datasheet <michael.gritsaenko@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2013-09-06 09:43+0200\n"
+"PO-Revision-Date: 2018-01-30 14:02+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
-#, fuzzy
 msgid "Activate or deactivate IPv6 config globally."
-msgstr "Активировать или деактивировать глобальную конфигурацию IPv6."
+msgstr ""
+"Активировать или деактивировать общие настройки IPv6 для использования "
+"маршрутизатором."
 
 msgid "Channel"
 msgstr "Канал"
 
 msgid "Check this to protect your LAN from other nodes or clients"
-msgstr ""
-"Включите эту опцию, чтобы защитить локальную сеть от других узлов или "
-"клиентов"
+msgstr "Защитить вашу локальную сеть от других узлов или клиентов"
 
 msgid "Cleanup config"
-msgstr "Очистить конфигурацию"
+msgstr "Очистить config файл"
 
 msgid "Configure this interface"
 msgstr "Настроить этот интерфейс"
@@ -43,61 +42,54 @@ msgid "Enable DHCP"
 msgstr "Включить DHCP"
 
 msgid "Enable RA"
-msgstr "РазÑ\80еÑ\88иÑ\82Ñ\8c ICMPv6-оÑ\82веÑ\82 \"Router Advertisement\""
+msgstr "Ð\92клÑ\8eÑ\87иÑ\82Ñ\8c RA"
 
 msgid "Enabled"
-msgstr "Включен"
+msgstr "Включено"
 
 msgid "General Settings"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
 
 msgid "IPv6 Settings"
-msgstr "Настройки IPv6"
+msgstr "IPv6 Настройки"
 
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
-"Если эта опция включена, то конфигурация очищается перед установкой новых "
-"настроек."
+"Очистить имеющийся config файл перед записью в него новых значений настроек."
 
 msgid "Interfaces"
 msgstr "Интерфейсы"
 
 msgid "Mesh IP address"
-msgstr "IP-адрес ячейки"
+msgstr "IP-адрес Mesh сети"
 
 msgid "Mesh IPv6 address"
-msgstr "IPv6-адрес в mesh-сети"
+msgstr "IPv6-адрес Mesh сети"
 
-# предлагаю использовать именно термин "mesh-сеть", т.к. русский аналог этого понятия слишком длинный (сеть с ячеистой топологиейб ячеистая сеть)
 msgid "Mesh Wizard"
-msgstr "Мастер настройки ячеистой сети"
+msgstr "Мастер настройки Mesh сети"
 
-#, fuzzy
 msgid ""
 "Note: this will set up this interface for mesh operation, i.e. add it to "
 "zone 'freifunk' and enable olsr."
 msgstr ""
-"Примечание: эта опция установит данный интерфейс в режим работы с mesh-"
-"сетями, т.е. добавит его в зону ''freifunk' (\"free wireless radio\") и "
-"включит протокол OLSR."
+"Внимание: этот режим использует данный интерфейс для Mesh сети, т.е. добавит "
+"его в зону 'freifunk' ('free wireless radio') и задействует протокол OLSR."
 
 msgid "Protect LAN"
 msgstr "Защита LAN"
 
 msgid ""
 "Select this to allow others to use your connection to access the internet."
-msgstr ""
-"Включите эту опцию, чтобы позволить другим клиентам использовать ваше "
-"подключение к интернету."
+msgstr "Позволить другим клиентам использовать ваше подключение к Интернету."
 
 msgid "Send router advertisements on this device."
-msgstr "Посылать ICMPv6 сообщения \"Router Advertisement\" на это устройство"
+msgstr "Посылать ICMPv6 сообщения 'Router Advertisement' на это устройство."
 
 msgid "Share your internet connection"
-msgstr "СделаÑ\82Ñ\8c Ð¸Ð½Ñ\82еÑ\80неÑ\82-подключение общедоступным"
+msgstr "СделаÑ\82Ñ\8c Ð\98нÑ\82еÑ\80неÑ\82 подключение общедоступным"
 
-# HNA - Home Network Announcement
 msgid ""
 "The IP range from which clients are assigned ip addresses (e.g. "
 "10.1.2.1/28). If this is a range inside your mesh network range, then it "
@@ -106,23 +98,26 @@ msgid ""
 msgstr ""
 "Диапазон IP-адресов для использования клиентами сети (например 10.1.2.1/28). "
 "Если указанный диапазон находится внутри вашей сети, тогда он будет объявлен "
-"как HNA. Ð\9bÑ\8eбой Ð´Ñ\80Ñ\83гой Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ Ð±Ñ\83деÑ\82 Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c NAT. Ð\92 Ñ\81лÑ\83Ñ\87ае Ð¿Ñ\83Ñ\81Ñ\82ого "
-"знаÑ\87ение Ð±Ñ\83дÑ\83Ñ\82 Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8cÑ\81Ñ\8f Ñ\81Ñ\82андаÑ\80Ñ\82нÑ\8bе Ð½Ð°Ñ\81Ñ\82Ñ\80ойки."
+"как HNA. Ð\9bÑ\8eбой Ð´Ñ\80Ñ\83гой Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ Ð±Ñ\83деÑ\82 Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c NAT. Ð\95Ñ\81ли Ð²Ñ\8b Ð½Ðµ Ð½Ð°Ñ\81Ñ\82Ñ\80оиÑ\82е "
+"пÑ\83л Ð°Ð´Ñ\80еÑ\81ов, Ð±Ñ\83дÑ\83Ñ\82 Ð¸Ñ\81полÑ\8cзованÑ\8b Ð°Ð´Ñ\80еÑ\81а Ð¿Ð¾ Ñ\83молÑ\87аниÑ\8e."
 
 msgid "The given IP address is not inside the mesh network range"
-msgstr "Заданный IP-адрес не находится внутри ячеистой сети"
+msgstr "Заданный IP-адрес не находится в диапазоне настроенной Mesh сети."
 
 msgid ""
 "This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
 "has to be registered at your local community."
 msgstr ""
+"Задать уникальный IPv6-адрес в нотации cidr для Mesh сети  (например, "
+"2001:1:2:3::1/64) для использования вашего маршрутизатора в качестве узла "
+"существующей Mesh сети."
 
 msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
-"ЭÑ\82о Ñ\83никалÑ\8cнÑ\8bй Ð°Ð´Ñ\80еÑ\81 Ð² Ñ\8fÑ\87еиÑ\81Ñ\82ой Ñ\81еÑ\82и (напÑ\80имеÑ\80 10.1.1.1), ÐºÐ¾Ñ\82оÑ\80Ñ\8bй Ð´Ð¾Ð»Ð¶ÐµÐ½ "
-"бÑ\8bÑ\82Ñ\8c Ð·Ð°Ñ\80егиÑ\81Ñ\82Ñ\80иÑ\80ован Ð² Ð²Ð°Ñ\88ем Ð¼ÐµÑ\81Ñ\82ном Ñ\81ообÑ\89еÑ\81Ñ\82ве."
+"Ð\97адаÑ\82Ñ\8c Ñ\83никалÑ\8cнÑ\8bй Ð°Ð´Ñ\80еÑ\81 Ð´Ð»Ñ\8f Mesh Ñ\81еÑ\82и (напÑ\80имеÑ\80 10.1.1.1) Ð´Ð»Ñ\8f Ð¸Ñ\81полÑ\8cзованиÑ\8f "
+"ваÑ\88его Ð¼Ð°Ñ\80Ñ\88Ñ\80Ñ\83Ñ\82изаÑ\82оÑ\80а Ð² ÐºÐ°Ñ\87еÑ\81Ñ\82ве Ñ\83зла Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83Ñ\8eÑ\89ей Mesh Ñ\81еÑ\82и."
 
 msgid "This will setup a new virtual wireless interface in Access Point mode."
 msgstr ""
@@ -133,14 +128,14 @@ msgid ""
 "This wizard will assist you in setting up your router for Freifunk or "
 "another similar wireless community network."
 msgstr ""
-"Ð\94аннÑ\8bй Ð¼Ð°Ñ\81Ñ\82еÑ\80 Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÑ\82 Ð½Ð°Ñ\81Ñ\82Ñ\80оиÑ\82Ñ\8c Ð²Ð°Ñ\88 Ð¼Ð°Ñ\80Ñ\88Ñ\80Ñ\83Ñ\82изаÑ\82оÑ\80 Ð´Ð»Ñ\8f Ñ\81еÑ\82и Freifunk Ð¸Ð»и "
-"дÑ\80Ñ\83гой Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾Ð¹ Ð±ÐµÑ\81пÑ\80оводной сети."
+"Ð\94аннÑ\8bй Ð¼Ð°Ñ\81Ñ\82еÑ\80 Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÑ\82 Ð½Ð°Ñ\81Ñ\82Ñ\80оиÑ\82Ñ\8c Ð²Ð°Ñ\88 Ð¼Ð°Ñ\80Ñ\88Ñ\80Ñ\83Ñ\82изаÑ\82оÑ\80 Ð´Ð»Ñ\8f Ñ\81озданиÑ\8f и "
+"иÑ\81полÑ\8cзованиÑ\8f Ñ\81еÑ\82и Freifunk Ð¸Ð»Ð¸ Ð´Ñ\80Ñ\83гой Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð¾Ð¹ Ð±ÐµÑ\81пÑ\80оводной Mesh сети."
 
 msgid "Virtual Access Point (VAP)"
 msgstr "Виртуальная точка доступа (VAP)"
 
 msgid "Wizard"
-msgstr "Мастер установки"
+msgstr "Мастер настройки"
 
 msgid "Your device and neighbouring nodes have to use the same channel."
 msgstr ""
index 28ae3165a945a4907dbe0d2b2da065dbe9f87dee..859cf1dca7e8067b684ceae3e98c345766eedf86 100644 (file)
@@ -1,66 +1,67 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: minidlna\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2013-11-13 18:43+0200\n"
-"Last-Translator: Роман <x.wserfer@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2013-11-13 18:43+0200\n"
+"PO-Revision-Date: 2018-01-20 13:27+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "Advanced Settings"
-msgstr "РаÑ\81Ñ\88иÑ\80енные настройки"
+msgstr "Ð\94ополниÑ\82елÑ\8cные настройки"
 
 msgid "Album art names:"
-msgstr "Имена обложек альбома:"
+msgstr "Имена обложек альбома"
 
 msgid "Allow wide links:"
-msgstr ""
+msgstr "Разрешить ссылки"
 
 msgid "Announced model number:"
-msgstr "Ð\9dомеÑ\80 Ð¼Ð¾Ð´ÐµÐ»Ð¸:"
+msgstr "Ð\9eбÑ\8aÑ\8fвиÑ\82Ñ\8c Ð½Ð¾Ð¼ÐµÑ\80 Ð¼Ð¾Ð´ÐµÐ»Ð¸"
 
 msgid "Announced serial number:"
-msgstr "СеÑ\80ийнÑ\8bй Ð½Ð¾Ð¼ÐµÑ\80:"
+msgstr "Ð\9eбÑ\8aÑ\8fвиÑ\82Ñ\8c Ñ\81еÑ\80ийнÑ\8bй Ð½Ð¾Ð¼ÐµÑ\80"
 
 msgid "Browse directory"
-msgstr "Ð\9eбзоÑ\80 Ð´Ð¸Ñ\80екÑ\82оÑ\80ии"
+msgstr "Ð\9eбзоÑ\80 Ð¿Ð°Ð¿Ð¾Ðº"
 
 msgid "Collecting data..."
 msgstr "Сбор данных..."
 
 msgid "Database directory:"
-msgstr "Папка базы данных:"
+msgstr "Папка базы данных"
 
 msgid "Enable TIVO:"
-msgstr "Включить TIVO:"
+msgstr "Включить TiVo"
 
 msgid "Enable inotify:"
-msgstr "Включить inotify:"
+msgstr "Включить inotify"
 
 msgid "Enable:"
-msgstr "Включить:"
+msgstr "Включить"
 
 msgid "Friendly name:"
-msgstr "Ð\9fонÑ\8fÑ\82ное Ð¸Ð¼Ñ\8f:"
+msgstr "Ð\98мÑ\8f Ð¿Ñ\80оÑ\82окола"
 
 msgid "General Settings"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
 
 msgid "Interfaces:"
-msgstr "Интерфейсы:"
+msgstr "Интерфейсы"
 
 msgid "Log directory:"
-msgstr "Папка журнала:"
+msgstr "Папка системного<br />журнала"
 
 msgid "Media directories:"
-msgstr "Папки медиа:"
+msgstr "Папки медиа"
 
 msgid ""
 "MiniDLNA is server software with the aim of being fully compliant with DLNA/"
@@ -72,96 +73,94 @@ msgstr ""
 msgid ""
 "Model number the miniDLNA daemon will report to clients in its XML "
 "description."
-msgstr ""
-"Номер модели который, miniDLNA будет сообщать клиентам в своём XML-описании."
+msgstr "Номер модели miniDLNA будет показан клиентам в своём XML-описании."
 
 msgid "Music"
 msgstr "Музыка"
 
 msgid "Network interfaces to serve."
-msgstr "Ð\9eбÑ\81лÑ\83живаемÑ\8bе сетевые интерфейсы."
+msgstr "Ð\98Ñ\81полÑ\8cзоваÑ\82Ñ\8c сетевые интерфейсы."
 
 msgid "Notify interval in seconds."
-msgstr "Интервал уведомления (секунды)."
+msgstr "Интервал уведомления в секундах."
 
 msgid "Notify interval:"
-msgstr "Интервал уведомления:"
+msgstr "Интервал уведомления"
 
 msgid "Pictures"
 msgstr "Картинки"
 
 msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic."
-msgstr "Ð\9fоÑ\80Ñ\82 Ð´Ð»Ñ\8f HTTP-Ñ\82Ñ\80аÑ\84ика (опиÑ\81аниÑ\8f, SOAP, Ð¿ÐµÑ\80едаÑ\87а Ð¼Ñ\83лÑ\8cÑ\82имедиа)"
+msgstr "Ð\97адайÑ\82е Ð¿Ð¾Ñ\80Ñ\82 Ð´Ð»Ñ\8f HTTP-Ñ\82Ñ\80аÑ\84ика (опиÑ\81аниÑ\8f, SOAP, Ð¿ÐµÑ\80едаÑ\87а Ð¼Ñ\83лÑ\8cÑ\82имедиа)."
 
 msgid "Port:"
-msgstr "Порт:"
+msgstr "Порт"
 
 msgid "Presentation URL:"
-msgstr "URL представления:"
+msgstr "Задать URL-адрес"
 
 msgid "Root container:"
-msgstr "Корневой контейнер:"
+msgstr "Root контейнер"
 
 msgid ""
 "Serial number the miniDLNA daemon will report to clients in its XML "
 "description."
-msgstr ""
-"Серийный номер, который miniDLNA будет сообщать клиентам в своём XML-"
-"описании."
+msgstr "Серийный номер miniDLNA будет показан клиентам в своём XML-описании."
 
 msgid ""
 "Set this if you want to customize the name that shows up on your clients."
-msgstr "Ð\98зменение Ð¸Ð¼ÐµÐ½Ð¸ отображения для клиентов."
+msgstr "Ð\92Ñ\8bбеÑ\80иÑ\82е Ð¸Ð¼Ñ\8f отображения для клиентов."
 
 msgid ""
 "Set this if you would like to specify the directory where you want MiniDLNA "
 "to store its database and album art cache."
 msgstr ""
-"Ð\9fапка, Ð² ÐºÐ¾Ñ\82оÑ\80ой miniDLNA Ð±Ñ\83деÑ\82 Ñ\85Ñ\80аниÑ\82Ñ\8c Ñ\81воÑ\8e Ð±Ð°Ð·Ñ\83 Ð´Ð°Ð½Ð½Ñ\8bÑ\85 Ð¸ ÐºÑ\8dÑ\88 Ð¾Ð±Ð»Ð¾Ð¶ÐµÐº "
-"альбомов."
+"Ð\92Ñ\8bбеÑ\80иÑ\82е Ð¿Ð°Ð¿ÐºÑ\83, Ð² ÐºÐ¾Ñ\82оÑ\80ой miniDLNA Ð±Ñ\83деÑ\82 Ñ\85Ñ\80аниÑ\82Ñ\8c Ñ\81воÑ\8e Ð±Ð°Ð·Ñ\83 Ð´Ð°Ð½Ð½Ñ\8bÑ\85 Ð¸ ÐºÑ\8dÑ\88 "
+"обложек Ð°Ð»Ñ\8cбомов."
 
 msgid ""
 "Set this if you would like to specify the directory where you want MiniDLNA "
 "to store its log file."
-msgstr "Ð\9fапка, Ð² ÐºÐ¾Ñ\82оÑ\80ой miniDLNA Ð±Ñ\83деÑ\82 Ñ\85Ñ\80аниÑ\82Ñ\8c Ñ\81вой Ñ\84айл Ð¶Ñ\83Ñ\80нала."
+msgstr "Ð\92Ñ\8bбеÑ\80иÑ\82е Ð¿Ð°Ð¿ÐºÑ\83 Ð´Ð»Ñ\8f Ñ\85Ñ\80анениÑ\8f Ñ\84айла Ð¶Ñ\83Ñ\80нала miniDLNA."
 
 msgid ""
 "Set this to allow serving content outside the media root (via symlinks)."
 msgstr ""
+"Разрешить использовать папки за пределами корневой директории ./root "
+"используя символические ссылки."
 
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
-msgstr ""
-"Включение наблюдения inotify для автоматического обнаружения новых файлов."
+msgstr "Включите 'inotify' для автоматического обнаружения новых файлов."
 
 msgid ""
 "Set this to enable support for streaming .jpg and .mp3 files to a TiVo "
 "supporting HMO."
 msgstr ""
-"УÑ\81Ñ\82ановите для включения поддержки потокового воспроизведения файлов .jpg и ."
-"mp3 для TiVo с поддержкой HMO."
+"Ð\92Ñ\8bбеÑ\80ите для включения поддержки потокового воспроизведения файлов .jpg и ."
+"mp3 для 'TiVo' с поддержкой HMO."
 
 msgid ""
 "Set this to strictly adhere to DLNA standards. This will allow server-side "
 "downscaling of very large JPEG images, which may hurt JPEG serving "
 "performance on (at least) Sony DLNA products."
 msgstr ""
-"Установите для строгого соответствия стандартам DLNA. Это разрешит "
-"уменьшение размера слишком больших JPEG-изображений на стороне сервера, что "
-"может повредить производительности (по крайней мере) DLNA-продуктов Sony."
+"Выберите для строгого следования стандартам DLNA. Это позволит уменьшить "
+"размер слишком больших JPEG-изображений на стороне сервера (например "
+"технология - Sony DLNA), чтобы помочь уменьшить нагрузку на ваш "
+"маршрутизатор."
 
-#, fuzzy
 msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
 "(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
-"Ð\94иÑ\80екÑ\82оÑ\80ии, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ð½ÐµÐ¾Ð±Ñ\85одимо Ñ\81каниÑ\80оваÑ\82Ñ\8c. Ð\95Ñ\81ли Ð²Ñ\8b Ñ\85оÑ\82иÑ\82е Ñ\83Ñ\81Ñ\82ановиÑ\82Ñ\8c "
-"огÑ\80аниÑ\87ение Ð½Ð° Ð¾Ð¿Ñ\80еделÑ\91ннÑ\8bй Ñ\82ип Ñ\81одеÑ\80жимого Ð² Ð´Ð¸Ñ\80екÑ\82оÑ\80ии, Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð½Ð°Ð¿Ð¸Ñ\81аÑ\82Ñ\8c "
-"тип ('A' для аудио, 'V' для видео, 'P' для изображений) перед путём к "
-"директории, за которым следует запятая (напр. A,/mnt/media/Music). Может "
-"быть указано несколько директорий."
+"Ð\92Ñ\8bбеÑ\80иÑ\82е Ð¿Ð°Ð¿ÐºÑ\83, ÐºÐ¾Ñ\82оÑ\80Ñ\83Ñ\8e Ð½ÐµÐ¾Ð±Ñ\85одимо Ð¾Ñ\82Ñ\81каниÑ\80оваÑ\82Ñ\8c. Ð\95Ñ\81ли Ð²Ñ\8b Ñ\85оÑ\82иÑ\82е Ð²Ñ\8bбÑ\80аÑ\82Ñ\8c Ð² "
+"папке Ñ\82олÑ\8cко Ð²Ð¸Ð´ÐµÐ¾ Ð¸Ð»Ð¸ Ð¼Ñ\83зÑ\8bкÑ\83, Ð²Ñ\8b Ð´Ð¾Ð»Ð¶Ð½Ñ\8b Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ\82Ñ\8c Ð±Ñ\83квÑ\83 ('A' Ð´Ð»Ñ\8f Ð°Ñ\83дио, 'V' "
+"для видео, 'P' для изображений) перед указанием пути к папке, за буквой "
+"следует запятая (пишется так, например: A,/mnt/media/Music). Можно выбрать "
+"сразу несколько папок."
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "Укажите путь к сокету MiniSSDPd."
@@ -170,20 +169,20 @@ msgid "Standard container"
 msgstr "Стандартный контейнер"
 
 msgid "Strict to DLNA standard:"
-msgstr "Строгий стандарт DLNA:"
+msgstr "Следовать стандарту DLNA"
 
 msgid ""
 "The miniDLNA service is active, serving %d audio, %d video and %d image "
 "files."
 msgstr ""
-"Сервис miniDLNA запущен, обслуживает %d аудио-, %d видео- и %d файлов с "
-"изображениями."
+"Сервис miniDLNA запущен, сервер обслуживает %d аудио-, %d видео- и %d "
+"файл(ов) изображений."
 
 msgid "The miniDLNA service is not running."
 msgstr "Сервис miniDLNA не запущен."
 
 msgid "This is a list of file names to check for when searching for album art."
-msgstr "Это список файлов, среди которых необходимо искать обложки альбомов."
+msgstr "Этот список имен файлов используется для поиска обложек альбомов."
 
 msgid "Video"
 msgstr "Видео"
@@ -192,7 +191,7 @@ msgid "miniDLNA"
 msgstr "miniDLNA"
 
 msgid "miniDLNA Status"
-msgstr "Статус miniDLNA"
+msgstr "Состояние miniDLNA"
 
 msgid "miniSSDP socket:"
-msgstr "Сокет miniSSDP:"
+msgstr "miniSSDP сокет"
diff --git a/applications/luci-app-mjpg-streamer/po/ru/mjpg-streamer.po b/applications/luci-app-mjpg-streamer/po/ru/mjpg-streamer.po
new file mode 100644 (file)
index 0000000..6ba8664
--- /dev/null
@@ -0,0 +1,177 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: mjpg-streamer\n"
+"POT-Creation-Date: 2017-10-17 14:30+0300\n"
+"PO-Revision-Date: 2018-01-18 22:25+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"
+
+msgid "Allow ringbuffer to exceed limit by this amount"
+msgstr ""
+"Позволить кольцевому буферу превысить ограничение, установив данное значение."
+
+msgid "Ask for username and password on connect"
+msgstr "Задать доступ по имени и паролю."
+
+msgid "Authentication required"
+msgstr "Логин и пароль"
+
+msgid "Auto"
+msgstr "Автоматически"
+
+msgid "Automatic disabling of MJPEG mode"
+msgstr "Автоматически отключится MJPEG."
+
+msgid "Blink"
+msgstr "Мигает"
+
+msgid "Check to save the stream to an mjpeg file"
+msgstr "Проверка сохранения потока в mjpeg файл."
+
+msgid "Command to run"
+msgstr "Введите команду"
+
+msgid "Device"
+msgstr "Устройство"
+
+msgid "Do not initalize dynctrls of Linux-UVC driver"
+msgstr "Не задействует dynctrls драйвера Linux-UVC."
+
+msgid "Don't initalize dynctrls"
+msgstr "Отключить dynctrls"
+
+msgid "Drop frames smaller then this limit"
+msgstr "Ограничить кол-во кадров"
+
+msgid "Enable MJPG-streamer"
+msgstr "Включить MJPG-streamer"
+
+msgid "Enable YUYV format"
+msgstr "Включить YUYV формат"
+
+msgid "Enabled"
+msgstr "Включено"
+
+msgid "Exceed"
+msgstr "Превышение"
+
+msgid ""
+"Execute command after saving picture. Mjpg-streamer parse the filename as "
+"first parameter to your script."
+msgstr ""
+"Выполнить команду после сохранения изображения.<br />Mjpg-streamer задаст "
+"имя файла в качестве первого параметра вашего скрипта."
+
+msgid "File input"
+msgstr "Файл ввода"
+
+msgid "File output"
+msgstr "Вывод в файл"
+
+msgid "Folder"
+msgstr "Папка"
+
+msgid "Folder that contains webpages"
+msgstr "Содержимое вебстраницы, находится в этой папке."
+
+msgid "Frames per second"
+msgstr "Кадров в секунду"
+
+msgid "General"
+msgstr "Основные настройки"
+
+msgid "HTTP output"
+msgstr "HTTP вывод"
+
+msgid "Input plugin"
+msgstr "Плагин ввода"
+
+msgid "Interval between saving pictures"
+msgstr "Интервал между снимками"
+
+msgid "JPEG compression quality"
+msgstr "Качество JPEG"
+
+msgid "Led control"
+msgstr "Управление светодиодным индикатором вебкамеры"
+
+msgid "MJPG-streamer"
+msgstr "MJPG-streamer"
+
+msgid "Max. number of pictures to hold"
+msgstr "Размер кольцевого буфера."
+
+msgid "Mjpeg output"
+msgstr "Mjpeg вывод"
+
+msgid "Off"
+msgstr "Выключено"
+
+msgid "On"
+msgstr "Включено"
+
+msgid "Output plugin"
+msgstr "Плагин вывода"
+
+msgid "Password"
+msgstr "Пароль"
+
+msgid "Plugin settings"
+msgstr "Настроить плагины"
+
+msgid "Port"
+msgstr "Порт"
+
+msgid "Resolution"
+msgstr "Разрешение"
+
+msgid "Ring buffer size"
+msgstr "Задать размер буфера"
+
+msgid "Set folder to save pictures"
+msgstr "Задать папку для сохранения снимков."
+
+msgid "Set the inteval in millisecond"
+msgstr "Задать интервал в миллисекундах."
+
+msgid ""
+"Set the minimum size if the webcam produces small-sized garbage frames. May "
+"happen under low light conditions"
+msgstr ""
+"Задайте минимальное значение, если вебкамера не справляется при плохом "
+"освещении."
+
+msgid ""
+"Set the quality in percent. This setting activates YUYV format, disables "
+"MJPEG"
+msgstr ""
+"Задать качество в процентах. Данная настройка активирует YUYV формат "
+"отключая MJPEG."
+
+msgid "TCP port for this HTTP server"
+msgstr "Задать TCP порт для HTTP сервера."
+
+msgid "UVC input"
+msgstr "UVC ввод"
+
+msgid "Username"
+msgstr "Имя пользователя"
+
+msgid "WWW folder"
+msgstr "WWW папка"
+
+msgid ""
+"mjpg streamer is a streaming application for Linux-UVC compatible webcams"
+msgstr ""
+"Приложение для трансляции потокового видео, для Linux-UVC совместимых веб-"
+"камер.<br />Просмотр в браузере по умолчанию http://192.168.1.1:8080/?"
+"action=stream"
diff --git a/applications/luci-app-mmc-over-gpio/Makefile b/applications/luci-app-mmc-over-gpio/Makefile
deleted file mode 100644 (file)
index 4e7d695..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# 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:=MMC-over-GPIO configuration module
-LUCI_DEPENDS:=+kmod-mmc-over-gpio
-
-include ../../luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-mmc-over-gpio/luasrc/controller/mmc_over_gpio.lua b/applications/luci-app-mmc-over-gpio/luasrc/controller/mmc_over_gpio.lua
deleted file mode 100644 (file)
index 78ed24f..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
--- Copyright 2008 Yanira <forum-2008@email.de>
--- Licensed to the public under the Apache License 2.0.
-
-module("luci.controller.mmc_over_gpio", package.seeall)
-
-function index()
-       if not nixio.fs.access("/etc/config/mmc_over_gpio") then
-               return
-       end
-
-       local page
-
-       page = entry({"admin", "system", "mmc_over_gpio"}, cbi("mmc_over_gpio"), _("MMC/SD driver configuration"), 60)
-       page.dependent = true
-end
diff --git a/applications/luci-app-mmc-over-gpio/luasrc/model/cbi/mmc_over_gpio.lua b/applications/luci-app-mmc-over-gpio/luasrc/model/cbi/mmc_over_gpio.lua
deleted file mode 100644 (file)
index fd0896c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
--- Copyright 2008 Yanira <forum-2008@email.de>
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("mmc_over_gpio", translate("MMC/SD driver configuration"),
-       translate("MMC/SD driver configuration"))
-
-s = m:section(TypedSection, "mmc_over_gpio", translate("Settings"))
-s.addremove = true
-s.anonymous = true
-
-s:option(Flag, "enabled", translate("Enable"))
-
-s:option(Value, "name", translate("Name"))
-
-pin = s:option(Value, "DI_pin", translate("DI_pin"))
-for i = 0,7 do pin:value(i) end
-
-pin = s:option(Value, "DO_pin", translate("DO_pin"))
-for i = 0,7 do pin:value(i) end
-
-pin = s:option(Value, "CLK_pin", translate("CLK_pin"))
-for i = 0,7 do pin:value(i) end
-
-pin = s:option(Value, "CS_pin", translate("CS_pin"))
-for i = 0,7 do pin:value(i) end
-
-s:option(Value, "mode", translate("Mode"))
-
-return m
diff --git a/applications/luci-app-mmc-over-gpio/po/ca/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/ca/mmc_over_gpio.po
deleted file mode 100644 (file)
index 558e10a..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#  mmc_over_gpio.pot
-#  generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.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-06-01 23:04+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"
-
-msgid "CLK_pin"
-msgstr ""
-
-msgid "CS_pin"
-msgstr ""
-
-msgid "DI_pin"
-msgstr ""
-
-msgid "DO_pin"
-msgstr ""
-
-msgid "Enable"
-msgstr "Habilita"
-
-msgid "MMC/SD driver configuration"
-msgstr "Configuració de controlador MMC/SD"
-
-msgid "Mode"
-msgstr "Mode"
-
-msgid "Name"
-msgstr "Nom"
-
-msgid "Settings"
-msgstr "Ajusts"
diff --git a/applications/luci-app-mmc-over-gpio/po/cs/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/cs/mmc_over_gpio.po
deleted file mode 100644 (file)
index 6a7b7b1..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#  mmc_over_gpio.pot
-#  generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-06-15 20:16+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"
-
-msgid "CLK_pin"
-msgstr "Pin CLK"
-
-msgid "CS_pin"
-msgstr "Pin CS"
-
-msgid "DI_pin"
-msgstr "Pin DI"
-
-msgid "DO_pin"
-msgstr "Pin DO"
-
-msgid "Enable"
-msgstr "Povolit"
-
-msgid "MMC/SD driver configuration"
-msgstr "Konfigurace ovladače MMC/SD"
-
-msgid "Mode"
-msgstr "Mód"
-
-msgid "Name"
-msgstr "Jméno"
-
-msgid "Settings"
-msgstr "Nastavení"
diff --git a/applications/luci-app-mmc-over-gpio/po/de/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/de/mmc_over_gpio.po
deleted file mode 100644 (file)
index 3b21417..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-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-11-28 10:44+0200\n"
-"Last-Translator: dunkelschunkel <dunkelschunkel@googlemail.com>\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"
-
-# Das wäre der Pin für Clock, also Takt, eventuell kann das auch rein. Halte obige Variante aber für hinreichend
-msgid "CLK_pin"
-msgstr "CLK-Pin"
-
-msgid "CS_pin"
-msgstr "CS-Pin"
-
-msgid "DI_pin"
-msgstr "DI-Pin"
-
-msgid "DO_pin"
-msgstr "DO-Pin"
-
-msgid "Enable"
-msgstr "Aktivieren"
-
-msgid "MMC/SD driver configuration"
-msgstr "MMC/SD Treibereinstellungen"
-
-msgid "Mode"
-msgstr "Modus"
-
-msgid "Name"
-msgstr "Name"
-
-msgid "Settings"
-msgstr "Einstellungen"
diff --git a/applications/luci-app-mmc-over-gpio/po/el/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/el/mmc_over_gpio.po
deleted file mode 100644 (file)
index 8aadeff..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-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: 2010-07-01 20:18+0200\n"
-"Last-Translator: Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr>\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"
-
-msgid "CLK_pin"
-msgstr ""
-
-msgid "CS_pin"
-msgstr ""
-
-msgid "DI_pin"
-msgstr ""
-
-msgid "DO_pin"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "MMC/SD driver configuration"
-msgstr ""
-
-msgid "Mode"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Settings"
-msgstr "Ρυθμίσεις"
diff --git a/applications/luci-app-mmc-over-gpio/po/en/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/en/mmc_over_gpio.po
deleted file mode 100644 (file)
index bd8f3c8..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-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-03-21 18:31+0200\n"
-"Last-Translator: Anonymous Pootle User\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"
-
-msgid "CLK_pin"
-msgstr ""
-
-msgid "CS_pin"
-msgstr ""
-
-msgid "DI_pin"
-msgstr ""
-
-msgid "DO_pin"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "MMC/SD driver configuration"
-msgstr ""
-
-msgid "Mode"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Settings"
-msgstr "Settings"
diff --git a/applications/luci-app-mmc-over-gpio/po/es/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/es/mmc_over_gpio.po
deleted file mode 100644 (file)
index ee0b0c6..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-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: 2012-08-19 21:05+0200\n"
-"Last-Translator: josevteg <josevteg@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\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: Pootle 2.0.6\n"
-
-msgid "CLK_pin"
-msgstr "Pin CLK"
-
-msgid "CS_pin"
-msgstr "Pin CS"
-
-msgid "DI_pin"
-msgstr "Pin DI"
-
-msgid "DO_pin"
-msgstr "Pin DO"
-
-msgid "Enable"
-msgstr "Activar"
-
-msgid "MMC/SD driver configuration"
-msgstr "Configuración de controlador MMC/SD"
-
-msgid "Mode"
-msgstr "Modo"
-
-msgid "Name"
-msgstr "Nombre"
-
-msgid "Settings"
-msgstr "Configuración"
diff --git a/applications/luci-app-mmc-over-gpio/po/fr/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/fr/mmc_over_gpio.po
deleted file mode 100644 (file)
index 64dc899..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-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-11-06 16:06+0200\n"
-"Last-Translator: hogsim <hogsim@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"
-
-msgid "CLK_pin"
-msgstr "CLK_pin"
-
-msgid "CS_pin"
-msgstr "CS_pin"
-
-msgid "DI_pin"
-msgstr "DI_pin"
-
-msgid "DO_pin"
-msgstr "DO_pin"
-
-msgid "Enable"
-msgstr "Activer"
-
-msgid "MMC/SD driver configuration"
-msgstr "Configuration driver MMC/SD"
-
-msgid "Mode"
-msgstr "Mode"
-
-msgid "Name"
-msgstr "Nom"
-
-msgid "Settings"
-msgstr "Configuration"
diff --git a/applications/luci-app-mmc-over-gpio/po/he/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/he/mmc_over_gpio.po
deleted file mode 100644 (file)
index bf506c0..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#  mmc_over_gpio.pot
-#  generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-09-10 04:34+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"
-
-msgid "CLK_pin"
-msgstr ""
-
-msgid "CS_pin"
-msgstr ""
-
-msgid "DI_pin"
-msgstr ""
-
-msgid "DO_pin"
-msgstr ""
-
-msgid "Enable"
-msgstr "אפשר"
-
-msgid "MMC/SD driver configuration"
-msgstr ""
-
-msgid "Mode"
-msgstr ""
-
-msgid "Name"
-msgstr "שם"
-
-msgid "Settings"
-msgstr "הגדרות"
diff --git a/applications/luci-app-mmc-over-gpio/po/hu/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/hu/mmc_over_gpio.po
deleted file mode 100644 (file)
index 758c711..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#  mmc_over_gpio.pot
-#  generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-12-30 19:09+0200\n"
-"Last-Translator: romboyco <romboyco@gmail.com>\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"
-
-msgid "CLK_pin"
-msgstr "CLK_pin"
-
-msgid "CS_pin"
-msgstr "CS_pin"
-
-msgid "DI_pin"
-msgstr "DI_pin"
-
-msgid "DO_pin"
-msgstr "DO_pin"
-
-msgid "Enable"
-msgstr "Bekapcsolás"
-
-msgid "MMC/SD driver configuration"
-msgstr "MMC/SD driver konfiguráció"
-
-msgid "Mode"
-msgstr "Mód"
-
-msgid "Name"
-msgstr "Név"
-
-msgid "Settings"
-msgstr "Beállítások"
diff --git a/applications/luci-app-mmc-over-gpio/po/it/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/it/mmc_over_gpio.po
deleted file mode 100644 (file)
index e0f371a..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-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: 2013-02-03 13:57+0200\n"
-"Last-Translator: Francesco <3gasas@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"
-
-msgid "CLK_pin"
-msgstr "CLK_pin"
-
-msgid "CS_pin"
-msgstr "CS_pin"
-
-msgid "DI_pin"
-msgstr "DI_pin"
-
-msgid "DO_pin"
-msgstr "DO_pin"
-
-msgid "Enable"
-msgstr "Attiva"
-
-msgid "MMC/SD driver configuration"
-msgstr "Configurazione driver MMC/SD"
-
-msgid "Mode"
-msgstr "Modalità"
-
-msgid "Name"
-msgstr "Nome"
-
-msgid "Settings"
-msgstr "Opzioni"
diff --git a/applications/luci-app-mmc-over-gpio/po/ja/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/ja/mmc_over_gpio.po
deleted file mode 100644 (file)
index 5c0f102..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-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: 2013-10-05 16:45+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.6\n"
-
-msgid "CLK_pin"
-msgstr "CLK_pin"
-
-msgid "CS_pin"
-msgstr "CS_pin"
-
-msgid "DI_pin"
-msgstr "DI_pin"
-
-msgid "DO_pin"
-msgstr "DO_pin"
-
-msgid "Enable"
-msgstr "有効"
-
-msgid "MMC/SD driver configuration"
-msgstr "MMC/SD ドライバ設定"
-
-msgid "Mode"
-msgstr "モード"
-
-msgid "Name"
-msgstr "名前"
-
-msgid "Settings"
-msgstr "設定"
diff --git a/applications/luci-app-mmc-over-gpio/po/ms/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/ms/mmc_over_gpio.po
deleted file mode 100644 (file)
index edbb2ce..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-#  mmc_over_gpio.pot
-#  generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua
-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"
-
-msgid "CLK_pin"
-msgstr ""
-
-msgid "CS_pin"
-msgstr ""
-
-msgid "DI_pin"
-msgstr ""
-
-msgid "DO_pin"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "MMC/SD driver configuration"
-msgstr ""
-
-msgid "Mode"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
diff --git a/applications/luci-app-mmc-over-gpio/po/no/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/no/mmc_over_gpio.po
deleted file mode 100644 (file)
index ea9a533..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-msgid ""
-msgstr ""
-"Last-Translator: Lars Hardy <lars.hardy@gmail.com>\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-msgid "CLK_pin"
-msgstr "CLK_pin"
-
-msgid "CS_pin"
-msgstr "CS_pin"
-
-msgid "DI_pin"
-msgstr "DI_pin"
-
-msgid "DO_pin"
-msgstr "DO_pin"
-
-msgid "Enable"
-msgstr "Aktiver"
-
-msgid "MMC/SD driver configuration"
-msgstr "MMC/SD Konfigurasjon"
-
-msgid "Mode"
-msgstr "Modus"
-
-msgid "Name"
-msgstr "Navn"
-
-msgid "Settings"
-msgstr "Innstillinger"
diff --git a/applications/luci-app-mmc-over-gpio/po/pl/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/pl/mmc_over_gpio.po
deleted file mode 100644 (file)
index ff5b51b..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#  mmc_over_gpio.pot
-#  generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-08-26 12:23+0200\n"
-"Last-Translator: Staszek <fistaszek@tlen.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.4\n"
-
-msgid "CLK_pin"
-msgstr "Pin CLK"
-
-msgid "CS_pin"
-msgstr "Pin CS"
-
-msgid "DI_pin"
-msgstr "Pin DI"
-
-msgid "DO_pin"
-msgstr "Pin DO"
-
-msgid "Enable"
-msgstr "Uaktywnij"
-
-msgid "MMC/SD driver configuration"
-msgstr "Konfiguracja sterownika MMC/SD"
-
-msgid "Mode"
-msgstr "Tryb"
-
-msgid "Name"
-msgstr "Nazwa"
-
-msgid "Settings"
-msgstr "Ustawienia"
diff --git a/applications/luci-app-mmc-over-gpio/po/pt-br/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/pt-br/mmc_over_gpio.po
deleted file mode 100644 (file)
index 9fbbf0f..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-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: 2012-07-05 06:43+0200\n"
-"Last-Translator: rafaelff1 <rafael.f.f1@gmail.com>\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"
-
-msgid "CLK_pin"
-msgstr "CLK_pin"
-
-msgid "CS_pin"
-msgstr "CS_pin"
-
-msgid "DI_pin"
-msgstr "DI_pin"
-
-msgid "DO_pin"
-msgstr "DO_pin"
-
-msgid "Enable"
-msgstr "Habilitar"
-
-msgid "MMC/SD driver configuration"
-msgstr "Configuração de driver MMC/SD"
-
-msgid "Mode"
-msgstr "Modo"
-
-msgid "Name"
-msgstr "Nome"
-
-msgid "Settings"
-msgstr "Configurações"
diff --git a/applications/luci-app-mmc-over-gpio/po/pt/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/pt/mmc_over_gpio.po
deleted file mode 100644 (file)
index 497c0b0..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-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-31 15:28+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"
-
-msgid "CLK_pin"
-msgstr "CLK_pin"
-
-msgid "CS_pin"
-msgstr "CS_pin"
-
-msgid "DI_pin"
-msgstr "DI_pin"
-
-msgid "DO_pin"
-msgstr "DO_pin"
-
-msgid "Enable"
-msgstr "Ativar"
-
-msgid "MMC/SD driver configuration"
-msgstr "Configuração do driver MMC/SD"
-
-msgid "Mode"
-msgstr "Modo"
-
-msgid "Name"
-msgstr "Nome"
-
-msgid "Settings"
-msgstr "Definições"
diff --git a/applications/luci-app-mmc-over-gpio/po/ro/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/ro/mmc_over_gpio.po
deleted file mode 100644 (file)
index e465f0a..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#  mmc_over_gpio.pot
-#  generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-06-28 19:22+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"
-
-msgid "CLK_pin"
-msgstr "CLK_pin"
-
-msgid "CS_pin"
-msgstr "CS_pin"
-
-msgid "DI_pin"
-msgstr "DI_pin"
-
-msgid "DO_pin"
-msgstr "DO_pin"
-
-msgid "Enable"
-msgstr "Activare"
-
-msgid "MMC/SD driver configuration"
-msgstr "Configurare driver MMC/SD"
-
-msgid "Mode"
-msgstr "Mod"
-
-msgid "Name"
-msgstr "Nume"
-
-msgid "Settings"
-msgstr "Setări"
diff --git a/applications/luci-app-mmc-over-gpio/po/ru/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/ru/mmc_over_gpio.po
deleted file mode 100644 (file)
index dcc2e93..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: LuCI: mmc_over_gpio\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-08-15 11:23+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\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"
-"X-Poedit-SourceCharset: UTF-8\n"
-
-msgid "CLK_pin"
-msgstr "Вывод CLK"
-
-msgid "CS_pin"
-msgstr "Вывод CS"
-
-msgid "DI_pin"
-msgstr "Вывод DI"
-
-msgid "DO_pin"
-msgstr "Вывод DO"
-
-msgid "Enable"
-msgstr "Включить"
-
-msgid "MMC/SD driver configuration"
-msgstr "Конфигурация драйвера MMC/SD"
-
-msgid "Mode"
-msgstr "Режим"
-
-msgid "Name"
-msgstr "Имя"
-
-msgid "Settings"
-msgstr "Настройки"
diff --git a/applications/luci-app-mmc-over-gpio/po/sk/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/sk/mmc_over_gpio.po
deleted file mode 100644 (file)
index 587ee42..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"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"
-
-msgid "CLK_pin"
-msgstr ""
-
-msgid "CS_pin"
-msgstr ""
-
-msgid "DI_pin"
-msgstr ""
-
-msgid "DO_pin"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "MMC/SD driver configuration"
-msgstr ""
-
-msgid "Mode"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
diff --git a/applications/luci-app-mmc-over-gpio/po/sv/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/sv/mmc_over_gpio.po
deleted file mode 100644 (file)
index 598a0f0..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: sv\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "CLK_pin"
-msgstr ""
-
-msgid "CS_pin"
-msgstr ""
-
-msgid "DI_pin"
-msgstr ""
-
-msgid "DO_pin"
-msgstr ""
-
-msgid "Enable"
-msgstr "Aktivera"
-
-msgid "MMC/SD driver configuration"
-msgstr "Konfiguration av MMC/SD-drivrutin"
-
-msgid "Mode"
-msgstr "Läge"
-
-msgid "Name"
-msgstr "Namn"
-
-msgid "Settings"
-msgstr "Inställningar"
diff --git a/applications/luci-app-mmc-over-gpio/po/templates/mmc_over_gpio.pot b/applications/luci-app-mmc-over-gpio/po/templates/mmc_over_gpio.pot
deleted file mode 100644 (file)
index 1cc8de3..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-msgid "CLK_pin"
-msgstr ""
-
-msgid "CS_pin"
-msgstr ""
-
-msgid "DI_pin"
-msgstr ""
-
-msgid "DO_pin"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "MMC/SD driver configuration"
-msgstr ""
-
-msgid "Mode"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
diff --git a/applications/luci-app-mmc-over-gpio/po/tr/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/tr/mmc_over_gpio.po
deleted file mode 100644 (file)
index 349b8fc..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#  mmc_over_gpio.pot
-#  generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-10-11 23:19+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"
-
-msgid "CLK_pin"
-msgstr "CLK_ayağı"
-
-msgid "CS_pin"
-msgstr "CS_ayağı"
-
-msgid "DI_pin"
-msgstr "DI_ayağı"
-
-msgid "DO_pin"
-msgstr "DO_ayağı"
-
-msgid "Enable"
-msgstr "Etkinleştir"
-
-msgid "MMC/SD driver configuration"
-msgstr "MMC/SD Sürücü Yapılandırması"
-
-msgid "Mode"
-msgstr "Mod"
-
-msgid "Name"
-msgstr "isim"
-
-msgid "Settings"
-msgstr "Ayarlar"
diff --git a/applications/luci-app-mmc-over-gpio/po/uk/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/uk/mmc_over_gpio.po
deleted file mode 100644 (file)
index e9b37f2..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-#  mmc_over_gpio.pot
-#  generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-12-29 13:06+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"
-
-msgid "CLK_pin"
-msgstr "Вивід ВCLK"
-
-msgid "CS_pin"
-msgstr "Вивід CS"
-
-msgid "DI_pin"
-msgstr "Вивід DI"
-
-msgid "DO_pin"
-msgstr "Вивід DO"
-
-msgid "Enable"
-msgstr "Увімкнути"
-
-msgid "MMC/SD driver configuration"
-msgstr "Конфігурація драйвера MMC/SD"
-
-msgid "Mode"
-msgstr "Режим"
-
-msgid "Name"
-msgstr "Ім'я"
-
-msgid "Settings"
-msgstr "Настройки"
diff --git a/applications/luci-app-mmc-over-gpio/po/vi/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/vi/mmc_over_gpio.po
deleted file mode 100644 (file)
index febcbc0..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#  mmc_over_gpio.pot
-#  generated from ./applications/luci-mmc_over_gpio/luasrc/i18n/mmc_over_gpio.en.lua
-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-13 03:43+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"
-
-msgid "CLK_pin"
-msgstr ""
-
-msgid "CS_pin"
-msgstr ""
-
-msgid "DI_pin"
-msgstr ""
-
-msgid "DO_pin"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "MMC/SD driver configuration"
-msgstr ""
-
-msgid "Mode"
-msgstr ""
-
-msgid "Name"
-msgstr ""
-
-msgid "Settings"
-msgstr "Sắp đặt"
diff --git a/applications/luci-app-mmc-over-gpio/po/zh-cn/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/zh-cn/mmc_over_gpio.po
deleted file mode 100644 (file)
index 27dcefd..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-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-10-08 15:25+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "CLK_pin"
-msgstr "CLK针脚"
-
-msgid "CS_pin"
-msgstr "CS针脚"
-
-msgid "DI_pin"
-msgstr "DI针脚"
-
-msgid "DO_pin"
-msgstr "DO针脚"
-
-msgid "Enable"
-msgstr "允许"
-
-msgid "MMC/SD driver configuration"
-msgstr "MMC/SD驱动配置"
-
-msgid "Mode"
-msgstr "模式"
-
-msgid "Name"
-msgstr "名称"
-
-msgid "Settings"
-msgstr "设置"
diff --git a/applications/luci-app-mmc-over-gpio/po/zh-tw/mmc_over_gpio.po b/applications/luci-app-mmc-over-gpio/po/zh-tw/mmc_over_gpio.po
deleted file mode 100644 (file)
index fe12e66..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-21 12:48+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"
-
-msgid "CLK_pin"
-msgstr "CLK_pin腳"
-
-msgid "CS_pin"
-msgstr "CS_pin腳"
-
-msgid "DI_pin"
-msgstr "DI_pin腳"
-
-msgid "DO_pin"
-msgstr "DO_pin腳"
-
-msgid "Enable"
-msgstr "啟用"
-
-msgid "MMC/SD driver configuration"
-msgstr "MMC/SD記憶卡驅動程式設定"
-
-msgid "Mode"
-msgstr "模式"
-
-msgid "Name"
-msgstr "名稱"
-
-msgid "Settings"
-msgstr "設定值"
diff --git a/applications/luci-app-mmc-over-gpio/root/etc/uci-defaults/40_luci-mmc-over-gpio b/applications/luci-app-mmc-over-gpio/root/etc/uci-defaults/40_luci-mmc-over-gpio
deleted file mode 100755 (executable)
index c6e79e6..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-uci -q batch <<-EOF >/dev/null
-       delete ucitrack.@mmc_over_gpio[-1]
-       add ucitrack mmc_over_gpio
-       set ucitrack.@mmc_over_gpio[-1].init=mmc_over_gpio
-       commit ucitrack
-EOF
-
-rm -f /tmp/luci-indexcache
-exit 0
diff --git a/applications/luci-app-multiwan/Makefile b/applications/luci-app-multiwan/Makefile
deleted file mode 100644 (file)
index c5b731a..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# 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 the OpenWrt MultiWAN agent (obsoleted by mwan3)
-LUCI_DEPENDS:=+multiwan @BROKEN
-
-include ../../luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-multiwan/luasrc/controller/multiwan.lua b/applications/luci-app-multiwan/luasrc/controller/multiwan.lua
deleted file mode 100644 (file)
index 523ac21..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-module("luci.controller.multiwan", package.seeall)
-
-function index()
-       local fs = require "nixio.fs"
-       if not fs.access("/etc/config/multiwan") then
-               return
-       end
-
-       local page
-
-       page = entry({"admin", "network", "multiwan"}, cbi("multiwan/multiwan"), _("Multi-WAN"))
-       page.dependent = true
-       
-       entry({"admin", "network", "multiwan", "status"}, call("multiwan_status"))
-
-       page = entry({"mini", "network", "multiwan"}, cbi("multiwan/multiwanmini", {autoapply=true}), _("Multi-WAN"))
-       page.dependent = true
-end
-function multiwan_status()
-       local nfs = require "nixio.fs"
-       local cachefile = "/tmp/.mwan/cache"
-
-       local rv = {    }
-
-       cachefile = nfs.readfile(cachefile)
-       if cachefile then
-               local ntm = require "luci.model.network".init()
-               _, _, wan_if_map = string.find(cachefile, "wan_if_map=\"([^\"]*)\"")
-               _, _, wan_fail_map = string.find(cachefile, "wan_fail_map=\"([^\"]*)\"")
-               _, _, wan_recovery_map = string.find(cachefile, "wan_recovery_map=\"([^\"]*)\"")
-               
-               rv.wans = { }
-               wansid = {}
-
-               for wanname, wanifname in string.gfind(wan_if_map, "([^%[]+)%[([^%]]+)%]") do
-                       local wanlink = ntm:get_interface(wanifname)
-                             wanlink = wanlink and wanlink:get_network()
-                             wanlink = wanlink and wanlink:adminlink() or "#"
-                       wansid[wanname] = #rv.wans + 1
-                       rv.wans[wansid[wanname]] = { name = wanname, link = wanlink, ifname = wanifname, status = "ok", count = 0 }
-               end
-
-               for wanname, failcount in string.gfind(wan_fail_map, "([^%[]+)%[([^%]]+)%]") do
-                       if failcount == "x" then
-                               rv.wans[wansid[wanname]].status = "ko"
-                       else
-                               rv.wans[wansid[wanname]].status = "failing"
-                               rv.wans[wansid[wanname]].count = failcount
-                       end
-               end
-
-               for wanname, recoverycount in string.gfind(wan_recovery_map, "([^%[]+)%[([^%]]+)%]") do
-                       rv.wans[wansid[wanname]].status = "recovering"
-                       rv.wans[wansid[wanname]].count = recoverycount
-               end
-       end
-
-       luci.http.prepare_content("application/json")
-       luci.http.write_json(rv)
-end
diff --git a/applications/luci-app-multiwan/luasrc/model/cbi/multiwan/multiwan.lua b/applications/luci-app-multiwan/luasrc/model/cbi/multiwan/multiwan.lua
deleted file mode 100644 (file)
index 586b630..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-require("luci.tools.webadmin")
-
-m = Map("multiwan", translate("Multi-WAN"),
-       translate("Multi-WAN allows for the use of multiple uplinks for load balancing and failover."))
-
-s = m:section(NamedSection, "config", "multiwan", "")
-
-e = s:option(Flag, "enabled", translate("Enable"))
-e.rmempty = false
-e.default = e.enabled
-
-function e.write(self, section, value)
-       if value == "0" then
-               os.execute("/etc/init.d/multiwan stop")
-       else
-               os.execute("/etc/init.d/multiwan enable")
-       end
-       Flag.write(self, section, value)
-end
-
-s = m:section(TypedSection, "interface", translate("WAN Interfaces"),
-       translate("Health Monitor detects and corrects network changes and failed connections."))
-s.addremove = true
-
-weight = s:option(ListValue, "weight", translate("Load Balancer Distribution"))
-weight:value("10", "10")
-weight:value("9", "9")
-weight:value("8", "8")
-weight:value("7", "7")
-weight:value("6", "6")
-weight:value("5", "5")
-weight:value("4", "4")
-weight:value("3", "3")
-weight:value("2", "2")
-weight:value("1", "1")
-weight:value("disable", translate("None"))
-weight.default = "10"
-weight.optional = false
-weight.rmempty = false
-
-interval = s:option(ListValue, "health_interval", translate("Health Monitor Interval"))
-interval:value("disable", translate("Disable"))
-interval:value("5", "5 sec.")
-interval:value("10", "10 sec.")
-interval:value("20", "20 sec.")
-interval:value("30", "30 sec.")
-interval:value("60", "60 sec.")
-interval:value("120", "120 sec.")
-interval.default = "10"
-interval.optional = false
-interval.rmempty = false
-
-icmp_hosts = s:option(Value, "icmp_hosts", translate("Health Monitor ICMP Host(s)"))
-icmp_hosts:value("disable", translate("Disable"))
-icmp_hosts:value("dns", "DNS Server(s)")
-icmp_hosts:value("gateway", "WAN Gateway")
-icmp_hosts.default = "dns"
-icmp_hosts.optional = false
-icmp_hosts.rmempty = false
-
-timeout = s:option(ListValue, "timeout", translate("Health Monitor ICMP Timeout"))
-timeout:value("1", "1 sec.")
-timeout:value("2", "2 sec.")
-timeout:value("3", "3 sec.")
-timeout:value("4", "4 sec.")
-timeout:value("5", "5 sec.")
-timeout:value("10", "10 sec.")
-timeout.default = "3"
-timeout.optional = false
-timeout.rmempty = false
-
-fail = s:option(ListValue, "health_fail_retries", translate("Attempts Before WAN Failover"))
-fail:value("1", "1")
-fail:value("3", "3")
-fail:value("5", "5")
-fail:value("10", "10")
-fail:value("15", "15")
-fail:value("20", "20")
-fail.default = "3"
-fail.optional = false
-fail.rmempty = false
-
-recovery = s:option(ListValue, "health_recovery_retries", translate("Attempts Before WAN Recovery"))
-recovery:value("1", "1")
-recovery:value("3", "3")
-recovery:value("5", "5")
-recovery:value("10", "10")
-recovery:value("15", "15")
-recovery:value("20", "20")
-recovery.default = "5"
-recovery.optional = false
-recovery.rmempty = false
-
-failover_to = s:option(ListValue, "failover_to", translate("Failover Traffic Destination"))
-failover_to:value("disable", translate("None"))
-luci.tools.webadmin.cbi_add_networks(failover_to)
-failover_to:value("fastbalancer", translate("Load Balancer(Performance)"))
-failover_to:value("balancer", translate("Load Balancer(Compatibility)"))
-failover_to.default = "balancer"
-failover_to.optional = false
-failover_to.rmempty = false
-
-dns = s:option(Value, "dns", translate("DNS Server(s)"))
-dns:value("auto", translate("Auto"))
-dns.default = "auto"
-dns.optional = false
-dns.rmempty = true
-
-s = m:section(TypedSection, "mwanfw", translate("Multi-WAN Traffic Rules"),
-       translate("Configure rules for directing outbound traffic through specified WAN Uplinks."))
-s.template = "cbi/tblsection"
-s.anonymous = true
-s.addremove = true
-
-src = s:option(Value, "src", translate("Source Address"))
-src.rmempty = true
-src:value("", translate("all"))
-luci.tools.webadmin.cbi_add_knownips(src)
-
-dst = s:option(Value, "dst", translate("Destination Address"))
-dst.rmempty = true
-dst:value("", translate("all"))
-luci.tools.webadmin.cbi_add_knownips(dst)
-
-proto = s:option(Value, "proto", translate("Protocol"))
-proto:value("", translate("all"))
-proto:value("tcp", "TCP")
-proto:value("udp", "UDP")
-proto:value("icmp", "ICMP")
-proto.rmempty = true
-
-ports = s:option(Value, "ports", translate("Ports"))
-ports.rmempty = true
-ports:value("", translate("all", translate("all")))
-
-wanrule = s:option(ListValue, "wanrule", translate("WAN Uplink"))
-luci.tools.webadmin.cbi_add_networks(wanrule)
-wanrule:value("fastbalancer", translate("Load Balancer(Performance)"))
-wanrule:value("balancer", translate("Load Balancer(Compatibility)"))
-wanrule.default = "fastbalancer"
-wanrule.optional = false
-wanrule.rmempty = false
-
-s = m:section(NamedSection, "config", "", "")
-s.addremove = false
-
-default_route = s:option(ListValue, "default_route", translate("Default Route"))
-luci.tools.webadmin.cbi_add_networks(default_route)
-default_route:value("fastbalancer", translate("Load Balancer(Performance)"))
-default_route:value("balancer", translate("Load Balancer(Compatibility)"))
-default_route.default = "balancer"
-default_route.optional = false
-default_route.rmempty = false
-
-return m
diff --git a/applications/luci-app-multiwan/luasrc/model/cbi/multiwan/multiwanmini.lua b/applications/luci-app-multiwan/luasrc/model/cbi/multiwan/multiwanmini.lua
deleted file mode 100644 (file)
index d389745..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-require("luci.tools.webadmin")
-
-m = Map("multiwan", translate("Multi-WAN"),
-       translate("Multi-WAN allows for the use of multiple uplinks for load balancing and failover."))
-
-s = m:section(NamedSection, "config", "multiwan", "")
-
-e = s:option(Flag, "enabled", translate("Enable"))
-e.rmempty = false
-e.default = "1"
-
-function e.write(self, section, value)
-       if value == "0" then
-               os.execute("/etc/init.d/multiwan stop")
-       else
-               os.execute("/etc/init.d/multiwan enable")
-       end
-       Flag.write(self, section, value)
-end
-
-s = m:section(TypedSection, "mwanfw", translate("Multi-WAN Traffic Rules"),
-       translate("Configure rules for directing outbound traffic through specified WAN Uplinks."))
-s.template = "cbi/tblsection"
-s.anonymous = true
-s.addremove = true
-
-src = s:option(Value, "src", translate("Source Address"))
-src.rmempty = true
-src:value("", translate("all"))
-luci.tools.webadmin.cbi_add_knownips(src)
-
-dst = s:option(Value, "dst", translate("Destination Address"))
-dst.rmempty = true
-dst:value("", translate("all"))
-luci.tools.webadmin.cbi_add_knownips(dst)
-
-proto = s:option(Value, "proto", translate("Protocol"))
-proto:value("", translate("all"))
-proto:value("tcp", "TCP")
-proto:value("udp", "UDP")
-proto:value("icmp", "ICMP")
-proto.rmempty = true
-
-ports = s:option(Value, "ports", translate("Ports"))
-ports.rmempty = true
-ports:value("", translate("all", translate("all")))
-
-wanrule = s:option(ListValue, "wanrule", translate("WAN Uplink"))
-luci.tools.webadmin.cbi_add_networks(wanrule)
-wanrule:value("fastbalancer", translate("Load Balancer(Performance)"))
-wanrule:value("balancer", translate("Load Balancer(Compatibility)"))
-wanrule.default = "fastbalancer"
-wanrule.optional = false
-wanrule.rmempty = false
-
-s = m:section(NamedSection, "config", "", "")
-s.addremove = false
-
-default_route = s:option(ListValue, "default_route", translate("Default Route"))
-luci.tools.webadmin.cbi_add_networks(default_route)
-default_route:value("fastbalancer", translate("Load Balancer(Performance)"))
-default_route:value("balancer", translate("Load Balancer(Compatibility)"))
-default_route.default = "balancer"
-default_route.optional = false
-default_route.rmempty = false
-
-return m
diff --git a/applications/luci-app-multiwan/luasrc/view/admin_status/index/multiwan.htm b/applications/luci-app-multiwan/luasrc/view/admin_status/index/multiwan.htm
deleted file mode 100644 (file)
index 79c0453..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<%+multiwan_status%>
diff --git a/applications/luci-app-multiwan/luasrc/view/multiwan_status.htm b/applications/luci-app-multiwan/luasrc/view/multiwan_status.htm
deleted file mode 100644 (file)
index 03bfad1..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-<script type="text/javascript">//<![CDATA[
-       XHR.poll(5, '<%=url('admin/network/multiwan/status')%>', null,
-               function(x, st)
-               {
-                       var tx = document.getElementById('multiwan_status_text');
-                       if (tx)
-                       {
-                               if (st && st.wans)
-                               {
-                                       var temp = '';
-
-                                       for( var i = 0; i < st.wans.length; i++ )
-                                       {
-                                               var stat = '<%:Unknown%>';
-                                               var cssc = '';
-
-                                               switch (st.wans[i].status)
-                                               {
-                                                       case 'ok':
-                                                               stat = '<%:OK%>';
-                                                               cssc = 'wanok';
-                                                               break;
-
-                                                       case 'ko':
-                                                               stat = '<%:KO%>';
-                                                               cssc = 'wanko';
-                                                               break;
-
-                                                       case 'recovering':
-                                                               stat = String.format('<%:Recovering%>(%d)', st.wans[i].count);
-                                                               cssc = 'wanrecov';
-                                                               break;
-
-                                                       case 'failing':
-                                                               stat = String.format('<%:Failing%>(%d)', st.wans[i].count);
-                                                               cssc = 'wanfail';
-                                                               break;
-                                               }
-
-                                               temp += String.format(
-                                                       '<span class="%s"><strong>%s (<a href="%q">%s</a>) :</strong> %s</span>',
-                                                               cssc, st.wans[i].name, st.wans[i].link, st.wans[i].ifname, stat
-                                               );
-                                       }
-                                       
-                                       tx.innerHTML = temp;
-                               }
-                               else
-                               {
-                                       tx.innerHTML = '';
-                               }
-                       }
-               }
-       );
-//]]></script>
-
-<style type="text/css">
-  .wanok { background-color: rgb(144, 240, 144); }
-  .wanko { background-color: rgb(240, 144, 144); }
-  .wanrecov { background-color: rgb(240, 240, 0); }
-  .wanfail { background-color: rgb(255, 165, 0); }
-  .wanko, .wanok, .wanrecov, .wanfail {
-       padding: 0.4em;
-       margin: 0.4em;
-  }
-</style>
-
-<fieldset class="cbi-section">
-       <legend><%:Multi-WAN Status%></legend>
-       <div id="multiwan_status_text" style="text-align:center;"><em><%:Collecting data...%></em></div>
-</fieldset>
diff --git a/applications/luci-app-multiwan/po/ca/multiwan.po b/applications/luci-app-multiwan/po/ca/multiwan.po
deleted file mode 100644 (file)
index eb81ae8..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-07-01 04:22+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"
-
-msgid "Attempts Before WAN Failover"
-msgstr "Intents abans de commutació WAN"
-
-msgid "Attempts Before WAN Recovery"
-msgstr "Intents abans de recuperació WAN"
-
-msgid "Auto"
-msgstr "Auto"
-
-msgid "Collecting data..."
-msgstr "Recollint dades..."
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-"Configureu les regles per dirigir trànsit sortint a través d'enllaços "
-"ascendents WAN especificats."
-
-msgid "DNS Server(s)"
-msgstr "Servidors DNS"
-
-msgid "Default Route"
-msgstr "Ruta per defecte"
-
-msgid "Destination Address"
-msgstr "Adreça de destí"
-
-msgid "Disable"
-msgstr "Inhabilita"
-
-msgid "Enable"
-msgstr "Habilita"
-
-msgid "Failing"
-msgstr "Fallant"
-
-msgid "Failover Traffic Destination"
-msgstr "Destí de trànsit al commutar"
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "Hosts ICMP de monitor de salut"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr "Temps d'espera ICMP del monitor de salut"
-
-msgid "Health Monitor Interval"
-msgstr "Interval del monitor de salut"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-"El monitor de salut detecta i corregeix canvis de xarxa i connexions "
-"fallades."
-
-msgid "KO"
-msgstr "KO"
-
-msgid "Load Balancer Distribution"
-msgstr "Distribució de l'equilibrador de carrega"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "Equilibrador de carrega (compatibilitat)"
-
-msgid "Load Balancer(Performance)"
-msgstr "Equilibrador de carrega (rendiment)"
-
-msgid "Multi-WAN"
-msgstr "Multi-WAN"
-
-msgid "Multi-WAN Status"
-msgstr "Estat de Multi-WAN"
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "Regles de trànsit de Multi-WAN"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-"El Multi-WAN permet el ús de múltiples enllaços ascendents per a equilibri "
-"de carrega i commutació d'errors."
-
-msgid "None"
-msgstr "Cap"
-
-msgid "OK"
-msgstr "D'acord"
-
-msgid "Ports"
-msgstr "Ports"
-
-msgid "Protocol"
-msgstr "Protocol"
-
-msgid "Recovering"
-msgstr "Recuperant"
-
-msgid "Source Address"
-msgstr "Adreça d'origen"
-
-msgid "Unknown"
-msgstr "Desconegut"
-
-msgid "WAN Interfaces"
-msgstr "Interfícies WAN"
-
-msgid "WAN Uplink"
-msgstr "Enllaç ascendent WAN"
-
-msgid "all"
-msgstr "tots"
diff --git a/applications/luci-app-multiwan/po/cs/multiwan.po b/applications/luci-app-multiwan/po/cs/multiwan.po
deleted file mode 100644 (file)
index 0629827..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-07-11 19:45+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"
-
-msgid "Attempts Before WAN Failover"
-msgstr "Počet pokusů před spuštěním záložního WAN"
-
-msgid "Attempts Before WAN Recovery"
-msgstr "Počet pokusů před obnovou WAN"
-
-msgid "Auto"
-msgstr "Automaticky"
-
-msgid "Collecting data..."
-msgstr "Sbírám data..."
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-"Nastavit pravidla pro směrování odchozích paketů přes konkrétní WAN "
-"rozhraní."
-
-msgid "DNS Server(s)"
-msgstr "DNS server(y)"
-
-msgid "Default Route"
-msgstr "Výchozí brána"
-
-msgid "Destination Address"
-msgstr "Cílová adresa"
-
-msgid "Disable"
-msgstr "Vypnout"
-
-msgid "Enable"
-msgstr "Povolit"
-
-msgid "Failing"
-msgstr "Selhání"
-
-msgid "Failover Traffic Destination"
-msgstr "Cíl záložního spojení"
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "Monitorování dostupnosti - ICMP host(é)"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr "Monitorování dostupnosti - ICMP časový limit"
-
-msgid "Health Monitor Interval"
-msgstr "Monitorování dostupnosti - interval"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-"Monitorování dostupnosti kontroluje a opravuje změny v síti a selhání "
-"připojení."
-
-msgid "KO"
-msgstr "KO"
-
-msgid "Load Balancer Distribution"
-msgstr "Load Balancer - rozdělení"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "Load Balancer(Kompatibilita)"
-
-msgid "Load Balancer(Performance)"
-msgstr "Load Balancer(Výkon)"
-
-msgid "Multi-WAN"
-msgstr "Multi-WAN"
-
-msgid "Multi-WAN Status"
-msgstr "Stav Multi-WAN"
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "Multi-WAN pravidla směrování"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-"Multi-WAN umožňuje použít několik internetových připojení pro vyvažování "
-"zátěže a zálohy připojení."
-
-msgid "None"
-msgstr "Žádný"
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Ports"
-msgstr "Porty"
-
-msgid "Protocol"
-msgstr "Protokol"
-
-msgid "Recovering"
-msgstr "Obnovuji"
-
-msgid "Source Address"
-msgstr "Zdrojová adresa"
-
-msgid "Unknown"
-msgstr "Neznámý"
-
-msgid "WAN Interfaces"
-msgstr "WAN rozhraní"
-
-msgid "WAN Uplink"
-msgstr "WAN připojení"
-
-msgid "all"
-msgstr "Všechny"
diff --git a/applications/luci-app-multiwan/po/de/multiwan.po b/applications/luci-app-multiwan/po/de/multiwan.po
deleted file mode 100644 (file)
index 2fa789f..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-08-10 02:55+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"
-
-msgid "Attempts Before WAN Failover"
-msgstr "Versuche vor Umschalten auf WAN Ersatzverbindung"
-
-msgid "Attempts Before WAN Recovery"
-msgstr "Versuche vor dem Zurückschalten auf normale WAN Verbindung"
-
-msgid "Auto"
-msgstr "automatisch"
-
-msgid "Collecting data..."
-msgstr "Sammle Daten..."
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-"Mit diesen Regeln kann ausgehender Verkehr bestimmten WAN-Uplinks zugeordnet "
-"werden."
-
-msgid "DNS Server(s)"
-msgstr "DNS Server"
-
-msgid "Default Route"
-msgstr "Standardroute"
-
-msgid "Destination Address"
-msgstr "Zieladresse"
-
-msgid "Disable"
-msgstr "Deaktivieren"
-
-msgid "Enable"
-msgstr "Aktivieren"
-
-msgid "Failing"
-msgstr "Versagt"
-
-msgid "Failover Traffic Destination"
-msgstr "Failover Traffic Ziel"
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "ICMP Host(s) zur Verbindungsüberwachung"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr "Timeout für ICMP-Pakete zur Verbindungsüberwachung"
-
-msgid "Health Monitor Interval"
-msgstr "Intervall für Verbindungsüberwachung"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-"Die Verbindungsüberwachung erkennt und behebt Netzwerkänderungen und "
-"Verbindungsabbrüche."
-
-msgid "KO"
-msgstr "Getrennt"
-
-msgid "Load Balancer Distribution"
-msgstr "Load Balancer Verteilung"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "Load Balancer (Kompatibilität)"
-
-msgid "Load Balancer(Performance)"
-msgstr "Load Balancer (Performance)"
-
-msgid "Multi-WAN"
-msgstr "Multi-WAN"
-
-msgid "Multi-WAN Status"
-msgstr "Multi-WAN Status"
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "Multi-WAN Verkehrsregeln"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-"Multi-WAN erlaubt es, mehrere ISP-Verbindungen gleichzeitig oder als "
-"Ersatzverbindung beim Ausfall der Hauptverbindung zu verwenden."
-
-msgid "None"
-msgstr "Keine"
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Ports"
-msgstr "Ports"
-
-msgid "Protocol"
-msgstr "Protokoll"
-
-msgid "Recovering"
-msgstr "Neu verbunden"
-
-msgid "Source Address"
-msgstr "Quelladresse"
-
-msgid "Unknown"
-msgstr "Unbekannt"
-
-msgid "WAN Interfaces"
-msgstr "WAN-Schnittstellen"
-
-msgid "WAN Uplink"
-msgstr "WAN Uplink-Verbindung"
-
-msgid "all"
-msgstr "alle"
diff --git a/applications/luci-app-multiwan/po/el/multiwan.po b/applications/luci-app-multiwan/po/el/multiwan.po
deleted file mode 100644 (file)
index 48d3165..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-03-18 15:16+0200\n"
-"Last-Translator: Vasilis <acinonyx@openwrt.gr>\n"
-"Language-Team: none\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"
-
-msgid "Attempts Before WAN Failover"
-msgstr ""
-
-msgid "Attempts Before WAN Recovery"
-msgstr ""
-
-msgid "Auto"
-msgstr ""
-
-msgid "Collecting data..."
-msgstr ""
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-
-msgid "DNS Server(s)"
-msgstr ""
-
-msgid "Default Route"
-msgstr ""
-
-msgid "Destination Address"
-msgstr "Διεύθυνση Προορισμού"
-
-msgid "Disable"
-msgstr "Απενεργοποίηση"
-
-msgid "Enable"
-msgstr "Ενεργοποίηση"
-
-msgid "Failing"
-msgstr ""
-
-msgid "Failover Traffic Destination"
-msgstr ""
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr ""
-
-msgid "Health Monitor ICMP Timeout"
-msgstr ""
-
-msgid "Health Monitor Interval"
-msgstr ""
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-
-msgid "KO"
-msgstr ""
-
-msgid "Load Balancer Distribution"
-msgstr ""
-
-msgid "Load Balancer(Compatibility)"
-msgstr ""
-
-msgid "Load Balancer(Performance)"
-msgstr ""
-
-msgid "Multi-WAN"
-msgstr ""
-
-msgid "Multi-WAN Status"
-msgstr ""
-
-msgid "Multi-WAN Traffic Rules"
-msgstr ""
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-
-msgid "None"
-msgstr ""
-
-msgid "OK"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Protocol"
-msgstr "Πρωτόκολλο"
-
-msgid "Recovering"
-msgstr ""
-
-msgid "Source Address"
-msgstr ""
-
-msgid "Unknown"
-msgstr ""
-
-msgid "WAN Interfaces"
-msgstr ""
-
-msgid "WAN Uplink"
-msgstr ""
-
-msgid "all"
-msgstr ""
diff --git a/applications/luci-app-multiwan/po/en/multiwan.po b/applications/luci-app-multiwan/po/en/multiwan.po
deleted file mode 100644 (file)
index 241e6d0..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-#  multiwan.po
-#  generated from /tmp/i18n/luasrc/i18n/multiwan.en.lua
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8\n"
-
-msgid "Attempts Before WAN Failover"
-msgstr "Attempts Before WAN Failover"
-
-msgid "Attempts Before WAN Recovery"
-msgstr "Attempts Before WAN Recovery"
-
-msgid "Auto"
-msgstr "Auto"
-
-msgid "Collecting data..."
-msgstr ""
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-
-msgid "DNS Server(s)"
-msgstr "DNS Server(s)"
-
-msgid "Default Route"
-msgstr "Default Route"
-
-msgid "Destination Address"
-msgstr "Destination Address"
-
-msgid "Disable"
-msgstr "Disable"
-
-msgid "Enable"
-msgstr "Enable"
-
-msgid "Failing"
-msgstr ""
-
-msgid "Failover Traffic Destination"
-msgstr "Failover Traffic Destination"
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "Health Monitor ICMP Host(s)"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr "Health Monitor ICMP Timeout"
-
-msgid "Health Monitor Interval"
-msgstr "Health Monitor Interval"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-"Health Monitor detects and corrects network changes and failed connections."
-
-msgid "KO"
-msgstr ""
-
-msgid "Load Balancer Distribution"
-msgstr "Load Balancer Distribution"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "Load Balancer(Compatibility)"
-
-msgid "Load Balancer(Performance)"
-msgstr "Load Balancer(Performance)"
-
-msgid "Multi-WAN"
-msgstr "Multi-WAN"
-
-msgid "Multi-WAN Status"
-msgstr ""
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "Multi-WAN Traffic Rules"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-
-msgid "None"
-msgstr "None"
-
-msgid "OK"
-msgstr ""
-
-msgid "Ports"
-msgstr "Ports"
-
-msgid "Protocol"
-msgstr "Protocol"
-
-msgid "Recovering"
-msgstr ""
-
-msgid "Source Address"
-msgstr "Source Address"
-
-msgid "Unknown"
-msgstr ""
-
-msgid "WAN Interfaces"
-msgstr "WAN Interfaces"
-
-msgid "WAN Uplink"
-msgstr "WAN Uplink"
-
-msgid "all"
-msgstr ""
diff --git a/applications/luci-app-multiwan/po/es/multiwan.po b/applications/luci-app-multiwan/po/es/multiwan.po
deleted file mode 100644 (file)
index 4d2447e..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-08-23 23:07+0200\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: Pootle 2.0.6\n"
-
-msgid "Attempts Before WAN Failover"
-msgstr "Reintentos ante fallo de la WAN"
-
-msgid "Attempts Before WAN Recovery"
-msgstr "Reintentos tras recuperar la WAN"
-
-msgid "Auto"
-msgstr "Auto"
-
-msgid "Collecting data..."
-msgstr "Recuperando datos..."
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-"Configure las reglas que redirigen el tráfico saliente a través de los "
-"enlaces WAN salientes especificados."
-
-msgid "DNS Server(s)"
-msgstr "Servidor/es DNS"
-
-msgid "Default Route"
-msgstr "Ruta por defecto"
-
-msgid "Destination Address"
-msgstr "Dirección de destino"
-
-msgid "Disable"
-msgstr "Desactivar"
-
-msgid "Enable"
-msgstr "Activar"
-
-msgid "Failing"
-msgstr "Fallando"
-
-msgid "Failover Traffic Destination"
-msgstr "Destino del tráfico en caso de fallo"
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "Monitores de salud ICMP"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr "Espera monitor de salud ICMP"
-
-msgid "Health Monitor Interval"
-msgstr "Intervalo del monitor de salud"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-"El monitor de salud detecta y corrige cambios en la red y conexiones "
-"fallidas."
-
-msgid "KO"
-msgstr "KO"
-
-msgid "Load Balancer Distribution"
-msgstr "Distribución del balanceador de carga"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "Balanceador de carga (compatibilidad)"
-
-msgid "Load Balancer(Performance)"
-msgstr "Balanceador de carga (rendimiento)"
-
-msgid "Multi-WAN"
-msgstr "Multi-WAN"
-
-msgid "Multi-WAN Status"
-msgstr "Estado de Multi-WAN"
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "Reglas de tráfico Multi-WAN"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-"Multi-WAN permite el use varios enlaces de salida para balancear la carga y "
-"control de fallos."
-
-msgid "None"
-msgstr "Ninguno"
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Ports"
-msgstr "Puertos"
-
-msgid "Protocol"
-msgstr "Protocolo"
-
-msgid "Recovering"
-msgstr "Recuperación"
-
-msgid "Source Address"
-msgstr "Dirección origen"
-
-msgid "Unknown"
-msgstr "Desconocido"
-
-msgid "WAN Interfaces"
-msgstr "Interfaces WAN"
-
-msgid "WAN Uplink"
-msgstr "Enlace saliente WAN"
-
-msgid "all"
-msgstr "todos"
diff --git a/applications/luci-app-multiwan/po/fr/multiwan.po b/applications/luci-app-multiwan/po/fr/multiwan.po
deleted file mode 100644 (file)
index 39b1421..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-11-06 16:07+0200\n"
-"Last-Translator: hogsim <hogsim@gmail.com>\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"
-
-msgid "Attempts Before WAN Failover"
-msgstr "Essais avant de déclarer un WAN défaillant"
-
-msgid "Attempts Before WAN Recovery"
-msgstr "Essais avant de déclarer qu'un WAN est rétabli"
-
-msgid "Auto"
-msgstr "Auto"
-
-msgid "Collecting data..."
-msgstr "Collection de données..."
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-"Configuration de règles pour diriger le trafic sortant à travers des liens "
-"WAN sécifiés."
-
-msgid "DNS Server(s)"
-msgstr "Serveur(s) DNS"
-
-msgid "Default Route"
-msgstr "Route par défaut"
-
-msgid "Destination Address"
-msgstr "Adresse de destination"
-
-msgid "Disable"
-msgstr "Désactiver"
-
-msgid "Enable"
-msgstr "Activer"
-
-msgid "Failing"
-msgstr "Défaillance"
-
-msgid "Failover Traffic Destination"
-msgstr "Destination du trafic en cas de défaillance"
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "Hôte(s) à pinguer pour valider le lien"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr "Delai max du ping de validation du lien"
-
-msgid "Health Monitor Interval"
-msgstr "Invervalle de validation du lien"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-"La validation de liens détecte et corrige les changements du réseau et les "
-"connexions défaillantes."
-
-msgid "KO"
-msgstr "KO"
-
-msgid "Load Balancer Distribution"
-msgstr "Distribution d'équilibrage de charge"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "Équilibrage de charge (compatibilité)"
-
-msgid "Load Balancer(Performance)"
-msgstr "Équilibrage de charge (performance)"
-
-msgid "Multi-WAN"
-msgstr "Multi-WAN"
-
-msgid "Multi-WAN Status"
-msgstr "Statut Multi-WAN"
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "Règles de trafic avec des liens sortants multiples"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-"Multi-WAN permet l'utilisation de liens sortants multiples pour la "
-"l'équilibrage de charge et la répartition sur les autres en cas de "
-"défaillance."
-
-msgid "None"
-msgstr "Aucun"
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Ports"
-msgstr "Ports"
-
-msgid "Protocol"
-msgstr "Protocole"
-
-msgid "Recovering"
-msgstr "Récupération"
-
-msgid "Source Address"
-msgstr "Adresse source"
-
-msgid "Unknown"
-msgstr "Inconnu"
-
-msgid "WAN Interfaces"
-msgstr "Interfaces WAN"
-
-msgid "WAN Uplink"
-msgstr "Lien remontant WAN"
-
-msgid "all"
-msgstr "tous"
diff --git a/applications/luci-app-multiwan/po/he/multiwan.po b/applications/luci-app-multiwan/po/he/multiwan.po
deleted file mode 100644 (file)
index 2188822..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-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"
-
-msgid "Attempts Before WAN Failover"
-msgstr ""
-
-msgid "Attempts Before WAN Recovery"
-msgstr ""
-
-msgid "Auto"
-msgstr ""
-
-msgid "Collecting data..."
-msgstr ""
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-
-msgid "DNS Server(s)"
-msgstr ""
-
-msgid "Default Route"
-msgstr ""
-
-msgid "Destination Address"
-msgstr ""
-
-msgid "Disable"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Failing"
-msgstr ""
-
-msgid "Failover Traffic Destination"
-msgstr ""
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr ""
-
-msgid "Health Monitor ICMP Timeout"
-msgstr ""
-
-msgid "Health Monitor Interval"
-msgstr ""
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-
-msgid "KO"
-msgstr ""
-
-msgid "Load Balancer Distribution"
-msgstr ""
-
-msgid "Load Balancer(Compatibility)"
-msgstr ""
-
-msgid "Load Balancer(Performance)"
-msgstr ""
-
-msgid "Multi-WAN"
-msgstr ""
-
-msgid "Multi-WAN Status"
-msgstr ""
-
-msgid "Multi-WAN Traffic Rules"
-msgstr ""
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-
-msgid "None"
-msgstr ""
-
-msgid "OK"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Protocol"
-msgstr ""
-
-msgid "Recovering"
-msgstr ""
-
-msgid "Source Address"
-msgstr ""
-
-msgid "Unknown"
-msgstr ""
-
-msgid "WAN Interfaces"
-msgstr ""
-
-msgid "WAN Uplink"
-msgstr ""
-
-msgid "all"
-msgstr ""
diff --git a/applications/luci-app-multiwan/po/hu/multiwan.po b/applications/luci-app-multiwan/po/hu/multiwan.po
deleted file mode 100644 (file)
index 20ff8d6..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-12-30 19:12+0200\n"
-"Last-Translator: romboyco <romboyco@gmail.com>\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"
-
-msgid "Attempts Before WAN Failover"
-msgstr "Próbálkozások WAN átállás előtt"
-
-msgid "Attempts Before WAN Recovery"
-msgstr "Probálkozások WAN helyreállítás előtt"
-
-msgid "Auto"
-msgstr "Automatikus"
-
-msgid "Collecting data..."
-msgstr "Adatok gyűjtése..."
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-"Szabályok beállítása a kimenő forgalom megadott WAN kapcsolatra "
-"irányításához."
-
-msgid "DNS Server(s)"
-msgstr "DNS kiszolgáló(k)"
-
-msgid "Default Route"
-msgstr "Alapértelmezett útvonal"
-
-msgid "Destination Address"
-msgstr "Cél cím"
-
-msgid "Disable"
-msgstr "Letiltás"
-
-msgid "Enable"
-msgstr "Engedélyezés"
-
-msgid "Failing"
-msgstr "Csökkenő"
-
-msgid "Failover Traffic Destination"
-msgstr "Failover forgalom cél"
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "ICMP gépek kapcsolat monitorozáshoz"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr "ICMP csomagok időtúllépése a kapcsolat monitorozásánál"
-
-msgid "Health Monitor Interval"
-msgstr "Kapcsolat monitorozási intervallum"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-"A kapcsolat monitorozás megállapítja és korrigálja a hálózati változásokat "
-"és sikertelen kapcsolatokat."
-
-msgid "KO"
-msgstr "KO"
-
-msgid "Load Balancer Distribution"
-msgstr "Load balancer megosztás"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "Terhelés kiegyensúlyozás (kompatibilitás)"
-
-msgid "Load Balancer(Performance)"
-msgstr "Terhelés kiegyensúlyozás (teljesítmény)"
-
-msgid "Multi-WAN"
-msgstr "Többszörös WAN"
-
-msgid "Multi-WAN Status"
-msgstr "Többszörös WAN állapot"
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "Többszörös WAN forgalmi szabályok"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-"A Multi-WAN lehetővé teszi több kapcsolat használatát egyidejűleg, vagy az "
-"elsődleges kapcsolat esetleges hibája esetén."
-
-msgid "None"
-msgstr "Nincs"
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Ports"
-msgstr "Portok"
-
-msgid "Protocol"
-msgstr "Protokoll"
-
-msgid "Recovering"
-msgstr "Helyreállítás"
-
-msgid "Source Address"
-msgstr "Forrás cím"
-
-msgid "Unknown"
-msgstr "Ismeretlen"
-
-msgid "WAN Interfaces"
-msgstr "WAN interfészek"
-
-msgid "WAN Uplink"
-msgstr "WAN kapcsolat"
-
-msgid "all"
-msgstr "összes"
diff --git a/applications/luci-app-multiwan/po/it/multiwan.po b/applications/luci-app-multiwan/po/it/multiwan.po
deleted file mode 100644 (file)
index 863b351..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-02-03 14:00+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"
-
-msgid "Attempts Before WAN Failover"
-msgstr "Tentativi su WAN prima del Failover"
-
-msgid "Attempts Before WAN Recovery"
-msgstr "Tentativi su WAN prima del Recovery"
-
-msgid "Auto"
-msgstr "Auto"
-
-msgid "Collecting data..."
-msgstr "Raccolta di dati..."
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-"Configura le regole per inviare direttamente in uscita il traffico su una "
-"uplink Wan specifico."
-
-msgid "DNS Server(s)"
-msgstr "DNS Server(s)"
-
-msgid "Default Route"
-msgstr "Default Route"
-
-msgid "Destination Address"
-msgstr "Indirizzo di destinazione"
-
-msgid "Disable"
-msgstr "Disable"
-
-msgid "Enable"
-msgstr "Enable"
-
-msgid "Failing"
-msgstr "Fallimento"
-
-msgid "Failover Traffic Destination"
-msgstr "Destinazione del traffico in failover"
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "Health Monitor ICMP Host(s)"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr "Health Monitor ICMP Timeout"
-
-msgid "Health Monitor Interval"
-msgstr "Health Monitor Interval"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-"L'health monitor monitora e identifica i cambiamenti e la manca di "
-"connessioni."
-
-msgid "KO"
-msgstr "KO"
-
-msgid "Load Balancer Distribution"
-msgstr "Bilanciamento del carico"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "Carica Bilanciatore (Compatibilità)"
-
-msgid "Load Balancer(Performance)"
-msgstr "Carica Bilanciatore (Performance)"
-
-msgid "Multi-WAN"
-msgstr "Multi-WAN"
-
-msgid "Multi-WAN Status"
-msgstr "Stato Multi-WAN"
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "Regole del Traffico Multi-WAN"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-"Multi-WAN permette di usare uplink multipi per il bilanciamento del carico e "
-"la ridondanza da failover."
-
-msgid "None"
-msgstr "None"
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Ports"
-msgstr "Porte"
-
-msgid "Protocol"
-msgstr "Protocollo"
-
-msgid "Recovering"
-msgstr "Recupero"
-
-msgid "Source Address"
-msgstr "Indirizzo sorgente"
-
-msgid "Unknown"
-msgstr "Sconosciuto"
-
-msgid "WAN Interfaces"
-msgstr "Interfaccia WAN"
-
-msgid "WAN Uplink"
-msgstr "Collegamento ascendente WAN"
-
-msgid "all"
-msgstr "all"
diff --git a/applications/luci-app-multiwan/po/ja/multiwan.po b/applications/luci-app-multiwan/po/ja/multiwan.po
deleted file mode 100644 (file)
index ab41562..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-10-06 17:17+0200\n"
-"Last-Translator: Kentaro <kentaro.matsuyama@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: Pootle 2.0.6\n"
-
-msgid "Attempts Before WAN Failover"
-msgstr ""
-
-msgid "Attempts Before WAN Recovery"
-msgstr ""
-
-msgid "Auto"
-msgstr "自動"
-
-msgid "Collecting data..."
-msgstr ""
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-
-msgid "DNS Server(s)"
-msgstr "DNSサーバー"
-
-msgid "Default Route"
-msgstr "デフォルトルート"
-
-msgid "Destination Address"
-msgstr "宛先アドレス"
-
-msgid "Disable"
-msgstr "無効"
-
-msgid "Enable"
-msgstr "有効"
-
-msgid "Failing"
-msgstr ""
-
-msgid "Failover Traffic Destination"
-msgstr ""
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "ヘルスモニタ ICMP宛先"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr "ヘルスモニタ ICMP タイムアウト"
-
-msgid "Health Monitor Interval"
-msgstr "ヘルスモニタ更新間隔"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr "ヘルスモニタは、ネットワークの変更及び接続失敗の検出と調整を行います。"
-
-msgid "KO"
-msgstr ""
-
-msgid "Load Balancer Distribution"
-msgstr "ロードバランサ ディストリビューション"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "ロードバランサ (互換性)"
-
-msgid "Load Balancer(Performance)"
-msgstr "ロードバランサ (パフォーマンス)"
-
-msgid "Multi-WAN"
-msgstr "Multi-WAN"
-
-msgid "Multi-WAN Status"
-msgstr ""
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "Multi-WAN トラフィック・ルール"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-"Multi-WANを用いることで、複数の上りリンクを使用してロードバランサとフェイル"
-"オーバー機能を使用することができます。"
-
-msgid "None"
-msgstr "なし"
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Ports"
-msgstr "ポート"
-
-msgid "Protocol"
-msgstr "プロトコル"
-
-msgid "Recovering"
-msgstr ""
-
-msgid "Source Address"
-msgstr "送信元アドレス"
-
-msgid "Unknown"
-msgstr "不明"
-
-msgid "WAN Interfaces"
-msgstr "WAN インターフェースリスト"
-
-msgid "WAN Uplink"
-msgstr "WAN アップリンク"
-
-msgid "all"
-msgstr "全て"
diff --git a/applications/luci-app-multiwan/po/ms/multiwan.po b/applications/luci-app-multiwan/po/ms/multiwan.po
deleted file mode 100644 (file)
index d175246..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-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"
-
-msgid "Attempts Before WAN Failover"
-msgstr ""
-
-msgid "Attempts Before WAN Recovery"
-msgstr ""
-
-msgid "Auto"
-msgstr ""
-
-msgid "Collecting data..."
-msgstr ""
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-
-msgid "DNS Server(s)"
-msgstr ""
-
-msgid "Default Route"
-msgstr ""
-
-msgid "Destination Address"
-msgstr ""
-
-msgid "Disable"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Failing"
-msgstr ""
-
-msgid "Failover Traffic Destination"
-msgstr ""
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr ""
-
-msgid "Health Monitor ICMP Timeout"
-msgstr ""
-
-msgid "Health Monitor Interval"
-msgstr ""
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-
-msgid "KO"
-msgstr ""
-
-msgid "Load Balancer Distribution"
-msgstr ""
-
-msgid "Load Balancer(Compatibility)"
-msgstr ""
-
-msgid "Load Balancer(Performance)"
-msgstr ""
-
-msgid "Multi-WAN"
-msgstr ""
-
-msgid "Multi-WAN Status"
-msgstr ""
-
-msgid "Multi-WAN Traffic Rules"
-msgstr ""
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-
-msgid "None"
-msgstr ""
-
-msgid "OK"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Protocol"
-msgstr ""
-
-msgid "Recovering"
-msgstr ""
-
-msgid "Source Address"
-msgstr ""
-
-msgid "Unknown"
-msgstr ""
-
-msgid "WAN Interfaces"
-msgstr ""
-
-msgid "WAN Uplink"
-msgstr ""
-
-msgid "all"
-msgstr ""
diff --git a/applications/luci-app-multiwan/po/no/multiwan.po b/applications/luci-app-multiwan/po/no/multiwan.po
deleted file mode 100644 (file)
index a6e8bc4..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-msgid ""
-msgstr ""
-"Last-Translator: Lars Hardy <lars.hardy@gmail.com>\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-msgid "Attempts Before WAN Failover"
-msgstr "Antall forsøk før WAN feilsikkerhet"
-
-msgid "Attempts Before WAN Recovery"
-msgstr "Antall forsøk før WAN gjenoppretting"
-
-msgid "Auto"
-msgstr "Auto"
-
-msgid "Collecting data..."
-msgstr ""
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-"Konfigurer regler for å styre utgående trafikk gjennom spesifiserte WAN "
-"koblinger."
-
-msgid "DNS Server(s)"
-msgstr "DNS Server(e)"
-
-msgid "Default Route"
-msgstr "Standard rute"
-
-msgid "Destination Address"
-msgstr "Destinasjonsadresse"
-
-msgid "Disable"
-msgstr "Deaktiver"
-
-msgid "Enable"
-msgstr "Aktiver"
-
-msgid "Failing"
-msgstr ""
-
-msgid "Failover Traffic Destination"
-msgstr "Feilsikkerhet trafikk destinasjon"
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "Health monitor ICMP vert(er)"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr "Health monitor ICMP tidsavbrudd"
-
-msgid "Health Monitor Interval"
-msgstr "Health monitor intervall"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-"Health monitor oppdager og korrigerer nettverks endringer og mislykkede "
-"tilkoblinger."
-
-msgid "KO"
-msgstr ""
-
-msgid "Load Balancer Distribution"
-msgstr "Lastbalansering fordeling"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "Lastbalansering (kompatibilitet)"
-
-msgid "Load Balancer(Performance)"
-msgstr "Lastbalansering (ytelse)"
-
-msgid "Multi-WAN"
-msgstr "Multi-WAN"
-
-msgid "Multi-WAN Status"
-msgstr ""
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "Multi-WAN trafikk regler"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-"Multi-WAN tillater bruk av flere internett oppkoblinger for lastbalansering "
-"og feilsikkerhet."
-
-msgid "None"
-msgstr "Ingen"
-
-msgid "OK"
-msgstr ""
-
-msgid "Ports"
-msgstr "Porter"
-
-msgid "Protocol"
-msgstr "Protokoll"
-
-msgid "Recovering"
-msgstr ""
-
-msgid "Source Address"
-msgstr "Kildeadresse"
-
-msgid "Unknown"
-msgstr ""
-
-msgid "WAN Interfaces"
-msgstr "WAN Grensesnitt"
-
-msgid "WAN Uplink"
-msgstr "WAN Opplinje"
-
-msgid "all"
-msgstr "alle"
diff --git a/applications/luci-app-multiwan/po/pl/multiwan.po b/applications/luci-app-multiwan/po/pl/multiwan.po
deleted file mode 100644 (file)
index 5904aed..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-09-01 15:25+0200\n"
-"Last-Translator: Staszek <fistaszek@tlen.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"
-
-msgid "Attempts Before WAN Failover"
-msgstr "Liczba prób przed procedurą WAN Failover (połączenie awaryjne WAN)"
-
-msgid "Attempts Before WAN Recovery"
-msgstr "Liczba prób przed procedurą WAN Recovery (przywrócenie WAN)"
-
-msgid "Auto"
-msgstr "Automatycznie"
-
-msgid "Collecting data..."
-msgstr "Zbieranie informacji..."
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-"Skonfiguruj zasady kierowania ruchu wychodzącego za pośrednictwem "
-"określonych łączy WAN."
-
-msgid "DNS Server(s)"
-msgstr "Serwer(y) DNS"
-
-msgid "Default Route"
-msgstr "Trasa domyślna"
-
-msgid "Destination Address"
-msgstr "Adres docelowy"
-
-msgid "Disable"
-msgstr "Wyłącz"
-
-msgid "Enable"
-msgstr "Włącz"
-
-msgid "Failing"
-msgstr "Niepowodzenie"
-
-msgid "Failover Traffic Destination"
-msgstr "Cel ruch dla połączenia awaryjnego"
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "Monitorowane hosty przy użyciu protokołu ICMP (ping)"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr ""
-"Czas nieosiągalności monitorowanych hostów przy użyciu protokołu ICMP (ping)"
-
-msgid "Health Monitor Interval"
-msgstr "Odstęp pomiędzy próbami monitoringu"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-"Monitor stanu wykrywa i koryguje zmiany sieci oraz nieudane połączenia."
-
-msgid "KO"
-msgstr "KO"
-
-msgid "Load Balancer Distribution"
-msgstr "Dystrybucja równoważenia obciążenia"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "Równoważenie obciążenia (Zgodność)"
-
-msgid "Load Balancer(Performance)"
-msgstr "Równoważenie obciążenia (Wydajność)"
-
-msgid "Multi-WAN"
-msgstr "Multi-WAN"
-
-msgid "Multi-WAN Status"
-msgstr "Status Multi-WAN"
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "Reguły ruchu Multi-WAN"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-"Multi-WAN pozwala na używanie kilku łącz w celu równoważenia obciążenia lub "
-"omijania awarii."
-
-msgid "None"
-msgstr "Żaden"
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Ports"
-msgstr "Porty"
-
-msgid "Protocol"
-msgstr "Protokół"
-
-msgid "Recovering"
-msgstr "Odzyskiwanie"
-
-msgid "Source Address"
-msgstr "Adres źródłowy"
-
-msgid "Unknown"
-msgstr "Nieznany"
-
-msgid "WAN Interfaces"
-msgstr "Interfejsy WAN"
-
-msgid "WAN Uplink"
-msgstr "Łącze WAN"
-
-msgid "all"
-msgstr "wszystkie"
diff --git a/applications/luci-app-multiwan/po/pt-br/multiwan.po b/applications/luci-app-multiwan/po/pt-br/multiwan.po
deleted file mode 100644 (file)
index ba72b82..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-11-11 04:01+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
-"Language-Team: none\n"
-"Language: pt_BR\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Attempts Before WAN Failover"
-msgstr "Tentativas Antes da Solução de Contorno da WAN"
-
-msgid "Attempts Before WAN Recovery"
-msgstr "Tentativas Antes da Recuperação da WAN"
-
-msgid "Auto"
-msgstr "Automático"
-
-msgid "Collecting data..."
-msgstr "Coletando dados..."
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-"Configurar regras para direcionar a saída de tráfego através de uma conexão "
-"WAN específica."
-
-msgid "DNS Server(s)"
-msgstr "Servidor(es) DNS"
-
-msgid "Default Route"
-msgstr "Rota Padrão"
-
-msgid "Destination Address"
-msgstr "Endereço de Destino"
-
-msgid "Disable"
-msgstr "Desabilitar"
-
-msgid "Enable"
-msgstr "Habilitar"
-
-msgid "Failing"
-msgstr "Falha"
-
-msgid "Failover Traffic Destination"
-msgstr "Destino do Tráfego para a Recuperação"
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "Equipamento(s) para Monitoramento da Saúde por ICMP"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr "Limite de tempo do Monitoramento da Saúde por ICMP"
-
-msgid "Health Monitor Interval"
-msgstr "Intervalo do Monitoramento da Saúde"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-"O Monitoramento da Saúde detecta e corrige as mudanças de rede e falhas nas "
-"conexões."
-
-msgid "KO"
-msgstr "KO"
-
-msgid "Load Balancer Distribution"
-msgstr "Distribuição do Balanceador de Carga"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "Balanceador de Carga(Compatibilidade)"
-
-msgid "Load Balancer(Performance)"
-msgstr "Balanceador de Carga(Desempenho)"
-
-msgid "Multi-WAN"
-msgstr "Multi-WAN"
-
-msgid "Multi-WAN Status"
-msgstr "Status de Multi-WAN"
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "Regras de Tráfego Multi-WAN"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-"O Multi-WAN permite o use de múltiplas conexões ao enlace superior (ex: "
-"internet) para o balanceamento de carga e tolerância a falha."
-
-msgid "None"
-msgstr "Nenhum"
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Ports"
-msgstr "Portas"
-
-msgid "Protocol"
-msgstr "Procotolo"
-
-msgid "Recovering"
-msgstr "Recuperação"
-
-msgid "Source Address"
-msgstr "Endereço de Origem"
-
-msgid "Unknown"
-msgstr "Desconhecido"
-
-msgid "WAN Interfaces"
-msgstr "Interfaces WAN"
-
-msgid "WAN Uplink"
-msgstr "Conexão WAN"
-
-msgid "all"
-msgstr "todos"
diff --git a/applications/luci-app-multiwan/po/pt/multiwan.po b/applications/luci-app-multiwan/po/pt/multiwan.po
deleted file mode 100644 (file)
index 95eeba8..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-09-22 18:29+0200\n"
-"Last-Translator: Low <pedroloureiro1@sapo.pt>\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"
-
-msgid "Attempts Before WAN Failover"
-msgstr ""
-
-msgid "Attempts Before WAN Recovery"
-msgstr ""
-
-msgid "Auto"
-msgstr "Automático"
-
-msgid "Collecting data..."
-msgstr ""
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-
-msgid "DNS Server(s)"
-msgstr "Servidor(s) DNS"
-
-msgid "Default Route"
-msgstr ""
-
-msgid "Destination Address"
-msgstr "Endereço de Destino"
-
-msgid "Disable"
-msgstr "Desativar"
-
-msgid "Enable"
-msgstr "Activar"
-
-msgid "Failing"
-msgstr ""
-
-msgid "Failover Traffic Destination"
-msgstr ""
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr ""
-
-msgid "Health Monitor ICMP Timeout"
-msgstr ""
-
-msgid "Health Monitor Interval"
-msgstr ""
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-
-msgid "KO"
-msgstr ""
-
-msgid "Load Balancer Distribution"
-msgstr ""
-
-msgid "Load Balancer(Compatibility)"
-msgstr ""
-
-msgid "Load Balancer(Performance)"
-msgstr ""
-
-msgid "Multi-WAN"
-msgstr ""
-
-msgid "Multi-WAN Status"
-msgstr ""
-
-msgid "Multi-WAN Traffic Rules"
-msgstr ""
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-
-msgid "None"
-msgstr "Nenhum"
-
-msgid "OK"
-msgstr ""
-
-msgid "Ports"
-msgstr "Portas"
-
-msgid "Protocol"
-msgstr "Procotolo"
-
-msgid "Recovering"
-msgstr ""
-
-msgid "Source Address"
-msgstr "Endereço de Origem"
-
-msgid "Unknown"
-msgstr "Desconhecido"
-
-msgid "WAN Interfaces"
-msgstr ""
-
-msgid "WAN Uplink"
-msgstr ""
-
-msgid "all"
-msgstr "todos"
diff --git a/applications/luci-app-multiwan/po/ro/multiwan.po b/applications/luci-app-multiwan/po/ro/multiwan.po
deleted file mode 100644 (file)
index cd51944..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-07-09 13:26+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"
-
-msgid "Attempts Before WAN Failover"
-msgstr ""
-
-msgid "Attempts Before WAN Recovery"
-msgstr ""
-
-msgid "Auto"
-msgstr ""
-
-msgid "Collecting data..."
-msgstr "Colectare date..."
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-
-msgid "DNS Server(s)"
-msgstr "Server(e) DNS"
-
-msgid "Default Route"
-msgstr "Ruta default"
-
-msgid "Destination Address"
-msgstr "Adresă destinaţie"
-
-msgid "Disable"
-msgstr "Dezactivează"
-
-msgid "Enable"
-msgstr "Activează"
-
-msgid "Failing"
-msgstr ""
-
-msgid "Failover Traffic Destination"
-msgstr ""
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr ""
-
-msgid "Health Monitor ICMP Timeout"
-msgstr ""
-
-msgid "Health Monitor Interval"
-msgstr ""
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-
-msgid "KO"
-msgstr ""
-
-msgid "Load Balancer Distribution"
-msgstr ""
-
-msgid "Load Balancer(Compatibility)"
-msgstr ""
-
-msgid "Load Balancer(Performance)"
-msgstr ""
-
-msgid "Multi-WAN"
-msgstr ""
-
-msgid "Multi-WAN Status"
-msgstr ""
-
-msgid "Multi-WAN Traffic Rules"
-msgstr ""
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-
-msgid "None"
-msgstr ""
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Ports"
-msgstr "Porturi"
-
-msgid "Protocol"
-msgstr "Protocol"
-
-msgid "Recovering"
-msgstr "Recuperare"
-
-msgid "Source Address"
-msgstr "Adresa sursei"
-
-msgid "Unknown"
-msgstr "Necunoscut"
-
-msgid "WAN Interfaces"
-msgstr "Interfeţe WAN"
-
-msgid "WAN Uplink"
-msgstr ""
-
-msgid "all"
-msgstr "toate"
diff --git a/applications/luci-app-multiwan/po/ru/multiwan.po b/applications/luci-app-multiwan/po/ru/multiwan.po
deleted file mode 100644 (file)
index c12d920..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: LuCI: multiwan\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2012-08-15 14:05+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\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"
-"X-Poedit-SourceCharset: UTF-8\n"
-
-msgid "Attempts Before WAN Failover"
-msgstr "Количество попыток перед обработкой отказа WAN"
-
-msgid "Attempts Before WAN Recovery"
-msgstr "Количество попыток перед восстановлением WAN"
-
-msgid "Auto"
-msgstr "Автоматически"
-
-msgid "Collecting data..."
-msgstr "Сбор данных..."
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-"Укажите правила для направления исходящего трафика через заданные восходящие "
-"каналы WAN."
-
-msgid "DNS Server(s)"
-msgstr "DNS-сервер(ы)"
-
-msgid "Default Route"
-msgstr "Маршрут по умолчанию"
-
-msgid "Destination Address"
-msgstr "Адрес назначения"
-
-msgid "Disable"
-msgstr "Отключить"
-
-msgid "Enable"
-msgstr "Включить"
-
-msgid "Failing"
-msgstr "Отказ"
-
-msgid "Failover Traffic Destination"
-msgstr "Назначение трафика при обработке отказа"
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "ICMP-хост(ы) для контроля состояния"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr "Тайм-аут контроля состояния по ICMP"
-
-msgid "Health Monitor Interval"
-msgstr "Интервал контроля состояния"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-"Контроль состояния определяет и исправляет изменения сети и неисправные "
-"соединения."
-
-msgid "KO"
-msgstr "Не работает"
-
-msgid "Load Balancer Distribution"
-msgstr "Распределение балансировки нагрузки"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "Балансировка нагрузки (совместимость)"
-
-msgid "Load Balancer(Performance)"
-msgstr "Балансировка нагрузки (производительность)"
-
-msgid "Multi-WAN"
-msgstr "Мульти-WAN"
-
-msgid "Multi-WAN Status"
-msgstr "Состояние мульти-WAN"
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "Правила для мульти-WAN трафика"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-"Мульти-WAN позволяет использовать несколько портов восходящего канала для "
-"балансировки нагрузки и отказоустойчивости."
-
-msgid "None"
-msgstr "Ни один из"
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Ports"
-msgstr "Порты"
-
-msgid "Protocol"
-msgstr "Протокол"
-
-msgid "Recovering"
-msgstr "Восстановление"
-
-msgid "Source Address"
-msgstr "Адрес отправителя"
-
-msgid "Unknown"
-msgstr "Неизвестно"
-
-msgid "WAN Interfaces"
-msgstr "WAN-интерфейсы"
-
-msgid "WAN Uplink"
-msgstr "Восходящий канал WAN"
-
-msgid "all"
-msgstr "все"
diff --git a/applications/luci-app-multiwan/po/sk/multiwan.po b/applications/luci-app-multiwan/po/sk/multiwan.po
deleted file mode 100644 (file)
index b113eac..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"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"
-
-msgid "Attempts Before WAN Failover"
-msgstr ""
-
-msgid "Attempts Before WAN Recovery"
-msgstr ""
-
-msgid "Auto"
-msgstr ""
-
-msgid "Collecting data..."
-msgstr ""
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-
-msgid "DNS Server(s)"
-msgstr ""
-
-msgid "Default Route"
-msgstr ""
-
-msgid "Destination Address"
-msgstr ""
-
-msgid "Disable"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Failing"
-msgstr ""
-
-msgid "Failover Traffic Destination"
-msgstr ""
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr ""
-
-msgid "Health Monitor ICMP Timeout"
-msgstr ""
-
-msgid "Health Monitor Interval"
-msgstr ""
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-
-msgid "KO"
-msgstr ""
-
-msgid "Load Balancer Distribution"
-msgstr ""
-
-msgid "Load Balancer(Compatibility)"
-msgstr ""
-
-msgid "Load Balancer(Performance)"
-msgstr ""
-
-msgid "Multi-WAN"
-msgstr ""
-
-msgid "Multi-WAN Status"
-msgstr ""
-
-msgid "Multi-WAN Traffic Rules"
-msgstr ""
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-
-msgid "None"
-msgstr ""
-
-msgid "OK"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Protocol"
-msgstr ""
-
-msgid "Recovering"
-msgstr ""
-
-msgid "Source Address"
-msgstr ""
-
-msgid "Unknown"
-msgstr ""
-
-msgid "WAN Interfaces"
-msgstr ""
-
-msgid "WAN Uplink"
-msgstr ""
-
-msgid "all"
-msgstr ""
diff --git a/applications/luci-app-multiwan/po/sv/multiwan.po b/applications/luci-app-multiwan/po/sv/multiwan.po
deleted file mode 100644 (file)
index fae4c58..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: sv\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Attempts Before WAN Failover"
-msgstr ""
-
-msgid "Attempts Before WAN Recovery"
-msgstr ""
-
-msgid "Auto"
-msgstr ""
-
-msgid "Collecting data..."
-msgstr ""
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-
-msgid "DNS Server(s)"
-msgstr ""
-
-msgid "Default Route"
-msgstr ""
-
-msgid "Destination Address"
-msgstr ""
-
-msgid "Disable"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Failing"
-msgstr ""
-
-msgid "Failover Traffic Destination"
-msgstr ""
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr ""
-
-msgid "Health Monitor ICMP Timeout"
-msgstr ""
-
-msgid "Health Monitor Interval"
-msgstr ""
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-
-msgid "KO"
-msgstr ""
-
-msgid "Load Balancer Distribution"
-msgstr ""
-
-msgid "Load Balancer(Compatibility)"
-msgstr ""
-
-msgid "Load Balancer(Performance)"
-msgstr ""
-
-msgid "Multi-WAN"
-msgstr ""
-
-msgid "Multi-WAN Status"
-msgstr ""
-
-msgid "Multi-WAN Traffic Rules"
-msgstr ""
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-
-msgid "None"
-msgstr ""
-
-msgid "OK"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Protocol"
-msgstr ""
-
-msgid "Recovering"
-msgstr ""
-
-msgid "Source Address"
-msgstr ""
-
-msgid "Unknown"
-msgstr ""
-
-msgid "WAN Interfaces"
-msgstr ""
-
-msgid "WAN Uplink"
-msgstr ""
-
-msgid "all"
-msgstr ""
diff --git a/applications/luci-app-multiwan/po/templates/multiwan.pot b/applications/luci-app-multiwan/po/templates/multiwan.pot
deleted file mode 100644 (file)
index 954eed1..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-msgid "Attempts Before WAN Failover"
-msgstr ""
-
-msgid "Attempts Before WAN Recovery"
-msgstr ""
-
-msgid "Auto"
-msgstr ""
-
-msgid "Collecting data..."
-msgstr ""
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-
-msgid "DNS Server(s)"
-msgstr ""
-
-msgid "Default Route"
-msgstr ""
-
-msgid "Destination Address"
-msgstr ""
-
-msgid "Disable"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Failing"
-msgstr ""
-
-msgid "Failover Traffic Destination"
-msgstr ""
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr ""
-
-msgid "Health Monitor ICMP Timeout"
-msgstr ""
-
-msgid "Health Monitor Interval"
-msgstr ""
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-
-msgid "KO"
-msgstr ""
-
-msgid "Load Balancer Distribution"
-msgstr ""
-
-msgid "Load Balancer(Compatibility)"
-msgstr ""
-
-msgid "Load Balancer(Performance)"
-msgstr ""
-
-msgid "Multi-WAN"
-msgstr ""
-
-msgid "Multi-WAN Status"
-msgstr ""
-
-msgid "Multi-WAN Traffic Rules"
-msgstr ""
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-
-msgid "None"
-msgstr ""
-
-msgid "OK"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Protocol"
-msgstr ""
-
-msgid "Recovering"
-msgstr ""
-
-msgid "Source Address"
-msgstr ""
-
-msgid "Unknown"
-msgstr ""
-
-msgid "WAN Interfaces"
-msgstr ""
-
-msgid "WAN Uplink"
-msgstr ""
-
-msgid "all"
-msgstr ""
diff --git a/applications/luci-app-multiwan/po/tr/multiwan.po b/applications/luci-app-multiwan/po/tr/multiwan.po
deleted file mode 100644 (file)
index e9d6ece..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-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"
-
-msgid "Attempts Before WAN Failover"
-msgstr ""
-
-msgid "Attempts Before WAN Recovery"
-msgstr ""
-
-msgid "Auto"
-msgstr ""
-
-msgid "Collecting data..."
-msgstr ""
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-
-msgid "DNS Server(s)"
-msgstr ""
-
-msgid "Default Route"
-msgstr ""
-
-msgid "Destination Address"
-msgstr ""
-
-msgid "Disable"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Failing"
-msgstr ""
-
-msgid "Failover Traffic Destination"
-msgstr ""
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr ""
-
-msgid "Health Monitor ICMP Timeout"
-msgstr ""
-
-msgid "Health Monitor Interval"
-msgstr ""
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-
-msgid "KO"
-msgstr ""
-
-msgid "Load Balancer Distribution"
-msgstr ""
-
-msgid "Load Balancer(Compatibility)"
-msgstr ""
-
-msgid "Load Balancer(Performance)"
-msgstr ""
-
-msgid "Multi-WAN"
-msgstr ""
-
-msgid "Multi-WAN Status"
-msgstr ""
-
-msgid "Multi-WAN Traffic Rules"
-msgstr ""
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-
-msgid "None"
-msgstr ""
-
-msgid "OK"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Protocol"
-msgstr ""
-
-msgid "Recovering"
-msgstr ""
-
-msgid "Source Address"
-msgstr ""
-
-msgid "Unknown"
-msgstr ""
-
-msgid "WAN Interfaces"
-msgstr ""
-
-msgid "WAN Uplink"
-msgstr ""
-
-msgid "all"
-msgstr ""
diff --git a/applications/luci-app-multiwan/po/uk/multiwan.po b/applications/luci-app-multiwan/po/uk/multiwan.po
deleted file mode 100644 (file)
index 922b402..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-09-21 15:52+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"
-
-msgid "Attempts Before WAN Failover"
-msgstr ""
-
-msgid "Attempts Before WAN Recovery"
-msgstr ""
-
-msgid "Auto"
-msgstr "Автоматично"
-
-msgid "Collecting data..."
-msgstr "Збір даних..."
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-
-msgid "DNS Server(s)"
-msgstr "DNS-сервер(и)"
-
-msgid "Default Route"
-msgstr "Типовий маршрут"
-
-msgid "Destination Address"
-msgstr "Адреса призначення"
-
-msgid "Disable"
-msgstr "Вимкнути"
-
-msgid "Enable"
-msgstr "Активувати"
-
-msgid "Failing"
-msgstr ""
-
-msgid "Failover Traffic Destination"
-msgstr ""
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr ""
-
-msgid "Health Monitor ICMP Timeout"
-msgstr ""
-
-msgid "Health Monitor Interval"
-msgstr ""
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-
-msgid "KO"
-msgstr ""
-
-msgid "Load Balancer Distribution"
-msgstr ""
-
-msgid "Load Balancer(Compatibility)"
-msgstr ""
-
-msgid "Load Balancer(Performance)"
-msgstr ""
-
-msgid "Multi-WAN"
-msgstr ""
-
-msgid "Multi-WAN Status"
-msgstr ""
-
-msgid "Multi-WAN Traffic Rules"
-msgstr ""
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-
-msgid "None"
-msgstr ""
-
-msgid "OK"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Protocol"
-msgstr ""
-
-msgid "Recovering"
-msgstr ""
-
-msgid "Source Address"
-msgstr ""
-
-msgid "Unknown"
-msgstr ""
-
-msgid "WAN Interfaces"
-msgstr ""
-
-msgid "WAN Uplink"
-msgstr ""
-
-msgid "all"
-msgstr ""
diff --git a/applications/luci-app-multiwan/po/vi/multiwan.po b/applications/luci-app-multiwan/po/vi/multiwan.po
deleted file mode 100644 (file)
index e9d6ece..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-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"
-
-msgid "Attempts Before WAN Failover"
-msgstr ""
-
-msgid "Attempts Before WAN Recovery"
-msgstr ""
-
-msgid "Auto"
-msgstr ""
-
-msgid "Collecting data..."
-msgstr ""
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr ""
-
-msgid "DNS Server(s)"
-msgstr ""
-
-msgid "Default Route"
-msgstr ""
-
-msgid "Destination Address"
-msgstr ""
-
-msgid "Disable"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Failing"
-msgstr ""
-
-msgid "Failover Traffic Destination"
-msgstr ""
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr ""
-
-msgid "Health Monitor ICMP Timeout"
-msgstr ""
-
-msgid "Health Monitor Interval"
-msgstr ""
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr ""
-
-msgid "KO"
-msgstr ""
-
-msgid "Load Balancer Distribution"
-msgstr ""
-
-msgid "Load Balancer(Compatibility)"
-msgstr ""
-
-msgid "Load Balancer(Performance)"
-msgstr ""
-
-msgid "Multi-WAN"
-msgstr ""
-
-msgid "Multi-WAN Status"
-msgstr ""
-
-msgid "Multi-WAN Traffic Rules"
-msgstr ""
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr ""
-
-msgid "None"
-msgstr ""
-
-msgid "OK"
-msgstr ""
-
-msgid "Ports"
-msgstr ""
-
-msgid "Protocol"
-msgstr ""
-
-msgid "Recovering"
-msgstr ""
-
-msgid "Source Address"
-msgstr ""
-
-msgid "Unknown"
-msgstr ""
-
-msgid "WAN Interfaces"
-msgstr ""
-
-msgid "WAN Uplink"
-msgstr ""
-
-msgid "all"
-msgstr ""
diff --git a/applications/luci-app-multiwan/po/zh-cn/multiwan.po b/applications/luci-app-multiwan/po/zh-cn/multiwan.po
deleted file mode 100644 (file)
index dfb4958..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-10-08 16:16+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
-"Language-Team: none\n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Attempts Before WAN Failover"
-msgstr "WAN故障转移之前尝试"
-
-msgid "Attempts Before WAN Recovery"
-msgstr "WAN故障恢复之前尝试"
-
-msgid "Auto"
-msgstr "自动"
-
-msgid "Collecting data..."
-msgstr "正在收集数据…"
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr "配置规则引导出站流量通过指定的WAN上行链路。"
-
-msgid "DNS Server(s)"
-msgstr "DNS服务器"
-
-msgid "Default Route"
-msgstr "缺省路由"
-
-msgid "Destination Address"
-msgstr "目的地址"
-
-msgid "Disable"
-msgstr "禁用"
-
-msgid "Enable"
-msgstr "启用"
-
-msgid "Failing"
-msgstr "失败"
-
-msgid "Failover Traffic Destination"
-msgstr "故障转移目的地"
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "健康状况监测ICMP主机"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr "健康状况监测ICMP主机超时"
-
-msgid "Health Monitor Interval"
-msgstr "健康状况监测间隔"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr "健康监视器,检测和修正网络变更和失败的连接。"
-
-msgid "KO"
-msgstr "好"
-
-msgid "Load Balancer Distribution"
-msgstr "负载均衡分布"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "负载平衡器(兼容)"
-
-msgid "Load Balancer(Performance)"
-msgstr "负载平衡器(性能)"
-
-msgid "Multi-WAN"
-msgstr "多WAN"
-
-msgid "Multi-WAN Status"
-msgstr "多WAN状态"
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "多WAN流量规则"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr "多WAN允许使用多条上行链路的负载均衡和故障转移。"
-
-msgid "None"
-msgstr "空"
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Ports"
-msgstr "端口"
-
-msgid "Protocol"
-msgstr "协议"
-
-msgid "Recovering"
-msgstr "恢复"
-
-msgid "Source Address"
-msgstr "源地址"
-
-msgid "Unknown"
-msgstr "未知"
-
-msgid "WAN Interfaces"
-msgstr "WAN接口"
-
-msgid "WAN Uplink"
-msgstr "WAN上联"
-
-msgid "all"
-msgstr "所有"
diff --git a/applications/luci-app-multiwan/po/zh-tw/multiwan.po b/applications/luci-app-multiwan/po/zh-tw/multiwan.po
deleted file mode 100644 (file)
index 9bfbb8f..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-14 18:42+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"
-
-msgid "Attempts Before WAN Failover"
-msgstr "寬頻失敗前嘗試"
-
-msgid "Attempts Before WAN Recovery"
-msgstr "寬頻復原前嘗試"
-
-msgid "Auto"
-msgstr "自動"
-
-msgid "Collecting data..."
-msgstr "收集資料中"
-
-msgid ""
-"Configure rules for directing outbound traffic through specified WAN Uplinks."
-msgstr "透過指定的寬頻上傳重導輸出流量的規則設定"
-
-msgid "DNS Server(s)"
-msgstr "DNS伺服器"
-
-msgid "Default Route"
-msgstr "預設路由器"
-
-msgid "Destination Address"
-msgstr "目標位址"
-
-msgid "Disable"
-msgstr "關閉"
-
-msgid "Enable"
-msgstr "啟用"
-
-msgid "Failing"
-msgstr "失敗"
-
-msgid "Failover Traffic Destination"
-msgstr "故障備援流量目的地"
-
-msgid "Health Monitor ICMP Host(s)"
-msgstr "健診ICMP的主機群"
-
-msgid "Health Monitor ICMP Timeout"
-msgstr "健診ICMP超時"
-
-msgid "Health Monitor Interval"
-msgstr "健診間隔"
-
-msgid ""
-"Health Monitor detects and corrects network changes and failed connections."
-msgstr "健診偵測並校正網路改變及失敗的連線"
-
-msgid "KO"
-msgstr "KO"
-
-msgid "Load Balancer Distribution"
-msgstr "分散式負載平衡"
-
-msgid "Load Balancer(Compatibility)"
-msgstr "(取相容性)負載平衡"
-
-msgid "Load Balancer(Performance)"
-msgstr "(取最大效能)負載平衡"
-
-msgid "Multi-WAN"
-msgstr "多元寬頻"
-
-msgid "Multi-WAN Status"
-msgstr "多元寬頻狀態"
-
-msgid "Multi-WAN Traffic Rules"
-msgstr "多元寬頻流量規則"
-
-msgid ""
-"Multi-WAN allows for the use of multiple uplinks for load balancing and "
-"failover."
-msgstr "允許多元寬頻使用多重上傳平衡負載和備援"
-
-msgid "None"
-msgstr "無"
-
-msgid "OK"
-msgstr "OK"
-
-msgid "Ports"
-msgstr "埠號"
-
-msgid "Protocol"
-msgstr "協定"
-
-msgid "Recovering"
-msgstr "復原中"
-
-msgid "Source Address"
-msgstr "來源位址"
-
-msgid "Unknown"
-msgstr "未知"
-
-msgid "WAN Interfaces"
-msgstr "寬頻介面"
-
-msgid "WAN Uplink"
-msgstr "寬頻上傳"
-
-msgid "all"
-msgstr "全部"
index d65cd3af1638ee64ccb553a2b437d2a65f2a1f4c..c719cb134c5e57390a6a9be6c0e0fae2e6cff6dd 100644 (file)
@@ -7,7 +7,7 @@
 include $(TOPDIR)/rules.mk
 
 LUCI_TITLE:=LuCI support for the MWAN3 multiwan hotplug script
-LUCI_DEPENDS:=+mwan3 +luci-mod-admin-full +luci-app-firewall +luci-lib-nixio
+LUCI_DEPENDS:=+mwan3 +libuci-lua +luci-mod-admin-full +luci-app-firewall +luci-lib-nixio
 LUCI_PKGARCH:=all
 PKG_LICENSE:=GPLv2
 
index c24beda281e06696eb6adda31a0a60e8df86e52c..18c2135e4385443cf3941572db70dafe09c69bc2 100644 (file)
@@ -1,3 +1,7 @@
+-- Copyright 2014 Aedan Renner <chipdankly@gmail.com>
+-- Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+-- Licensed to the public under the GNU General Public License v2.
+
 module("luci.controller.mwan3", package.seeall)
 
 sys = require "luci.sys"
@@ -10,139 +14,79 @@ function index()
                return
        end
 
-       entry({"admin", "network", "mwan"},
-               alias("admin", "network", "mwan", "overview"),
+       entry({"admin", "status", "mwan"},
+               alias("admin", "status", "mwan", "overview"),
                _("Load Balancing"), 600)
 
-       entry({"admin", "network", "mwan", "overview"},
-               alias("admin", "network", "mwan", "overview", "overview_interface"),
-               _("Overview"), 10)
-       entry({"admin", "network", "mwan", "overview", "overview_interface"},
-               template("mwan/overview_interface"))
-       entry({"admin", "network", "mwan", "overview", "interface_status"},
-               call("interfaceStatus"))
-       entry({"admin", "network", "mwan", "overview", "overview_detailed"},
-               template("mwan/overview_detailed"))
-       entry({"admin", "network", "mwan", "overview", "detailed_status"},
+       entry({"admin", "status", "mwan", "overview"},
+               template("mwan/status_interface"))
+       entry({"admin", "status", "mwan", "detail"},
+               template("mwan/status_detail"))
+       entry({"admin", "status", "mwan", "diagnostics"},
+               template("mwan/status_diagnostics"))
+       entry({"admin", "status", "mwan", "troubleshooting"},
+               template("mwan/status_troubleshooting"))
+       entry({"admin", "status", "mwan", "interface_status"},
+               call("mwan_Status"))
+       entry({"admin", "status", "mwan", "detailed_status"},
                call("detailedStatus"))
+       entry({"admin", "status", "mwan", "diagnostics_display"},
+               call("diagnosticsData"), nil).leaf = true
+       entry({"admin", "status", "mwan", "troubleshooting_display"},
+               call("troubleshootingData"))
+
+
+       entry({"admin", "network", "mwan"},
+               alias("admin", "network", "mwan", "interface"),
+               _("Load Balancing"), 600)
 
-       entry({"admin", "network", "mwan", "configuration"},
-               alias("admin", "network", "mwan", "configuration", "interface"),
-               _("Configuration"), 20)
-       entry({"admin", "network", "mwan", "configuration", "globals"},
-               cbi("mwan/globalsconfig"),_("Globals"), 5).leaf = true
-       entry({"admin", "network", "mwan", "configuration", "interface"},
+       entry({"admin", "network", "mwan", "globals"},
+               cbi("mwan/globalsconfig"),
+               _("Globals"), 5).leaf = true
+       entry({"admin", "network", "mwan", "interface"},
                arcombine(cbi("mwan/interface"), cbi("mwan/interfaceconfig")),
                _("Interfaces"), 10).leaf = true
-       entry({"admin", "network", "mwan", "configuration", "member"},
+       entry({"admin", "network", "mwan", "member"},
                arcombine(cbi("mwan/member"), cbi("mwan/memberconfig")),
                _("Members"), 20).leaf = true
-       entry({"admin", "network", "mwan", "configuration", "policy"},
+       entry({"admin", "network", "mwan", "policy"},
                arcombine(cbi("mwan/policy"), cbi("mwan/policyconfig")),
                _("Policies"), 30).leaf = true
-       entry({"admin", "network", "mwan", "configuration", "rule"},
+       entry({"admin", "network", "mwan", "rule"},
                arcombine(cbi("mwan/rule"), cbi("mwan/ruleconfig")),
                _("Rules"), 40).leaf = true
-
-       entry({"admin", "network", "mwan", "advanced"},
-               alias("admin", "network", "mwan", "advanced", "hotplugscript"),
-               _("Advanced"), 100)
-       entry({"admin", "network", "mwan", "advanced", "hotplugscript"},
-               form("mwan/advanced_hotplugscript"))
-       entry({"admin", "network", "mwan", "advanced", "mwanconfig"},
-               form("mwan/advanced_mwanconfig"))
-       entry({"admin", "network", "mwan", "advanced", "networkconfig"},
-               form("mwan/advanced_networkconfig"))
-       entry({"admin", "network", "mwan", "advanced", "wirelessconfig"},
-               form("mwan/advanced_wirelessconfig"))
-       entry({"admin", "network", "mwan", "advanced", "diagnostics"},
-               template("mwan/advanced_diagnostics"))
-       entry({"admin", "network", "mwan", "advanced", "diagnostics_display"},
-               call("diagnosticsData"), nil).leaf = true
-       entry({"admin", "network", "mwan", "advanced", "troubleshooting"},
-               template("mwan/advanced_troubleshooting"))
-       entry({"admin", "network", "mwan", "advanced", "troubleshooting_display"},
-               call("troubleshootingData"))
+       entry({"admin", "network", "mwan", "notify"},
+               form("mwan/notify"),
+               _("Notification"), 50).leaf = true
 end
 
-function getInterfaceStatus(ruleNumber, interfaceName)
-       if ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interfaceName .. ".enabled")) == "1" then
-               if ut.trim(sys.exec(ip .. "route list table " .. ruleNumber)) ~= "" then
-                       if ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interfaceName .. ".track_ip")) ~= "" then
-                               return "online"
-                       else
-                               return "notMonitored"
-                       end
-               else
-                       return "offline"
-               end
-       else
-               return "notEnabled"
-       end
-end
-
-function getInterfaceName()
-       local ruleNumber, status = 0, ""
-       uci.cursor():foreach("mwan3", "interface",
-               function (section)
-                       ruleNumber = ruleNumber+1
-                       status = status .. section[".name"] .. "[" .. getInterfaceStatus(ruleNumber, section[".name"]) .. "]"
-               end
-       )
-       return status
-end
-
-function interfaceStatus()
-       local ntm = require "luci.model.network".init()
-
-       local mArray = {}
-
-       -- overview status
-       local statusString = getInterfaceName()
-       if statusString ~= "" then
-               mArray.wans = {}
-               wansid = {}
-
-               for wanName, interfaceState in string.gfind(statusString, "([^%[]+)%[([^%]]+)%]") do
-                       local wanInterfaceName = ut.trim(sys.exec("uci -q -p /var/state get network." .. wanName .. ".ifname"))
-                               if wanInterfaceName == "" then
-                                       wanInterfaceName = "X"
-                               end
-                       local wanDeviceLink = ntm:get_interface(wanInterfaceName)
-                               wanDeviceLink = wanDeviceLink and wanDeviceLink:get_network()
-                               wanDeviceLink = wanDeviceLink and wanDeviceLink:adminlink() or "#"
-                       wansid[wanName] = #mArray.wans + 1
-                       mArray.wans[wansid[wanName]] = { name = wanName, link = wanDeviceLink, ifname = wanInterfaceName, status = interfaceState }
-               end
-       end
-
-       -- overview status log
-       local mwanLog = ut.trim(sys.exec("logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x' 2>/dev/null"))
-       if mwanLog ~= "" then
-               mArray.mwanlog = { mwanLog }
-       end
+function mwan_Status()
+       local status = ut.ubus("mwan3", "status", {})
 
        luci.http.prepare_content("application/json")
-       luci.http.write_json(mArray)
+       if status ~= nil then
+               luci.http.write_json(status)
+       else
+               luci.http.write_json({})
+       end
 end
 
 function detailedStatus()
-       local mArray = {}
-
-       -- detailed mwan status
-       local detailStatusInfo = ut.trim(sys.exec("/usr/sbin/mwan3 status"))
-       if detailStatusInfo ~= "" then
-               mArray.mwandetail = { detailStatusInfo }
+       local statusInfo = ut.trim(sys.exec("/usr/sbin/mwan3 status"))
+       luci.http.prepare_content("text/plain")
+       if statusInfo ~= "" then
+               luci.http.write(statusInfo)
+       else
+               luci.http.write("Unable to get status information")
        end
-
-       luci.http.prepare_content("application/json")
-       luci.http.write_json(mArray)
 end
 
-function diagnosticsData(interface, tool, task)
-       function getInterfaceNumber()
+function diagnosticsData(interface, task)
+       function getInterfaceNumber(interface)
                local number = 0
-               uci.cursor():foreach("mwan3", "interface",
+               local interfaceNumber
+               local uci = require "luci.model.uci".cursor()
+               uci:foreach("mwan3", "interface",
                        function (section)
                                number = number+1
                                if section[".name"] == interface then
@@ -150,184 +94,219 @@ function diagnosticsData(interface, tool, task)
                                end
                        end
                )
+               return interfaceNumber
        end
 
-       local mArray = {}
-
-       local results = ""
-       if tool == "service" then
-               os.execute("/usr/sbin/mwan3 " .. task)
-               if task == "restart" then
-                       results = "MWAN3 restarted"
-               elseif task == "stop" then
-                       results = "MWAN3 stopped"
-               else
-                       results = "MWAN3 started"
-               end
-       else
-               local interfaceDevice = ut.trim(sys.exec("uci -q -p /var/state get network." .. interface .. ".ifname"))
-               if interfaceDevice ~= "" then
-                       if tool == "ping" then
-                               local gateway = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $2}'"))
-                               if gateway ~= "" then
-                                       if task == "gateway" then
-                                               local pingCommand = "ping -c 3 -W 2 -I " .. interfaceDevice .. " " .. gateway
-                                               results = pingCommand .. "\n\n" .. sys.exec(pingCommand)
-                                       else
-                                               local tracked = ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interface .. ".track_ip"))
-                                               if tracked ~= "" then
-                                                       for z in tracked:gmatch("[^ ]+") do
-                                                               local pingCommand = "ping -c 3 -W 2 -I " .. interfaceDevice .. " " .. z
-                                                               results = results .. pingCommand .. "\n\n" .. sys.exec(pingCommand) .. "\n\n"
-                                                       end
-                                               else
-                                                       results = "No tracking IP addresses configured on " .. interface
-                                               end
-                                       end
-                               else
-                                       results = "No default gateway for " .. interface .. " found. Default route does not exist or is configured incorrectly"
-                               end
-                       elseif tool == "rulechk" then
-                               getInterfaceNumber()
-                               local rule1 = sys.exec(ip .. "rule | grep $(echo $((" .. interfaceNumber .. " + 1000)))")
-                               local rule2 = sys.exec(ip .. "rule | grep $(echo $((" .. interfaceNumber .. " + 2000)))")
-                               if rule1 ~= "" and rule2 ~= "" then
-                                       results = "All required interface IP rules found:\n\n" .. rule1 .. rule2
-                               elseif rule1 ~= "" or rule2 ~= "" then
-                                       results = "Missing 1 of the 2 required interface IP rules\n\n\nRules found:\n\n" .. rule1 .. rule2
-                               else
-                                       results = "Missing both of the required interface IP rules"
-                               end
-                       elseif tool == "routechk" then
-                               getInterfaceNumber()
-                               local routeTable = sys.exec(ip .. "route list table " .. interfaceNumber)
-                               if routeTable ~= "" then
-                                       results = "Interface routing table " .. interfaceNumber .. " was found:\n\n" .. routeTable
-                               else
-                                       results = "Missing required interface routing table " .. interfaceNumber
-                               end
-                       elseif tool == "hotplug" then
-                               if task == "ifup" then
-                                       os.execute("/usr/sbin/mwan3 ifup " .. interface)
-                                       results = "Hotplug ifup sent to interface " .. interface .. "..."
-                               else
-                                       os.execute("/usr/sbin/mwan3 ifdown " .. interface)
-                                       results = "Hotplug ifdown sent to interface " .. interface .. "..."
+       function diag_command(cmd, device, addr)
+               if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then
+                       local util = io.popen(cmd %{ut.shellquote(device), ut.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
-               else
-                       results = "Unable to perform diagnostic tests on " .. interface .. ". There is no physical or virtual device associated with this interface"
+                       return
                end
        end
-       if results ~= "" then
-               results = ut.trim(results)
-               mArray.diagnostics = { results }
-       end
-
-       luci.http.prepare_content("application/json")
-       luci.http.write_json(mArray)
-end
 
-function troubleshootingData()
-       local ver = require "luci.version"
+       function get_gateway(inteface)
+               local gateway = nil
+               local dump = nil
 
-       local mArray = {}
-
-       -- software versions
-       local wrtRelease = ut.trim(ver.distversion)
-               if wrtRelease ~= "" then
-                       wrtRelease = "OpenWrt - " .. wrtRelease
-               else
-                       wrtRelease = "OpenWrt - unknown"
-               end
-       local luciRelease = ut.trim(ver.luciversion)
-               if luciRelease ~= "" then
-                       luciRelease = "\nLuCI - " .. luciRelease
-               else
-                       luciRelease = "\nLuCI - unknown"
-               end
-       local mwanVersion = ut.trim(sys.exec("opkg info mwan3 | grep Version | awk '{print $2}'"))
-               if mwanVersion ~= "" then
-                       mwanVersion = "\n\nmwan3 - " .. mwanVersion
-               else
-                       mwanVersion = "\n\nmwan3 - unknown"
+               dump = require("luci.util").ubus("network.interface.%s_4" % interface, "status", {})
+               if not dump then
+                       dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
                end
-       local mwanLuciVersion = ut.trim(sys.exec("opkg info luci-app-mwan3 | grep Version | awk '{print $2}'"))
-               if mwanLuciVersion ~= "" then
-                       mwanLuciVersion = "\nmwan3-luci - " .. mwanLuciVersion
-               else
-                       mwanLuciVersion = "\nmwan3-luci - unknown"
-               end
-       mArray.versions = { wrtRelease .. luciRelease .. mwanVersion .. mwanLuciVersion }
-
-       -- mwan config
-       local mwanConfig = ut.trim(sys.exec("cat /etc/config/mwan3"))
-               if mwanConfig == "" then
-                       mwanConfig = "No data found"
-               end
-       mArray.mwanconfig = { mwanConfig }
 
-       -- network config
-       local networkConfig = ut.trim(sys.exec("cat /etc/config/network | sed -e 's/.*username.*/       USERNAME HIDDEN/' -e 's/.*password.*/   PASSWORD HIDDEN/'"))
-               if networkConfig == "" then
-                       networkConfig = "No data found"
-               end
-       mArray.netconfig = { networkConfig }
-
-       -- wireless config
-       local wirelessConfig = ut.trim(sys.exec("cat /etc/config/wireless | sed -e 's/.*username.*/     USERNAME HIDDEN/' -e 's/.*password.*/   PASSWORD HIDDEN/' -e 's/.*key.*/        KEY HIDDEN/'"))
-               if wirelessConfig == "" then
-                       wirelessConfig = "No data found"
-               end
-       mArray.wificonfig = { wirelessConfig }
-       
-       -- ifconfig
-       local ifconfig = ut.trim(sys.exec("ifconfig"))
-               if ifconfig == "" then
-                       ifconfig = "No data found"
+               if dump and dump.route then
+                       local _, route
+                       for _, route in ipairs(dump.route) do
+                               if dump.route[_].target == "0.0.0.0" then
+                                       gateway = dump.route[_].nexthop
+                               end
+                       end
                end
-       mArray.ifconfig = { ifconfig }
+               return gateway
+       end
 
-       -- route -n
-       local routeShow = ut.trim(sys.exec("route -n"))
-               if routeShow == "" then
-                       routeShow = "No data found"
-               end
-       mArray.routeshow = { routeShow }
+       local mArray = {}
+       local results = ""
+       local number = getInterfaceNumber(interface)
 
-       -- ip rule show
-       local ipRuleShow = ut.trim(sys.exec(ip .. "rule show"))
-               if ipRuleShow == "" then
-                       ipRuleShow = "No data found"
-               end
-       mArray.iprule = { ipRuleShow }
+       local uci = require "luci.model.uci".cursor(nil, "/var/state")
+       local device = uci:get("network", interface, "ifname")
 
-       -- ip route list table 1-250
-       local routeList, routeString = ut.trim(sys.exec(ip .. "rule | sed 's/://g' 2>/dev/null | awk '$1>=2001 && $1<=2250' | awk '{print $NF}'")), ""
-               if routeList ~= "" then
-                       for line in routeList:gmatch("[^\r\n]+") do
-                               routeString = routeString .. line .. "\n" .. sys.exec(ip .. "route list table " .. line)
+       luci.http.prepare_content("text/plain")
+       if device ~= "" then
+               if task == "ping_gateway" then
+                       local gateway = get_gateway(interface)
+                       if gateway ~= nil then
+                               diag_command("ping -I %s -c 5 -W 1 %s 2>&1", device, gateway)
+                       else
+                               luci.http.prepare_content("text/plain")
+                               luci.http.write(string.format("No gateway for interface %s found.", interface))
+                       end
+               elseif task == "ping_trackips" then
+                       local trackips = uci:get("mwan3", interface, "track_ip")
+                       if #trackips > 0 then
+                               for i in pairs(trackips) do
+                                       diag_command("ping -I %s -c 5 -W 1 %s 2>&1", device, trackips[i])
+                               end
+                       else
+                               luci.http.write(string.format("No tracking Hosts for interface %s defined.", interface))
+                       end
+               elseif task == "check_rules" then
+                       local number = getInterfaceNumber(interface)
+                       local iif = 1000 + number
+                       local fwmark = 2000 + number
+                       local iif_rule  = sys.exec(string.format("ip rule | grep %d", iif))
+                       local fwmark_rule = sys.exec(string.format("ip rule | grep %d", fwmark))
+                       if iif_rule ~= "" and fwmark_rule ~= "" then
+                               luci.http.write(string.format("All required IP rules for interface %s found", interface))
+                               luci.http.write("\n")
+                               luci.http.write(fwmark_rule)
+                               luci.http.write(iif_rule)
+                       elseif iif_rule == "" and fwmark_rule ~= "" then
+                               luci.http.write(string.format("Only one IP rules for interface %s found", interface))
+                               luci.http.write("\n")
+                               luci.http.write(fwmark_rule)
+                       elseif iif_rule ~= "" and fwmark_rule == "" then
+                               luci.http.write(string.format("Only one IP rules for interface %s found", interface))
+                               luci.http.write("\n")
+                               luci.http.write(iif_rule)
+                       else
+                               luci.http.write(string.format("Missing both IP rules for interface %s", interface))
                        end
-                       routeString = ut.trim(routeString)
+               elseif task == "check_routes" then
+                       local number = getInterfaceNumber(interface)
+                       local routeTable = sys.exec(string.format("ip route list table %s", number))
+                       if routeTable ~= "" then
+                               luci.http.write(string.format("Routing table %s for interface %s found", number, interface))
+                               luci.http.write("\n")
+                               luci.http.write(routeTable)
+                       else
+                               luci.http.write(string.format("Routing table %s for interface %s not found", number, interface))
+                       end
+               elseif task == "hotplug_ifup" then
+                       os.execute(string.format("/usr/sbin/mwan3 ifup %s", ut.shellquote(interface)))
+                       luci.http.write(string.format("Hotplug ifup sent to interface %s", interface))
+               elseif task == "hotplug_ifdown" then
+                       os.execute(string.format("/usr/sbin/mwan3 ifdown %s", ut.shellquote(interface)))
+                       luci.http.write(string.format("Hotplug ifdown sent to interface %s", interface))
                else
-                       routeString = "No data found"
+                       luci.http.write("Unknown task")
                end
-       mArray.routelist = { routeString }
+       else
+               luci.http.write(string.format("Unable to perform diagnostic tests on %s.", interface))
+               luci.http.write("\n")
+               luci.http.write("There is no physical or virtual device associated with this interface.")
+       end
+end
 
-       -- default firewall output policy
-       local firewallOut = ut.trim(sys.exec("uci -q -p /var/state get firewall.@defaults[0].output"))
-               if firewallOut == "" then
-                       firewallOut = "No data found"
-               end
-       mArray.firewallout = { firewallOut }
+function troubleshootingData()
+       local ver = require "luci.version"
+       local dash = "-------------------------------------------------"
+
+       luci.http.prepare_content("text/plain")
+
+       luci.http.write("\n")
+       luci.http.write("\n")
+       luci.http.write("Software-Version")
+       luci.http.write("\n")
+       luci.http.write(dash)
+       luci.http.write("\n")
+       if ver.distversion then
+               luci.http.write(string.format("OpenWrt - %s", ver.distversion))
+               luci.http.write("\n")
+       else
+               luci.http.write("OpenWrt - unknown")
+               luci.http.write("\n")
+       end
+
+       if ver.luciversion then
+               luci.http.write(string.format("LuCI - %s", ver.luciversion))
+               luci.http.write("\n")
+       else
+               luci.http.write("LuCI - unknown")
+               luci.http.write("\n")
+       end
 
-       -- iptables
-       local iptables = ut.trim(sys.exec("iptables -L -t mangle -v -n"))
-               if iptables == "" then
-                       iptables = "No data found"
+       luci.http.write("\n")
+       luci.http.write("\n")
+       local output = ut.trim(sys.exec("ip a show"))
+       luci.http.write("Output of \"ip a show\"")
+       luci.http.write("\n")
+       luci.http.write(dash)
+       luci.http.write("\n")
+       if output ~= "" then
+               luci.http.write(output)
+               luci.http.write("\n")
+       else
+               luci.http.write("No data found")
+               luci.http.write("\n")
+       end
+
+       luci.http.write("\n")
+       luci.http.write("\n")
+       local output = ut.trim(sys.exec("ip route show"))
+       luci.http.write("Output of \"ip route show\"")
+       luci.http.write("\n")
+       luci.http.write(dash)
+       luci.http.write("\n")
+       if output ~= "" then
+               luci.http.write(output)
+               luci.http.write("\n")
+       else
+               luci.http.write("No data found")
+               luci.http.write("\n")
+       end
+
+       luci.http.write("\n")
+       luci.http.write("\n")
+       local output = ut.trim(sys.exec("ip rule show"))
+       luci.http.write("Output of \"ip rule show\"")
+       luci.http.write("\n")
+       luci.http.write(dash)
+       luci.http.write("\n")
+       if output ~= "" then
+               luci.http.write(output)
+               luci.http.write("\n")
+       else
+               luci.http.write("No data found")
+               luci.http.write("\n")
+       end
+
+       luci.http.write("\n")
+       luci.http.write("\n")
+       luci.http.write("Output of \"ip route list table 1-250\"")
+       luci.http.write("\n")
+       luci.http.write(dash)
+       luci.http.write("\n")
+       for i=1,250 do
+               local output = ut.trim(sys.exec(string.format("ip route list table %d", i)))
+               if output ~= "" then
+                       luci.http.write(string.format("Table %s: ", i))
+                       luci.http.write(output)
+                       luci.http.write("\n")
                end
-       mArray.iptables = { iptables }
+       end
 
-       luci.http.prepare_content("application/json")
-       luci.http.write_json(mArray)
+       luci.http.write("\n")
+       luci.http.write("\n")
+       local output = ut.trim(sys.exec("iptables -L -t mangle -v -n"))
+       luci.http.write("Output of \"iptables -L -t mangle -v -n\"")
+       luci.http.write("\n")
+       luci.http.write(dash)
+       luci.http.write("\n")
+       if output ~= "" then
+               luci.http.write(output)
+               luci.http.write("\n")
+       else
+               luci.http.write("No data found")
+               luci.http.write("\n")
+       end
 end
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua
deleted file mode 100644 (file)
index 1b97080..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
--- ------ hotplug script configuration ------ --
-
-fs = require "nixio.fs"
-ut = require "luci.util"
-
-script = "/etc/mwan3.user"
-
-m5 = SimpleForm("luci", nil)
-       m5:append(Template("mwan/advanced_hotplugscript")) -- highlight current tab
-
-f = m5:section(SimpleSection, nil,
-       translate("This section allows you to modify the content of \"/etc/mwan3.user\".<br />" ..
-       "The file is also preserved during sysupgrade.<br />" ..
-       "<br />" ..
-       "Notes:<br />" ..
-       "This file is interpreted as a shell script.<br />" ..
-       "The first line of the script must be &#34;#!/bin/sh&#34; without quotes.<br />" ..
-       "Lines beginning with # are comments and are not executed.<br />" ..
-       "Put your custom mwan3 action here, they will<br />" ..
-       "be executed with each netifd hotplug interface event<br />" ..
-       "on interfaces for which mwan3 is enabled.<br />" ..
-       "<br />" ..
-       "There are three main environment variables that are passed to this script.<br />" ..
-       "<br />" ..
-       "$ACTION Either \"ifup\" or \"ifdown\"<br />" ..
-       "$INTERFACE Name of the interface which went up or down (e.g. \"wan\" or \"wwan\")<br />" ..
-       "$DEVICE Physical device name which interface went up or down (e.g. \"eth0\" or \"wwan0\")<br />" ..
-       "<br />"))
-
-t = f:option(TextValue, "lines")
-       t.rmempty = true
-       t.rows = 20
-       function t.cfgvalue()
-               return fs.readfile(script)
-       end
-       function t.write(self, section, data) -- format and write new data to script
-               return fs.writefile(script, ut.trim(data:gsub("\r\n", "\n")) .. "\n")
-       end
-
-return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua
deleted file mode 100644 (file)
index e0a99e8..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
--- ------ mwan configuration ------ --
-
-ut = require "luci.util"
-
-mwanConfig = "/etc/config/mwan3"
-
-
-m5 = SimpleForm("luci", nil)
-       m5:append(Template("mwan/advanced_mwanconfig")) -- highlight current tab
-
-
-f = m5:section(SimpleSection, nil,
-       translate("This section allows you to modify the contents of /etc/config/mwan3"))
-
-t = f:option(TextValue, "lines")
-       t.rmempty = true
-       t.rows = 20
-
-       function t.cfgvalue()
-               return nixio.fs.readfile(mwanConfig) or ""
-       end
-
-       function t.write(self, section, data) -- format and write new data to script
-               return nixio.fs.writefile(mwanConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n")
-       end
-
-       function f.handle(self, state, data)
-               return true
-       end
-
-
-return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua
deleted file mode 100644 (file)
index b93d897..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
--- ------ network configuration ------ --
-
-ut = require "luci.util"
-
-networkConfig = "/etc/config/network"
-
-
-m5 = SimpleForm("networkconf", nil)
-       m5:append(Template("mwan/advanced_networkconfig")) -- highlight current tab
-
-
-f = m5:section(SimpleSection, nil,
-       translate("This section allows you to modify the contents of /etc/config/network"))
-
-t = f:option(TextValue, "lines")
-       t.rmempty = true
-       t.rows = 20
-
-       function t.cfgvalue()
-               return nixio.fs.readfile(networkConfig) or ""
-       end
-
-       function t.write(self, section, data) -- format and write new data to script
-               return nixio.fs.writefile(networkConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n")
-       end
-
-       function f.handle(self, state, data)
-               return true
-       end
-
-
-return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua
deleted file mode 100644 (file)
index 95e9f7c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
--- ------ wireless configuration ------ --
-
-ut = require "luci.util"
-
-wirelessConfig = "/etc/config/wireless"
-
-
-m5 = SimpleForm("wirelessconf", nil)
-       m5:append(Template("mwan/advanced_wirelessconfig")) -- highlight current tab
-
-
-f = m5:section(SimpleSection, nil,
-       translate("This section allows you to modify the contents of /etc/config/wireless"))
-
-t = f:option(TextValue, "lines")
-       t.rmempty = true
-       t.rows = 20
-
-       function t.cfgvalue()
-               return nixio.fs.readfile(wirelessConfig) or ""
-       end
-
-       function t.write(self, section, data) -- format and write new data to script
-               return nixio.fs.writefile(wirelessConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n")
-       end
-
-       function f.handle(self, state, data)
-               return true
-       end
-
-
-return m5
index 919ed46cd41abd5e931baff4d61088f68d1371ed..d8f90e1e25d9b0f8fec80413ad15c62ea90e33eb 100644 (file)
@@ -1,25 +1,16 @@
---[[
-LuCI - Lua Configuration Interface
-
-Copyright 2017 Florian Eckert <fe@dev.tdt.de>
-
-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$
-]]--
+-- Copyright 2017 Florian Eckert <fe@dev.tdt.de>
+-- Licensed to the public under the GNU General Public License v2.
 
 local net = require "luci.model.network".init()
 
-m = Map("mwan3")
 
-s = m:section(NamedSection, "globals", "globals", translate("Globals mwan3 options"))
+m = Map("mwan3", translate("MWAN - Globals"))
+
+s = m:section(NamedSection, "globals", "globals", nil)
 n = s:option(ListValue, "local_source",
        translate("Local source interface"),
-       translate("Use the IP address of this interface as source IP address for traffic initiated by the router itself"))
+       translate("Use the IP address of this interface as source IP " ..
+       "address for traffic initiated by the router itself"))
 n:value("none")
 n.default = "none"
 for _, net in ipairs(net:get_networks()) do
index 5ee5fb39f3f30e4f11b76d4453ad130ee212aac5..162b388d17e944319e95615fbb3d365412edad8f 100644 (file)
--- ------ extra functions ------ --
+-- Copyright 2014 Aedan Renner <chipdankly@gmail.com
+-- Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+-- Licensed to the public under the GNU General Public License v2.
 
-function interfaceCheck() -- find issues with too many interfaces, reliability and metric
+dsp = require "luci.dispatcher"
+uci = require "uci"
+
+
+function interfaceWarnings(overview, count, iface_max)
+       local warnings = ""
+       if count <= iface_max then
+               warnings = string.format("<strong>%s</strong><br />",
+                       translatef("There are currently %d of %d supported interfaces configured", count, iface_max)
+                       )
+       else
+               warnings = string.format("<strong>%s</strong><br />",
+                       translatef("WARNING: %d interfaces are configured exceeding the maximum of %d!", count, iface_max)
+                       )
+       end
+
+       for i, k in pairs(overview) do
+               if overview[i]["network"] == false then
+                       warnings = warnings .. string.format("<strong>%s</strong><br />",
+                                       translatef("WARNING: Interface %s are not found in /etc/config/network", i)
+                                       )
+               end
+
+               if overview[i]["default_route"] == false then
+                       warnings = warnings .. string.format("<strong>%s</strong><br />",
+                               translatef("WARNING: Interface %s has no default route in the main routing table", i)
+                               )
+               end
+
+               if overview[i]["reliability"] == false then
+                       warnings = warnings .. string.format("<strong>%s</strong><br />",
+                               translatef("WARNING: Interface %s has a higher reliability " ..
+                               "requirement than tracking hosts (%d)", i, overview[i]["tracking"])
+                               )
+               end
+
+               if overview[i]["duplicate_metric"] == true then
+                       warnings = warnings .. string.format("<strong>%s</strong><br />",
+                               translatef("WARNING: Interface %s has a duplicate metric %s configured", i, overview[i]["metric"])
+                               )
+               end
+       end
+
+       return warnings
+end
+
+function configCheck()
+       local overview = {}
+       local count = 0
+       local duplicate_metric = {}
        uci.cursor():foreach("mwan3", "interface",
                function (section)
-                       local interfaceName = section[".name"]
-                       interfaceNumber = interfaceNumber+1 -- count number of mwan interfaces configured
-                       -- create list of metrics for none and duplicate checking
-                       local metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName .. ".metric"))
-                       if metricValue == "" then
-                               errorFound = 1
-                               errorNoMetricList = errorNoMetricList .. interfaceName .. " "
-                       else
-                               metricList = metricList .. interfaceName .. " " .. metricValue .. "\n"
-                       end
-                       -- check if any interfaces have a higher reliability requirement than tracking IPs configured
-                       local trackingNumber = tonumber(ut.trim(sys.exec("echo $(uci -p /var/state get mwan3." .. interfaceName .. ".track_ip) | wc -w")))
-                       if trackingNumber > 0 then
-                               local reliabilityNumber = tonumber(ut.trim(sys.exec("uci -p /var/state get mwan3." .. interfaceName .. ".reliability")))
-                               if reliabilityNumber and reliabilityNumber > trackingNumber then
-                                       errorFound = 1
-                                       errorReliabilityList = errorReliabilityList .. interfaceName .. " "
+                       local uci = uci.cursor(nil, "/var/state")
+                       local iface = section[".name"]
+                       overview[iface] = {}
+                       count = count + 1
+                       local network = uci:get("network", iface)
+                       overview[iface]["network"] = false
+                       if network ~= nil then
+                               overview[iface]["network"] = true
+
+                               local device = uci:get("network", iface, "ifname")
+                               if device ~= nil then
+                                       overview[iface]["device"] = device
                                end
-                       end
-                       -- check if any interfaces are not properly configured in /etc/config/network or have no default route in main routing table
-                       if ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName)) == "interface" then
-                               local interfaceDevice = ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName .. ".ifname"))
-                               if interfaceDevice == "uci: Entry not found" or interfaceDevice == "" then
-                                       errorFound = 1
-                                       errorNetConfigList = errorNetConfigList .. interfaceName .. " "
-                                       errorRouteList = errorRouteList .. interfaceName .. " "
-                               else
-                                       local routeCheck = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $1}'"))
-                                       if routeCheck == "" then
-                                               errorFound = 1
-                                               errorRouteList = errorRouteList .. interfaceName .. " "
+
+                               local metric = uci:get("network", iface, "metric")
+                               if metric ~= nil then
+                                       overview[iface]["metric"] = metric
+                                       overview[iface]["duplicate_metric"] = false
+                                       for _, m in ipairs(duplicate_metric) do
+                                               if m == metric then
+                                                       overview[iface]["duplicate_metric"] = true
+                                               end
+                                       end
+                                       table.insert(duplicate_metric, metric)
+                               end
+
+                               local dump = require("luci.util").ubus("network.interface.%s" % iface, "status", {})
+                               overview[iface]["default_route"] = false
+                               if dump and dump.route then
+                                       local _, route
+                                       for _, route in ipairs(dump.route) do
+                                               if dump.route[_].target == "0.0.0.0" then
+                                                       overview[iface]["default_route"] = true
+                                               end
                                        end
                                end
-                       else
-                               errorFound = 1
-                               errorNetConfigList = errorNetConfigList .. interfaceName .. " "
-                               errorRouteList = errorRouteList .. interfaceName .. " "
+                       end
+
+                       local trackingNumber = uci:get("mwan3", iface, "track_ip")
+                       overview[iface]["tracking"] = 0
+                       if trackingNumber and #trackingNumber > 0 then
+                               overview[iface]["tracking"] = #trackingNumber
+                               overview[iface]["reliability"] = false
+                               local reliabilityNumber = tonumber(uci:get("mwan3", iface, "reliability"))
+                               if reliabilityNumber and reliabilityNumber <= #trackingNumber then
+                                       overview[iface]["reliability"] = true
+                               end
                        end
                end
        )
-       -- check if any interfaces have duplicate metrics
-       local metricDuplicateNumbers = sys.exec("echo '" .. metricList .. "' | awk '{print $2}' | uniq -d")
-       if metricDuplicateNumbers ~= "" then
-               errorFound = 1
-               local metricDuplicates = ""
-               for line in metricDuplicateNumbers:gmatch("[^\r\n]+") do
-                       metricDuplicates = sys.exec("echo '" .. metricList .. "' | grep '" .. line .. "' | awk '{print $1}'")
-                       errorDuplicateMetricList = errorDuplicateMetricList .. metricDuplicates
-               end
-               errorDuplicateMetricList = sys.exec("echo '" .. errorDuplicateMetricList .. "' | tr '\n' ' '")
-       end
-end
 
-function interfaceWarnings() -- display status and warning messages at the top of the page
-       local warnings = ""
-       if interfaceNumber <= 250 then
-               warnings = "<strong>" .. translatef("There are currently %d of 250 supported interfaces configured", interfaceNumber) .. "</strong>"
-       else
-               warnings = "<font color=\"ff0000\"><strong>" .. translatef("WARNING: %d interfaces are configured exceeding the maximum of 250!", interfaceNumber) .. "</strong></font>"
-       end
-       if errorReliabilityList ~= " " then
-               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: Some interfaces have a higher reliability requirement than there are tracking IP addresses!") .. "</strong></font>"
-       end
-       if errorRouteList ~= " " then
-               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: Some interfaces have no default route in the main routing table!") .. "</strong></font>"
+       -- calculate iface_max usage from firewall mmx_mask
+       function bit(p)
+               return 2 ^ (p - 1)
        end
-       if errorNetConfigList ~= " " then
-               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: Some interfaces are configured incorrectly or not at all in /etc/config/network!") .. "</strong></font>"
+       function hasbit(x, p)
+               return x % (p + p) >= p
        end
-       if errorNoMetricList ~= " " then
-               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: Some interfaces have no metric configured in /etc/config/network!") .. "</strong></font>"
+       function setbit(x, p)
+               return hasbit(x, p) and x or x + p
        end
-       if errorDuplicateMetricList ~= " " then
-               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: Some interfaces have duplicate metrics configured in /etc/config/network!") .. "</strong></font>"
-       end
-       return warnings
-end
 
--- ------ interface configuration ------ --
-
-dsp = require "luci.dispatcher"
-sys = require "luci.sys"
-ut = require "luci.util"
-
-interfaceNumber = 0
-metricList = ""
-errorFound = 0
-errorDuplicateMetricList = " "
-errorNetConfigList = " "
-errorNoMetricList = " "
-errorReliabilityList = " "
-errorRouteList = " "
-interfaceCheck()
+       local uci = require("uci").cursor(nil, "/var/state")
+       local mmx_mask = uci:get("mwan3", "globals", "mmx_mask") or "0x3F00"
+       local number = tonumber(mmx_mask, 16)
+       local bits = 0
+       local iface_max = 0
+       for i=1,16 do
+               if hasbit(number, bit(i)) then
+                       bits = bits + 1
+                       iface_max = setbit( iface_max, bit(bits))
+               end
+       end
 
+       -- subtract blackhole, unreachable and default table from iface_max
+       iface_max = iface_max - 3
 
-m5 = Map("mwan3", translate("MWAN Interface Configuration"),
-       interfaceWarnings())
-       m5:append(Template("mwan/config_css"))
+       return overview, count, iface_max
+end
 
+m5 = Map("mwan3", translate("MWAN - Interfaces"),
+       interfaceWarnings(configCheck()))
 
-mwan_interface = m5:section(TypedSection, "interface", translate("Interfaces"),
-       translate("MWAN supports up to 250 physical and/or logical interfaces<br />" ..
+mwan_interface = m5:section(TypedSection, "interface", nil,
+       translate("MWAN supports up to 252 physical and/or logical interfaces<br />" ..
        "MWAN requires that all interfaces have a unique metric configured in /etc/config/network<br />" ..
-       "Names must match the interface name found in /etc/config/network (see advanced tab)<br />" ..
+       "Names must match the interface name found in /etc/config/network<br />" ..
        "Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />" ..
        "Interfaces may not share the same name as configured members, policies or rules"))
-       mwan_interface.addremove = true
-       mwan_interface.dynamic = false
-       mwan_interface.sectionhead = translate("Interface")
-       mwan_interface.sortable = false
-       mwan_interface.template = "cbi/tblsection"
-       mwan_interface.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "interface", "%s")
-       function mwan_interface.create(self, section)
-               TypedSection.create(self, section)
-               m5.uci:save("mwan3")
-               luci.http.redirect(dsp.build_url("admin", "network", "mwan", "configuration", "interface", section))
-       end
-
+mwan_interface.addremove = true
+mwan_interface.dynamic = false
+mwan_interface.sectionhead = translate("Interface")
+mwan_interface.sortable = false
+mwan_interface.template = "cbi/tblsection"
+mwan_interface.extedit = dsp.build_url("admin", "network", "mwan", "interface", "%s")
+function mwan_interface.create(self, section)
+       TypedSection.create(self, section)
+       m5.uci:save("mwan3")
+       luci.http.redirect(dsp.build_url("admin", "network", "mwan", "interface", section))
+end
 
 enabled = mwan_interface:option(DummyValue, "enabled", translate("Enabled"))
-       enabled.rawhtml = true
-       function enabled.cfgvalue(self, s)
-               if self.map:get(s, "enabled") == "1" then
-                       return "Yes"
-               else
-                       return "No"
-               end
-       end
-
-track_ip = mwan_interface:option(DummyValue, "track_ip", translate("Tracking IP"))
-       track_ip.rawhtml = true
-       function track_ip.cfgvalue(self, s)
-               tracked = self.map:get(s, "track_ip")
-               if tracked then
-                       local ipList = ""
-                       for k,v in pairs(tracked) do
-                               ipList = ipList .. v .. "<br />"
-                       end
-                       return ipList
-               else
-                       return "&#8212;"
-               end
+enabled.rawhtml = true
+function enabled.cfgvalue(self, s)
+       if self.map:get(s, "enabled") == "1" then
+               return translate("Yes")
+       else
+               return translate("No")
        end
+end
 
 track_method = mwan_interface:option(DummyValue, "track_method", translate("Tracking method"))
-       track_method.rawhtml = true
-       function track_method.cfgvalue(self, s)
-               if tracked then
-                       return self.map:get(s, "track_method") or "&#8212;"
-               else
-                       return "&#8212;"
-               end
+track_method.rawhtml = true
+function track_method.cfgvalue(self, s)
+       local tracked = self.map:get(s, "track_ip")
+       if tracked then
+               return self.map:get(s, "track_method") or "ping"
+       else
+               return "&#8212;"
        end
+end
 
 reliability = mwan_interface:option(DummyValue, "reliability", translate("Tracking reliability"))
-       reliability.rawhtml = true
-       function reliability.cfgvalue(self, s)
-               if tracked then
-                       return self.map:get(s, "reliability") or "&#8212;"
-               else
-                       return "&#8212;"
-               end
-       end
-
-count = mwan_interface:option(DummyValue, "count", translate("Ping count"))
-       count.rawhtml = true
-       function count.cfgvalue(self, s)
-               if tracked then
-                       return self.map:get(s, "count") or "&#8212;"
-               else
-                       return "&#8212;"
-               end
-       end
-
-timeout = mwan_interface:option(DummyValue, "timeout", translate("Ping timeout"))
-       timeout.rawhtml = true
-       function timeout.cfgvalue(self, s)
-               if tracked then
-                       local timeoutValue = self.map:get(s, "timeout")
-                       if timeoutValue then
-                               return timeoutValue .. "s"
-                       else
-                               return "&#8212;"
-                       end
-               else
-                       return "&#8212;"
-               end
+reliability.rawhtml = true
+function reliability.cfgvalue(self, s)
+       local tracked = self.map:get(s, "track_ip")
+       if tracked then
+               return self.map:get(s, "reliability") or "1"
+       else
+               return "&#8212;"
        end
+end
 
 interval = mwan_interface:option(DummyValue, "interval", translate("Ping interval"))
-       interval.rawhtml = true
-       function interval.cfgvalue(self, s)
-               if tracked then
-                       local intervalValue = self.map:get(s, "interval")
-                       if intervalValue then
-                               return intervalValue .. "s"
-                       else
-                               return "&#8212;"
-                       end
+interval.rawhtml = true
+function interval.cfgvalue(self, s)
+       local tracked = self.map:get(s, "track_ip")
+       if tracked then
+               local intervalValue = self.map:get(s, "interval")
+               if intervalValue then
+                       return intervalValue .. "s"
                else
-                       return "&#8212;"
+                       return "5s"
                end
+       else
+               return "&#8212;"
        end
+end
 
 down = mwan_interface:option(DummyValue, "down", translate("Interface down"))
-       down.rawhtml = true
-       function down.cfgvalue(self, s)
-               if tracked then
-                       return self.map:get(s, "down") or "&#8212;"
-               else
-                       return "&#8212;"
-               end
+down.rawhtml = true
+function down.cfgvalue(self, s)
+       local tracked = self.map:get(s, "track_ip")
+       if tracked then
+               return self.map:get(s, "down") or "3"
+       else
+               return "&#8212;"
        end
+end
 
 up = mwan_interface:option(DummyValue, "up", translate("Interface up"))
-       up.rawhtml = true
-       function up.cfgvalue(self, s)
-               if tracked then
-                       return self.map:get(s, "up") or "&#8212;"
-               else
-                       return "&#8212;"
-               end
+up.rawhtml = true
+function up.cfgvalue(self, s)
+       local tracked = self.map:get(s, "track_ip")
+       if tracked then
+               return self.map:get(s, "up") or "3"
+       else
+               return "&#8212;"
        end
+end
 
 metric = mwan_interface:option(DummyValue, "metric", translate("Metric"))
-       metric.rawhtml = true
-       function metric.cfgvalue(self, s)
-               local metricValue = sys.exec("uci -p /var/state get network." .. s .. ".metric")
-               if metricValue ~= "" then
-                       return metricValue
-               else
-                       return "&#8212;"
-               end
-       end
-
-errors = mwan_interface:option(DummyValue, "errors", translate("Errors"))
-       errors.rawhtml = true
-       function errors.cfgvalue(self, s)
-               if errorFound == 1 then
-                       local mouseOver, lineBreak = "", ""
-                       if string.find(errorReliabilityList, " " .. s .. " ") then
-                               mouseOver = "Higher reliability requirement than there are tracking IP addresses"
-                               lineBreak = "&#10;&#10;"
-                       end
-                       if string.find(errorRouteList, " " .. s .. " ") then
-                               mouseOver = mouseOver .. lineBreak .. "No default route in the main routing table"
-                               lineBreak = "&#10;&#10;"
-                       end
-                       if string.find(errorNetConfigList, " " .. s .. " ") then
-                               mouseOver = mouseOver .. lineBreak .. "Configured incorrectly or not at all in /etc/config/network"
-                               lineBreak = "&#10;&#10;"
-                       end
-                       if string.find(errorNoMetricList, " " .. s .. " ") then
-                               mouseOver = mouseOver .. lineBreak .. "No metric configured in /etc/config/network"
-                               lineBreak = "&#10;&#10;"
-                       end
-                       if string.find(errorDuplicateMetricList, " " .. s .. " ") then
-                               mouseOver = mouseOver .. lineBreak .. "Duplicate metric configured in /etc/config/network"
-                       end
-                       if mouseOver == "" then
-                               return ""
-                       else
-                               return "<span title=\"" .. mouseOver .. "\"><img src=\"/luci-static/resources/cbi/reset.gif\" alt=\"error\"></img></span>"
-                       end
-               else
-                       return ""
-               end
+metric.rawhtml = true
+function metric.cfgvalue(self, s)
+       local uci = uci.cursor(nil, "/var/state")
+       local metric = uci:get("network", s, "metric")
+       if metric then
+               return metric
+       else
+               return "&#8212;"
        end
-
+end
 
 return m5
index a7d7c5af7e5789a52173ec8b8ac4f99b66bf6e96..a6570e341cebb18381409de0f4056f92e64c3c9f 100644 (file)
--- ------ extra functions ------ --
-
-function interfaceCheck()
-       metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. arg[1] .. ".metric"))
-       if metricValue == "" then -- no metric
-               errorNoMetric = 1
-       else -- if metric exists create list of interface metrics to compare against for duplicates
-               uci.cursor():foreach("mwan3", "interface",
-                       function (section)
-                               local metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. section[".name"] .. ".metric"))
-                               metricList = metricList .. section[".name"] .. " " .. metricValue .. "\n"
-                       end
-               )
-               -- compare metric against list
-               local metricDuplicateNumbers, metricDuplicates = sys.exec("echo '" .. metricList .. "' | awk '{print $2}' | uniq -d"), ""
-               for line in metricDuplicateNumbers:gmatch("[^\r\n]+") do
-                       metricDuplicates = sys.exec("echo '" .. metricList .. "' | grep '" .. line .. "' | awk '{print $1}'")
-                       errorDuplicateMetricList = errorDuplicateMetricList .. metricDuplicates
-               end
-               if sys.exec("echo '" .. errorDuplicateMetricList .. "' | grep -w " .. arg[1]) ~= "" then
-                       errorDuplicateMetric = 1
-               end
-       end
-       -- check if this interface has a higher reliability requirement than track IPs configured
-       local trackingNumber = tonumber(ut.trim(sys.exec("echo $(uci -p /var/state get mwan3." .. arg[1] .. ".track_ip) | wc -w")))
-       if trackingNumber > 0 then
-               local reliabilityNumber = tonumber(ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".reliability")))
-               if reliabilityNumber and reliabilityNumber > trackingNumber then
-                       errorReliability = 1
-               end
-       end
-       -- check if any interfaces are not properly configured in /etc/config/network or have no default route in main routing table
-       if ut.trim(sys.exec("uci -p /var/state get network." .. arg[1])) == "interface" then
-               local interfaceDevice = ut.trim(sys.exec("uci -p /var/state get network." .. arg[1] .. ".ifname"))
-               if interfaceDevice == "uci: Entry not found" or interfaceDevice == "" then
-                       errorNetConfig = 1
-                       errorRoute = 1
-               else
-                       local routeCheck = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $1}'"))
-                       if routeCheck == "" then
-                               errorRoute = 1
-                       end
-               end
-       else
-               errorNetConfig = 1
-               errorRoute = 1
-       end
-end
-
-function interfaceWarnings() -- display warning messages at the top of the page
-       local warns, lineBreak = "", ""
-       if errorReliability == 1 then
-               warns = "<font color=\"ff0000\"><strong>" .. translate("WARNING: This interface has a higher reliability requirement than there are tracking IP addresses!") .. "</strong></font>"
-               lineBreak = "<br /><br />"
-       end
-       if errorRoute == 1 then
-               warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: This interface has no default route in the main routing table!") .. "</strong></font>"
-               lineBreak = "<br /><br />"
-       end
-       if errorNetConfig == 1 then
-               warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: This interface is configured incorrectly or not at all in /etc/config/network!") .. "</strong></font>"
-               lineBreak = "<br /><br />"
-       end
-       if errorNoMetric == 1 then
-               warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: This interface has no metric configured in /etc/config/network!") .. "</strong></font>"
-       elseif errorDuplicateMetric == 1 then
-               warns = warns .. lineBreak .. "<font color=\"ff0000\"><strong>" .. translate("WARNING: This and other interfaces have duplicate metrics configured in /etc/config/network!") .. "</strong></font>"
-       end
-       return warns
-end
-
--- ------ interface configuration ------ --
+-- Copyright 2014 Aedan Renner <chipdankly@gmail.com>
+-- Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+-- Licensed to the public under the GNU General Public License v2.
 
 dsp = require "luci.dispatcher"
-sys = require "luci.sys"
-ut = require "luci.util"
 arg[1] = arg[1] or ""
 
-metricValue = ""
-metricList = ""
-errorDuplicateMetricList = ""
-errorNoMetric = 0
-errorDuplicateMetric = 0
-errorRoute = 0
-errorNetConfig = 0
-errorReliability = 0
-interfaceCheck()
-
-
-m5 = Map("mwan3", translatef("MWAN Interface Configuration - %s", arg[1]),
-       interfaceWarnings())
-       m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "interface")
 
+m5 = Map("mwan3", translatef("MWAN Interface Configuration - %s", arg[1]))
+       m5.redirect = dsp.build_url("admin", "network", "mwan", "interface")
 
 mwan_interface = m5:section(NamedSection, arg[1], "interface", "")
-       mwan_interface.addremove = false
-       mwan_interface.dynamic = false
-
+mwan_interface.addremove = false
+mwan_interface.dynamic = false
 
 enabled = mwan_interface:option(ListValue, "enabled", translate("Enabled"))
-       enabled.default = "1"
-       enabled:value("1", translate("Yes"))
-       enabled:value("0", translate("No"))
+enabled.default = "1"
+enabled:value("1", translate("Yes"))
+enabled:value("0", translate("No"))
 
 initial_state = mwan_interface:option(ListValue, "initial_state", translate("Initial state"),
        translate("Expect interface state on up event"))
-       initial_state.default = "online"
-       initial_state:value("online", translate("Online"))
-       initial_state:value("offline", translate("Offline"))
+initial_state.default = "online"
+initial_state:value("online", translate("Online"))
+initial_state:value("offline", translate("Offline"))
 
 family = mwan_interface:option(ListValue, "family", translate("Internet Protocol"))
-       family.default = "ipv4"
-       family:value("ipv4", translate("IPv4"))
-       family:value("ipv6", translate("IPv6"))
+family.default = "ipv4"
+family:value("ipv4", translate("IPv4"))
+family:value("ipv6", translate("IPv6"))
 
 track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking hostname or IP address"),
        translate("This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to assume interface is always online"))
-       track_ip.datatype = "host"
+track_ip.datatype = "host"
 
 track_method = mwan_interface:option(ListValue, "track_method", translate("Tracking method"))
-       track_method.default = "ping"
-       track_method:value("ping")
-       track_method:value("arping")
-       track_method:value("httping")
+track_method.default = "ping"
+track_method:value("ping")
+track_method:value("arping")
+track_method:value("httping")
 
 reliability = mwan_interface:option(Value, "reliability", translate("Tracking reliability"),
        translate("Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up"))
-       reliability.datatype = "range(1, 100)"
-       reliability.default = "1"
+reliability.datatype = "range(1, 100)"
+reliability.default = "1"
 
 count = mwan_interface:option(ListValue, "count", translate("Ping count"))
-       count.default = "1"
-       count:value("1")
-       count:value("2")
-       count:value("3")
-       count:value("4")
-       count:value("5")
+count.default = "1"
+count:value("1")
+count:value("2")
+count:value("3")
+count:value("4")
+count:value("5")
 
 size = mwan_interface:option(Value, "size", translate("Ping size"))
-       size.default = "56"
-       size:value("8")
-       size:value("24")
-       size:value("56")
-       size:value("120")
-       size:value("248")
-       size:value("504")
-       size:value("1016")
-       size:value("1472")
-       size:value("2040")
-       size.datatype = "range(1, 65507)"
-       size.rmempty = false
-       size.optional = false
+size.default = "56"
+size:depends("track_method", "ping")
+size:value("8")
+size:value("24")
+size:value("56")
+size:value("120")
+size:value("248")
+size:value("504")
+size:value("1016")
+size:value("1472")
+size:value("2040")
+size.datatype = "range(1, 65507)"
+size.rmempty = false
+size.optional = false
+
+check_quality = mwan_interface:option(Flag, "check_quality", translate("Check link quality"))
+check_quality:depends("track_method", "ping")
+check_quality.default = false
+
+failure_latency = mwan_interface:option(Value, "failure_latency", translate("Max packet latency [ms]"))
+failure_latency:depends("check_quality", 1)
+failure_latency.default = "1000"
+failure_latency:value("25")
+failure_latency:value("50")
+failure_latency:value("75")
+failure_latency:value("100")
+failure_latency:value("150")
+failure_latency:value("200")
+failure_latency:value("250")
+failure_latency:value("300")
+
+failure_loss = mwan_interface:option(Value, "failure_loss", translate("Max packet loss [%]"))
+failure_loss:depends("check_quality", 1)
+failure_loss.default = "20"
+failure_loss:value("2")
+failure_loss:value("5")
+failure_loss:value("10")
+failure_loss:value("20")
+failure_loss:value("25")
+
+recovery_latency = mwan_interface:option(Value, "recovery_latency", translate("Min packet latency [ms]"))
+recovery_latency:depends("check_quality", 1)
+recovery_latency.default = "500"
+recovery_latency:value("25")
+recovery_latency:value("50")
+recovery_latency:value("75")
+recovery_latency:value("100")
+recovery_latency:value("150")
+recovery_latency:value("200")
+recovery_latency:value("250")
+recovery_latency:value("300")
+
+recovery_loss = mwan_interface:option(Value, "recovery_loss", translate("Min packet loss [%]"))
+recovery_loss:depends("check_quality", 1)
+recovery_loss.default = "5"
+recovery_loss:value("2")
+recovery_loss:value("5")
+recovery_loss:value("10")
+recovery_loss:value("20")
+recovery_loss:value("25")
 
 timeout = mwan_interface:option(ListValue, "timeout", translate("Ping timeout"))
-       timeout.default = "2"
-       timeout:value("1", translatef("%d second", 1))
-       timeout:value("2", translatef("%d seconds", 2))
-       timeout:value("3", translatef("%d seconds", 3))
-       timeout:value("4", translatef("%d seconds", 4))
-       timeout:value("5", translatef("%d seconds", 5))
-       timeout:value("6", translatef("%d seconds", 6))
-       timeout:value("7", translatef("%d seconds", 7))
-       timeout:value("8", translatef("%d seconds", 8))
-       timeout:value("9", translatef("%d seconds", 9))
-       timeout:value("10", translatef("%d seconds", 10))
+timeout.default = "2"
+timeout:value("1", translatef("%d second", 1))
+timeout:value("2", translatef("%d seconds", 2))
+timeout:value("3", translatef("%d seconds", 3))
+timeout:value("4", translatef("%d seconds", 4))
+timeout:value("5", translatef("%d seconds", 5))
+timeout:value("6", translatef("%d seconds", 6))
+timeout:value("7", translatef("%d seconds", 7))
+timeout:value("8", translatef("%d seconds", 8))
+timeout:value("9", translatef("%d seconds", 9))
+timeout:value("10", translatef("%d seconds", 10))
 
 interval = mwan_interface:option(ListValue, "interval", translate("Ping interval"))
-       interval.default = "5"
-       interval:value("1", translatef("%d second", 1))
-       interval:value("3", translatef("%d seconds", 3))
-       interval:value("5", translatef("%d seconds", 5))
-       interval:value("10", translatef("%d seconds", 10))
-       interval:value("20", translatef("%d seconds", 20))
-       interval:value("30", translatef("%d seconds", 30))
-       interval:value("60", translatef("%d minute", 1))
-       interval:value("300", translatef("%d minutes", 5))
-       interval:value("600", translatef("%d minutes", 10))
-       interval:value("900", translatef("%d minutes", 15))
-       interval:value("1800", translatef("%d minutes", 30))
-       interval:value("3600", translatef("%d hour", 1))
+interval.default = "5"
+interval:value("1", translatef("%d second", 1))
+interval:value("3", translatef("%d seconds", 3))
+interval:value("5", translatef("%d seconds", 5))
+interval:value("10", translatef("%d seconds", 10))
+interval:value("20", translatef("%d seconds", 20))
+interval:value("30", translatef("%d seconds", 30))
+interval:value("60", translatef("%d minute", 1))
+interval:value("300", translatef("%d minutes", 5))
+interval:value("600", translatef("%d minutes", 10))
+interval:value("900", translatef("%d minutes", 15))
+interval:value("1800", translatef("%d minutes", 30))
+interval:value("3600", translatef("%d hour", 1))
 
 failure = mwan_interface:option(Value, "failure_interval", translate("Failure interval"),
        translate("Ping interval during failure detection"))
-       failure.default = "5"
-       failure:value("1", translatef("%d second", 1))
-       failure:value("3", translatef("%d seconds", 3))
-       failure:value("5", translatef("%d seconds", 5))
-       failure:value("10", translatef("%d seconds", 10))
-       failure:value("20", translatef("%d seconds", 20))
-       failure:value("30", translatef("%d seconds", 30))
-       failure:value("60", translatef("%d minute", 1))
-       failure:value("300", translatef("%d minutes", 5))
-       failure:value("600", translatef("%d minutes", 10))
-       failure:value("900", translatef("%d minutes", 15))
-       failure:value("1800", translatef("%d minutes", 30))
-       failure:value("3600", translatef("%d hour", 1))
+failure.default = "5"
+failure:value("1", translatef("%d second", 1))
+failure:value("3", translatef("%d seconds", 3))
+failure:value("5", translatef("%d seconds", 5))
+failure:value("10", translatef("%d seconds", 10))
+failure:value("20", translatef("%d seconds", 20))
+failure:value("30", translatef("%d seconds", 30))
+failure:value("60", translatef("%d minute", 1))
+failure:value("300", translatef("%d minutes", 5))
+failure:value("600", translatef("%d minutes", 10))
+failure:value("900", translatef("%d minutes", 15))
+failure:value("1800", translatef("%d minutes", 30))
+failure:value("3600", translatef("%d hour", 1))
 
 keep_failure = mwan_interface:option(Flag, "keep_failure_interval", translate("Keep failure interval"),
        translate("Keep ping failure interval during failure state"))
-       keep_failure.default = keep_failure.disabled
+keep_failure.default = keep_failure.disabled
 
 recovery = mwan_interface:option(Value, "recovery_interval", translate("Recovery interval"),
        translate("Ping interval during failure recovering"))
-       recovery.default = "5"
-       recovery:value("1", translatef("%d second", 1))
-       recovery:value("3", translatef("%d seconds", 3))
-       recovery:value("5", translatef("%d seconds", 5))
-       recovery:value("10", translatef("%d seconds", 10))
-       recovery:value("20", translatef("%d seconds", 20))
-       recovery:value("30", translatef("%d seconds", 30))
-       recovery:value("60", translatef("%d minute", 1))
-       recovery:value("300", translatef("%d minutes", 5))
-       recovery:value("600", translatef("%d minutes", 10))
-       recovery:value("900", translatef("%d minutes", 15))
-       recovery:value("1800", translatef("%d minutes", 30))
-       recovery:value("3600", translatef("%d hour", 1))
+recovery.default = "5"
+recovery:value("1", translatef("%d second", 1))
+recovery:value("3", translatef("%d seconds", 3))
+recovery:value("5", translatef("%d seconds", 5))
+recovery:value("10", translatef("%d seconds", 10))
+recovery:value("20", translatef("%d seconds", 20))
+recovery:value("30", translatef("%d seconds", 30))
+recovery:value("60", translatef("%d minute", 1))
+recovery:value("300", translatef("%d minutes", 5))
+recovery:value("600", translatef("%d minutes", 10))
+recovery:value("900", translatef("%d minutes", 15))
+recovery:value("1800", translatef("%d minutes", 30))
+recovery:value("3600", translatef("%d hour", 1))
 
 down = mwan_interface:option(ListValue, "down", translate("Interface down"),
        translate("Interface will be deemed down after this many failed ping tests"))
-       down.default = "3"
-       down:value("1")
-       down:value("2")
-       down:value("3")
-       down:value("4")
-       down:value("5")
-       down:value("6")
-       down:value("7")
-       down:value("8")
-       down:value("9")
-       down:value("10")
+down.default = "3"
+down:value("1")
+down:value("2")
+down:value("3")
+down:value("4")
+down:value("5")
+down:value("6")
+down:value("7")
+down:value("8")
+down:value("9")
+down:value("10")
 
 up = mwan_interface:option(ListValue, "up", translate("Interface up"),
        translate("Downed interface will be deemed up after this many successful ping tests"))
-       up.default = "3"
-       up:value("1")
-       up:value("2")
-       up:value("3")
-       up:value("4")
-       up:value("5")
-       up:value("6")
-       up:value("7")
-       up:value("8")
-       up:value("9")
-       up:value("10")
+up.default = "3"
+up:value("1")
+up:value("2")
+up:value("3")
+up:value("4")
+up:value("5")
+up:value("6")
+up:value("7")
+up:value("8")
+up:value("9")
+up:value("10")
 
 flush = mwan_interface:option(ListValue, "flush_conntrack", translate("Flush conntrack table"),
        translate("Flush global firewall conntrack table on interface events"))
-       flush.default = "never"
-       flush:value("ifup", translate("ifup"))
-       flush:value("ifdown", translate("ifdown"))
-       flush:value("never", translate("never"))
-       flush:value("always", translate("always"))
+flush.default = "never"
+flush:value("ifup", translate("ifup"))
+flush:value("ifdown", translate("ifdown"))
+flush:value("never", translate("never"))
+flush:value("always", translate("always"))
 
 metric = mwan_interface:option(DummyValue, "metric", translate("Metric"),
        translate("This displays the metric assigned to this interface in /etc/config/network"))
-       metric.rawhtml = true
-       function metric.cfgvalue(self, s)
-               if errorNoMetric == 0 then
-                       return metricValue
-               else
-                       return "&#8212;"
-               end
+metric.rawhtml = true
+function metric.cfgvalue(self, s)
+       local uci = require "luci.model.uci".cursor(nil, "/var/state")
+       local metric = uci:get("network", arg[1], "metric")
+       if metric then
+               return metric
+       else
+               return "&#8212;"
        end
-
+end
 
 return m5
index efbe8f79028c9c989f62a7a8b3960057f3ac5928..9b4ab102d5b526f5e4ff52386d9301472ee56dc5 100644 (file)
@@ -1,46 +1,44 @@
--- ------ member configuration ------ --
+-- Copyright 2014 Aedan Renner <chipdankly@gmail.com>
+-- Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+-- Licensed to the public under the GNU General Public License v2.
 
-ds = require "luci.dispatcher"
+dsp = require "luci.dispatcher"
 
 
-m5 = Map("mwan3", translate("MWAN Member Configuration"))
-       m5:append(Template("mwan/config_css"))
+m5 = Map("mwan3", translate("MWAN - Members"))
 
-
-mwan_member = m5:section(TypedSection, "member", translate("Members"),
+mwan_member = m5:section(TypedSection, "member", nil,
        translate("Members are profiles attaching a metric and weight to an MWAN interface<br />" ..
        "Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />" ..
        "Members may not share the same name as configured interfaces, policies or rules"))
-       mwan_member.addremove = true
-       mwan_member.dynamic = false
-       mwan_member.sectionhead = translate("Member")
-       mwan_member.sortable = true
-       mwan_member.template = "cbi/tblsection"
-       mwan_member.extedit = ds.build_url("admin", "network", "mwan", "configuration", "member", "%s")
-       function mwan_member.create(self, section)
-               TypedSection.create(self, section)
-               m5.uci:save("mwan3")
-               luci.http.redirect(ds.build_url("admin", "network", "mwan", "configuration", "member", section))
-       end
-
+mwan_member.addremove = true
+mwan_member.dynamic = false
+mwan_member.sectionhead = translate("Member")
+mwan_member.sortable = true
+mwan_member.template = "cbi/tblsection"
+mwan_member.extedit = dsp.build_url("admin", "network", "mwan", "member", "%s")
+function mwan_member.create(self, section)
+       TypedSection.create(self, section)
+       m5.uci:save("mwan3")
+       luci.http.redirect(dsp.build_url("admin", "network", "mwan", "member", section))
+end
 
 interface = mwan_member:option(DummyValue, "interface", translate("Interface"))
-       interface.rawhtml = true
-       function interface.cfgvalue(self, s)
-               return self.map:get(s, "interface") or "&#8212;"
-       end
+interface.rawhtml = true
+function interface.cfgvalue(self, s)
+       return self.map:get(s, "interface") or "&#8212;"
+end
 
 metric = mwan_member:option(DummyValue, "metric", translate("Metric"))
-       metric.rawhtml = true
-       function metric.cfgvalue(self, s)
-               return self.map:get(s, "metric") or "1"
-       end
+metric.rawhtml = true
+function metric.cfgvalue(self, s)
+       return self.map:get(s, "metric") or "1"
+end
 
 weight = mwan_member:option(DummyValue, "weight", translate("Weight"))
-       weight.rawhtml = true
-       function weight.cfgvalue(self, s)
-               return self.map:get(s, "weight") or "1"
-       end
-
+weight.rawhtml = true
+function weight.cfgvalue(self, s)
+       return self.map:get(s, "weight") or "1"
+end
 
 return m5
index dc2e0da4477ab1fd0a3354762f6e713e6cefef61..27d9a3e858df656b83aafbf4968f27a68d2e1146 100644 (file)
@@ -1,47 +1,31 @@
--- ------ extra functions ------ --
-
-function cbi_add_interface(field)
-       uci.cursor():foreach("mwan3", "interface",
-               function (section)
-                       field:value(section[".name"])
-               end
-       )
-end
-
--- ------ member configuration ------ --
+-- Copyright 2014 Aedan Renner <chipdankly@gmail.com>
+-- Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+-- Licensed to the public under the GNU General Public License v2.
 
 dsp = require "luci.dispatcher"
 arg[1] = arg[1] or ""
 
 
 m5 = Map("mwan3", translatef("MWAN Member Configuration - %s", arg[1]))
-       m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "member")
-
+m5.redirect = dsp.build_url("admin", "network", "mwan", "member")
 
 mwan_member = m5:section(NamedSection, arg[1], "member", "")
-       mwan_member.addremove = false
-       mwan_member.dynamic = false
-
+mwan_member.addremove = false
+mwan_member.dynamic = false
 
 interface = mwan_member:option(Value, "interface", translate("Interface"))
-       cbi_add_interface(interface)
+m5.uci:foreach("mwan3", "interface",
+       function(s)
+               interface:value(s['.name'], s['.name'])
+       end
+)
 
 metric = mwan_member:option(Value, "metric", translate("Metric"),
        translate("Acceptable values: 1-256. Defaults to 1 if not set"))
-       metric.datatype = "range(1, 256)"
+metric.datatype = "range(1, 256)"
 
 weight = mwan_member:option(Value, "weight", translate("Weight"),
        translate("Acceptable values: 1-1000. Defaults to 1 if not set"))
-       weight.datatype = "range(1, 1000)"
-
-
--- ------ currently configured interfaces ------ --
-
-mwan_interface = m5:section(TypedSection, "interface", translate("Currently Configured Interfaces"))
-       mwan_interface.addremove = false
-       mwan_interface.dynamic = false
-       mwan_interface.sortable = false
-       mwan_interface.template = "cbi/tblsection"
-
+weight.datatype = "range(1, 1000)"
 
 return m5
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/notify.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/notify.lua
new file mode 100644 (file)
index 0000000..4c6e210
--- /dev/null
@@ -0,0 +1,45 @@
+-- Copyright 2014 Aedan Renner <chipdankly@gmail.com>
+-- Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+-- Licensed to the public under the GNU General Public License v2.
+
+local fs = require "nixio.fs"
+local ut = require "luci.util"
+script = "/etc/mwan3.user"
+
+
+m5 = SimpleForm("luci", translate("MWAN - Notification"))
+
+f = m5:section(SimpleSection, nil,
+       translate("This section allows you to modify the content of \"/etc/mwan3.user\".<br />" ..
+       "The file is also preserved during sysupgrade.<br />" ..
+       "<br />" ..
+       "Notes:<br />" ..
+       "This file is interpreted as a shell script.<br />" ..
+       "The first line of the script must be &#34;#!/bin/sh&#34; without quotes.<br />" ..
+       "Lines beginning with # are comments and are not executed.<br />" ..
+       "Put your custom mwan3 action here, they will<br />" ..
+       "be executed with each netifd hotplug interface event<br />" ..
+       "on interfaces for which mwan3 is enabled.<br />" ..
+       "<br />" ..
+       "There are three main environment variables that are passed to this script.<br />" ..
+       "<br />" ..
+       "$ACTION <br />" ..
+       "* \"ifup\" Is called by netifd and mwan3track <br />" ..
+       "* \"ifdown\" Is called by netifd and mwan3track <br />" ..
+       "* \"connected\" Is only called by mwan3track if tracking was successful <br />" ..
+       "* \"disconnected\" Is only called by mwan3track if tracking has failed <br />" ..
+       "$INTERFACE Name of the interface which went up or down (e.g. \"wan\" or \"wwan\")<br />" ..
+       "$DEVICE Physical device name which interface went up or down (e.g. \"eth0\" or \"wwan0\")<br />" ..
+       "<br />"))
+
+t = f:option(TextValue, "lines")
+t.rmempty = true
+t.rows = 20
+function t.cfgvalue()
+       return fs.readfile(script)
+end
+function t.write(self, section, data)
+       return fs.writefile(script, ut.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+return m5
index 6640564d50cb7b7a206ff7548a3e313ee8a83365..4543260f6f7d9a59bb625bae1183e0797ab047fa 100644 (file)
@@ -1,94 +1,87 @@
--- ------ extra functions ------ --
+-- Copyright 2014 Aedan Renner <chipdankly@gmail.com>
+-- Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+-- Licensed to the public under the GNU General Public License v2.
+
+dsp = require "luci.dispatcher"
+uci = require "uci"
+
+
+function policyCheck()
+       local policy_error = {}
 
-function policyCheck() -- check to see if any policy names exceed the maximum of 15 characters
        uci.cursor():foreach("mwan3", "policy",
                function (section)
+                       policy_error[section[".name"]] = false
                        if string.len(section[".name"]) > 15 then
-                               nameTooLong = 1
-                               err_name_list = err_name_list .. section[".name"] .. " "
+                               policy_error[section[".name"]] = true
                        end
                end
        )
-end
 
-function policyWarn() -- display status and warning messages at the top of the page
-       if nameTooLong == 1 then
-               return "<font color=\"ff0000\"><strong>" .. translate("WARNING: Some policies have names exceeding the maximum of 15 characters!") .. "</strong></font>"
-       else
-               return ""
-       end
+       return policy_error
 end
 
--- ------ policy configuration ------ --
-
-ds = require "luci.dispatcher"
-sys = require "luci.sys"
-
-nameTooLong = 0
-err_name_list = " "
-policyCheck()
-
+function policyError(policy_error)
+       local warnings = ""
+       for i, k in pairs(policy_error) do
+               if policy_error[i] == true then
+                       warnings = warnings .. string.format("<strong>%s</strong><br />",
+                               translatef("WARNING: Policy %s has exceeding the maximum name of 15 characters", i)
+                               )
+               end
+       end
 
-m5 = Map("mwan3", translate("MWAN Policy Configuration"),
-       policyWarn())
-       m5:append(Template("mwan/config_css"))
+       return warnings
+end
 
+m5 = Map("mwan3", translate("MWAN - Policies"),
+       policyError(policyCheck()))
 
-mwan_policy = m5:section(TypedSection, "policy", translate("Policies"),
+mwan_policy = m5:section(TypedSection, "policy", nil,
        translate("Policies are profiles grouping one or more members controlling how MWAN distributes traffic<br />" ..
-       "Member interfaces with lower metrics are used first. Interfaces with the same metric load-balance<br />" ..
+       "Member interfaces with lower metrics are used first<br />" ..
+       "Member interfaces with the same metric will be load-balanced<br />" ..
        "Load-balanced member interfaces distribute more traffic out those with higher weights<br />" ..
-       "Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be 15 characters or less<br />" ..
+       "Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />" ..
+       "Names must be 15 characters or less<br />" ..
        "Policies may not share the same name as configured interfaces, members or rules"))
-       mwan_policy.addremove = true
-       mwan_policy.dynamic = false
-       mwan_policy.sectionhead = translate("Policy")
-       mwan_policy.sortable = true
-       mwan_policy.template = "cbi/tblsection"
-       mwan_policy.extedit = ds.build_url("admin", "network", "mwan", "configuration", "policy", "%s")
-       function mwan_policy.create(self, section)
-               TypedSection.create(self, section)
-               m5.uci:save("mwan3")
-               luci.http.redirect(ds.build_url("admin", "network", "mwan", "configuration", "policy", section))
-       end
-
+mwan_policy.addremove = true
+mwan_policy.dynamic = false
+mwan_policy.sectionhead = translate("Policy")
+mwan_policy.sortable = true
+mwan_policy.template = "cbi/tblsection"
+mwan_policy.extedit = dsp.build_url("admin", "network", "mwan", "policy", "%s")
+function mwan_policy.create(self, section)
+       TypedSection.create(self, section)
+       m5.uci:save("mwan3")
+       luci.http.redirect(dsp.build_url("admin", "network", "mwan", "policy", section))
+end
 
 use_member = mwan_policy:option(DummyValue, "use_member", translate("Members assigned"))
-       use_member.rawhtml = true
-       function use_member.cfgvalue(self, s)
-               local memberConfig, memberList = self.map:get(s, "use_member"), ""
-               if memberConfig then
-                       for k,v in pairs(memberConfig) do
-                               memberList = memberList .. v .. "<br />"
-                       end
-                       return memberList
-               else
-                       return "&#8212;"
+use_member.rawhtml = true
+function use_member.cfgvalue(self, s)
+       local memberConfig, memberList = self.map:get(s, "use_member"), ""
+       if memberConfig then
+               for k,v in pairs(memberConfig) do
+                       memberList = memberList .. v .. "<br />"
                end
+               return memberList
+       else
+               return "&#8212;"
        end
+end
 
 last_resort = mwan_policy:option(DummyValue, "last_resort", translate("Last resort"))
-       last_resort.rawhtml = true
-       function last_resort.cfgvalue(self, s)
-               local action = self.map:get(s, "last_resort")
-               if action == "blackhole" then
-                       return translate("blackhole (drop)")
-               elseif action == "default" then
-                       return translate("default (use main routing table)")
-               else
-                       return translate("unreachable (reject)")
-               end
-       end
-
-errors = mwan_policy:option(DummyValue, "errors", translate("Errors"))
-       errors.rawhtml = true
-       function errors.cfgvalue(self, s)
-               if not string.find(err_name_list, " " .. s .. " ") then
-                       return ""
-               else
-                       return "<span title=\"Name exceeds 15 characters\"><img src=\"/luci-static/resources/cbi/reset.gif\" alt=\"error\"></img></span>"
-               end
+last_resort.rawhtml = true
+function last_resort.cfgvalue(self, s)
+       local action = self.map:get(s, "last_resort")
+       if action == "blackhole" then
+               return translate("blackhole (drop)")
+       elseif action == "default" then
+               return translate("default (use main routing table)")
+       else
+               return translate("unreachable (reject)")
        end
-
+end
 
 return m5
index feb62dc8a307f7d4f8bf5daa905d8f1228b7c4f8..d1a063d093192beb7846c2ca7693bd355bf68265 100644 (file)
@@ -1,65 +1,30 @@
--- ------ extra functions ------ --
-
-function policyCheck() -- check to see if this policy's name exceed the maximum of 15 characters
-       policyNameLength = string.len(arg[1])
-       if policyNameLength > 15 then
-               nameTooLong = 1
-       end
-end
-
-function policyWarn() -- display status and warning messages at the top of the page
-       if nameTooLong == 1 then
-               return "<font color=\"ff0000\"><strong>" .. translatef("WARNING: This policy's name is %d characters exceeding the maximum of 15!", policyNameLength) .. "</strong></font>"
-       else
-               return ""
-       end
-end
-
-function cbiAddMember(field)
-       uci.cursor():foreach("mwan3", "member",
-               function (section)
-                       field:value(section[".name"])
-               end
-       )
-end
-
--- ------ policy configuration ------ --
+-- Copyright 2014 Aedan Renner <chipdankly@gmail.com>
+-- Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+-- Licensed to the public under the GNU General Public License v2.
 
 dsp = require "luci.dispatcher"
 arg[1] = arg[1] or ""
 
-nameTooLong = 0
-policyCheck()
-
-
-m5 = Map("mwan3", translatef("MWAN Policy Configuration - %s", arg[1]),
-       policyWarn())
-       m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "policy")
 
+m5 = Map("mwan3", translatef("MWAN Policy Configuration - %s", arg[1]))
+m5.redirect = dsp.build_url("admin", "network", "mwan", "policy")
 
 mwan_policy = m5:section(NamedSection, arg[1], "policy", "")
-       mwan_policy.addremove = false
-       mwan_policy.dynamic = false
-
+mwan_policy.addremove = false
+mwan_policy.dynamic = false
 
-use_member = mwan_policy:option(DynamicList, "use_member", translate("Member used"))
-       cbiAddMember(use_member)
+member = mwan_policy:option(DynamicList, "use_member", translate("Member used"))
+m5.uci:foreach("mwan3", "member",
+       function(s)
+               member:value(s['.name'], s['.name'])
+       end
+)
 
 last_resort = mwan_policy:option(ListValue, "last_resort", translate("Last resort"),
        translate("When all policy members are offline use this behavior for matched traffic"))
-       last_resort.default = "unreachable"
-       last_resort:value("unreachable", translate("unreachable (reject)"))
-       last_resort:value("blackhole", translate("blackhole (drop)"))
-       last_resort:value("default", translate("default (use main routing table)"))
-
-
--- ------ currently configured members ------ --
-
-mwan_member = m5:section(TypedSection, "member", translate("Currently Configured Members"))
-       mwan_member.addremove = false
-       mwan_member.dynamic = false
-       mwan_member.sortable = false
-       mwan_member.template = "cbi/tblsection"
-
+last_resort.default = "unreachable"
+last_resort:value("unreachable", translate("unreachable (reject)"))
+last_resort:value("blackhole", translate("blackhole (drop)"))
+last_resort:value("default", translate("default (use main routing table)"))
 
 return m5
index 9cb4756fc802207ec9241401fb1d9c7c9336b4b2..f0b94bd0bbbc53c38d8ffcf0aeb7077b4edf3366 100644 (file)
--- ------ extra functions ------ --
+-- Copyright 2014 Aedan Renner <chipdankly@gmail.com>
+-- Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+-- Licensed to the public under the GNU General Public License v2.
 
-function ruleCheck() -- determine if rules needs a proper protocol configured
+dsp = require "luci.dispatcher"
+uci = require "uci"
+
+
+function ruleCheck()
+       local rule_error = {}
        uci.cursor():foreach("mwan3", "rule",
                function (section)
-                       local sourcePort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".src_port"))
-                       local destPort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".dest_port"))
-                       if sourcePort ~= "" or destPort ~= "" then -- ports configured
-                               local protocol = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".proto"))
-                               if protocol == "" or protocol == "all" then -- no or improper protocol
-                                       error_protocol_list = error_protocol_list .. section[".name"] .. " "
+                       rule_error[section[".name"]] = false
+                       local uci = uci.cursor(nil, "/var/state")
+                       local sourcePort = uci:get("mwan3", section[".name"], "src_port")
+                       local destPort = uci:get("mwan3", section[".name"], "dest_port")
+                       if sourcePort ~= nil or destPort ~= nil then
+                               local protocol = uci:get("mwan3", section[".name"], "proto")
+                               if protocol == nil or protocol == "all" then
+                                       rule_error[section[".name"]] = true
                                end
                        end
                end
        )
+       return rule_error
 end
 
-function ruleWarn() -- display warning messages at the top of the page
-       if error_protocol_list ~= " " then
-               return "<font color=\"ff0000\"><strong>" .. translate("WARNING: Some rules have a port configured with no or improper protocol specified! Please configure a specific protocol!") .. "</strong></font>"
-       else
-               return ""
+function ruleWarn(rule_error)
+       local warnings = ""
+       for i, k in pairs(rule_error) do
+               if rule_error[i] == true then
+                       warnings = warnings .. string.format("<strong>%s</strong><br />",
+                               translatef("WARNING: Rule %s have a port configured with no or improper protocol specified!", i)
+                               )
+               end
        end
-end
-
--- ------ rule configuration ------ --
-
-dsp = require "luci.dispatcher"
-sys = require "luci.sys"
-ut = require "luci.util"
-
-error_protocol_list = " "
-ruleCheck()
-
 
-m5 = Map("mwan3", translate("MWAN Rule Configuration"),
-       ruleWarn())
-       m5:append(Template("mwan/config_css"))
+       return warnings
+end
 
+m5 = Map("mwan3", translate("MWAN - Rules"),
+       ruleWarn(ruleCheck())
+       )
 
-mwan_rule = m5:section(TypedSection, "rule", translate("Traffic Rules"),
-       translate("Rules specify which traffic will use a particular MWAN policy based on IP address, port or protocol<br />" ..
-       "Rules are matched from top to bottom. Rules below a matching rule are ignored. Traffic not matching any rule is routed using the main routing table<br />" ..
-       "Traffic destined for known (other than default) networks is handled by the main routing table. Traffic matching a rule, but all WAN interfaces for that policy are down will be blackholed<br />" ..
+mwan_rule = m5:section(TypedSection, "rule", nil,
+       translate("Rules specify which traffic will use a particular MWAN policy<br />" ..
+       "Rules are based on IP address, port or protocol<br />" ..
+       "Rules are matched from top to bottom<br />" ..
+       "Rules below a matching rule are ignored<br />" ..
+       "Traffic not matching any rule is routed using the main routing table<br />" ..
+       "Traffic destined for known (other than default) networks is handled by the main routing table<br />" ..
+       "Traffic matching a rule, but all WAN interfaces for that policy are down will be blackholed<br />" ..
        "Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />" ..
        "Rules may not share the same name as configured interfaces, members or policies"))
-       mwan_rule.addremove = true
-       mwan_rule.anonymous = false
-       mwan_rule.dynamic = false
-       mwan_rule.sectionhead = translate("Rule")
-       mwan_rule.sortable = true
-       mwan_rule.template = "cbi/tblsection"
-       mwan_rule.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "rule", "%s")
-       function mwan_rule.create(self, section)
-               TypedSection.create(self, section)
-               m5.uci:save("mwan3")
-               luci.http.redirect(dsp.build_url("admin", "network", "mwan", "configuration", "rule", section))
-       end
-
+mwan_rule.addremove = true
+mwan_rule.anonymous = false
+mwan_rule.dynamic = false
+mwan_rule.sectionhead = translate("Rule")
+mwan_rule.sortable = true
+mwan_rule.template = "cbi/tblsection"
+mwan_rule.extedit = dsp.build_url("admin", "network", "mwan", "rule", "%s")
+function mwan_rule.create(self, section)
+       TypedSection.create(self, section)
+       m5.uci:save("mwan3")
+       luci.http.redirect(dsp.build_url("admin", "network", "mwan", "rule", section))
+end
 
 src_ip = mwan_rule:option(DummyValue, "src_ip", translate("Source address"))
-       src_ip.rawhtml = true
-       function src_ip.cfgvalue(self, s)
-               return self.map:get(s, "src_ip") or "&#8212;"
-       end
+src_ip.rawhtml = true
+function src_ip.cfgvalue(self, s)
+       return self.map:get(s, "src_ip") or "&#8212;"
+end
 
 src_port = mwan_rule:option(DummyValue, "src_port", translate("Source port"))
-       src_port.rawhtml = true
-       function src_port.cfgvalue(self, s)
-               return self.map:get(s, "src_port") or "&#8212;"
-       end
+src_port.rawhtml = true
+function src_port.cfgvalue(self, s)
+       return self.map:get(s, "src_port") or "&#8212;"
+end
 
 dest_ip = mwan_rule:option(DummyValue, "dest_ip", translate("Destination address"))
-       dest_ip.rawhtml = true
-       function dest_ip.cfgvalue(self, s)
-               return self.map:get(s, "dest_ip") or "&#8212;"
-       end
+dest_ip.rawhtml = true
+function dest_ip.cfgvalue(self, s)
+       return self.map:get(s, "dest_ip") or "&#8212;"
+end
 
 dest_port = mwan_rule:option(DummyValue, "dest_port", translate("Destination port"))
-       dest_port.rawhtml = true
-       function dest_port.cfgvalue(self, s)
-               return self.map:get(s, "dest_port") or "&#8212;"
-       end
+dest_port.rawhtml = true
+function dest_port.cfgvalue(self, s)
+       return self.map:get(s, "dest_port") or "&#8212;"
+end
 
 proto = mwan_rule:option(DummyValue, "proto", translate("Protocol"))
-       proto.rawhtml = true
-       function proto.cfgvalue(self, s)
-               return self.map:get(s, "proto") or "all"
-       end
-
-sticky = mwan_rule:option(DummyValue, "sticky", translate("Sticky"))
-       sticky.rawhtml = true
-       function sticky.cfgvalue(self, s)
-               if self.map:get(s, "sticky") == "1" then
-                       stickied = 1
-                       return translate("Yes")
-               else
-                       stickied = nil
-                       return translate("No")
-               end
-       end
-
-timeout = mwan_rule:option(DummyValue, "timeout", translate("Sticky timeout"))
-       timeout.rawhtml = true
-       function timeout.cfgvalue(self, s)
-               if stickied then
-                       local timeoutValue = self.map:get(s, "timeout")
-                       if timeoutValue then
-                               return timeoutValue .. "s"
-                       else
-                               return "600s"
-                       end
-               else
-                       return "&#8212;"
-               end
-       end
-
-ipset = mwan_rule:option(DummyValue, "ipset", translate("IPset"))
-       ipset.rawhtml = true
-       function ipset.cfgvalue(self, s)
-               return self.map:get(s, "ipset") or "&#8212;"
-       end
+proto.rawhtml = true
+function proto.cfgvalue(self, s)
+       return self.map:get(s, "proto") or "all"
+end
 
 use_policy = mwan_rule:option(DummyValue, "use_policy", translate("Policy assigned"))
-       use_policy.rawhtml = true
-       function use_policy.cfgvalue(self, s)
-               return self.map:get(s, "use_policy") or "&#8212;"
-       end
-
-errors = mwan_rule:option(DummyValue, "errors", translate("Errors"))
-       errors.rawhtml = true
-       function errors.cfgvalue(self, s)
-               if not string.find(error_protocol_list, " " .. s .. " ") then
-                       return ""
-               else
-                       return "<span title=\"" .. translate("No protocol specified") .. "\"><img src=\"/luci-static/resources/cbi/reset.gif\" alt=\"error\"></img></span>"
-               end
-       end
-
+use_policy.rawhtml = true
+function use_policy.cfgvalue(self, s)
+       return self.map:get(s, "use_policy") or "&#8212;"
+end
 
 return m5
index cb1b45d2611a38ffd8ef0a20a62329197eadb6e2..84adfcf910e66da5deeb13fdc76cb5f67e522748 100644 (file)
--- ------ extra functions ------ --
-
-function ruleCheck() -- determine if rule needs a protocol specified
-       local sourcePort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".src_port"))
-       local destPort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".dest_port"))
-       if sourcePort ~= "" or destPort ~= "" then -- ports configured
-               local protocol = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".proto"))
-               if protocol == "" or protocol == "all" then -- no or improper protocol
-                       error_protocol = 1
-               end
-       end
-end
-
-function ruleWarn() -- display warning message at the top of the page
-       if error_protocol == 1 then
-               return "<font color=\"ff0000\"><strong>" .. translate("WARNING: This rule is incorrectly configured with no or improper protocol specified! Please configure a specific protocol!") .. "</strong></font>"
-       else
-               return ""
-       end
-end
-
-function cbiAddPolicy(field)
-       uci.cursor():foreach("mwan3", "policy",
-               function (section)
-                       field:value(section[".name"])
-               end
-       )
-end
-
-function cbiAddProtocol(field)
-       local protocols = ut.trim(sys.exec("cat /etc/protocols | grep ' # ' | awk '{print $1}' | grep -vw -e 'ip' -e 'tcp' -e 'udp' -e 'icmp' -e 'esp' | grep -v 'ipv6' | sort | tr '\n' ' '"))
-       for p in string.gmatch(protocols, "%S+") do
-               field:value(p)
-       end
-end
-
--- ------ rule configuration ------ --
+-- Copyright 2014 Aedan Renner <chipdankly@gmail.com>
+-- Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+-- Licensed to the public under the GNU General Public License v2.
 
 dsp = require "luci.dispatcher"
-sys = require "luci.sys"
-ut = require "luci.util"
 arg[1] = arg[1] or ""
 
-error_protocol = 0
-ruleCheck()
-
-
-m5 = Map("mwan3", translatef("MWAN Rule Configuration - %s", arg[1]),
-       ruleWarn())
-       m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "rule")
 
+m5 = Map("mwan3", translatef("MWAN Rule Configuration - %s", arg[1]))
+m5.redirect = dsp.build_url("admin", "network", "mwan", "rule")
 
 mwan_rule = m5:section(NamedSection, arg[1], "rule", "")
-       mwan_rule.addremove = false
-       mwan_rule.dynamic = false
-
+mwan_rule.addremove = false
+mwan_rule.dynamic = false
 
 src_ip = mwan_rule:option(Value, "src_ip", translate("Source address"),
        translate("Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"))
-       src_ip.datatype = ipaddr
+src_ip.datatype = ipaddr
 
 src_port = mwan_rule:option(Value, "src_port", translate("Source port"),
        translate("May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or as a portrange (eg \"1024:2048\") without quotes"))
 
 dest_ip = mwan_rule:option(Value, "dest_ip", translate("Destination address"),
        translate("Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"))
-       dest_ip.datatype = ipaddr
+dest_ip.datatype = ipaddr
 
 dest_port = mwan_rule:option(Value, "dest_port", translate("Destination port"),
        translate("May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or as a portrange (eg \"1024:2048\") without quotes"))
 
 proto = mwan_rule:option(Value, "proto", translate("Protocol"),
-       translate("View the contents of /etc/protocols for protocol descriptions"))
-       proto.default = "all"
-       proto.rmempty = false
-       proto:value("all")
-       proto:value("ip")
-       proto:value("tcp")
-       proto:value("udp")
-       proto:value("icmp")
-       proto:value("esp")
-       cbiAddProtocol(proto)
+       translate("View the content of /etc/protocols for protocol description"))
+proto.default = "all"
+proto.rmempty = false
+proto:value("all")
+proto:value("tcp")
+proto:value("udp")
+proto:value("icmp")
+proto:value("esp")
 
 sticky = mwan_rule:option(ListValue, "sticky", translate("Sticky"),
        translate("Traffic from the same source IP address that previously matched this rule within the sticky timeout period will use the same WAN interface"))
-       sticky.default = "0"
-       sticky:value("1", translate("Yes"))
-       sticky:value("0", translate("No"))
+sticky.default = "0"
+sticky:value("1", translate("Yes"))
+sticky:value("0", translate("No"))
 
 timeout = mwan_rule:option(Value, "timeout", translate("Sticky timeout"),
        translate("Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"))
-       timeout.datatype = "range(1, 1000000)"
+timeout.datatype = "range(1, 1000000)"
 
 ipset = mwan_rule:option(Value, "ipset", translate("IPset"),
        translate("Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/youtube.com/youtube\")"))
 
-use_policy = mwan_rule:option(Value, "use_policy", translate("Policy assigned"))
-       cbiAddPolicy(use_policy)
-       use_policy:value("unreachable", translate("unreachable (reject)"))
-       use_policy:value("blackhole", translate("blackhole (drop)"))
-       use_policy:value("default", translate("default (use main routing table)"))
-
-
--- ------ currently configured policies ------ --
-
-mwan_policy = m5:section(TypedSection, "policy", translate("Currently Configured Policies"))
-       mwan_policy.addremove = false
-       mwan_policy.dynamic = false
-       mwan_policy.sortable = false
-       mwan_policy.template = "cbi/tblsection"
-
+policy = mwan_rule:option(Value, "use_policy", translate("Policy assigned"))
+m5.uci:foreach("mwan3", "policy",
+       function(s)
+               policy:value(s['.name'], s['.name'])
+       end
+)
+policy:value("unreachable", translate("unreachable (reject)"))
+policy:value("blackhole", translate("blackhole (drop)"))
+policy:value("default", translate("default (use main routing table)"))
 
 return m5
index 53b997af90bb46d25299729d967d4c68484d6b66..e4b3c06999ec15a9b4e7c8d75002415d64462112 100644 (file)
@@ -1 +1,3 @@
-<%+mwan/openwrt_overview_status%>
+<%if require("luci.sys").init.enabled("mwan3") then%>
+<%+mwan/overview_status_interface%>
+<%end%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm
deleted file mode 100644 (file)
index 4483485..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<%+header%>
-
-<ul class="cbi-tabmenu">
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
-       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
-</ul>
-
-<%
-       local uci = require "luci.model.uci"
-
-       interfaceNames = ""
-       uci.cursor():foreach("mwan3", "interface",
-               function (section)
-                       interfaceNames = interfaceNames .. section[".name"] .. " "
-               end
-       )
-%>
-
-<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
-<script type="text/javascript">//<![CDATA[
-       var stxhr = new XHR();
-
-       function update_status(tool, task, task_name)
-       {
-               var iface = document.getElementById('mwaniface').value;
-               var output = document.getElementById('diag_output');
-
-               if (tool == "service")
-                       {
-                               output.innerHTML =
-                                       '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="padding: 20px; vertical-align: middle;" /> ' +
-                                       String.format("<%:Waiting for MWAN to %s...%>", task_name)
-                               ;
-                       }
-                       else
-                       {
-                               output.innerHTML =
-                                       '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="padding: 20px; vertical-align: middle;" /> ' +
-                                       "<%:Waiting for diagnostic results...%>"
-                               ;
-                       }
-
-               output.parentNode.style.display = 'block';
-               output.style.display = 'inline';
-
-               stxhr.get('<%=luci.dispatcher.build_url("admin", "network", "mwan", "advanced")%>/diagnostics_display' + '/' + iface + '/' + tool + '/' + task, null,
-                       function(x, mArray)
-                       {
-                               if (mArray.diagnostics)
-                               {
-                                       output.innerHTML = String.format('<pre id="diag_output_css">%h</pre>', mArray.diagnostics[0]);
-                               }
-                               else
-                               {
-                                       output.innerHTML = '<pre id="diag_output_css"><strong><%:No diagnostic results returned%></strong></pre>';
-                               }
-                       }
-               );
-       }
-//]]></script>
-
-<div id="mwan_diagnostics" class="cbi-map">
-       <fieldset id="diag_select" class="cbi-section">
-               <legend><%:MWAN Interface Diagnostics%></legend>
-               <select id="mwaniface">
-                       <% for z in interfaceNames:gmatch("[^ ]+") do -%><option value="<%=z%>"><%=z%></option><%- end %>
-               </select>
-               <div id="buttoncss">
-                       <input type="button" value="<%:Ping default gateway%>" class="cbi-button cbi-button-apply" onclick="update_status('ping', 'gateway', null)" />
-                       <input type="button" value="<%:Ping tracking IP%>" class="cbi-button cbi-button-apply" onclick="update_status('ping', 'track_ip', null)" />
-                       <input type="button" value="<%:Check IP rules%>" class="cbi-button cbi-button-apply" onclick="update_status('rulechk', null, null)" />
-                       <input type="button" value="<%:Check routing table%>" class="cbi-button cbi-button-apply" onclick="update_status('routechk', null, null)" />
-                       <input type="button" value="<%:Hotplug ifup%>" class="cbi-button cbi-button-apply" onclick="update_status('hotplug', 'ifup', null)" />
-                       <input type="button" value="<%:Hotplug ifdown%>" class="cbi-button cbi-button-apply" onclick="update_status('hotplug', 'ifdown', null)" />
-               </div>
-       </fieldset>
-       <fieldset id="diag_select" class="cbi-section">
-               <legend><%:MWAN Service Control%></legend>
-               <div id="buttoncss">
-                       <input type="button" value="<%:Restart MWAN%>" class="cbi-button cbi-button-apply" onclick="update_status('service', 'restart', '<%:restart%>')" />
-                       <input type="button" value="<%:Stop MWAN%>" class="cbi-button cbi-button-apply" onclick="update_status('service', 'stop', '<%:stop%>')" />
-                       <input type="button" value="<%:Start MWAN%>" class="cbi-button cbi-button-apply" onclick="update_status('service', 'start', '<%:start%>')" />
-               </div>
-       </fieldset>
-       <fieldset class="cbi-section" style="display:none">
-               <legend><%:Diagnostic Results%></legend>
-               <div id="diag_output"></div>
-       </fieldset>
-</div>
-
-<style type="text/css">
-  #mwaniface {
-       float: left;
-       margin: 8px 20px 0px 0px;
-  }
-  #buttoncss {
-       display: table;
-       float: left;
-       text-align: left;
-  }
-  .cbi-button {
-       margin: 8px 20px 0px 0px;
-       min-width: 153px;
-  }
-  #diag_output_css {
-       padding: 20px;
-       text-align: left;
-  }
-</style>
-
-<%+footer%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm
deleted file mode 100644 (file)
index 10b4f10..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<ul class="cbi-tabmenu">
-       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
-</ul>
-
-<style type="text/css">
-  .cbi-section {
-       padding: 20px;
-  }
-</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm
deleted file mode 100644 (file)
index 20ae603..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<ul class="cbi-tabmenu">
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
-       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
-</ul>
-
-<style type="text/css">
-  .cbi-section {
-       padding: 20px;
-  }
-</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm
deleted file mode 100644 (file)
index bed4310..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<ul class="cbi-tabmenu">
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
-       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
-</ul>
-
-<style type="text/css">
-  .cbi-section {
-       padding: 20px;
-  }
-</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm
deleted file mode 100644 (file)
index 4174ef4..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-<%+header%>
-
-<ul class="cbi-tabmenu">
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
-       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
-</ul>
-
-<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
-<script type="text/javascript">//<![CDATA[
-       XHR.poll(15, '<%=luci.dispatcher.build_url("admin", "network", "mwan", "advanced", "troubleshooting_display")%>', null,
-               function(x, mArray)
-               {
-                       var tshoot = document.getElementById('troubleshoot_text');
-                       if (mArray.versions)
-                       {
-                               var versions = '<span class="description">Software versions : </span><br /><br />';
-                               var mwanConfig = '<br /><br /><span class="description">Output of &#34;cat /etc/config/mwan3&#34; : </span><br /><br />';
-                               var netConfig = '<br /><br /><span class="description">Output of &#34;cat /etc/config/network&#34; : </span><br /><br />';
-                               var wifiConfig = '<br /><br /><span class="description">Output of &#34;cat /etc/config/wireless&#34; : </span><br /><br />';
-                               var ifconfig = '<br /><br /><span class="description">Output of &#34;ifconfig&#34; : </span><br /><br />';
-                               var ipRoute = '<br /><br /><span class="description">Output of &#34;route -n&#34; : </span><br /><br />';
-                               var ipRuleShow = '<br /><br /><span class="description">Output of &#34;ip rule show&#34; : </span><br /><br />';
-                               var routeListTable = '<br /><br /><span class="description">Output of &#34;ip route list table 1-250&#34; : </span><br /><br />';
-                               var firewallOut = '<br /><br /><span class="description">Firewall default output policy (must be ACCEPT) : </span><br /><br />';
-                               var iptables = '<br /><br /><span class="description">Output of &#34;iptables -L -t mangle -v -n&#34; : </span><br /><br />';
-                               tshoot.innerHTML = String.format(
-                                       '<pre>%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s</pre>',
-                                       versions, mArray.versions[0], mwanConfig, mArray.mwanconfig[0], netConfig, mArray.netconfig[0],
-                                       wifiConfig, mArray.wificonfig[0], ifconfig, mArray.ifconfig[0], ipRoute, mArray.routeshow[0],
-                                       ipRuleShow, mArray.iprule[0], routeListTable, mArray.routelist[0], firewallOut, mArray.firewallout[0],
-                                       iptables, mArray.iptables[0]
-                               );
-                       }
-                       else
-                       {
-                               tshoot.innerHTML = '<strong><%:Error collecting troubleshooting information%></strong>';
-                       }
-               }
-       );
-//]]></script>
-
-<div id="troubleshoot">
-       <fieldset class="cbi-section">
-               <legend><%:Troubleshooting Data%></legend>
-               <div id="troubleshoot_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div>
-       </fieldset>
-</div>
-
-<style type="text/css">
-  #troubleshoot_text {
-       padding: 20px;
-       text-align: left;
-  }
-  .description {
-       background-color: rgb(78, 186, 241);
-  }
-</style>
-
-<%+footer%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm
deleted file mode 100644 (file)
index bb18d53..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<ul class="cbi-tabmenu">
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript")%>"><%:Hotplug Script%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/mwanconfig")%>"><%:MWAN Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/networkconfig")%>"><%:Network Config%></a></li>
-       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/wirelessconfig")%>"><%:Wireless Config%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/diagnostics")%>"><%:Diagnostics%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/advanced/troubleshooting")%>"><%:Troubleshooting%></a></li>
-</ul>
-
-<style type="text/css">
-  .cbi-section {
-       padding: 20px;
-  }
-</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm b/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm
deleted file mode 100644 (file)
index 5d91c53..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<style type="text/css">
-  table td {   /* cells showing the configuration values */
-       padding: 0px;
-       text-align: center;
-       vertical-align: middle;
-  }
-  table th {   /* column for configuration section name */
-       padding: 0px;
-       text-align: center;
-       vertical-align: middle;
-  }
-  table tbody th {     /* column for configuration section name */
-       padding: 0px;
-       vertical-align: middle;
-  }
-  .cbi-section-node table div {        /* rows */
-       padding-top: 5px;
-  }
-  table.cbi-section-table td.cbi-section-table-cell {  /* sort buttons column */
-       text-align: center;
-  }
-  .cbi-section h3 {
-       color: rgb(85, 85, 85);
-       font-family: Trebuchet MS,Verdana,sans-serif;
-       font-style: italic;
-       font-weight: normal;
-  }
-</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm b/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm
deleted file mode 100644 (file)
index 7cef063..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<script type="text/javascript">//<![CDATA[
-       XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "mwan", "overview", "interface_status")%>', null,
-               function(x, mArray)
-               {
-                       var status = document.getElementById('mwan_status_text');
-                       if (mArray.wans)
-                       {
-                               var temp = '';
-                               for ( var i = 0; i < mArray.wans.length; i++ )
-                               {
-                                       var stat = '';
-                                       var cssc = '';
-                                       switch (mArray.wans[i].status)
-                                       {
-                                               case 'online':
-                                                       stat = '<%:Online (tracking active)%>';
-                                                       cssc = 'wanon';
-                                                       break;
-                                               case 'notMonitored':
-                                                       stat = '<%:Online (tracking off)%>';
-                                                       cssc = 'wanon';
-                                                       break;
-                                               case 'offline':
-                                                       stat = '<%:Offline%>';
-                                                       cssc = 'wanoff';
-                                                       break;
-                                               case 'notEnabled':
-                                                       stat = '<%:Disabled%>';
-                                                       cssc = 'wanoff';
-                                                       break;
-                                       }
-                                       temp += String.format(
-                                               '<span class="%s"><strong>%s (<a href="%q">%s</a>)</strong><br />%s</span>',
-                                               cssc, mArray.wans[i].name, mArray.wans[i].link, mArray.wans[i].ifname, stat
-                                       );
-                               }
-                               status.innerHTML = temp;
-                       }
-                       else
-                       {
-                               status.innerHTML = '<strong><%:No MWAN interfaces found%></strong>';
-                       }
-               }
-       );
-//]]></script>
-
-<fieldset id="interface_field" class="cbi-section">
-       <legend><%:MWAN Interface Live Status%></legend>
-       <div id="mwan_status_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div>
-</fieldset>
-
-<style type="text/css">
-  .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
-       max-width: 1044px;
-  }
-  #mwan_status_text {
-       display: table;
-       font-size: 14px;
-       margin: auto;
-       max-width: 1044px;
-       min-width: 246px;
-       width: 100%;
-  }
-  .wanon {
-       background-color: rgb(144, 240, 144);
-  }
-  .wanoff {
-       background-color: rgb(240, 144, 144);
-  }
-  .wanon, .wanoff {
-       border-radius: 60px;
-       box-shadow: 0px 2px 5px -3px;
-       float: left;
-       margin: 8px 3px 0px 3px;
-       min-height: 30px;
-       min-width: 235px;
-       padding: 5px 10px 8px 10px;
-       text-align: center;
-  }
-</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm b/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm
deleted file mode 100644 (file)
index 6a800c3..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<%+header%>
-
-<ul class="cbi-tabmenu">
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/overview")%>"><%:Interface Status%></a></li>
-       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/overview/overview_detailed")%>"><%:Detailed Status%></a></li>
-</ul>
-
-<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
-<script type="text/javascript">//<![CDATA[
-       XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "mwan", "overview", "detailed_status")%>', null,
-               function(x, mArray)
-               {
-                       var status = document.getElementById('mwan_detail_text');
-                       if (mArray.mwandetail)
-                       {
-                               status.innerHTML = String.format('<pre>%s</pre>', mArray.mwandetail[0]);
-                       }
-                       else
-                       {
-                               status.innerHTML = '<strong><%:No detailed status information available%></strong>';
-                       }
-               }
-       );
-//]]></script>
-
-<div id="mwan_detail_status">
-       <fieldset class="cbi-section">
-               <legend><%:MWAN Detailed Status%></legend>
-               <div id="mwan_detail_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div>
-       </fieldset>
-</div>
-
-<style type="text/css">
-  #mwan_detail_text {
-       padding: 20px;
-       text-align: left;
-  }
-</style>
-
-<%+footer%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm b/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm
deleted file mode 100644 (file)
index 2929a6d..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-<%+header%>
-
-<ul class="cbi-tabmenu">
-       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/overview")%>"><%:Interface Status%></a></li>
-       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/network/mwan/overview/overview_detailed")%>"><%:Detailed Status%></a></li>
-</ul>
-
-<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
-<script type="text/javascript">//<![CDATA[
-       XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "mwan", "overview", "interface_status")%>', null,
-               function(x, mArray)
-               {
-                       var statusDiv = document.getElementById('mwan_status_text');
-                       if (mArray.wans)
-                       {
-                               var interfaceStatus = '';
-                               for ( var i = 0; i < mArray.wans.length; i++ )
-                               {
-                                       var status = '';
-                                       var css = '';
-                                       switch (mArray.wans[i].status)
-                                       {
-                                               case 'online':
-                                                       status = '<%:Online (tracking active)%>';
-                                                       css = 'wanon';
-                                                       break;
-                                               case 'notMonitored':
-                                                       status = '<%:Online (tracking off)%>';
-                                                       css = 'wanon';
-                                                       break;
-                                               case 'offline':
-                                                       status = '<%:Offline%>';
-                                                       css = 'wanoff';
-                                                       break;
-                                               case 'notEnabled':
-                                                       status = '<%:Disabled%>';
-                                                       css = 'wanoff';
-                                                       break;
-                                       }
-                                       interfaceStatus += String.format(
-                                               '<span class="%s"><strong>%s (<a href="%q">%s</a>)</strong><br />%s</span>',
-                                               css, mArray.wans[i].name, mArray.wans[i].link, mArray.wans[i].ifname, status
-                                       );
-                               }
-                               statusDiv.innerHTML = interfaceStatus;
-                       }
-                       else
-                       {
-                               statusDiv.innerHTML = '<strong><%:No MWAN interfaces found%></strong>';
-                       }
-
-                       var logs = document.getElementById('mwan_statuslog_text');
-                       if (mArray.mwanlog)
-                       {
-                               var mwanLog = '<%:Last 50 MWAN systemlog entries. Newest entries sorted at the top :%>';
-                               logs.innerHTML = String.format('<pre>%s<br /><br />%s</pre>', mwanLog, mArray.mwanlog[0]);
-                       }
-                       else
-                       {
-                               logs.innerHTML = '<strong><%:No MWAN systemlog history found%></strong>';
-                       }
-               }
-       );
-//]]></script>
-
-<div id="mwan_interface_status">
-       <fieldset id="interface_field" class="cbi-section">
-               <legend><%:MWAN Interface Live Status%></legend>
-               <div id="mwan_status_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div>
-       </fieldset>
-       <fieldset class="cbi-section">
-               <legend><%:MWAN Interface Systemlog%></legend>
-               <div id="mwan_statuslog_text"><img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /><%:Collecting data...%></div>
-       </fieldset>
-</div>
-
-<style type="text/css">
-  #mwan_status_text {
-       display: table;
-       font-size: 14px;
-       margin: auto;
-       max-width: 1044px;
-       min-width: 246px;
-       width: 100%;
-  }
-  .wanon {
-       background-color: rgb(144, 240, 144);
-  }
-  .wanoff {
-       background-color: rgb(240, 144, 144);
-  }
-  .wanon, .wanoff {
-       border-radius: 60px;
-       box-shadow: 0px 2px 5px -3px;
-       float: left;
-       margin: 8px 3px 0px 3px;
-       min-height: 30px;
-       min-width: 235px;
-       padding: 5px 10px 8px 10px;
-       text-align: center;
-  }
-  #mwan_statuslog_text {
-       padding: 20px;
-       text-align: left;
-  }
-</style>
-
-<%+footer%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/overview_status_interface.htm b/applications/luci-app-mwan3/luasrc/view/mwan/overview_status_interface.htm
new file mode 100644 (file)
index 0000000..49d120c
--- /dev/null
@@ -0,0 +1,75 @@
+<%#
+ Copyright 2014 Aedan Renner <chipdankly@gmail.com>
+ Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+ Licensed to the public under the GNU General Public License v2.
+-%>
+
+<script type="text/javascript">//<![CDATA[
+XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "status", "mwan", "interface_status")%>', null,
+               function(x, status)
+               {
+                       var statusDiv = document.getElementById('mwan_status_text');
+                       if (status.interfaces)
+                       {
+                               var statusview = '';
+                               for ( var iface in status.interfaces)
+                               {
+                                       var state = '';
+                                       var css = ''
+                                       switch (status.interfaces[iface].status)
+                                       {
+                                               case 'online':
+                                                       state = '<%:Online%>';
+                                                       css = 'success';
+                                                       break;
+                                               case 'offline':
+                                                       state = '<%:Offline%>';
+                                                       css = 'danger';
+                                                       break;
+                                               default:
+                                                       state = '<%:Disabled%>';
+                                                       css = 'warning';
+                                                       break;
+                                       }
+                                       statusview += String.format(
+                                               '<div class="alert-message %s">',
+                                               css
+                                       );
+                                       statusview += String.format(
+                                               '<div><strong>Interface: </strong>%s</div>',
+                                               iface
+                                       );
+                                       statusview += String.format(
+                                               '<div><strong>Status: </strong>%s</div>',
+                                               state
+                                       );
+                                       statusview += '</div>'
+                               }
+                               statusDiv.innerHTML = statusview;
+                       }
+                       else
+                       {
+                               statusDiv.innerHTML = '<strong><%:No MWAN interfaces found%></strong>';
+                       }
+               }
+       );
+//]]></script>
+
+<style type="text/css">
+       #mwan_status_text > div {
+               display: inline-block;
+               margin: 1rem;
+               padding: 1rem;
+               width: 10rem;
+               float: left;
+               line-height: 125%;
+       }
+</style>
+
+<fieldset id="interface_field" class="cbi-section">
+       <legend><%:MWAN Interfaces%></legend>
+       <div id="mwan_status_text">
+               <img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
+               <%:Collecting data...%>
+       </div>
+</fieldset>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/status_detail.htm b/applications/luci-app-mwan3/luasrc/view/mwan/status_detail.htm
new file mode 100644 (file)
index 0000000..bcc23be
--- /dev/null
@@ -0,0 +1,40 @@
+<%#
+ Copyright 2014 Aedan Renner <chipdankly@gmail.com>
+ Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+ Licensed to the public under the GNU General Public License v2.
+-%>
+
+<%+header%>
+
+<ul class="cbi-tabmenu">
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/overview")%>"><%:Interface%></a></li>
+       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/detail")%>"><%:Detail%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/diagnostics")%>"><%:Diagnostics%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</ul>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+       XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "status", "mwan", "detailed_status")%>', null,
+               function(x)
+               {
+                       var output = document.getElementById('diag-rc-output');
+                       output.innerHTML = String.format('<pre>%h</pre>', x.responseText);
+               }
+       );
+//]]></script>
+
+<div class="cbi-map">
+       <h2 name="content"><%:MWAN Status - Detail%></h2>
+       <%if not require("luci.sys").init.enabled("mwan3") then%>
+       <div><strong><%:INFO: MWAN not running%></strong></div>
+       <%end%>
+       <fieldset class="cbi-section">
+               <span id="diag-rc-output">
+                       <img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align: middle;" />
+                       <%:Collecting data...%>
+               </span>
+       </fieldset>
+</div>
+
+<%+footer%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm b/applications/luci-app-mwan3/luasrc/view/mwan/status_diagnostics.htm
new file mode 100644 (file)
index 0000000..22f4734
--- /dev/null
@@ -0,0 +1,91 @@
+<%#
+ Copyright 2014 Aedan Renner <chipdankly@gmail.com>
+ Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+ Licensed to the public under the GNU General Public License v2.
+-%>
+
+<%+header%>
+
+<ul class="cbi-tabmenu">
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/overview")%>"><%:Interface%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/detail")%>"><%:Detail%></a></li>
+       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/diagnostics")%>"><%:Diagnostics%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</ul>
+
+<%
+       local uci = require "luci.model.uci"
+
+       local iface = {}
+
+       uci.cursor():foreach("mwan3", "interface",
+               function (section)
+                       table.insert(iface, section[".name"])
+               end
+       )
+%>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+       var stxhr = new XHR();
+
+       function update_status(iface, task)
+       {
+               var output = document.getElementById('diag-rc-output');
+
+               output.innerHTML =
+                       '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align: middle;" />' +
+                       "<%:Waiting for command to complete...%>"
+               ;
+
+               output.parentNode.style.display = 'block';
+               output.style.display = 'inline';
+
+               stxhr.post('<%=url('admin/status/mwan')%>/diagnostics_display' + '/' + iface + '/' + task, { token: '<%=token%>' },
+                       function(x)
+                       {
+                               output.innerHTML = String.format('<pre>%h</pre>', x.responseText);
+                       }
+               );
+       }
+//]]></script>
+
+<form method="post" action="<%=url('admin/network/diagnostics')%>">
+       <div class="cbi-map">
+               <h2 name="content"><%:MWAN Status - Diagnostics%></h2>
+               <%if not require("luci.sys").init.enabled("mwan3") then%>
+               <div><strong><%:INFO: MWAN not running%></strong></div>
+               <%end%>
+               <fieldset class="cbi-section">
+                       <br />
+
+                       <div style="width:30%; float:left">
+                               <label class="cbi-value-title"><%:Interface%></label>
+                               <select name="iface" style="width:auto">
+                                       <% for _, z in ipairs(iface) do -%><option value="<%=z%>"><%=z%></option><%- end %>
+                               </select>
+                       </div>
+
+                       <div style="width:30%; float:left">
+                               <label class="cbi-value-title"><%:Task%></label>
+                               <select name="task" style="width:auto">
+                                       <option value="ping_gateway"><%:Ping default gateway%></option>
+                                       <option value="ping_trackips"><%:Ping tracking IP%></option>
+                                       <option value="check_rules"><%:Check IP rules%></option>
+                                       <option value="check_routes"><%:Check routing table%></option>
+                                       <option value="hotplug_ifup"><%:Hotplug ifup%></option>
+                                       <option value="hotplug_ifdown"><%:Hotplug ifdown%></option>
+                               </select>
+                       </div>
+
+                       <div style="width:30%; float:left">
+                               <input type="button" value="<%:Execute%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.iface.value, this.form.task.value)"/>
+                       </div>
+               </fieldset>
+       </div>
+       <fieldset class="cbi-section" style="display:none">
+               <span id="diag-rc-output"></span>
+       </fieldset>
+</form>
+
+<%+footer%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/status_interface.htm b/applications/luci-app-mwan3/luasrc/view/mwan/status_interface.htm
new file mode 100644 (file)
index 0000000..4518bd6
--- /dev/null
@@ -0,0 +1,21 @@
+<%#
+ Copyright 2014 Aedan Renner <chipdankly@gmail.com>
+ Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+ Licensed to the public under the GNU General Public License v2.
+-%>
+
+<%+header%>
+
+<ul class="cbi-tabmenu">
+       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/overview")%>"><%:Interface%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/detail")%>"><%:Detail%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/diagnostics")%>"><%:Diagnostics%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</ul>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+
+<div class="cbi-map">
+       <%+mwan/overview_status_interface%>
+</div>
+<%+footer%>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm b/applications/luci-app-mwan3/luasrc/view/mwan/status_troubleshooting.htm
new file mode 100644 (file)
index 0000000..f60e0da
--- /dev/null
@@ -0,0 +1,40 @@
+<%#
+ Copyright 2014 Aedan Renner <chipdankly@gmail.com>
+ Copyright 2018 Florian Eckert <fe@dev.tdt.de>
+ Licensed to the public under the GNU General Public License v2.
+-%>
+
+<%+header%>
+
+<ul class="cbi-tabmenu">
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/overview")%>"><%:Interface%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/detail")%>"><%:Detail%></a></li>
+       <li class="cbi-tab-disabled"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/diagnostics")%>"><%:Diagnostics%></a></li>
+       <li class="cbi-tab"><a href="<%=luci.dispatcher.build_url("admin/status/mwan/troubleshooting")%>"><%:Troubleshooting%></a></li>
+</ul>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+       XHR.poll(15, '<%=luci.dispatcher.build_url("admin", "status", "mwan", "troubleshooting_display")%>', null,
+               function(x)
+               {
+                       var output = document.getElementById('diag-rc-output');
+                       output.innerHTML = String.format('<pre>%h</pre>', x.responseText);
+               }
+       );
+//]]></script>
+
+<div class="cbi-map">
+       <h2 name="content"><%:MWAN Status - Troubleshooting%></h2>
+       <%if not require("luci.sys").init.enabled("mwan3") then%>
+       <div><strong><%:INFO: MWAN not running%></strong></div>
+       <%end%>
+       <fieldset class="cbi-section">
+               <span id="diag-rc-output">
+                       <img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align: middle;" />
+                       <%:Collecting data...%>
+               </span>
+       </fieldset>
+</div>
+
+<%+footer%>
index ac5b4eeccda9428cd38315b000bc8b644d2e39d0..cfbf5ac464dc3de19edc046ebe2eb6b755cf0aa0 100644 (file)
@@ -34,47 +34,32 @@ msgstr ""
 "利用可能な値: 1-100。上記の追跡 IP の合計個数のうち、Up 状態と判定するために"
 "に必要な、レスポンスが返された追跡 IP アドレスの個数です。"
 
-msgid "Acceptable values: 1-256. Defaults to 1 if not set"
-msgstr "利用可能な値: 1-256。空欄の場合のデフォルトは1です。"
-
 msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
 msgstr "利用可能な値: 1-1000。空欄の場合のデフォルトは1です。"
 
-msgid "Advanced"
-msgstr "詳細設定"
+msgid "Acceptable values: 1-256. Defaults to 1 if not set"
+msgstr "利用可能な値: 1-256。空欄の場合のデフォルトは1です。"
 
 msgid "Check IP rules"
 msgstr "IP ルールのチェック"
 
+msgid "Check link quality"
+msgstr ""
+
 msgid "Check routing table"
 msgstr "ルーティング テーブルのチェック"
 
 msgid "Collecting data..."
 msgstr "データ収集中です..."
 
-msgid "Configuration"
-msgstr "設定"
-
-msgid "Currently Configured Interfaces"
-msgstr "設定済みインターフェース"
-
-msgid "Currently Configured Members"
-msgstr "設定済みメンバー"
-
-msgid "Currently Configured Policies"
-msgstr "設定済みポリシー"
-
 msgid "Destination address"
 msgstr "宛先アドレス"
 
 msgid "Destination port"
 msgstr "宛先ポート"
 
-msgid "Detailed Status"
-msgstr "詳細ステータス"
-
-msgid "Diagnostic Results"
-msgstr "診断結果"
+msgid "Detail"
+msgstr ""
 
 msgid "Diagnostics"
 msgstr "診断機能"
@@ -94,11 +79,8 @@ msgstr "有効"
 msgid "Enter value in hex, starting with <code>0x</code>"
 msgstr "<code>0x</code> で始まる16進数の値を入力してください。"
 
-msgid "Error collecting troubleshooting information"
-msgstr "トラブルシューティング情報の収集エラー"
-
-msgid "Errors"
-msgstr "エラー"
+msgid "Execute"
+msgstr ""
 
 msgid "Expect interface state on up event"
 msgstr "Up イベント時に予想されるインターフェースの状態です。"
@@ -118,18 +100,15 @@ msgstr ""
 msgid "Globals"
 msgstr "全般"
 
-msgid "Globals mwan3 options"
-msgstr "MWAN3 全般オプション"
-
-msgid "Hotplug Script"
-msgstr "ホットプラグ スクリプト"
-
 msgid "Hotplug ifdown"
 msgstr "ホットプラグ ifdown"
 
 msgid "Hotplug ifup"
 msgstr "ホットプラグ ifup"
 
+msgid "INFO: MWAN not running"
+msgstr ""
+
 msgid "IPset"
 msgstr "IPset"
 
@@ -145,9 +124,6 @@ msgstr "初期状態"
 msgid "Interface"
 msgstr "インターフェース"
 
-msgid "Interface Status"
-msgstr "インターフェース ステータス"
-
 msgid "Interface down"
 msgstr "インターフェース Down"
 
@@ -171,9 +147,6 @@ msgstr ""
 msgid "Keep ping failure interval during failure state"
 msgstr ""
 
-msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :"
-msgstr "直近の MWAN システムログ(50行)です。一番上が最新の行です:"
-
 msgid "Last resort"
 msgstr "最終手段"
 
@@ -186,63 +159,69 @@ msgstr "読込中"
 msgid "Local source interface"
 msgstr ""
 
-msgid "MWAN Config"
-msgstr "MWAN 設定"
+msgid "MWAN - Globals"
+msgstr ""
 
-msgid "MWAN Detailed Status"
-msgstr "MWAN 詳細ステータス"
+msgid "MWAN - Interfaces"
+msgstr ""
 
-msgid "MWAN Interface Configuration"
-msgstr "MWAN インターフェース設定"
+msgid "MWAN - Members"
+msgstr ""
 
-msgid "MWAN Interface Configuration - %s"
-msgstr "MWAN インターフェース設定 - %s"
+msgid "MWAN - Notification"
+msgstr ""
 
-msgid "MWAN Interface Diagnostics"
-msgstr "MWAN インターフェース診断"
+msgid "MWAN - Policies"
+msgstr ""
 
-msgid "MWAN Interface Live Status"
-msgstr "MWAN インターフェース Live ステータス"
+msgid "MWAN - Rules"
+msgstr ""
 
-msgid "MWAN Interface Systemlog"
-msgstr "MWAN インターフェース システムログ"
+msgid "MWAN Interface Configuration - %s"
+msgstr "MWAN インターフェース設定 - %s"
 
-msgid "MWAN Member Configuration"
-msgstr "MWAN メンバー設定"
+msgid "MWAN Interfaces"
+msgstr ""
 
 msgid "MWAN Member Configuration - %s"
 msgstr "MWAN メンバー設定 - %s"
 
-msgid "MWAN Policy Configuration"
-msgstr "MWAN ポリシー設定"
-
 msgid "MWAN Policy Configuration - %s"
 msgstr "MWAN ポリシー設定 - %s"
 
-msgid "MWAN Rule Configuration"
-msgstr "MWAN ルール設定"
-
 msgid "MWAN Rule Configuration - %s"
 msgstr "MWAN ルール設定 - %s"
 
-msgid "MWAN Service Control"
-msgstr "MWAN サービス コントロール"
+msgid "MWAN Status - Detail"
+msgstr ""
+
+msgid "MWAN Status - Diagnostics"
+msgstr ""
+
+msgid "MWAN Status - Troubleshooting"
+msgstr ""
 
 msgid ""
-"MWAN supports up to 250 physical and/or logical interfaces<br />MWAN "
+"MWAN supports up to 252 physical and/or logical interfaces<br />MWAN "
 "requires that all interfaces have a unique metric configured in /etc/config/"
 "network<br />Names must match the interface name found in /etc/config/"
-"network (see advanced tab)<br />Names may contain characters A-Z, a-z, 0-9, "
-"_ and no spaces<br />Interfaces may not share the same name as configured "
-"members, policies or rules"
+"network<br />Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br /"
+">Interfaces may not share the same name as configured members, policies or "
+"rules"
 msgstr ""
-"MWAN は、250個までの物理または論理、あるいは両方のインターフェースをサポート"
+"MWAN は、252個までの物理または論理、あるいは両方のインターフェースをサポート"
 "します。<br />MWAN は、全てのインターフェースが /etc/config/network で設定さ"
 "れるユニークなメトリックを持つことを必要とします。<br />下記 \"インターフェー"
 "ス\" の名前は、 /etc/config/network に存在するインターフェース名と同じでなけ"
-"ればなりません(詳細設定タブを確認)。<br />名前は A-Z, a-z, 0-9, _ を含むこ"
-"とができますが、スペースは使用できません。<br />インターフェースには、設定済"
-"みのメンバーやポリシー、ルールと同じ名前を使用することはできません。"
+"ればなりません。<br />名前は A-Z, a-z, 0-9, _ を含むことができますが、スペー"
+"スは使用できません。<br />インターフェースには、設定済みのメンバーやポリ"
+"シー、ルールと同じ名前を使用することはできません。"
+
+msgid "Max packet latency [ms]"
+msgstr ""
+
+msgid "Max packet loss [%]"
+msgstr ""
 
 msgid ""
 "May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
@@ -276,6 +255,12 @@ msgstr "アサイン済みメンバー"
 msgid "Metric"
 msgstr "メトリック"
 
+msgid "Min packet latency [ms]"
+msgstr ""
+
+msgid "Min packet loss [%]"
+msgstr ""
+
 msgid ""
 "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
 "youtube.com/youtube\")"
@@ -283,26 +268,14 @@ msgstr ""
 "IPset ルールの名前です。このルールは、 /etc/dnsmasq.conf で必要です。(例: "
 "\"ipset=/youtube.com/youtube\")"
 
-msgid "Network Config"
-msgstr "ネットワーク設定"
-
 msgid "No"
 msgstr "いいえ"
 
 msgid "No MWAN interfaces found"
 msgstr "MWAN インターフェースが見つかりません"
 
-msgid "No MWAN systemlog history found"
-msgstr "MWAN システムログの履歴が見つかりません"
-
-msgid "No detailed status information available"
-msgstr "詳細ステータス情報は利用できません"
-
-msgid "No diagnostic results returned"
-msgstr "診断結果がありません"
-
-msgid "No protocol specified"
-msgstr "プロトコルが設定されていません"
+msgid "Notification"
+msgstr ""
 
 msgid "Offline"
 msgstr "オフライン"
@@ -310,15 +283,6 @@ msgstr "オフライン"
 msgid "Online"
 msgstr "オンライン"
 
-msgid "Online (tracking active)"
-msgstr "オンライン(追跡実行中)"
-
-msgid "Online (tracking off)"
-msgstr "オンライン(追跡オフ)"
-
-msgid "Overview"
-msgstr "概要"
-
 msgid "Ping count"
 msgstr "Ping 回数"
 
@@ -349,11 +313,11 @@ msgstr "ポリシー"
 msgid ""
 "Policies are profiles grouping one or more members controlling how MWAN "
 "distributes traffic<br />Member interfaces with lower metrics are used "
-"first. Interfaces with the same metric load-balance<br />Load-balanced "
-"member interfaces distribute more traffic out those with higher weights<br /"
-">Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
-"15 characters or less<br />Policies may not share the same name as "
-"configured interfaces, members or rules"
+"first<br />Member interfaces with the same metric will be load-balanced<br /"
+">Load-balanced member interfaces distribute more traffic out those with "
+"higher weights<br />Names may contain characters A-Z, a-z, 0-9, _ and no "
+"spaces<br />Names must be 15 characters or less<br />Policies may not share "
+"the same name as configured interfaces, members or rules"
 msgstr ""
 "ポリシーは、MWANがどのようにトラフィックの分配を行うかを制御する、1つ以上のメ"
 "ンバーをグループ化するプロファイルです。<br />最小のメトリックを持つメンバー "
@@ -376,9 +340,6 @@ msgstr "プロトコル"
 msgid "Recovery interval"
 msgstr "障害復旧 インターバル"
 
-msgid "Restart MWAN"
-msgstr "MWAN の再起動"
-
 msgid "Rule"
 msgstr "ルール"
 
@@ -386,25 +347,16 @@ msgid "Rules"
 msgstr "ルール"
 
 msgid ""
-"Rules specify which traffic will use a particular MWAN policy based on IP "
-"address, port or protocol<br />Rules are matched from top to bottom. Rules "
-"below a matching rule are ignored. Traffic not matching any rule is routed "
-"using the main routing table<br />Traffic destined for known (other than "
-"default) networks is handled by the main routing table. Traffic matching a "
-"rule, but all WAN interfaces for that policy are down will be blackholed<br /"
-">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Rules may "
-"not share the same name as configured interfaces, members or policies"
-msgstr ""
-"ルールは IP アドレスやポート、プロトコルを基に、トラフィックがどの MWAN ポリ"
-"シーを使用するかを設定します。<br />ルールは上から下へマッチングが行われ、合"
-"致したルールより下のルールは無視されます。全てのルールに合致しないトラフィッ"
-"クは、メインのルーティング テーブルを使用してルートが決定されます。<br />既知"
-"(デフォルト以外)のネットワークへのトラフィックは、メインのルーティング テー"
-"ブルによって制御されます。ルールに合致したトラフィックでも、当該ポリシーの全 "
-"WAN インターフェースが Down 状態の場合は blackhole 状態となります。<br />名前"
-"は A-Z, a-z, 0-9, _ を含むことができますが、スペースは使用できません。<br />"
-"ルールは、設定済みのインターフェースやメンバー、ポリシーと同じ名前を使用する"
-"ことはできません。"
+"Rules specify which traffic will use a particular MWAN policy<br />Rules are "
+"based on IP address, port or protocol<br />Rules are matched from top to "
+"bottom<br />Rules below a matching rule are ignored<br />Traffic not "
+"matching any rule is routed using the main routing table<br />Traffic "
+"destined for known (other than default) networks is handled by the main "
+"routing table<br />Traffic matching a rule, but all WAN interfaces for that "
+"policy are down will be blackholed<br />Names may contain characters A-Z, a-"
+"z, 0-9, _ and no spaces<br />Rules may not share the same name as configured "
+"interfaces, members or policies"
+msgstr ""
 
 msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
 msgstr "秒。利用可能な値: 1-1000000。空欄の場合のデフォルト値は600です。"
@@ -415,23 +367,20 @@ msgstr "送信元アドレス"
 msgid "Source port"
 msgstr "送信元ポート"
 
-msgid "Start MWAN"
-msgstr "MWAN の起動"
-
 msgid "Sticky"
 msgstr "Sticky"
 
 msgid "Sticky timeout"
 msgstr "Sticky タイムアウト"
 
-msgid "Stop MWAN"
-msgstr "MWAN の停止"
-
 msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
 msgstr "CIDR 表記のサポート(例: \"192.168.100.0/24\")"
 
-msgid "There are currently %d of 250 supported interfaces configured"
-msgstr "現在、250個中 %d 個のサポートされたインターフェースが設定済みです。"
+msgid "Task"
+msgstr ""
+
+msgid "There are currently %d of %d supported interfaces configured"
+msgstr "現在、%d 個中 %d 個のサポートされたインターフェースが設定済みです。"
 
 msgid ""
 "This displays the metric assigned to this interface in /etc/config/network"
@@ -455,36 +404,14 @@ msgid ""
 "will<br />be executed with each netifd hotplug interface event<br />on "
 "interfaces for which mwan3 is enabled.<br /><br />There are three main "
 "environment variables that are passed to this script.<br /><br />$ACTION "
-"Either \"ifup\" or \"ifdown\"<br />$INTERFACE Name of the interface which "
-"went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE Physical device name "
-"which interface went up or down (e.g. \"eth0\" or \"wwan0\")<br /><br />"
-msgstr ""
-"このセクションでは、 \"/etc/mwan3.user\" の内容を変更することができます。"
-"<br />このファイルは、 sysupgrade 時に保持されます。<br /><br />注意: <br />"
-"このファイルは、シェルスクリプトとして解釈されます。<br />スクリプトの1行目"
-"は、&#34;#!bin/sh&#34; である必要があります(クォーテーション不要)。<br /># "
-"で始まる行はコメントであり、実行されません。<br />mwan3 のカスタム動作をここ"
-"に入力してください。これらは、 mwan3 が有効なインターフェースの<br />netifd "
-"ホットプラグ インターフェース イベント毎に実行されます。<br /><br />主に3つの"
-"環境変数が利用可能です。<br /><br />$ACTION - \"ifup\" および \"ifdown\"<br /"
-">$INTERFACE - Up または Down が行われたインターフェース名(例: \"wan\" や "
-"\"wwan\")<br />$DEVICE - Up または Down が行われた物理デバイス名(例: "
-"\"eth0\" や \"wwan0\")<br /><br />"
-
-msgid "This section allows you to modify the contents of /etc/config/mwan3"
-msgstr ""
-"このセクションでは、 /etc/config/mwan3 の内容を変更することができます。"
-
-msgid "This section allows you to modify the contents of /etc/config/network"
-msgstr ""
-"このセクションでは、 /etc/config/network の内容を変更することができます。"
-
-msgid "This section allows you to modify the contents of /etc/config/wireless"
+"<br />* \"ifup\" Is called by netifd and mwan3track <br />* \"ifdown\" Is "
+"called by netifd and mwan3track <br />* \"connected\" Is only called by "
+"mwan3track if tracking was successful <br />* \"disconnected\" Is only "
+"called by mwan3track if tracking has failed <br />$INTERFACE Name of the "
+"interface which went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE "
+"Physical device name which interface went up or down (e.g. \"eth0\" or "
+"\"wwan0\")<br /><br />"
 msgstr ""
-"このセクションでは、 /etc/config/wireless の内容を変更することができます。"
-
-msgid "Tracking IP"
-msgstr "追跡 IP"
 
 msgid "Tracking hostname or IP address"
 msgstr "追跡ホスト名または IP アドレス"
@@ -495,9 +422,6 @@ msgstr "追跡方式"
 msgid "Tracking reliability"
 msgstr "追跡の信頼性"
 
-msgid "Traffic Rules"
-msgstr "トラフィック ルール"
-
 msgid ""
 "Traffic from the same source IP address that previously matched this rule "
 "within the sticky timeout period will use the same WAN interface"
@@ -509,9 +433,6 @@ msgstr ""
 msgid "Troubleshooting"
 msgstr "トラブルシューティング"
 
-msgid "Troubleshooting Data"
-msgstr "トラブルシューティング データ"
-
 msgid ""
 "Use the IP address of this interface as source IP address for traffic "
 "initiated by the router itself"
@@ -519,108 +440,37 @@ msgstr ""
 "ルーター自身によって発生するトラフィックのアクセス元 IP アドレスとして、この"
 "インターフェースの IP アドレスが使用されます。"
 
-msgid "View the contents of /etc/protocols for protocol descriptions"
-msgstr "プロトコルの説明については、 /etc/protocols の内容を確認してください。"
-
-msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
+msgid "View the content of /etc/protocols for protocol description"
 msgstr ""
-"警告: %d 個のインターフェースが、最大個数の 250個 を超えて設定されています!"
 
-msgid ""
-"WARNING: Some interfaces are configured incorrectly or not at all in /etc/"
-"config/network!"
+msgid "WARNING: %d interfaces are configured exceeding the maximum of %d!"
 msgstr ""
-"警告: 設定を誤っているか、もしくは完全に設定されていないインターフェースがあ"
-"ります!"
+"警告: %d 個のインターフェースが、最大個数の %d 個 を超えて設定されています!"
 
-msgid ""
-"WARNING: Some interfaces have a higher reliability requirement than there "
-"are tracking IP addresses!"
+msgid "WARNING: Interface %s are not found in /etc/config/network"
 msgstr ""
-"警告: 追跡 IP アドレスの個数より大きい追跡信頼性の値が設定されたインター"
-"フェースがあります!"
 
-msgid ""
-"WARNING: Some interfaces have duplicate metrics configured in /etc/config/"
-"network!"
+msgid "WARNING: Interface %s has a duplicate metric %s configured"
 msgstr ""
-"警告: /etc/config/network で、重複するメトリックを設定されているインター"
-"フェースがあります!"
 
 msgid ""
-"WARNING: Some interfaces have no default route in the main routing table!"
+"WARNING: Interface %s has a higher reliability requirement than tracking "
+"hosts (%d)"
 msgstr ""
-"警告: メインのルーティング テーブルで、デフォルト ルートを設定されていないイ"
-"ンターフェースがあります!"
 
-msgid ""
-"WARNING: Some interfaces have no metric configured in /etc/config/network!"
+msgid "WARNING: Interface %s has no default route in the main routing table"
 msgstr ""
-"警告: /etc/config/network で、メトリックを設定されていないインターフェースが"
-"あります!"
 
-msgid ""
-"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgid "WARNING: Policy %s has exceeding the maximum name of 15 characters"
 msgstr ""
-"警告: 最大文字数の 15 文字を超える名前が設定されているポリシーがあります!"
 
 msgid ""
-"WARNING: Some rules have a port configured with no or improper protocol "
-"specified! Please configure a specific protocol!"
+"WARNING: Rule %s have a port configured with no or improper protocol "
+"specified!"
 msgstr ""
-"警告: 不適切なプロトコルが指定されている、または何も指定されていないポートを"
-"設定されたルールがあります!プロトコルを指定し直してください!"
 
-msgid ""
-"WARNING: This and other interfaces have duplicate metrics configured in /etc/"
-"config/network!"
+msgid "Waiting for command to complete..."
 msgstr ""
-"警告: これと他のインターフェースで重複するメトリックが /etc/config/network に"
-"設定されています!"
-
-msgid ""
-"WARNING: This interface has a higher reliability requirement than there are "
-"tracking IP addresses!"
-msgstr ""
-"警告: このインターフェースは、追跡 IP アドレスの個数より大きい追跡信頼性の値"
-"を設定されています!"
-
-msgid "WARNING: This interface has no default route in the main routing table!"
-msgstr ""
-"警告: このインターフェースは、メインのルーティング テーブルにデフォルト ルー"
-"トが設定されていません!"
-
-msgid ""
-"WARNING: This interface has no metric configured in /etc/config/network!"
-msgstr ""
-"警告: このインターフェースは、 /etc/config/network でメトリックが設定されてい"
-"ません!"
-
-msgid ""
-"WARNING: This interface is configured incorrectly or not at all in /etc/"
-"config/network!"
-msgstr ""
-"警告: このインターフェースは /etc/config/network で設定が誤っているか、もしく"
-"は完全に設定されていません!"
-
-msgid ""
-"WARNING: This policy's name is %d characters exceeding the maximum of 15!"
-msgstr ""
-"警告: このポリシーの名前は、最大文字数 15 文字を超える %d 文字が設定されてい"
-"ます!"
-
-msgid ""
-"WARNING: This rule is incorrectly configured with no or improper protocol "
-"specified! Please configure a specific protocol!"
-msgstr ""
-"警告: このルールは不適切なプロトコルが指定されているか、または何も指定されて"
-"いません!プロトコルを指定し直してください!"
-
-msgid "Waiting for MWAN to %s..."
-msgstr "MWAN の %s を待っています..."
-
-msgid "Waiting for diagnostic results..."
-msgstr "診断結果を待っています..."
 
 msgid "Weight"
 msgstr "ウエイト"
@@ -631,9 +481,6 @@ msgstr ""
 "ポリシーの全メンバーがオフラインの場合、合致したトラフィックに対してこのふる"
 "まいが使用されます。"
 
-msgid "Wireless Config"
-msgstr "無線設定"
-
 msgid "Yes"
 msgstr "はい"
 
@@ -655,14 +502,291 @@ msgstr "ifup"
 msgid "never"
 msgstr "never"
 
-msgid "restart"
-msgstr "再起動"
+msgid "unreachable (reject)"
+msgstr "unreachable (reject)"
+
+#~ msgid "Online (tracking active)"
+#~ msgstr "オンライン(追跡実行中)"
 
-msgid "start"
-msgstr "起動"
+#~ msgid "MWAN Interface Live Status"
+#~ msgstr "MWAN インターフェース Live ステータス"
 
-msgid "stop"
-msgstr "停止"
+#~ msgid "Online (tracking off)"
+#~ msgstr "オンライン(追跡オフ)"
 
-msgid "unreachable (reject)"
-msgstr "unreachable (reject)"
+#~ msgid ""
+#~ "This section allows you to modify the content of \"/etc/mwan3.user\".<br /"
+#~ ">The file is also preserved during sysupgrade.<br /><br />Notes:<br /"
+#~ ">This file is interpreted as a shell script.<br />The first line of the "
+#~ "script must be &#34;#!/bin/sh&#34; without quotes.<br />Lines beginning "
+#~ "with # are comments and are not executed.<br />Put your custom mwan3 "
+#~ "action here, they will<br />be executed with each netifd hotplug "
+#~ "interface event<br />on interfaces for which mwan3 is enabled.<br /><br /"
+#~ ">There are three main environment variables that are passed to this "
+#~ "script.<br /><br />$ACTION Either \"ifup\" or \"ifdown\"<br />$INTERFACE "
+#~ "Name of the interface which went up or down (e.g. \"wan\" or \"wwan"
+#~ "\")<br />$DEVICE Physical device name which interface went up or down (e."
+#~ "g. \"eth0\" or \"wwan0\")<br /><br />"
+#~ msgstr ""
+#~ "このセクションでは、 \"/etc/mwan3.user\" の内容を変更することができます。"
+#~ "<br />このファイルは、 sysupgrade 時に保持されます。<br /><br />注意: "
+#~ "<br />このファイルは、シェルスクリプトとして解釈されます。<br />スクリプト"
+#~ "の1行目は、&#34;#!bin/sh&#34; である必要があります(クォーテーション不"
+#~ "要)。<br /># で始まる行はコメントであり、実行されません。<br />mwan3 のカ"
+#~ "スタム動作をここに入力してください。これらは、 mwan3 が有効なインター"
+#~ "フェースの<br />netifd ホットプラグ インターフェース イベント毎に実行され"
+#~ "ます。<br /><br />主に3つの環境変数が利用可能です。<br /><br />$ACTION - "
+#~ "\"ifup\" および \"ifdown\"<br />$INTERFACE - Up または Down が行われたイン"
+#~ "ターフェース名(例: \"wan\" や \"wwan\")<br />$DEVICE - Up または Down が"
+#~ "行われた物理デバイス名(例: \"eth0\" や \"wwan0\")<br /><br />"
+
+#~ msgid "Currently Configured Interfaces"
+#~ msgstr "設定済みインターフェース"
+
+#~ msgid "Currently Configured Members"
+#~ msgstr "設定済みメンバー"
+
+#~ msgid "Currently Configured Policies"
+#~ msgstr "設定済みポリシー"
+
+#~ msgid "Detailed Status"
+#~ msgstr "詳細ステータス"
+
+#~ msgid "Diagnostic Results"
+#~ msgstr "診断結果"
+
+#~ msgid "Error collecting troubleshooting information"
+#~ msgstr "トラブルシューティング情報の収集エラー"
+
+#~ msgid "Errors"
+#~ msgstr "エラー"
+
+#~ msgid "Globals mwan3 options"
+#~ msgstr "MWAN3 全般オプション"
+
+#~ msgid "Interface Status"
+#~ msgstr "インターフェース ステータス"
+
+#~ msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :"
+#~ msgstr "直近の MWAN システムログ(50行)です。一番上が最新の行です:"
+
+#~ msgid "MWAN Detailed Status"
+#~ msgstr "MWAN 詳細ステータス"
+
+#~ msgid "MWAN Interface Configuration"
+#~ msgstr "MWAN インターフェース設定"
+
+#~ msgid "MWAN Interface Diagnostics"
+#~ msgstr "MWAN インターフェース診断"
+
+#~ msgid "MWAN Interface Systemlog"
+#~ msgstr "MWAN インターフェース システムログ"
+
+#~ msgid "MWAN Member Configuration"
+#~ msgstr "MWAN メンバー設定"
+
+#~ msgid "MWAN Policy Configuration"
+#~ msgstr "MWAN ポリシー設定"
+
+#~ msgid "MWAN Rule Configuration"
+#~ msgstr "MWAN ルール設定"
+
+#~ msgid "MWAN Service Control"
+#~ msgstr "MWAN サービス コントロール"
+
+#~ msgid "No MWAN systemlog history found"
+#~ msgstr "MWAN システムログの履歴が見つかりません"
+
+#~ msgid "No detailed status information available"
+#~ msgstr "詳細ステータス情報は利用できません"
+
+#~ msgid "No diagnostic results returned"
+#~ msgstr "診断結果がありません"
+
+#~ msgid "No protocol specified"
+#~ msgstr "プロトコルが設定されていません"
+
+#~ msgid "Restart MWAN"
+#~ msgstr "MWAN の再起動"
+
+#~ msgid ""
+#~ "Rules specify which traffic will use a particular MWAN policy based on IP "
+#~ "address, port or protocol<br />Rules are matched from top to bottom. "
+#~ "Rules below a matching rule are ignored. Traffic not matching any rule is "
+#~ "routed using the main routing table<br />Traffic destined for known "
+#~ "(other than default) networks is handled by the main routing table. "
+#~ "Traffic matching a rule, but all WAN interfaces for that policy are down "
+#~ "will be blackholed<br />Names may contain characters A-Z, a-z, 0-9, _ and "
+#~ "no spaces<br />Rules may not share the same name as configured "
+#~ "interfaces, members or policies"
+#~ msgstr ""
+#~ "ルールは IP アドレスやポート、プロトコルを基に、トラフィックがどの MWAN ポ"
+#~ "リシーを使用するかを設定します。<br />ルールは上から下へマッチングが行わ"
+#~ "れ、合致したルールより下のルールは無視されます。全てのルールに合致しないト"
+#~ "ラフィックは、メインのルーティング テーブルを使用してルートが決定されま"
+#~ "す。<br />既知(デフォルト以外)のネットワークへのトラフィックは、メインの"
+#~ "ルーティング テーブルによって制御されます。ルールに合致したトラフィックで"
+#~ "も、当該ポリシーの全 WAN インターフェースが Down 状態の場合は blackhole 状"
+#~ "態となります。<br />名前は A-Z, a-z, 0-9, _ を含むことができますが、スペー"
+#~ "スは使用できません。<br />ルールは、設定済みのインターフェースやメンバー、"
+#~ "ポリシーと同じ名前を使用することはできません。"
+
+#~ msgid "Start MWAN"
+#~ msgstr "MWAN の起動"
+
+#~ msgid "Stop MWAN"
+#~ msgstr "MWAN の停止"
+
+#~ msgid "Tracking IP"
+#~ msgstr "追跡 IP"
+
+#~ msgid "Traffic Rules"
+#~ msgstr "トラフィック ルール"
+
+#~ msgid "Troubleshooting Data"
+#~ msgstr "トラブルシューティング データ"
+
+#~ msgid "View the contents of /etc/protocols for protocol descriptions"
+#~ msgstr ""
+#~ "プロトコルの説明については、 /etc/protocols の内容を確認してください。"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces are configured incorrectly or not at all in /etc/"
+#~ "config/network!"
+#~ msgstr ""
+#~ "警告: 設定を誤っているか、もしくは完全に設定されていないインターフェースが"
+#~ "あります!"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces have a higher reliability requirement than there "
+#~ "are tracking IP addresses!"
+#~ msgstr ""
+#~ "警告: 追跡 IP アドレスの個数より大きい追跡信頼性の値が設定されたインター"
+#~ "フェースがあります!"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces have duplicate metrics configured in /etc/config/"
+#~ "network!"
+#~ msgstr ""
+#~ "警告: /etc/config/network で、重複するメトリックを設定されているインター"
+#~ "フェースがあります!"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces have no default route in the main routing table!"
+#~ msgstr ""
+#~ "警告: メインのルーティング テーブルで、デフォルト ルートを設定されていない"
+#~ "インターフェースがあります!"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces have no metric configured in /etc/config/network!"
+#~ msgstr ""
+#~ "警告: /etc/config/network で、メトリックを設定されていないインターフェース"
+#~ "があります!"
+
+#~ msgid ""
+#~ "WARNING: Some policies have names exceeding the maximum of 15 characters!"
+#~ msgstr ""
+#~ "警告: 最大文字数の 15 文字を超える名前が設定されているポリシーがあります!"
+
+#~ msgid ""
+#~ "WARNING: Some rules have a port configured with no or improper protocol "
+#~ "specified! Please configure a specific protocol!"
+#~ msgstr ""
+#~ "警告: 不適切なプロトコルが指定されている、または何も指定されていないポート"
+#~ "を設定されたルールがあります!プロトコルを指定し直してください!"
+
+#~ msgid ""
+#~ "WARNING: This and other interfaces have duplicate metrics configured in /"
+#~ "etc/config/network!"
+#~ msgstr ""
+#~ "警告: これと他のインターフェースで重複するメトリックが /etc/config/"
+#~ "network に設定されています!"
+
+#~ msgid ""
+#~ "WARNING: This interface has a higher reliability requirement than there "
+#~ "are tracking IP addresses!"
+#~ msgstr ""
+#~ "警告: このインターフェースは、追跡 IP アドレスの個数より大きい追跡信頼性の"
+#~ "値を設定されています!"
+
+#~ msgid ""
+#~ "WARNING: This interface has no default route in the main routing table!"
+#~ msgstr ""
+#~ "警告: このインターフェースは、メインのルーティング テーブルにデフォルト "
+#~ "ルートが設定されていません!"
+
+#~ msgid ""
+#~ "WARNING: This interface has no metric configured in /etc/config/network!"
+#~ msgstr ""
+#~ "警告: このインターフェースは、 /etc/config/network でメトリックが設定され"
+#~ "ていません!"
+
+#~ msgid ""
+#~ "WARNING: This interface is configured incorrectly or not at all in /etc/"
+#~ "config/network!"
+#~ msgstr ""
+#~ "警告: このインターフェースは /etc/config/network で設定が誤っているか、も"
+#~ "しくは完全に設定されていません!"
+
+#~ msgid ""
+#~ "WARNING: This policy's name is %d characters exceeding the maximum of 15!"
+#~ msgstr ""
+#~ "警告: このポリシーの名前は、最大文字数 15 文字を超える %d 文字が設定されて"
+#~ "います!"
+
+#~ msgid ""
+#~ "WARNING: This rule is incorrectly configured with no or improper protocol "
+#~ "specified! Please configure a specific protocol!"
+#~ msgstr ""
+#~ "警告: このルールは不適切なプロトコルが指定されているか、または何も指定され"
+#~ "ていません!プロトコルを指定し直してください!"
+
+#~ msgid "Waiting for MWAN to %s..."
+#~ msgstr "MWAN の %s を待っています..."
+
+#~ msgid "Waiting for diagnostic results..."
+#~ msgstr "診断結果を待っています..."
+
+#~ msgid "restart"
+#~ msgstr "再起動"
+
+#~ msgid "start"
+#~ msgstr "起動"
+
+#~ msgid "stop"
+#~ msgstr "停止"
+
+#~ msgid "Advanced"
+#~ msgstr "詳細設定"
+
+#~ msgid "Configuration"
+#~ msgstr "設定"
+
+#~ msgid "Hotplug Script"
+#~ msgstr "ホットプラグ スクリプト"
+
+#~ msgid "MWAN Config"
+#~ msgstr "MWAN 設定"
+
+#~ msgid "Network Config"
+#~ msgstr "ネットワーク設定"
+
+#~ msgid "Overview"
+#~ msgstr "概要"
+
+#~ msgid "This section allows you to modify the contents of /etc/config/mwan3"
+#~ msgstr ""
+#~ "このセクションでは、 /etc/config/mwan3 の内容を変更することができます。"
+
+#~ msgid ""
+#~ "This section allows you to modify the contents of /etc/config/network"
+#~ msgstr ""
+#~ "このセクションでは、 /etc/config/network の内容を変更することができます。"
+
+#~ msgid ""
+#~ "This section allows you to modify the contents of /etc/config/wireless"
+#~ msgstr ""
+#~ "このセクションでは、 /etc/config/wireless の内容を変更することができます。"
+
+#~ msgid "Wireless Config"
+#~ msgstr "無線設定"
diff --git a/applications/luci-app-mwan3/po/ru/mwan3.po b/applications/luci-app-mwan3/po/ru/mwan3.po
new file mode 100644 (file)
index 0000000..140c537
--- /dev/null
@@ -0,0 +1,568 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: mwan3\n"
+"POT-Creation-Date: 2017-09-14 16:00+0300\n"
+"PO-Revision-Date: 2018-01-19 20:57+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"
+
+msgid "%d hour"
+msgstr "%d час"
+
+msgid "%d minute"
+msgstr "%d минута"
+
+msgid "%d minutes"
+msgstr "%d минут"
+
+msgid "%d second"
+msgstr "%d секунда"
+
+msgid "%d seconds"
+msgstr "%d секунд"
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+"Допустимые значения: 1-100. Установите количество ответов IP-адресов. <br /"
+">Сколько раз они должны ответить, чтобы соединение было признано активным."
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr "Допустимые значения: 1-1000. По умолчанию 1, если значение не задано."
+
+msgid "Acceptable values: 1-256. Defaults to 1 if not set"
+msgstr "Допустимые значения: 1-256 По умолчанию 1, если значение не задано."
+
+msgid "Check IP rules"
+msgstr "Проверить правила IP"
+
+msgid "Check link quality"
+msgstr ""
+
+msgid "Check routing table"
+msgstr "Проверить таблицу маршрутизации"
+
+msgid "Collecting data..."
+msgstr "Сбор данных..."
+
+msgid "Destination address"
+msgstr "Адрес назначения"
+
+msgid "Destination port"
+msgstr "Порт назначения"
+
+msgid "Detail"
+msgstr "Подробно"
+
+msgid "Diagnostics"
+msgstr "Диагностика"
+
+msgid "Disabled"
+msgstr "Отключено"
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr ""
+"Интерфейс будет считаться отключенным, после продолжительных пинг-запросов."
+
+msgid "Enabled"
+msgstr "Включено"
+
+msgid "Enter value in hex, starting with <code>0x</code>"
+msgstr "Введите значение в шестнадцатеричной форме, начиная с <code>0x</code>."
+
+msgid "Execute"
+msgstr "Выполнить"
+
+msgid "Expect interface state on up event"
+msgstr "Ожидание "
+
+msgid "Failure interval"
+msgstr "Интервал отказа"
+
+msgid "Firewall mask"
+msgstr "Маска межсетевого экрана"
+
+msgid "Flush conntrack table"
+msgstr "Сбросьте conntrack таблицу"
+
+msgid "Flush global firewall conntrack table on interface events"
+msgstr ""
+"Сбросьте глобальные настройки межсетевого экрана conntrack таблицы по "
+"истории интерфейса."
+
+msgid "Globals"
+msgstr "Общие"
+
+msgid "Hotplug ifdown"
+msgstr "Hotplug ifdown"
+
+msgid "Hotplug ifup"
+msgstr "Hotplug ifup"
+
+msgid "INFO: MWAN not running"
+msgstr ""
+
+msgid "IPset"
+msgstr "IPset"
+
+msgid "IPv4"
+msgstr "IPv4"
+
+msgid "IPv6"
+msgstr "IPv6"
+
+msgid "Initial state"
+msgstr "Исходное состояние"
+
+msgid "Interface"
+msgstr "Интерфейс"
+
+msgid "Interface down"
+msgstr "Интерфейс отключить"
+
+msgid "Interface up"
+msgstr "Интерфейс включить"
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr ""
+"Интерфейс будут считать отключенным, после данного количества пинг-запросов."
+
+msgid "Interfaces"
+msgstr "Интерфейсы"
+
+msgid "Internet Protocol"
+msgstr "Протокол интернета"
+
+msgid "Keep failure interval"
+msgstr "Сохранить интервал сбоя"
+
+msgid "Keep ping failure interval during failure state"
+msgstr "Сохранить интервал сбоя пинг-запроса, во время состояния сбоя."
+
+msgid "Last resort"
+msgstr "Последнее средство"
+
+msgid "Load Balancing"
+msgstr "Балансировка WAN трафика"
+
+msgid "Loading"
+msgstr "Загрузка"
+
+msgid "Local source interface"
+msgstr "Локальный исходящий интефейс"
+
+msgid "MWAN - Globals"
+msgstr "MWAN - Общие"
+
+msgid "MWAN - Interfaces"
+msgstr "MWAN - Интерфейсы"
+
+msgid "MWAN - Members"
+msgstr "MWAN - Узлы"
+
+msgid "MWAN - Notification"
+msgstr "MWAN - Уведомления"
+
+msgid "MWAN - Policies"
+msgstr "MWAN - Политики"
+
+msgid "MWAN - Rules"
+msgstr "MWAN - Правила"
+
+msgid "MWAN Interface Configuration - %s"
+msgstr "Настройка интерфейсов MWAN  - %s"
+
+msgid "MWAN Interfaces"
+msgstr ""
+
+msgid "MWAN Member Configuration - %s"
+msgstr "MWAN настройка узлов - %s"
+
+msgid "MWAN Policy Configuration - %s"
+msgstr "MWAN настройка политики - %s"
+
+msgid "MWAN Rule Configuration - %s"
+msgstr "MWAN настройка правил - %s"
+
+msgid "MWAN Status - Detail"
+msgstr "Состояние MWAN - Подробно"
+
+msgid "MWAN Status - Diagnostics"
+msgstr "Состояние MWAN - Диагностика"
+
+msgid "MWAN Status - Troubleshooting"
+msgstr "Состояние MWAN - Устранение неполадок"
+
+msgid ""
+"MWAN supports up to 252 physical and/or logical interfaces<br />MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network<br />Names must match the interface name found in /etc/config/"
+"network<br />Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br /"
+">Interfaces may not share the same name as configured members, policies or "
+"rules"
+msgstr ""
+"MWAN поддерживает до 252 физических и / или логических интерфейсов.<br /"
+">MWAN требует, чтобы все интерфейсы имели уникальную метрику, настроенную в "
+"config файле /etc/config/network.<br />Имена должны соответствовать имени "
+"интерфейса, найденному в /etc/config/network.<br />Имена могут содержать "
+"символы A-Z, a-z, 0-9, _ и пробелы.<br />Интерфейсы не могут иметь "
+"одинаковые имена с настроенными узлами, политиками или правилами."
+
+msgid "Max packet latency [ms]"
+msgstr ""
+
+msgid "Max packet loss [%]"
+msgstr ""
+
+msgid ""
+"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
+"as a portrange (eg \"1024:2048\") without quotes"
+msgstr ""
+"Может быть введено как один или несколько портов (например, '22' или "
+"'80,443') или как диапазон портов (например, '1024:2048') без кавычек."
+
+msgid "Member"
+msgstr "Узел"
+
+msgid "Member used"
+msgstr "Используемый узел"
+
+msgid "Members"
+msgstr "Узлы"
+
+msgid ""
+"Members are profiles attaching a metric and weight to an MWAN interface<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Members "
+"may not share the same name as configured interfaces, policies or rules"
+msgstr ""
+"Узлы имеют профили, содержащие метрику и вес к интерфейсу MWAN.<br />Имена "
+"могут содержать символы A-Z, a-z, 0-9, _ и пробелы.<br />Узлы не могут иметь "
+"одинаковые имена с настроенными интерфейсами, политиками или правилами."
+
+msgid "Members assigned"
+msgstr "Назначенные узлы"
+
+msgid "Metric"
+msgstr "Метрика"
+
+msgid "Min packet latency [ms]"
+msgstr ""
+
+msgid "Min packet loss [%]"
+msgstr ""
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+"Имя IPset правила. Требуется правило IPset в /etc/dnsmasq.conf (например "
+"\"ipset=/youtube.com/youtube\")."
+
+msgid "No"
+msgstr "Нет"
+
+msgid "No MWAN interfaces found"
+msgstr "Интерфейсы MWAN не найдены"
+
+msgid "Notification"
+msgstr "Уведомления"
+
+msgid "Offline"
+msgstr "Отключен"
+
+msgid "Online"
+msgstr "Онлайн"
+
+msgid "Ping count"
+msgstr "Кол-во пинг-запросов"
+
+msgid "Ping default gateway"
+msgstr "Пинг-запрос шлюза по умолчанию"
+
+msgid "Ping interval"
+msgstr "Интервал пинг-запроса"
+
+msgid "Ping interval during failure detection"
+msgstr "Интервал пинг-запроса во время обнаружения отказов."
+
+msgid "Ping interval during failure recovering"
+msgstr "Интервал пинг-запроса при сбое восстановления."
+
+msgid "Ping size"
+msgstr "Размер пинг-запроса"
+
+msgid "Ping timeout"
+msgstr "Время ожидания пинг-запроса"
+
+msgid "Ping tracking IP"
+msgstr "Пинг-запрос отслеживания IP"
+
+msgid "Policies"
+msgstr "Политики"
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic<br />Member interfaces with lower metrics are used "
+"first<br />Member interfaces with the same metric will be load-balanced<br /"
+">Load-balanced member interfaces distribute more traffic out those with "
+"higher weights<br />Names may contain characters A-Z, a-z, 0-9, _ and no "
+"spaces<br />Names must be 15 characters or less<br />Policies may not share "
+"the same name as configured interfaces, members or rules"
+msgstr ""
+"Политики это профили, объединяющие один или несколько узлов, контролирующих, "
+"как MWAN распределяет трафик.<br />Сначала используются интерфейсы-узлы с "
+"более низкими метриками. Интерфейсы с одинаковым метрическим балансом "
+"нагрузки.<br />Интерфейсы элементов с балансировкой нагрузки распределяют "
+"больше трафика с более высокими значениями.<br />Имена могут содержать "
+"символы A-Z, a-z, 0-9, _ и пробелы. Имена должны быть не более 15 символов."
+"<br />Политики не могут иметь одинаковые имена с настроенными интерфейсами, "
+"узлами или правилами."
+
+msgid "Policy"
+msgstr "Политика"
+
+msgid "Policy assigned"
+msgstr "Назначенная политика"
+
+msgid "Protocol"
+msgstr "Протокол"
+
+msgid "Recovery interval"
+msgstr "Интервал восстановления"
+
+msgid "Rule"
+msgstr "Правило"
+
+msgid "Rules"
+msgstr "Правила"
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy<br />Rules are "
+"based on IP address, port or protocol<br />Rules are matched from top to "
+"bottom<br />Rules below a matching rule are ignored<br />Traffic not "
+"matching any rule is routed using the main routing table<br />Traffic "
+"destined for known (other than default) networks is handled by the main "
+"routing table<br />Traffic matching a rule, but all WAN interfaces for that "
+"policy are down will be blackholed<br />Names may contain characters A-Z, a-"
+"z, 0-9, _ and no spaces<br />Rules may not share the same name as configured "
+"interfaces, members or policies"
+msgstr ""
+"Правила определяют, какой трафик будет использовать конкретную политику MWAN."
+"<br />Правила основываются на IP-адресе, порту или протоколе.<br />Список "
+"правил исполняется сверху вниз.<br />Правила, расположенные ниже правила "
+"сопоставления, игнорируются.<br />Трафик, не соответствующий никакому "
+"правилу, маршрутизируется с помощью основной таблицы маршрутизации.<br /"
+">Трафик, предназначенный для известных (не по умолчанию) сетей, "
+"обрабатывается основной таблицей маршрутизации.<br />Трафик соответствует "
+"правилам, но все интерфейсы WAN для этой политики будут заблокированы.<br /"
+">Имена могут содержать символы A-Z, a-z, 0-9, _ , пробелы запрещены.<br /"
+">Правила не могут иметь одинаковые имена с настроенными интерфейсами, узлами "
+"или политиками."
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr ""
+"Секунд. Допустимые значения: 1-1000000. По умолчанию 600, если значение не "
+"установлено."
+
+msgid "Source address"
+msgstr "Адрес источника"
+
+msgid "Source port"
+msgstr "Порт источника"
+
+msgid "Sticky"
+msgstr "Липкий"
+
+msgid "Sticky timeout"
+msgstr "Липкое значение времени ожидания"
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr "Поддерживает CIDR нотацию (например '192.168.100.0/24') без кавычек."
+
+msgid "Task"
+msgstr "Задача"
+
+msgid "There are currently %d of %d supported interfaces configured"
+msgstr "В настоящее время настроено %d из %d поддерживаемых интерфейсов."
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr ""
+"Страница отображает настройки этого интерфейса в config файле network (/etc/"
+"config/network)."
+
+msgid ""
+"This hostname or IP address will be pinged to determine if the link is up or "
+"down. Leave blank to assume interface is always online"
+msgstr ""
+"Это имя хоста или IP-адрес для пинг-запроса, чтобы определить активно ли "
+"соединение или нет.<br />Оставьте пустым, чтобы предположить, что интерфейс "
+"всегда находится в сети."
+
+msgid ""
+"This section allows you to modify the content of \"/etc/mwan3.user\".<br /"
+">The file is also preserved during sysupgrade.<br /><br />Notes:<br />This "
+"file is interpreted as a shell script.<br />The first line of the script "
+"must be &#34;#!/bin/sh&#34; without quotes.<br />Lines beginning with # are "
+"comments and are not executed.<br />Put your custom mwan3 action here, they "
+"will<br />be executed with each netifd hotplug interface event<br />on "
+"interfaces for which mwan3 is enabled.<br /><br />There are three main "
+"environment variables that are passed to this script.<br /><br />$ACTION "
+"<br />* \"ifup\" Is called by netifd and mwan3track <br />* \"ifdown\" Is "
+"called by netifd and mwan3track <br />* \"connected\" Is only called by "
+"mwan3track if tracking was successful <br />* \"disconnected\" Is only "
+"called by mwan3track if tracking has failed <br />$INTERFACE Name of the "
+"interface which went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE "
+"Physical device name which interface went up or down (e.g. \"eth0\" or "
+"\"wwan0\")<br /><br />"
+msgstr ""
+
+msgid "Tracking hostname or IP address"
+msgstr "Отслеживание имени хоста или IP-адреса"
+
+msgid "Tracking method"
+msgstr "Метод отслеживания"
+
+msgid "Tracking reliability"
+msgstr "Надежность отслеживания"
+
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+"Трафик с того же IP-адреса источника, который ранее соответствовал этому "
+"правилу в период 'липкого' времени ожидания, будет использовать тот же "
+"интерфейс WAN."
+
+msgid "Troubleshooting"
+msgstr "Устранение неполадок"
+
+msgid ""
+"Use the IP address of this interface as source IP address for traffic "
+"initiated by the router itself"
+msgstr ""
+"Используйте IP-адрес этого интерфейса в качестве IP-адреса источника для "
+"трафика, инициированного самим маршрутизатором."
+
+msgid "View the content of /etc/protocols for protocol description"
+msgstr "Просмотр содержимого файла /etc/protocols для описания протокола."
+
+msgid "WARNING: %d interfaces are configured exceeding the maximum of %d!"
+msgstr ""
+"ВНИМАНИЕ: Интерфейсы %d настроены, превышая установленное ограничение в "
+"количестве %dшт.!"
+
+msgid "WARNING: Interface %s are not found in /etc/config/network"
+msgstr "ВНИМАНИЕ: Интерфейс %s не настроен в config файле /etc/config/network."
+
+msgid "WARNING: Interface %s has a duplicate metric %s configured"
+msgstr ""
+"ВНИМАНИЕ: Интерфейс %s имеет дублирующие метрики настройки %s config файла."
+
+msgid ""
+"WARNING: Interface %s has a higher reliability requirement than tracking "
+"hosts (%d)"
+msgstr ""
+"ВНИМАНИЕ: Интерфейс %s имеет более высокое требование надежности, чем узлы "
+"отслеживания (%d)."
+
+msgid "WARNING: Interface %s has no default route in the main routing table"
+msgstr ""
+"ВНИМАНИЕ: Интерфейс %s не имеет маршрута по умолчанию в основной таблице "
+"маршрутизации."
+
+msgid "WARNING: Policy %s has exceeding the maximum name of 15 characters"
+msgstr ""
+"ВНИМАНИЕ: Имя политики %s  превышает установленное ограничение в 15 символов."
+
+msgid ""
+"WARNING: Rule %s have a port configured with no or improper protocol "
+"specified!"
+msgstr "ВНИМАНИЕ: Для правила %s порта не задан протокол или указан неверный!"
+
+msgid "Waiting for command to complete..."
+msgstr "Ожидание завершения выполнения команды..."
+
+msgid "Weight"
+msgstr "Вес"
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr ""
+"Когда все члены политики находятся в автономном режиме, используйте это "
+"поведение для сопоставленного трафика."
+
+msgid "Yes"
+msgstr "Да"
+
+msgid "always"
+msgstr "всегда"
+
+msgid "blackhole (drop)"
+msgstr "blackhole (drop)"
+
+msgid "default (use main routing table)"
+msgstr "по умолчанию (использовать основную таблицу маршрутизации)"
+
+msgid "ifdown"
+msgstr "ifdown"
+
+msgid "ifup"
+msgstr "ifup"
+
+msgid "never"
+msgstr "никогда"
+
+msgid "unreachable (reject)"
+msgstr "недоступен (отклонить)"
+
+#~ msgid "Online (tracking active)"
+#~ msgstr "Онлайн (отслеживание активно)"
+
+#~ msgid "MWAN Interface Live Status"
+#~ msgstr "Состояние интерфейса MWAN в настоящее время"
+
+#~ msgid "MWAN status - Interface Live Status"
+#~ msgstr "Состояние MWAN - Интерфейс в настоящее время"
+
+#~ msgid "Online (tracking off)"
+#~ msgstr "Онлайн  (отслеживание отключено)"
+
+#~ msgid ""
+#~ "This section allows you to modify the content of \"/etc/mwan3.user\".<br /"
+#~ ">The file is also preserved during sysupgrade.<br /><br />Notes:<br /"
+#~ ">This file is interpreted as a shell script.<br />The first line of the "
+#~ "script must be &#34;#!/bin/sh&#34; without quotes.<br />Lines beginning "
+#~ "with # are comments and are not executed.<br />Put your custom mwan3 "
+#~ "action here, they will<br />be executed with each netifd hotplug "
+#~ "interface event<br />on interfaces for which mwan3 is enabled.<br /><br /"
+#~ ">There are three main environment variables that are passed to this "
+#~ "script.<br /><br />$ACTION Either \"ifup\" or \"ifdown\"<br />$INTERFACE "
+#~ "Name of the interface which went up or down (e.g. \"wan\" or \"wwan"
+#~ "\")<br />$DEVICE Physical device name which interface went up or down (e."
+#~ "g. \"eth0\" or \"wwan0\")<br /><br />"
+#~ msgstr ""
+#~ "Страница позволяет изменять содержимое файла mwan3.user (/etc/mwan3.user)."
+#~ "<br />Файл также сохраняется во время перепрошивки sysupgrade-совместимым "
+#~ "образом.<br /><br />Примечание:<br />Этот файл интерпретируется как shell "
+#~ "скрипт.<br />Первая строка скрипта должна быть &#34;#!/bin/sh&#34; без "
+#~ "кавычек.<br />Строки начинающиеся с #, являются комментариями и не "
+#~ "исполняются.<br />Поместите свои пользовательские действия mwan3 здесь, "
+#~ "они будут<br />выполняться с каждым событием netifd hotplug "
+#~ "интерфейса<br />на интерфейсах, для которых включен mwan3.<br /><br />В "
+#~ "этот сценарий передаются три основные переменные среды.<br /><br />"
+#~ "$ACTION либо \"ifup\" или \"ifdown\"<br />$INTERFACE - имя интерфейса, "
+#~ "который включили или отключили (например, 'wan' или 'wwan') <br />$DEVICE "
+#~ "- имя физического устройства, чей интерфейс включили или отключили  "
+#~ "(например, 'eth0' или 'wwan0')<br /><br />."
index 842253c3a641abd750e47eeaaeb3df87663081a5..bcc5e977a535d455fc93f3ebe6badc5f35010cf5 100644 (file)
@@ -21,34 +21,22 @@ msgid ""
 "the link to be deemed up"
 msgstr ""
 
-msgid "Acceptable values: 1-256. Defaults to 1 if not set"
-msgstr ""
-
 msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
 msgstr ""
 
-msgid "Advanced"
+msgid "Acceptable values: 1-256. Defaults to 1 if not set"
 msgstr ""
 
 msgid "Check IP rules"
 msgstr ""
 
-msgid "Check routing table"
-msgstr ""
-
-msgid "Collecting data..."
-msgstr ""
-
-msgid "Configuration"
+msgid "Check link quality"
 msgstr ""
 
-msgid "Currently Configured Interfaces"
-msgstr ""
-
-msgid "Currently Configured Members"
+msgid "Check routing table"
 msgstr ""
 
-msgid "Currently Configured Policies"
+msgid "Collecting data..."
 msgstr ""
 
 msgid "Destination address"
@@ -57,10 +45,7 @@ msgstr ""
 msgid "Destination port"
 msgstr ""
 
-msgid "Detailed Status"
-msgstr ""
-
-msgid "Diagnostic Results"
+msgid "Detail"
 msgstr ""
 
 msgid "Diagnostics"
@@ -79,10 +64,7 @@ msgstr ""
 msgid "Enter value in hex, starting with <code>0x</code>"
 msgstr ""
 
-msgid "Error collecting troubleshooting information"
-msgstr ""
-
-msgid "Errors"
+msgid "Execute"
 msgstr ""
 
 msgid "Expect interface state on up event"
@@ -103,18 +85,15 @@ msgstr ""
 msgid "Globals"
 msgstr ""
 
-msgid "Globals mwan3 options"
-msgstr ""
-
-msgid "Hotplug Script"
-msgstr ""
-
 msgid "Hotplug ifdown"
 msgstr ""
 
 msgid "Hotplug ifup"
 msgstr ""
 
+msgid "INFO: MWAN not running"
+msgstr ""
+
 msgid "IPset"
 msgstr ""
 
@@ -130,9 +109,6 @@ msgstr ""
 msgid "Interface"
 msgstr ""
 
-msgid "Interface Status"
-msgstr ""
-
 msgid "Interface down"
 msgstr ""
 
@@ -154,9 +130,6 @@ msgstr ""
 msgid "Keep ping failure interval during failure state"
 msgstr ""
 
-msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :"
-msgstr ""
-
 msgid "Last resort"
 msgstr ""
 
@@ -169,55 +142,61 @@ msgstr ""
 msgid "Local source interface"
 msgstr ""
 
-msgid "MWAN Config"
+msgid "MWAN - Globals"
 msgstr ""
 
-msgid "MWAN Detailed Status"
+msgid "MWAN - Interfaces"
 msgstr ""
 
-msgid "MWAN Interface Configuration"
+msgid "MWAN - Members"
 msgstr ""
 
-msgid "MWAN Interface Configuration - %s"
+msgid "MWAN - Notification"
 msgstr ""
 
-msgid "MWAN Interface Diagnostics"
+msgid "MWAN - Policies"
 msgstr ""
 
-msgid "MWAN Interface Live Status"
+msgid "MWAN - Rules"
 msgstr ""
 
-msgid "MWAN Interface Systemlog"
+msgid "MWAN Interface Configuration - %s"
 msgstr ""
 
-msgid "MWAN Member Configuration"
+msgid "MWAN Interfaces"
 msgstr ""
 
 msgid "MWAN Member Configuration - %s"
 msgstr ""
 
-msgid "MWAN Policy Configuration"
+msgid "MWAN Policy Configuration - %s"
 msgstr ""
 
-msgid "MWAN Policy Configuration - %s"
+msgid "MWAN Rule Configuration - %s"
 msgstr ""
 
-msgid "MWAN Rule Configuration"
+msgid "MWAN Status - Detail"
 msgstr ""
 
-msgid "MWAN Rule Configuration - %s"
+msgid "MWAN Status - Diagnostics"
 msgstr ""
 
-msgid "MWAN Service Control"
+msgid "MWAN Status - Troubleshooting"
 msgstr ""
 
 msgid ""
-"MWAN supports up to 250 physical and/or logical interfaces<br />MWAN "
+"MWAN supports up to 252 physical and/or logical interfaces<br />MWAN "
 "requires that all interfaces have a unique metric configured in /etc/config/"
 "network<br />Names must match the interface name found in /etc/config/"
-"network (see advanced tab)<br />Names may contain characters A-Z, a-z, 0-9, "
-"_ and no spaces<br />Interfaces may not share the same name as configured "
-"members, policies or rules"
+"network<br />Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br /"
+">Interfaces may not share the same name as configured members, policies or "
+"rules"
+msgstr ""
+
+msgid "Max packet latency [ms]"
+msgstr ""
+
+msgid "Max packet loss [%]"
 msgstr ""
 
 msgid ""
@@ -246,30 +225,24 @@ msgstr ""
 msgid "Metric"
 msgstr ""
 
+msgid "Min packet latency [ms]"
+msgstr ""
+
+msgid "Min packet loss [%]"
+msgstr ""
+
 msgid ""
 "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
 "youtube.com/youtube\")"
 msgstr ""
 
-msgid "Network Config"
-msgstr ""
-
 msgid "No"
 msgstr ""
 
 msgid "No MWAN interfaces found"
 msgstr ""
 
-msgid "No MWAN systemlog history found"
-msgstr ""
-
-msgid "No detailed status information available"
-msgstr ""
-
-msgid "No diagnostic results returned"
-msgstr ""
-
-msgid "No protocol specified"
+msgid "Notification"
 msgstr ""
 
 msgid "Offline"
@@ -278,15 +251,6 @@ msgstr ""
 msgid "Online"
 msgstr ""
 
-msgid "Online (tracking active)"
-msgstr ""
-
-msgid "Online (tracking off)"
-msgstr ""
-
-msgid "Overview"
-msgstr ""
-
 msgid "Ping count"
 msgstr ""
 
@@ -317,11 +281,11 @@ msgstr ""
 msgid ""
 "Policies are profiles grouping one or more members controlling how MWAN "
 "distributes traffic<br />Member interfaces with lower metrics are used "
-"first. Interfaces with the same metric load-balance<br />Load-balanced "
-"member interfaces distribute more traffic out those with higher weights<br /"
-">Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
-"15 characters or less<br />Policies may not share the same name as "
-"configured interfaces, members or rules"
+"first<br />Member interfaces with the same metric will be load-balanced<br /"
+">Load-balanced member interfaces distribute more traffic out those with "
+"higher weights<br />Names may contain characters A-Z, a-z, 0-9, _ and no "
+"spaces<br />Names must be 15 characters or less<br />Policies may not share "
+"the same name as configured interfaces, members or rules"
 msgstr ""
 
 msgid "Policy"
@@ -336,9 +300,6 @@ msgstr ""
 msgid "Recovery interval"
 msgstr ""
 
-msgid "Restart MWAN"
-msgstr ""
-
 msgid "Rule"
 msgstr ""
 
@@ -346,14 +307,15 @@ msgid "Rules"
 msgstr ""
 
 msgid ""
-"Rules specify which traffic will use a particular MWAN policy based on IP "
-"address, port or protocol<br />Rules are matched from top to bottom. Rules "
-"below a matching rule are ignored. Traffic not matching any rule is routed "
-"using the main routing table<br />Traffic destined for known (other than "
-"default) networks is handled by the main routing table. Traffic matching a "
-"rule, but all WAN interfaces for that policy are down will be blackholed<br /"
-">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Rules may "
-"not share the same name as configured interfaces, members or policies"
+"Rules specify which traffic will use a particular MWAN policy<br />Rules are "
+"based on IP address, port or protocol<br />Rules are matched from top to "
+"bottom<br />Rules below a matching rule are ignored<br />Traffic not "
+"matching any rule is routed using the main routing table<br />Traffic "
+"destined for known (other than default) networks is handled by the main "
+"routing table<br />Traffic matching a rule, but all WAN interfaces for that "
+"policy are down will be blackholed<br />Names may contain characters A-Z, a-"
+"z, 0-9, _ and no spaces<br />Rules may not share the same name as configured "
+"interfaces, members or policies"
 msgstr ""
 
 msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
@@ -365,22 +327,19 @@ msgstr ""
 msgid "Source port"
 msgstr ""
 
-msgid "Start MWAN"
-msgstr ""
-
 msgid "Sticky"
 msgstr ""
 
 msgid "Sticky timeout"
 msgstr ""
 
-msgid "Stop MWAN"
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
 msgstr ""
 
-msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgid "Task"
 msgstr ""
 
-msgid "There are currently %d of 250 supported interfaces configured"
+msgid "There are currently %d of %d supported interfaces configured"
 msgstr ""
 
 msgid ""
@@ -401,21 +360,13 @@ msgid ""
 "will<br />be executed with each netifd hotplug interface event<br />on "
 "interfaces for which mwan3 is enabled.<br /><br />There are three main "
 "environment variables that are passed to this script.<br /><br />$ACTION "
-"Either \"ifup\" or \"ifdown\"<br />$INTERFACE Name of the interface which "
-"went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE Physical device name "
-"which interface went up or down (e.g. \"eth0\" or \"wwan0\")<br /><br />"
-msgstr ""
-
-msgid "This section allows you to modify the contents of /etc/config/mwan3"
-msgstr ""
-
-msgid "This section allows you to modify the contents of /etc/config/network"
-msgstr ""
-
-msgid "This section allows you to modify the contents of /etc/config/wireless"
-msgstr ""
-
-msgid "Tracking IP"
+"<br />* \"ifup\" Is called by netifd and mwan3track <br />* \"ifdown\" Is "
+"called by netifd and mwan3track <br />* \"connected\" Is only called by "
+"mwan3track if tracking was successful <br />* \"disconnected\" Is only "
+"called by mwan3track if tracking has failed <br />$INTERFACE Name of the "
+"interface which went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE "
+"Physical device name which interface went up or down (e.g. \"eth0\" or "
+"\"wwan0\")<br /><br />"
 msgstr ""
 
 msgid "Tracking hostname or IP address"
@@ -427,9 +378,6 @@ msgstr ""
 msgid "Tracking reliability"
 msgstr ""
 
-msgid "Traffic Rules"
-msgstr ""
-
 msgid ""
 "Traffic from the same source IP address that previously matched this rule "
 "within the sticky timeout period will use the same WAN interface"
@@ -438,87 +386,40 @@ msgstr ""
 msgid "Troubleshooting"
 msgstr ""
 
-msgid "Troubleshooting Data"
-msgstr ""
-
 msgid ""
 "Use the IP address of this interface as source IP address for traffic "
 "initiated by the router itself"
 msgstr ""
 
-msgid "View the contents of /etc/protocols for protocol descriptions"
+msgid "View the content of /etc/protocols for protocol description"
 msgstr ""
 
-msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
-msgstr ""
-
-msgid ""
-"WARNING: Some interfaces are configured incorrectly or not at all in /etc/"
-"config/network!"
+msgid "WARNING: %d interfaces are configured exceeding the maximum of %d!"
 msgstr ""
 
-msgid ""
-"WARNING: Some interfaces have a higher reliability requirement than there "
-"are tracking IP addresses!"
+msgid "WARNING: Interface %s are not found in /etc/config/network"
 msgstr ""
 
-msgid ""
-"WARNING: Some interfaces have duplicate metrics configured in /etc/config/"
-"network!"
+msgid "WARNING: Interface %s has a duplicate metric %s configured"
 msgstr ""
 
 msgid ""
-"WARNING: Some interfaces have no default route in the main routing table!"
+"WARNING: Interface %s has a higher reliability requirement than tracking "
+"hosts (%d)"
 msgstr ""
 
-msgid ""
-"WARNING: Some interfaces have no metric configured in /etc/config/network!"
+msgid "WARNING: Interface %s has no default route in the main routing table"
 msgstr ""
 
-msgid ""
-"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgid "WARNING: Policy %s has exceeding the maximum name of 15 characters"
 msgstr ""
 
 msgid ""
-"WARNING: Some rules have a port configured with no or improper protocol "
-"specified! Please configure a specific protocol!"
+"WARNING: Rule %s have a port configured with no or improper protocol "
+"specified!"
 msgstr ""
 
-msgid ""
-"WARNING: This and other interfaces have duplicate metrics configured in /etc/"
-"config/network!"
-msgstr ""
-
-msgid ""
-"WARNING: This interface has a higher reliability requirement than there are "
-"tracking IP addresses!"
-msgstr ""
-
-msgid "WARNING: This interface has no default route in the main routing table!"
-msgstr ""
-
-msgid ""
-"WARNING: This interface has no metric configured in /etc/config/network!"
-msgstr ""
-
-msgid ""
-"WARNING: This interface is configured incorrectly or not at all in /etc/"
-"config/network!"
-msgstr ""
-
-msgid ""
-"WARNING: This policy's name is %d characters exceeding the maximum of 15!"
-msgstr ""
-
-msgid ""
-"WARNING: This rule is incorrectly configured with no or improper protocol "
-"specified! Please configure a specific protocol!"
-msgstr ""
-
-msgid "Waiting for MWAN to %s..."
-msgstr ""
-
-msgid "Waiting for diagnostic results..."
+msgid "Waiting for command to complete..."
 msgstr ""
 
 msgid "Weight"
@@ -528,9 +429,6 @@ msgid ""
 "When all policy members are offline use this behavior for matched traffic"
 msgstr ""
 
-msgid "Wireless Config"
-msgstr ""
-
 msgid "Yes"
 msgstr ""
 
@@ -552,14 +450,5 @@ msgstr ""
 msgid "never"
 msgstr ""
 
-msgid "restart"
-msgstr ""
-
-msgid "start"
-msgstr ""
-
-msgid "stop"
-msgstr ""
-
 msgid "unreachable (reject)"
 msgstr ""
index 564e0ea47d2227b5eb913dea8053cedc5ab4a858..4a92c7abd90f98a3dd48ce0b07c6244025d3b185 100644 (file)
@@ -32,47 +32,32 @@ msgid ""
 msgstr ""
 "取值范围:1-100。这个设置项指定了当多少个 IP 地址能够连通时接口会被认为在线"
 
-msgid "Acceptable values: 1-256. Defaults to 1 if not set"
-msgstr "取值范围:1-256。如果不填写,默认值为 1"
-
 msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
 msgstr "取值范围:1-1000。如果不填写,默认值为 1"
 
-msgid "Advanced"
-msgstr "高级"
+msgid "Acceptable values: 1-256. Defaults to 1 if not set"
+msgstr "取值范围:1-256。如果不填写,默认值为 1"
 
 msgid "Check IP rules"
 msgstr "检查 IP 规则"
 
+msgid "Check link quality"
+msgstr ""
+
 msgid "Check routing table"
 msgstr "检查路由表"
 
 msgid "Collecting data..."
 msgstr "正在收集数据..."
 
-msgid "Configuration"
-msgstr "配置"
-
-msgid "Currently Configured Interfaces"
-msgstr "当前配置的接口"
-
-msgid "Currently Configured Members"
-msgstr "当前配置的成员"
-
-msgid "Currently Configured Policies"
-msgstr "当前配置的策略"
-
 msgid "Destination address"
 msgstr "目标地址"
 
 msgid "Destination port"
 msgstr "目标端口"
 
-msgid "Detailed Status"
-msgstr "详细状态"
-
-msgid "Diagnostic Results"
-msgstr "诊断结果"
+msgid "Detail"
+msgstr ""
 
 msgid "Diagnostics"
 msgstr "诊断"
@@ -90,11 +75,8 @@ msgstr "已启用"
 msgid "Enter value in hex, starting with <code>0x</code>"
 msgstr "输入十六进制值,以 <code>0x</code> 开头"
 
-msgid "Error collecting troubleshooting information"
-msgstr "收集故障排除信息时出错"
-
-msgid "Errors"
-msgstr "错误"
+msgid "Execute"
+msgstr ""
 
 msgid "Expect interface state on up event"
 msgstr "在 up 事件发生时的预期接口状态"
@@ -114,18 +96,15 @@ msgstr "在接口事件触发时刷新全局防火墙连接跟踪表"
 msgid "Globals"
 msgstr "全局"
 
-msgid "Globals mwan3 options"
-msgstr "全局 mwan3 选项"
-
-msgid "Hotplug Script"
-msgstr "Hotplug 脚本"
-
 msgid "Hotplug ifdown"
 msgstr "Hotplug ifdown"
 
 msgid "Hotplug ifup"
 msgstr "Hotplug ifup"
 
+msgid "INFO: MWAN not running"
+msgstr ""
+
 msgid "IPset"
 msgstr "IPset"
 
@@ -141,9 +120,6 @@ msgstr "初始状态"
 msgid "Interface"
 msgstr "接口"
 
-msgid "Interface Status"
-msgstr "接口状态"
-
 msgid "Interface down"
 msgstr "接口离线"
 
@@ -165,9 +141,6 @@ msgstr "保持故障检测间隔"
 msgid "Keep ping failure interval during failure state"
 msgstr "在故障状态期间保持的 Ping 故障检测间隔"
 
-msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :"
-msgstr "最近 50 条 MWAN 系统日志,最新条目排在顶部:"
-
 msgid "Last resort"
 msgstr "备用成员"
 
@@ -180,61 +153,66 @@ msgstr "载入中"
 msgid "Local source interface"
 msgstr "本地源接口"
 
-msgid "MWAN Config"
-msgstr "MWAN 配置文件"
+msgid "MWAN - Globals"
+msgstr ""
 
-msgid "MWAN Detailed Status"
-msgstr "MWAN 详细状态"
+msgid "MWAN - Interfaces"
+msgstr ""
 
-msgid "MWAN Interface Configuration"
-msgstr "MWAN 接口配置"
+msgid "MWAN - Members"
+msgstr ""
 
-msgid "MWAN Interface Configuration - %s"
-msgstr "MWAN 接口配置 - %s"
+msgid "MWAN - Notification"
+msgstr ""
 
-msgid "MWAN Interface Diagnostics"
-msgstr "MWAN 接口诊断"
+msgid "MWAN - Policies"
+msgstr ""
 
-msgid "MWAN Interface Live Status"
-msgstr "MWAN 接口实时状态"
+msgid "MWAN - Rules"
+msgstr ""
 
-msgid "MWAN Interface Systemlog"
-msgstr "MWAN 接口系统日志"
+msgid "MWAN Interface Configuration - %s"
+msgstr "MWAN 接口配置 - %s"
 
-msgid "MWAN Member Configuration"
-msgstr "MWAN 成员配置"
+msgid "MWAN Interfaces"
+msgstr ""
 
 msgid "MWAN Member Configuration - %s"
 msgstr "MWAN 成员配置 - %s"
 
-msgid "MWAN Policy Configuration"
-msgstr "MWAN 策略配置"
-
 msgid "MWAN Policy Configuration - %s"
 msgstr "MWAN 策略配置 - %s"
 
-msgid "MWAN Rule Configuration"
-msgstr "MWAN 规则配置"
-
 msgid "MWAN Rule Configuration - %s"
 msgstr "MWAN 规则配置 - %s"
 
-msgid "MWAN Service Control"
-msgstr "MWAN 服务控制"
+msgid "MWAN Status - Detail"
+msgstr ""
+
+msgid "MWAN Status - Diagnostics"
+msgstr ""
+
+msgid "MWAN Status - Troubleshooting"
+msgstr ""
 
 msgid ""
-"MWAN supports up to 250 physical and/or logical interfaces<br />MWAN "
+"MWAN supports up to 252 physical and/or logical interfaces<br />MWAN "
 "requires that all interfaces have a unique metric configured in /etc/config/"
 "network<br />Names must match the interface name found in /etc/config/"
-"network (see advanced tab)<br />Names may contain characters A-Z, a-z, 0-9, "
-"_ and no spaces<br />Interfaces may not share the same name as configured "
-"members, policies or rules"
+"network<br />Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br /"
+">Interfaces may not share the same name as configured members, policies or "
+"rules"
 msgstr ""
-"MWAN 支持最多 250 个物理或逻辑接口。<br />MWAN 要求所有接口必须在 /etc/"
+"MWAN 支持最多 252 个物理或逻辑接口。<br />MWAN 要求所有接口必须在 /etc/"
 "config/network 中设定唯一的网关跃点。<br />名称必须与 /etc/config/network 中"
-"的接口名称匹配。(可查看“高级”选项卡)<br />名称允许包括 A-Z、a-z、0-9、_ 但"
-"是不能有空格。<br />接口不应该与成员、策略、规则中的任意一个设置项使用相同的"
-"名称"
+"的接口名称匹配。<br />名称允许包括 A-Z、a-z、0-9、_ 但是不能有空格。<br />接"
+"口不应该与成员、策略、规则中的任意一个设置项使用相同的名称"
+
+msgid "Max packet latency [ms]"
+msgstr ""
+
+msgid "Max packet loss [%]"
+msgstr ""
 
 msgid ""
 "May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
@@ -267,6 +245,12 @@ msgstr "分配的成员"
 msgid "Metric"
 msgstr "跃点数"
 
+msgid "Min packet latency [ms]"
+msgstr ""
+
+msgid "Min packet loss [%]"
+msgstr ""
+
 msgid ""
 "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
 "youtube.com/youtube\")"
@@ -274,26 +258,14 @@ msgstr ""
 "匹配 IPset 规则列表名称。需要先配置 /etc/dnsmasq.conf 中的 IPset 规则(例"
 "如:“ipset=/youtube.com/youtube”)"
 
-msgid "Network Config"
-msgstr "网络配置文件"
-
 msgid "No"
 msgstr "否"
 
 msgid "No MWAN interfaces found"
 msgstr "没有找到 MWAN 接口"
 
-msgid "No MWAN systemlog history found"
-msgstr "没有在系统日志中找到 MWAN 历史信息"
-
-msgid "No detailed status information available"
-msgstr "没有状态详细信息可用"
-
-msgid "No diagnostic results returned"
-msgstr "没有返回诊断结果"
-
-msgid "No protocol specified"
-msgstr "未指定协议"
+msgid "Notification"
+msgstr ""
 
 msgid "Offline"
 msgstr "离线"
@@ -301,15 +273,6 @@ msgstr "离线"
 msgid "Online"
 msgstr "在线"
 
-msgid "Online (tracking active)"
-msgstr "在线(跟踪启用中)"
-
-msgid "Online (tracking off)"
-msgstr "在线(跟踪已关闭)"
-
-msgid "Overview"
-msgstr "概况"
-
 msgid "Ping count"
 msgstr "Ping 计数"
 
@@ -340,11 +303,11 @@ msgstr "策略"
 msgid ""
 "Policies are profiles grouping one or more members controlling how MWAN "
 "distributes traffic<br />Member interfaces with lower metrics are used "
-"first. Interfaces with the same metric load-balance<br />Load-balanced "
-"member interfaces distribute more traffic out those with higher weights<br /"
-">Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
-"15 characters or less<br />Policies may not share the same name as "
-"configured interfaces, members or rules"
+"first<br />Member interfaces with the same metric will be load-balanced<br /"
+">Load-balanced member interfaces distribute more traffic out those with "
+"higher weights<br />Names may contain characters A-Z, a-z, 0-9, _ and no "
+"spaces<br />Names must be 15 characters or less<br />Policies may not share "
+"the same name as configured interfaces, members or rules"
 msgstr ""
 "“策略”把成员进行分组,告诉 MWAN 如何分配“规则”中使用这一策略的流量<br />拥有"
 "较低跃点数的成员将会被优先使用。拥有相同跃点数的成员把流量进行负载均衡。<br /"
@@ -364,9 +327,6 @@ msgstr "通信协议"
 msgid "Recovery interval"
 msgstr "故障恢复间隔"
 
-msgid "Restart MWAN"
-msgstr "重启 MWAN"
-
 msgid "Rule"
 msgstr "规则"
 
@@ -374,22 +334,16 @@ msgid "Rules"
 msgstr "规则"
 
 msgid ""
-"Rules specify which traffic will use a particular MWAN policy based on IP "
-"address, port or protocol<br />Rules are matched from top to bottom. Rules "
-"below a matching rule are ignored. Traffic not matching any rule is routed "
-"using the main routing table<br />Traffic destined for known (other than "
-"default) networks is handled by the main routing table. Traffic matching a "
-"rule, but all WAN interfaces for that policy are down will be blackholed<br /"
-">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Rules may "
-"not share the same name as configured interfaces, members or policies"
-msgstr ""
-"“规则”基于 IP 地址、协议、端口把流量划分到指定的“策略”中。<br />规则按照从上"
-"到下的顺序进行匹配。除了第一条能够匹配一次通信的规则以外,其它规则将被忽略。"
-"不匹配任何规则的通信将会由系统默认路由表进行。<br />来自已知的网络的转发流量"
-"由系统默认路由表接手,然后 MWAN 从中匹配出相应的流量并转移到 MWAN 自己的路由"
-"表。但是所有被划分到一个无法使用的策略的流量将会无法正常进行路由。<br />名称"
-"允许包括A-Z、a-z、0-9、_ 但是不能有空格。<br />规则不应该与接口、成员、策略中"
-"的任意一个设置项使用相同的名称"
+"Rules specify which traffic will use a particular MWAN policy<br />Rules are "
+"based on IP address, port or protocol<br />Rules are matched from top to "
+"bottom<br />Rules below a matching rule are ignored<br />Traffic not "
+"matching any rule is routed using the main routing table<br />Traffic "
+"destined for known (other than default) networks is handled by the main "
+"routing table<br />Traffic matching a rule, but all WAN interfaces for that "
+"policy are down will be blackholed<br />Names may contain characters A-Z, a-"
+"z, 0-9, _ and no spaces<br />Rules may not share the same name as configured "
+"interfaces, members or policies"
+msgstr ""
 
 msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
 msgstr "单位为秒。接受的值:1-1000000。留空则使用默认值 600 秒"
@@ -400,23 +354,20 @@ msgstr "源地址"
 msgid "Source port"
 msgstr "源端口"
 
-msgid "Start MWAN"
-msgstr "启动 MWAN"
-
 msgid "Sticky"
 msgstr "粘滞模式"
 
 msgid "Sticky timeout"
 msgstr "粘滞超时"
 
-msgid "Stop MWAN"
-msgstr "停止 MWAN"
-
 msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
 msgstr "支持 CIDR 记法(例如:\"192.168.100.0/24\")不含引号"
 
-msgid "There are currently %d of 250 supported interfaces configured"
-msgstr "当前已配置 %d 个接口,最大支持 250 个"
+msgid "Task"
+msgstr ""
+
+msgid "There are currently %d of %d supported interfaces configured"
+msgstr "当前已配置 %d 个接口,最大支持 %d 个"
 
 msgid ""
 "This displays the metric assigned to this interface in /etc/config/network"
@@ -436,30 +387,14 @@ msgid ""
 "will<br />be executed with each netifd hotplug interface event<br />on "
 "interfaces for which mwan3 is enabled.<br /><br />There are three main "
 "environment variables that are passed to this script.<br /><br />$ACTION "
-"Either \"ifup\" or \"ifdown\"<br />$INTERFACE Name of the interface which "
-"went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE Physical device name "
-"which interface went up or down (e.g. \"eth0\" or \"wwan0\")<br /><br />"
+"<br />* \"ifup\" Is called by netifd and mwan3track <br />* \"ifdown\" Is "
+"called by netifd and mwan3track <br />* \"connected\" Is only called by "
+"mwan3track if tracking was successful <br />* \"disconnected\" Is only "
+"called by mwan3track if tracking has failed <br />$INTERFACE Name of the "
+"interface which went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE "
+"Physical device name which interface went up or down (e.g. \"eth0\" or "
+"\"wwan0\")<br /><br />"
 msgstr ""
-"这里允许您修改“/etc/mwan3.user”的内容。<br />该文件在 sysupgrade 期间也会保"
-"留。<br /><br />注意:<br />该文件会作为 shell 脚本解释。<br />脚本的第一行必"
-"须是&#34;#!/bin/sh&#34;,不带引号。<br />以#开头的行是注释,不会执行。<br />"
-"将您的自定义 mwan3 动作放在这里,他们将<br />在启用 mwan3 的接口上<br />在 "
-"netifd hotplug 接口事件时执行。<br /><br />有三个主要的环境变量传递给这个脚"
-"本。<br /><br />$ACTION “ifup”或“ifdown”<br />$INTERFACE 启动或停止的接口名"
-"(例如“wan”或“wwan”)<br />$DEVICE 启动或停止接口的物理设备名(例"
-"如“eth0”或“wwan0”)<br /><br />"
-
-msgid "This section allows you to modify the contents of /etc/config/mwan3"
-msgstr "这里允许您修改 /etc/config/mwan3 的内容"
-
-msgid "This section allows you to modify the contents of /etc/config/network"
-msgstr "这里允许您修改 /etc/config/network 的内容"
-
-msgid "This section allows you to modify the contents of /etc/config/wireless"
-msgstr "这里允许您修改 /etc/config/wireless 的内容"
-
-msgid "Tracking IP"
-msgstr "跟踪的 IP"
 
 msgid "Tracking hostname or IP address"
 msgstr "跟踪的主机或 IP 地址"
@@ -470,9 +405,6 @@ msgstr "跟踪方式"
 msgid "Tracking reliability"
 msgstr "跟踪可靠性"
 
-msgid "Traffic Rules"
-msgstr "流量规则"
-
 msgid ""
 "Traffic from the same source IP address that previously matched this rule "
 "within the sticky timeout period will use the same WAN interface"
@@ -483,89 +415,41 @@ msgstr ""
 msgid "Troubleshooting"
 msgstr "故障排除"
 
-msgid "Troubleshooting Data"
-msgstr "故障排除数据"
-
 msgid ""
 "Use the IP address of this interface as source IP address for traffic "
 "initiated by the router itself"
 msgstr "使用该接口的 IP 地址作为路由器本身发起的流量的源 IP 地址"
 
-msgid "View the contents of /etc/protocols for protocol descriptions"
-msgstr "请查看 /etc/protocols 获取可选协议详情"
-
-msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
-msgstr "警告:已配置 %d 个接口,超过最大值 250!"
-
-msgid ""
-"WARNING: Some interfaces are configured incorrectly or not at all in /etc/"
-"config/network!"
-msgstr "警告:某些接口配置不正确或未配置到 /etc/config/network!"
-
-msgid ""
-"WARNING: Some interfaces have a higher reliability requirement than there "
-"are tracking IP addresses!"
-msgstr "警告:某些接口的跟踪可靠性要求大于了跟踪 IP 地址总数!"
-
-msgid ""
-"WARNING: Some interfaces have duplicate metrics configured in /etc/config/"
-"network!"
-msgstr "警告:某些接口在 /etc/config/network 中配置了相同的跃点数!"
-
-msgid ""
-"WARNING: Some interfaces have no default route in the main routing table!"
-msgstr "警告:某些接口在主路由表中没有默认路由!"
-
-msgid ""
-"WARNING: Some interfaces have no metric configured in /etc/config/network!"
-msgstr "警告:某些接口没有在 /etc/config/network 中配置跃点数!"
-
-msgid ""
-"WARNING: Some policies have names exceeding the maximum of 15 characters!"
-msgstr "警告:某些策略的名称超过了 15 个字符!"
-
-msgid ""
-"WARNING: Some rules have a port configured with no or improper protocol "
-"specified! Please configure a specific protocol!"
+msgid "View the content of /etc/protocols for protocol description"
 msgstr ""
-"警告:某些规则指定了端口却没有配置或配置了不正确的协议,请重新指定协议!"
 
-msgid ""
-"WARNING: This and other interfaces have duplicate metrics configured in /etc/"
-"config/network!"
-msgstr "警告:此接口和其他接口在 /etc/config/network 中配置了相同的跃点数!"
+msgid "WARNING: %d interfaces are configured exceeding the maximum of %d!"
+msgstr "警告:已配置 %d 个接口,超过最大值 %d!"
 
-msgid ""
-"WARNING: This interface has a higher reliability requirement than there are "
-"tracking IP addresses!"
-msgstr "警告:此接口的跟踪可靠性要求大于了跟踪 IP 地址总数!"
+msgid "WARNING: Interface %s are not found in /etc/config/network"
+msgstr ""
 
-msgid "WARNING: This interface has no default route in the main routing table!"
-msgstr "警告:此接口在主路由表中没有默认路由!"
+msgid "WARNING: Interface %s has a duplicate metric %s configured"
+msgstr ""
 
 msgid ""
-"WARNING: This interface has no metric configured in /etc/config/network!"
-msgstr "警告:此接口没有在 /etc/config/network 中配置跃点数!"
+"WARNING: Interface %s has a higher reliability requirement than tracking "
+"hosts (%d)"
+msgstr ""
 
-msgid ""
-"WARNING: This interface is configured incorrectly or not at all in /etc/"
-"config/network!"
-msgstr "警告:此接口配置不正确或未配置到 /etc/config/network!"
+msgid "WARNING: Interface %s has no default route in the main routing table"
+msgstr ""
 
-msgid ""
-"WARNING: This policy's name is %d characters exceeding the maximum of 15!"
-msgstr "警告:此策略的名称具有 %d 个字符,超过了 15 个字符!"
+msgid "WARNING: Policy %s has exceeding the maximum name of 15 characters"
+msgstr ""
 
 msgid ""
-"WARNING: This rule is incorrectly configured with no or improper protocol "
-"specified! Please configure a specific protocol!"
-msgstr "警告:此规则没有配置或配置了不正确的协议,请重新指定协议!"
-
-msgid "Waiting for MWAN to %s..."
-msgstr "等待 MWAN %s..."
+"WARNING: Rule %s have a port configured with no or improper protocol "
+"specified!"
+msgstr ""
 
-msgid "Waiting for diagnostic results..."
-msgstr "等待诊断结果..."
+msgid "Waiting for command to complete..."
+msgstr ""
 
 msgid "Weight"
 msgstr "比重"
@@ -574,9 +458,6 @@ msgid ""
 "When all policy members are offline use this behavior for matched traffic"
 msgstr "当所有策略成员都无法使用的时候,对使用该策略的流量使用这个操作"
 
-msgid "Wireless Config"
-msgstr "无线配置"
-
 msgid "Yes"
 msgstr "是"
 
@@ -598,17 +479,258 @@ msgstr "ifup"
 msgid "never"
 msgstr "从不"
 
-msgid "restart"
-msgstr "重启"
+msgid "unreachable (reject)"
+msgstr "不可达(拒绝)"
+
+#~ msgid "Online (tracking active)"
+#~ msgstr "在线(跟踪启用中)"
 
-msgid "start"
-msgstr "启动"
+#~ msgid "MWAN Interface Live Status"
+#~ msgstr "MWAN 接口实时状态"
 
-msgid "stop"
-msgstr "停止"
+#~ msgid "Online (tracking off)"
+#~ msgstr "在线(跟踪已关闭)"
 
-msgid "unreachable (reject)"
-msgstr "不可达(拒绝)"
+#~ msgid ""
+#~ "This section allows you to modify the content of \"/etc/mwan3.user\".<br /"
+#~ ">The file is also preserved during sysupgrade.<br /><br />Notes:<br /"
+#~ ">This file is interpreted as a shell script.<br />The first line of the "
+#~ "script must be &#34;#!/bin/sh&#34; without quotes.<br />Lines beginning "
+#~ "with # are comments and are not executed.<br />Put your custom mwan3 "
+#~ "action here, they will<br />be executed with each netifd hotplug "
+#~ "interface event<br />on interfaces for which mwan3 is enabled.<br /><br /"
+#~ ">There are three main environment variables that are passed to this "
+#~ "script.<br /><br />$ACTION Either \"ifup\" or \"ifdown\"<br />$INTERFACE "
+#~ "Name of the interface which went up or down (e.g. \"wan\" or \"wwan"
+#~ "\")<br />$DEVICE Physical device name which interface went up or down (e."
+#~ "g. \"eth0\" or \"wwan0\")<br /><br />"
+#~ msgstr ""
+#~ "这里允许您修改“/etc/mwan3.user”的内容。<br />该文件在 sysupgrade 期间也会"
+#~ "保留。<br /><br />注意:<br />该文件会作为 shell 脚本解释。<br />脚本的第"
+#~ "一行必须是&#34;#!/bin/sh&#34;,不带引号。<br />以#开头的行是注释,不会执"
+#~ "行。<br />将您的自定义 mwan3 动作放在这里,他们将<br />在启用 mwan3 的接口"
+#~ "上<br />在 netifd hotplug 接口事件时执行。<br /><br />有三个主要的环境变量"
+#~ "传递给这个脚本。<br /><br />$ACTION “ifup”或“ifdown”<br />$INTERFACE 启动"
+#~ "或停止的接口名(例如“wan”或“wwan”)<br />$DEVICE 启动或停止接口的物理设备"
+#~ "名(例如“eth0”或“wwan0”)<br /><br />"
+
+#~ msgid "Currently Configured Interfaces"
+#~ msgstr "当前配置的接口"
+
+#~ msgid "Currently Configured Members"
+#~ msgstr "当前配置的成员"
+
+#~ msgid "Currently Configured Policies"
+#~ msgstr "当前配置的策略"
+
+#~ msgid "Detailed Status"
+#~ msgstr "详细状态"
+
+#~ msgid "Diagnostic Results"
+#~ msgstr "诊断结果"
+
+#~ msgid "Error collecting troubleshooting information"
+#~ msgstr "收集故障排除信息时出错"
+
+#~ msgid "Errors"
+#~ msgstr "错误"
+
+#~ msgid "Globals mwan3 options"
+#~ msgstr "全局 mwan3 选项"
+
+#~ msgid "Interface Status"
+#~ msgstr "接口状态"
+
+#~ msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :"
+#~ msgstr "最近 50 条 MWAN 系统日志,最新条目排在顶部:"
+
+#~ msgid "MWAN Detailed Status"
+#~ msgstr "MWAN 详细状态"
+
+#~ msgid "MWAN Interface Configuration"
+#~ msgstr "MWAN 接口配置"
+
+#~ msgid "MWAN Interface Diagnostics"
+#~ msgstr "MWAN 接口诊断"
+
+#~ msgid "MWAN Interface Systemlog"
+#~ msgstr "MWAN 接口系统日志"
+
+#~ msgid "MWAN Member Configuration"
+#~ msgstr "MWAN 成员配置"
+
+#~ msgid "MWAN Policy Configuration"
+#~ msgstr "MWAN 策略配置"
+
+#~ msgid "MWAN Rule Configuration"
+#~ msgstr "MWAN 规则配置"
+
+#~ msgid "MWAN Service Control"
+#~ msgstr "MWAN 服务控制"
+
+#~ msgid "No MWAN systemlog history found"
+#~ msgstr "没有在系统日志中找到 MWAN 历史信息"
+
+#~ msgid "No detailed status information available"
+#~ msgstr "没有状态详细信息可用"
+
+#~ msgid "No diagnostic results returned"
+#~ msgstr "没有返回诊断结果"
+
+#~ msgid "No protocol specified"
+#~ msgstr "未指定协议"
+
+#~ msgid "Restart MWAN"
+#~ msgstr "重启 MWAN"
+
+#~ msgid ""
+#~ "Rules specify which traffic will use a particular MWAN policy based on IP "
+#~ "address, port or protocol<br />Rules are matched from top to bottom. "
+#~ "Rules below a matching rule are ignored. Traffic not matching any rule is "
+#~ "routed using the main routing table<br />Traffic destined for known "
+#~ "(other than default) networks is handled by the main routing table. "
+#~ "Traffic matching a rule, but all WAN interfaces for that policy are down "
+#~ "will be blackholed<br />Names may contain characters A-Z, a-z, 0-9, _ and "
+#~ "no spaces<br />Rules may not share the same name as configured "
+#~ "interfaces, members or policies"
+#~ msgstr ""
+#~ "“规则”基于 IP 地址、协议、端口把流量划分到指定的“策略”中。<br />规则按照从"
+#~ "上到下的顺序进行匹配。除了第一条能够匹配一次通信的规则以外,其它规则将被忽"
+#~ "略。不匹配任何规则的通信将会由系统默认路由表进行。<br />来自已知的网络的转"
+#~ "发流量由系统默认路由表接手,然后 MWAN 从中匹配出相应的流量并转移到 MWAN 自"
+#~ "己的路由表。但是所有被划分到一个无法使用的策略的流量将会无法正常进行路由。"
+#~ "<br />名称允许包括A-Z、a-z、0-9、_ 但是不能有空格。<br />规则不应该与接"
+#~ "口、成员、策略中的任意一个设置项使用相同的名称"
+
+#~ msgid "Start MWAN"
+#~ msgstr "启动 MWAN"
+
+#~ msgid "Stop MWAN"
+#~ msgstr "停止 MWAN"
+
+#~ msgid "Tracking IP"
+#~ msgstr "跟踪的 IP"
+
+#~ msgid "Traffic Rules"
+#~ msgstr "流量规则"
+
+#~ msgid "Troubleshooting Data"
+#~ msgstr "故障排除数据"
+
+#~ msgid "View the contents of /etc/protocols for protocol descriptions"
+#~ msgstr "请查看 /etc/protocols 获取可选协议详情"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces are configured incorrectly or not at all in /etc/"
+#~ "config/network!"
+#~ msgstr "警告:某些接口配置不正确或未配置到 /etc/config/network!"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces have a higher reliability requirement than there "
+#~ "are tracking IP addresses!"
+#~ msgstr "警告:某些接口的跟踪可靠性要求大于了跟踪 IP 地址总数!"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces have duplicate metrics configured in /etc/config/"
+#~ "network!"
+#~ msgstr "警告:某些接口在 /etc/config/network 中配置了相同的跃点数!"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces have no default route in the main routing table!"
+#~ msgstr "警告:某些接口在主路由表中没有默认路由!"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces have no metric configured in /etc/config/network!"
+#~ msgstr "警告:某些接口没有在 /etc/config/network 中配置跃点数!"
+
+#~ msgid ""
+#~ "WARNING: Some policies have names exceeding the maximum of 15 characters!"
+#~ msgstr "警告:某些策略的名称超过了 15 个字符!"
+
+#~ msgid ""
+#~ "WARNING: Some rules have a port configured with no or improper protocol "
+#~ "specified! Please configure a specific protocol!"
+#~ msgstr ""
+#~ "警告:某些规则指定了端口却没有配置或配置了不正确的协议,请重新指定协议!"
+
+#~ msgid ""
+#~ "WARNING: This and other interfaces have duplicate metrics configured in /"
+#~ "etc/config/network!"
+#~ msgstr "警告:此接口和其他接口在 /etc/config/network 中配置了相同的跃点数!"
+
+#~ msgid ""
+#~ "WARNING: This interface has a higher reliability requirement than there "
+#~ "are tracking IP addresses!"
+#~ msgstr "警告:此接口的跟踪可靠性要求大于了跟踪 IP 地址总数!"
+
+#~ msgid ""
+#~ "WARNING: This interface has no default route in the main routing table!"
+#~ msgstr "警告:此接口在主路由表中没有默认路由!"
+
+#~ msgid ""
+#~ "WARNING: This interface has no metric configured in /etc/config/network!"
+#~ msgstr "警告:此接口没有在 /etc/config/network 中配置跃点数!"
+
+#~ msgid ""
+#~ "WARNING: This interface is configured incorrectly or not at all in /etc/"
+#~ "config/network!"
+#~ msgstr "警告:此接口配置不正确或未配置到 /etc/config/network!"
+
+#~ msgid ""
+#~ "WARNING: This policy's name is %d characters exceeding the maximum of 15!"
+#~ msgstr "警告:此策略的名称具有 %d 个字符,超过了 15 个字符!"
+
+#~ msgid ""
+#~ "WARNING: This rule is incorrectly configured with no or improper protocol "
+#~ "specified! Please configure a specific protocol!"
+#~ msgstr "警告:此规则没有配置或配置了不正确的协议,请重新指定协议!"
+
+#~ msgid "Waiting for MWAN to %s..."
+#~ msgstr "等待 MWAN %s..."
+
+#~ msgid "Waiting for diagnostic results..."
+#~ msgstr "等待诊断结果..."
+
+#~ msgid "restart"
+#~ msgstr "重启"
+
+#~ msgid "start"
+#~ msgstr "启动"
+
+#~ msgid "stop"
+#~ msgstr "停止"
+
+#~ msgid "Advanced"
+#~ msgstr "高级"
+
+#~ msgid "Configuration"
+#~ msgstr "配置"
+
+#~ msgid "Hotplug Script"
+#~ msgstr "Hotplug 脚本"
+
+#~ msgid "MWAN Config"
+#~ msgstr "MWAN 配置文件"
+
+#~ msgid "Network Config"
+#~ msgstr "网络配置文件"
+
+#~ msgid "Overview"
+#~ msgstr "概况"
+
+#~ msgid "This section allows you to modify the contents of /etc/config/mwan3"
+#~ msgstr "这里允许您修改 /etc/config/mwan3 的内容"
+
+#~ msgid ""
+#~ "This section allows you to modify the contents of /etc/config/network"
+#~ msgstr "这里允许您修改 /etc/config/network 的内容"
+
+#~ msgid ""
+#~ "This section allows you to modify the contents of /etc/config/wireless"
+#~ msgstr "这里允许您修改 /etc/config/wireless 的内容"
+
+#~ msgid "Wireless Config"
+#~ msgstr "无线配置"
 
 #~ msgid "Restore default hotplug script"
 #~ msgstr "恢复默认的 hotplug 脚本"
index ce23e77eaa31b01c774e790d7fbbfb727f1e4fcb..9fa5263428bd577849878b3bf0f3fc352473f6d8 100644 (file)
@@ -32,47 +32,32 @@ msgid ""
 msgstr ""
 "取值範圍:1-100。這個設定項指定了當多少個 IP 位址能夠連通時介面會被認為線上"
 
-msgid "Acceptable values: 1-256. Defaults to 1 if not set"
-msgstr "取值範圍:1-256。如果不填寫,預設值為 1"
-
 msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
 msgstr "取值範圍:1-1000。如果不填寫,預設值為 1"
 
-msgid "Advanced"
-msgstr "高階"
+msgid "Acceptable values: 1-256. Defaults to 1 if not set"
+msgstr "取值範圍:1-256。如果不填寫,預設值為 1"
 
 msgid "Check IP rules"
 msgstr "檢查 IP 規則"
 
+msgid "Check link quality"
+msgstr ""
+
 msgid "Check routing table"
 msgstr "檢查路由表"
 
 msgid "Collecting data..."
 msgstr "正在收集資料..."
 
-msgid "Configuration"
-msgstr "配置"
-
-msgid "Currently Configured Interfaces"
-msgstr "當前配置的介面"
-
-msgid "Currently Configured Members"
-msgstr "當前配置的成員"
-
-msgid "Currently Configured Policies"
-msgstr "當前配置的策略"
-
 msgid "Destination address"
 msgstr "目標位址"
 
 msgid "Destination port"
 msgstr "目標埠"
 
-msgid "Detailed Status"
-msgstr "詳細狀態"
-
-msgid "Diagnostic Results"
-msgstr "診斷結果"
+msgid "Detail"
+msgstr ""
 
 msgid "Diagnostics"
 msgstr "診斷"
@@ -90,11 +75,8 @@ msgstr "已啟用"
 msgid "Enter value in hex, starting with <code>0x</code>"
 msgstr "輸入十六進位制值,以 <code>0x</code> 開頭"
 
-msgid "Error collecting troubleshooting information"
-msgstr "收集故障排除資訊時出錯"
-
-msgid "Errors"
-msgstr "錯誤"
+msgid "Execute"
+msgstr ""
 
 msgid "Expect interface state on up event"
 msgstr "在 up 事件發生時的預期介面狀態"
@@ -114,18 +96,15 @@ msgstr "在介面事件觸發時重新整理全域性防火牆連線跟蹤表"
 msgid "Globals"
 msgstr "全域性"
 
-msgid "Globals mwan3 options"
-msgstr "全域性 mwan3 選項"
-
-msgid "Hotplug Script"
-msgstr "Hotplug 指令碼"
-
 msgid "Hotplug ifdown"
 msgstr "Hotplug ifdown"
 
 msgid "Hotplug ifup"
 msgstr "Hotplug ifup"
 
+msgid "INFO: MWAN not running"
+msgstr ""
+
 msgid "IPset"
 msgstr "IPset"
 
@@ -141,9 +120,6 @@ msgstr "初始狀態"
 msgid "Interface"
 msgstr "介面"
 
-msgid "Interface Status"
-msgstr "介面狀態"
-
 msgid "Interface down"
 msgstr "介面離線"
 
@@ -165,9 +141,6 @@ msgstr "保持故障檢測間隔"
 msgid "Keep ping failure interval during failure state"
 msgstr "在故障狀態期間保持的 Ping 故障檢測間隔"
 
-msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :"
-msgstr "最近 50 條 MWAN 系統日誌,最新條目排在頂部:"
-
 msgid "Last resort"
 msgstr "備用成員"
 
@@ -180,61 +153,66 @@ msgstr "載入中"
 msgid "Local source interface"
 msgstr "本地源介面"
 
-msgid "MWAN Config"
-msgstr "MWAN 配置檔案"
+msgid "MWAN - Globals"
+msgstr ""
 
-msgid "MWAN Detailed Status"
-msgstr "MWAN 詳細狀態"
+msgid "MWAN - Interfaces"
+msgstr ""
 
-msgid "MWAN Interface Configuration"
-msgstr "MWAN 介面配置"
+msgid "MWAN - Members"
+msgstr ""
 
-msgid "MWAN Interface Configuration - %s"
-msgstr "MWAN 介面配置 - %s"
+msgid "MWAN - Notification"
+msgstr ""
 
-msgid "MWAN Interface Diagnostics"
-msgstr "MWAN 介面診斷"
+msgid "MWAN - Policies"
+msgstr ""
 
-msgid "MWAN Interface Live Status"
-msgstr "MWAN 介面實時狀態"
+msgid "MWAN - Rules"
+msgstr ""
 
-msgid "MWAN Interface Systemlog"
-msgstr "MWAN 介面系統日誌"
+msgid "MWAN Interface Configuration - %s"
+msgstr "MWAN 介面配置 - %s"
 
-msgid "MWAN Member Configuration"
-msgstr "MWAN 成員配置"
+msgid "MWAN Interfaces"
+msgstr ""
 
 msgid "MWAN Member Configuration - %s"
 msgstr "MWAN 成員配置 - %s"
 
-msgid "MWAN Policy Configuration"
-msgstr "MWAN 策略配置"
-
 msgid "MWAN Policy Configuration - %s"
 msgstr "MWAN 策略配置 - %s"
 
-msgid "MWAN Rule Configuration"
-msgstr "MWAN 規則配置"
-
 msgid "MWAN Rule Configuration - %s"
 msgstr "MWAN 規則配置 - %s"
 
-msgid "MWAN Service Control"
-msgstr "MWAN 服務控制"
+msgid "MWAN Status - Detail"
+msgstr ""
+
+msgid "MWAN Status - Diagnostics"
+msgstr ""
+
+msgid "MWAN Status - Troubleshooting"
+msgstr ""
 
 msgid ""
-"MWAN supports up to 250 physical and/or logical interfaces<br />MWAN "
+"MWAN supports up to 252 physical and/or logical interfaces<br />MWAN "
 "requires that all interfaces have a unique metric configured in /etc/config/"
 "network<br />Names must match the interface name found in /etc/config/"
-"network (see advanced tab)<br />Names may contain characters A-Z, a-z, 0-9, "
-"_ and no spaces<br />Interfaces may not share the same name as configured "
-"members, policies or rules"
+"network<br />Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br /"
+">Interfaces may not share the same name as configured members, policies or "
+"rules"
 msgstr ""
-"MWAN 支援最多 250 個物理或邏輯介面。<br />MWAN 要求所有介面必須在 /etc/"
+"MWAN 支援最多 252 個物理或邏輯介面。<br />MWAN 要求所有介面必須在 /etc/"
 "config/network 中設定唯一的閘道器躍點。<br />名稱必須與 /etc/config/network "
-"中的介面名稱匹配。(可檢視“高階”選項卡)<br />名稱允許包括 A-Z、a-z、0-9、_ "
-"但是不能有空格。<br />介面不應該與成員、策略、規則中的任意一個設定項使用相同"
-"的名稱"
+"中的介面名稱匹配。<br />名稱允許包括 A-Z、a-z、0-9、_ 但是不能有空格。<br />"
+"介面不應該與成員、策略、規則中的任意一個設定項使用相同的名稱"
+
+msgid "Max packet latency [ms]"
+msgstr ""
+
+msgid "Max packet loss [%]"
+msgstr ""
 
 msgid ""
 "May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
@@ -267,6 +245,12 @@ msgstr "分配的成員"
 msgid "Metric"
 msgstr "躍點數"
 
+msgid "Min packet latency [ms]"
+msgstr ""
+
+msgid "Min packet loss [%]"
+msgstr ""
+
 msgid ""
 "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
 "youtube.com/youtube\")"
@@ -274,26 +258,14 @@ msgstr ""
 "匹配 IPset 規則列表名稱。需要先配置 /etc/dnsmasq.conf 中的 IPset 規則(例"
 "如:“ipset=/youtube.com/youtube”)"
 
-msgid "Network Config"
-msgstr "網路配置檔案"
-
 msgid "No"
 msgstr "否"
 
 msgid "No MWAN interfaces found"
 msgstr "沒有找到 MWAN 介面"
 
-msgid "No MWAN systemlog history found"
-msgstr "沒有在系統日誌中找到 MWAN 歷史資訊"
-
-msgid "No detailed status information available"
-msgstr "沒有狀態詳細資訊可用"
-
-msgid "No diagnostic results returned"
-msgstr "沒有返回診斷結果"
-
-msgid "No protocol specified"
-msgstr "未指定協議"
+msgid "Notification"
+msgstr ""
 
 msgid "Offline"
 msgstr "離線"
@@ -301,15 +273,6 @@ msgstr "離線"
 msgid "Online"
 msgstr "線上"
 
-msgid "Online (tracking active)"
-msgstr "線上(跟蹤啟用中)"
-
-msgid "Online (tracking off)"
-msgstr "線上(跟蹤已關閉)"
-
-msgid "Overview"
-msgstr "概況"
-
 msgid "Ping count"
 msgstr "Ping 計數"
 
@@ -340,11 +303,11 @@ msgstr "策略"
 msgid ""
 "Policies are profiles grouping one or more members controlling how MWAN "
 "distributes traffic<br />Member interfaces with lower metrics are used "
-"first. Interfaces with the same metric load-balance<br />Load-balanced "
-"member interfaces distribute more traffic out those with higher weights<br /"
-">Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
-"15 characters or less<br />Policies may not share the same name as "
-"configured interfaces, members or rules"
+"first<br />Member interfaces with the same metric will be load-balanced<br /"
+">Load-balanced member interfaces distribute more traffic out those with "
+"higher weights<br />Names may contain characters A-Z, a-z, 0-9, _ and no "
+"spaces<br />Names must be 15 characters or less<br />Policies may not share "
+"the same name as configured interfaces, members or rules"
 msgstr ""
 "“策略”把成員進行分組,告訴 MWAN 如何分配“規則”中使用這一策略的流量<br />擁有"
 "較低躍點數的成員將會被優先使用。擁有相同躍點數的成員把流量進行負載均衡。<br /"
@@ -364,9 +327,6 @@ msgstr "通訊協議"
 msgid "Recovery interval"
 msgstr "故障恢復間隔"
 
-msgid "Restart MWAN"
-msgstr "重啟 MWAN"
-
 msgid "Rule"
 msgstr "規則"
 
@@ -374,22 +334,16 @@ msgid "Rules"
 msgstr "規則"
 
 msgid ""
-"Rules specify which traffic will use a particular MWAN policy based on IP "
-"address, port or protocol<br />Rules are matched from top to bottom. Rules "
-"below a matching rule are ignored. Traffic not matching any rule is routed "
-"using the main routing table<br />Traffic destined for known (other than "
-"default) networks is handled by the main routing table. Traffic matching a "
-"rule, but all WAN interfaces for that policy are down will be blackholed<br /"
-">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Rules may "
-"not share the same name as configured interfaces, members or policies"
-msgstr ""
-"“規則”基於 IP 位址、協議、埠把流量劃分到指定的“策略”中。<br />規則按照從上到"
-"下的順序進行匹配。除了第一條能夠匹配一次通訊的規則以外,其它規則將被忽略。不"
-"匹配任何規則的通訊將會由系統預設路由表進行。<br />來自已知的網路的轉發流量由"
-"系統預設路由表接手,然後 MWAN 從中匹配出相應的流量並轉移到 MWAN 自己的路由"
-"表。但是所有被劃分到一個無法使用的策略的流量將會無法正常進行路由。<br />名稱"
-"允許包括A-Z、a-z、0-9、_ 但是不能有空格。<br />規則不應該與介面、成員、策略中"
-"的任意一個設定項使用相同的名稱"
+"Rules specify which traffic will use a particular MWAN policy<br />Rules are "
+"based on IP address, port or protocol<br />Rules are matched from top to "
+"bottom<br />Rules below a matching rule are ignored<br />Traffic not "
+"matching any rule is routed using the main routing table<br />Traffic "
+"destined for known (other than default) networks is handled by the main "
+"routing table<br />Traffic matching a rule, but all WAN interfaces for that "
+"policy are down will be blackholed<br />Names may contain characters A-Z, a-"
+"z, 0-9, _ and no spaces<br />Rules may not share the same name as configured "
+"interfaces, members or policies"
+msgstr ""
 
 msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
 msgstr "單位為秒。接受的值:1-1000000。留空則使用預設值 600 秒"
@@ -400,23 +354,20 @@ msgstr "源位址"
 msgid "Source port"
 msgstr "源埠"
 
-msgid "Start MWAN"
-msgstr "啟動 MWAN"
-
 msgid "Sticky"
 msgstr "粘滯模式"
 
 msgid "Sticky timeout"
 msgstr "粘滯超時"
 
-msgid "Stop MWAN"
-msgstr "停止 MWAN"
-
 msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
 msgstr "支援 CIDR 記法(例如:\"192.168.100.0/24\")不含引號"
 
-msgid "There are currently %d of 250 supported interfaces configured"
-msgstr "當前已配置 %d 個介面,最大支援 250 個"
+msgid "Task"
+msgstr ""
+
+msgid "There are currently %d of %d supported interfaces configured"
+msgstr "當前已配置 %d 個介面,最大支援 %d 個"
 
 msgid ""
 "This displays the metric assigned to this interface in /etc/config/network"
@@ -436,30 +387,14 @@ msgid ""
 "will<br />be executed with each netifd hotplug interface event<br />on "
 "interfaces for which mwan3 is enabled.<br /><br />There are three main "
 "environment variables that are passed to this script.<br /><br />$ACTION "
-"Either \"ifup\" or \"ifdown\"<br />$INTERFACE Name of the interface which "
-"went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE Physical device name "
-"which interface went up or down (e.g. \"eth0\" or \"wwan0\")<br /><br />"
+"<br />* \"ifup\" Is called by netifd and mwan3track <br />* \"ifdown\" Is "
+"called by netifd and mwan3track <br />* \"connected\" Is only called by "
+"mwan3track if tracking was successful <br />* \"disconnected\" Is only "
+"called by mwan3track if tracking has failed <br />$INTERFACE Name of the "
+"interface which went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE "
+"Physical device name which interface went up or down (e.g. \"eth0\" or "
+"\"wwan0\")<br /><br />"
 msgstr ""
-"這裡允許您修改“/etc/mwan3.user”的內容。<br />該檔案在 sysupgrade 期間也會保"
-"留。<br /><br />注意:<br />該檔案會作為 shell 指令碼解釋。<br />指令碼的第一"
-"行必須是&#34;#!/bin/sh&#34;,不帶引號。<br />以#開頭的行是註釋,不會執行。"
-"<br />將您的自定義 mwan3 動作放在這裡,他們將<br />在啟用 mwan3 的介面上<br /"
-">在 netifd hotplug 介面事件時執行。<br /><br />有三個主要的環境變數傳遞給這個"
-"腳本。<br /><br />$ACTION “ifup”或“ifdown”<br />$INTERFACE 啟動或停止的介面名"
-"(例如“wan”或“wwan”)<br />$DEVICE 啟動或停止介面的物理裝置名(例"
-"如“eth0”或“wwan0”)<br /><br />"
-
-msgid "This section allows you to modify the contents of /etc/config/mwan3"
-msgstr "這裡允許您修改 /etc/config/mwan3 的內容"
-
-msgid "This section allows you to modify the contents of /etc/config/network"
-msgstr "這裡允許您修改 /etc/config/network 的內容"
-
-msgid "This section allows you to modify the contents of /etc/config/wireless"
-msgstr "這裡允許您修改 /etc/config/wireless 的內容"
-
-msgid "Tracking IP"
-msgstr "跟蹤的 IP"
 
 msgid "Tracking hostname or IP address"
 msgstr "跟蹤的主機或 IP 位址"
@@ -470,9 +405,6 @@ msgstr "跟蹤方式"
 msgid "Tracking reliability"
 msgstr "跟蹤可靠性"
 
-msgid "Traffic Rules"
-msgstr "流量規則"
-
 msgid ""
 "Traffic from the same source IP address that previously matched this rule "
 "within the sticky timeout period will use the same WAN interface"
@@ -483,88 +415,41 @@ msgstr ""
 msgid "Troubleshooting"
 msgstr "故障排除"
 
-msgid "Troubleshooting Data"
-msgstr "故障排除資料"
-
 msgid ""
 "Use the IP address of this interface as source IP address for traffic "
 "initiated by the router itself"
 msgstr "使用該介面的 IP 位址作為路由器本身發起的流量的源 IP 位址"
 
-msgid "View the contents of /etc/protocols for protocol descriptions"
-msgstr "請檢視 /etc/protocols 獲取可選協議詳情"
-
-msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
-msgstr "警告:已配置 %d 個介面,超過最大值 250!"
-
-msgid ""
-"WARNING: Some interfaces are configured incorrectly or not at all in /etc/"
-"config/network!"
-msgstr "警告:某些介面配置不正確或未配置到 /etc/config/network!"
-
-msgid ""
-"WARNING: Some interfaces have a higher reliability requirement than there "
-"are tracking IP addresses!"
-msgstr "警告:某些介面的跟蹤可靠性要求大於了跟蹤 IP 位址總數!"
-
-msgid ""
-"WARNING: Some interfaces have duplicate metrics configured in /etc/config/"
-"network!"
-msgstr "警告:某些介面在 /etc/config/network 中配置了相同的躍點數!"
-
-msgid ""
-"WARNING: Some interfaces have no default route in the main routing table!"
-msgstr "警告:某些介面在主路由表中沒有預設路由!"
-
-msgid ""
-"WARNING: Some interfaces have no metric configured in /etc/config/network!"
-msgstr "警告:某些介面沒有在 /etc/config/network 中配置躍點數!"
-
-msgid ""
-"WARNING: Some policies have names exceeding the maximum of 15 characters!"
-msgstr "警告:某些策略的名稱超過了 15 個字元!"
-
-msgid ""
-"WARNING: Some rules have a port configured with no or improper protocol "
-"specified! Please configure a specific protocol!"
-msgstr "警告:某些規則指定了埠卻沒有配置或配置了不正確的協議,請重新指定協議!"
+msgid "View the content of /etc/protocols for protocol description"
+msgstr ""
 
-msgid ""
-"WARNING: This and other interfaces have duplicate metrics configured in /etc/"
-"config/network!"
-msgstr "警告:此介面和其他介面在 /etc/config/network 中配置了相同的躍點數!"
+msgid "WARNING: %d interfaces are configured exceeding the maximum of %d!"
+msgstr "警告:已配置 %d 個介面,超過最大值 %d!"
 
-msgid ""
-"WARNING: This interface has a higher reliability requirement than there are "
-"tracking IP addresses!"
-msgstr "警告:此介面的跟蹤可靠性要求大於了跟蹤 IP 位址總數!"
+msgid "WARNING: Interface %s are not found in /etc/config/network"
+msgstr ""
 
-msgid "WARNING: This interface has no default route in the main routing table!"
-msgstr "警告:此介面在主路由表中沒有預設路由!"
+msgid "WARNING: Interface %s has a duplicate metric %s configured"
+msgstr ""
 
 msgid ""
-"WARNING: This interface has no metric configured in /etc/config/network!"
-msgstr "警告:此介面沒有在 /etc/config/network 中配置躍點數!"
+"WARNING: Interface %s has a higher reliability requirement than tracking "
+"hosts (%d)"
+msgstr ""
 
-msgid ""
-"WARNING: This interface is configured incorrectly or not at all in /etc/"
-"config/network!"
-msgstr "警告:此介面配置不正確或未配置到 /etc/config/network!"
+msgid "WARNING: Interface %s has no default route in the main routing table"
+msgstr ""
 
-msgid ""
-"WARNING: This policy's name is %d characters exceeding the maximum of 15!"
-msgstr "警告:此策略的名稱具有 %d 個字元,超過了 15 個字元!"
+msgid "WARNING: Policy %s has exceeding the maximum name of 15 characters"
+msgstr ""
 
 msgid ""
-"WARNING: This rule is incorrectly configured with no or improper protocol "
-"specified! Please configure a specific protocol!"
-msgstr "警告:此規則沒有配置或配置了不正確的協議,請重新指定協議!"
-
-msgid "Waiting for MWAN to %s..."
-msgstr "等待 MWAN %s..."
+"WARNING: Rule %s have a port configured with no or improper protocol "
+"specified!"
+msgstr ""
 
-msgid "Waiting for diagnostic results..."
-msgstr "等待診斷結果..."
+msgid "Waiting for command to complete..."
+msgstr ""
 
 msgid "Weight"
 msgstr "比重"
@@ -573,9 +458,6 @@ msgid ""
 "When all policy members are offline use this behavior for matched traffic"
 msgstr "當所有策略成員都無法使用的時候,對使用該策略的流量使用這個操作"
 
-msgid "Wireless Config"
-msgstr "無線配置"
-
 msgid "Yes"
 msgstr "是"
 
@@ -597,17 +479,258 @@ msgstr "ifup"
 msgid "never"
 msgstr "從不"
 
-msgid "restart"
-msgstr "重啟"
+msgid "unreachable (reject)"
+msgstr "不可達(拒絕)"
+
+#~ msgid "Online (tracking active)"
+#~ msgstr "線上(跟蹤啟用中)"
 
-msgid "start"
-msgstr "啟動"
+#~ msgid "MWAN Interface Live Status"
+#~ msgstr "MWAN 介面實時狀態"
 
-msgid "stop"
-msgstr "停止"
+#~ msgid "Online (tracking off)"
+#~ msgstr "線上(跟蹤已關閉)"
 
-msgid "unreachable (reject)"
-msgstr "不可達(拒絕)"
+#~ msgid ""
+#~ "This section allows you to modify the content of \"/etc/mwan3.user\".<br /"
+#~ ">The file is also preserved during sysupgrade.<br /><br />Notes:<br /"
+#~ ">This file is interpreted as a shell script.<br />The first line of the "
+#~ "script must be &#34;#!/bin/sh&#34; without quotes.<br />Lines beginning "
+#~ "with # are comments and are not executed.<br />Put your custom mwan3 "
+#~ "action here, they will<br />be executed with each netifd hotplug "
+#~ "interface event<br />on interfaces for which mwan3 is enabled.<br /><br /"
+#~ ">There are three main environment variables that are passed to this "
+#~ "script.<br /><br />$ACTION Either \"ifup\" or \"ifdown\"<br />$INTERFACE "
+#~ "Name of the interface which went up or down (e.g. \"wan\" or \"wwan"
+#~ "\")<br />$DEVICE Physical device name which interface went up or down (e."
+#~ "g. \"eth0\" or \"wwan0\")<br /><br />"
+#~ msgstr ""
+#~ "這裡允許您修改“/etc/mwan3.user”的內容。<br />該檔案在 sysupgrade 期間也會"
+#~ "保留。<br /><br />注意:<br />該檔案會作為 shell 指令碼解釋。<br />指令碼"
+#~ "的第一行必須是&#34;#!/bin/sh&#34;,不帶引號。<br />以#開頭的行是註釋,不會"
+#~ "執行。<br />將您的自定義 mwan3 動作放在這裡,他們將<br />在啟用 mwan3 的介"
+#~ "面上<br />在 netifd hotplug 介面事件時執行。<br /><br />有三個主要的環境變"
+#~ "數傳遞給這個腳本。<br /><br />$ACTION “ifup”或“ifdown”<br />$INTERFACE 啟"
+#~ "動或停止的介面名(例如“wan”或“wwan”)<br />$DEVICE 啟動或停止介面的物理裝"
+#~ "置名(例如“eth0”或“wwan0”)<br /><br />"
+
+#~ msgid "Currently Configured Interfaces"
+#~ msgstr "當前配置的介面"
+
+#~ msgid "Currently Configured Members"
+#~ msgstr "當前配置的成員"
+
+#~ msgid "Currently Configured Policies"
+#~ msgstr "當前配置的策略"
+
+#~ msgid "Detailed Status"
+#~ msgstr "詳細狀態"
+
+#~ msgid "Diagnostic Results"
+#~ msgstr "診斷結果"
+
+#~ msgid "Error collecting troubleshooting information"
+#~ msgstr "收集故障排除資訊時出錯"
+
+#~ msgid "Errors"
+#~ msgstr "錯誤"
+
+#~ msgid "Globals mwan3 options"
+#~ msgstr "全域性 mwan3 選項"
+
+#~ msgid "Interface Status"
+#~ msgstr "介面狀態"
+
+#~ msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :"
+#~ msgstr "最近 50 條 MWAN 系統日誌,最新條目排在頂部:"
+
+#~ msgid "MWAN Detailed Status"
+#~ msgstr "MWAN 詳細狀態"
+
+#~ msgid "MWAN Interface Configuration"
+#~ msgstr "MWAN 介面配置"
+
+#~ msgid "MWAN Interface Diagnostics"
+#~ msgstr "MWAN 介面診斷"
+
+#~ msgid "MWAN Interface Systemlog"
+#~ msgstr "MWAN 介面系統日誌"
+
+#~ msgid "MWAN Member Configuration"
+#~ msgstr "MWAN 成員配置"
+
+#~ msgid "MWAN Policy Configuration"
+#~ msgstr "MWAN 策略配置"
+
+#~ msgid "MWAN Rule Configuration"
+#~ msgstr "MWAN 規則配置"
+
+#~ msgid "MWAN Service Control"
+#~ msgstr "MWAN 服務控制"
+
+#~ msgid "No MWAN systemlog history found"
+#~ msgstr "沒有在系統日誌中找到 MWAN 歷史資訊"
+
+#~ msgid "No detailed status information available"
+#~ msgstr "沒有狀態詳細資訊可用"
+
+#~ msgid "No diagnostic results returned"
+#~ msgstr "沒有返回診斷結果"
+
+#~ msgid "No protocol specified"
+#~ msgstr "未指定協議"
+
+#~ msgid "Restart MWAN"
+#~ msgstr "重啟 MWAN"
+
+#~ msgid ""
+#~ "Rules specify which traffic will use a particular MWAN policy based on IP "
+#~ "address, port or protocol<br />Rules are matched from top to bottom. "
+#~ "Rules below a matching rule are ignored. Traffic not matching any rule is "
+#~ "routed using the main routing table<br />Traffic destined for known "
+#~ "(other than default) networks is handled by the main routing table. "
+#~ "Traffic matching a rule, but all WAN interfaces for that policy are down "
+#~ "will be blackholed<br />Names may contain characters A-Z, a-z, 0-9, _ and "
+#~ "no spaces<br />Rules may not share the same name as configured "
+#~ "interfaces, members or policies"
+#~ msgstr ""
+#~ "“規則”基於 IP 位址、協議、埠把流量劃分到指定的“策略”中。<br />規則按照從上"
+#~ "到下的順序進行匹配。除了第一條能夠匹配一次通訊的規則以外,其它規則將被忽"
+#~ "略。不匹配任何規則的通訊將會由系統預設路由表進行。<br />來自已知的網路的轉"
+#~ "發流量由系統預設路由表接手,然後 MWAN 從中匹配出相應的流量並轉移到 MWAN 自"
+#~ "己的路由表。但是所有被劃分到一個無法使用的策略的流量將會無法正常進行路由。"
+#~ "<br />名稱允許包括A-Z、a-z、0-9、_ 但是不能有空格。<br />規則不應該與介"
+#~ "面、成員、策略中的任意一個設定項使用相同的名稱"
+
+#~ msgid "Start MWAN"
+#~ msgstr "啟動 MWAN"
+
+#~ msgid "Stop MWAN"
+#~ msgstr "停止 MWAN"
+
+#~ msgid "Tracking IP"
+#~ msgstr "跟蹤的 IP"
+
+#~ msgid "Traffic Rules"
+#~ msgstr "流量規則"
+
+#~ msgid "Troubleshooting Data"
+#~ msgstr "故障排除資料"
+
+#~ msgid "View the contents of /etc/protocols for protocol descriptions"
+#~ msgstr "請檢視 /etc/protocols 獲取可選協議詳情"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces are configured incorrectly or not at all in /etc/"
+#~ "config/network!"
+#~ msgstr "警告:某些介面配置不正確或未配置到 /etc/config/network!"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces have a higher reliability requirement than there "
+#~ "are tracking IP addresses!"
+#~ msgstr "警告:某些介面的跟蹤可靠性要求大於了跟蹤 IP 位址總數!"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces have duplicate metrics configured in /etc/config/"
+#~ "network!"
+#~ msgstr "警告:某些介面在 /etc/config/network 中配置了相同的躍點數!"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces have no default route in the main routing table!"
+#~ msgstr "警告:某些介面在主路由表中沒有預設路由!"
+
+#~ msgid ""
+#~ "WARNING: Some interfaces have no metric configured in /etc/config/network!"
+#~ msgstr "警告:某些介面沒有在 /etc/config/network 中配置躍點數!"
+
+#~ msgid ""
+#~ "WARNING: Some policies have names exceeding the maximum of 15 characters!"
+#~ msgstr "警告:某些策略的名稱超過了 15 個字元!"
+
+#~ msgid ""
+#~ "WARNING: Some rules have a port configured with no or improper protocol "
+#~ "specified! Please configure a specific protocol!"
+#~ msgstr ""
+#~ "警告:某些規則指定了埠卻沒有配置或配置了不正確的協議,請重新指定協議!"
+
+#~ msgid ""
+#~ "WARNING: This and other interfaces have duplicate metrics configured in /"
+#~ "etc/config/network!"
+#~ msgstr "警告:此介面和其他介面在 /etc/config/network 中配置了相同的躍點數!"
+
+#~ msgid ""
+#~ "WARNING: This interface has a higher reliability requirement than there "
+#~ "are tracking IP addresses!"
+#~ msgstr "警告:此介面的跟蹤可靠性要求大於了跟蹤 IP 位址總數!"
+
+#~ msgid ""
+#~ "WARNING: This interface has no default route in the main routing table!"
+#~ msgstr "警告:此介面在主路由表中沒有預設路由!"
+
+#~ msgid ""
+#~ "WARNING: This interface has no metric configured in /etc/config/network!"
+#~ msgstr "警告:此介面沒有在 /etc/config/network 中配置躍點數!"
+
+#~ msgid ""
+#~ "WARNING: This interface is configured incorrectly or not at all in /etc/"
+#~ "config/network!"
+#~ msgstr "警告:此介面配置不正確或未配置到 /etc/config/network!"
+
+#~ msgid ""
+#~ "WARNING: This policy's name is %d characters exceeding the maximum of 15!"
+#~ msgstr "警告:此策略的名稱具有 %d 個字元,超過了 15 個字元!"
+
+#~ msgid ""
+#~ "WARNING: This rule is incorrectly configured with no or improper protocol "
+#~ "specified! Please configure a specific protocol!"
+#~ msgstr "警告:此規則沒有配置或配置了不正確的協議,請重新指定協議!"
+
+#~ msgid "Waiting for MWAN to %s..."
+#~ msgstr "等待 MWAN %s..."
+
+#~ msgid "Waiting for diagnostic results..."
+#~ msgstr "等待診斷結果..."
+
+#~ msgid "restart"
+#~ msgstr "重啟"
+
+#~ msgid "start"
+#~ msgstr "啟動"
+
+#~ msgid "stop"
+#~ msgstr "停止"
+
+#~ msgid "Advanced"
+#~ msgstr "高階"
+
+#~ msgid "Configuration"
+#~ msgstr "配置"
+
+#~ msgid "Hotplug Script"
+#~ msgstr "Hotplug 指令碼"
+
+#~ msgid "MWAN Config"
+#~ msgstr "MWAN 配置檔案"
+
+#~ msgid "Network Config"
+#~ msgstr "網路配置檔案"
+
+#~ msgid "Overview"
+#~ msgstr "概況"
+
+#~ msgid "This section allows you to modify the contents of /etc/config/mwan3"
+#~ msgstr "這裡允許您修改 /etc/config/mwan3 的內容"
+
+#~ msgid ""
+#~ "This section allows you to modify the contents of /etc/config/network"
+#~ msgstr "這裡允許您修改 /etc/config/network 的內容"
+
+#~ msgid ""
+#~ "This section allows you to modify the contents of /etc/config/wireless"
+#~ msgstr "這裡允許您修改 /etc/config/wireless 的內容"
+
+#~ msgid "Wireless Config"
+#~ msgstr "無線配置"
 
 #~ msgid "Restore default hotplug script"
 #~ msgstr "恢復預設的 hotplug 指令碼"
diff --git a/applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak b/applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak
deleted file mode 100755 (executable)
index 6e2875e..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/sh
-
-# to enable this script uncomment the case loop at the bottom
-# to report mwan status on interface hotplug ifup/ifdown events modify the lines in the send_alert function
-
-send_alert()
-{
-       # variable "$1" stores the MWAN status information
-       # insert your code here to send the contents of "$1"
-       echo "$1"
-}
-
-gather_event_info()
-{
-       # create event information message
-       local EVENT_INFO="Interface [ "$INTERFACE" ($DEVICE) ] on router [ "$(uci -p /var/state get system.@system[0].hostname)" ] has triggered a hotplug [ "$ACTION" ] event on "$(date +"%a %b %d %Y %T %Z")""
-
-       # get current interface, policy and rule status
-       local CURRENT_STATUS="$(/usr/sbin/mwan3 status)"
-
-       # get last 50 MWAN systemlog messages
-       local MWAN_LOG="$(echo -e "Last 50 MWAN systemlog entries. Newest entries sorted at the top:\n$(logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x')")"
-
-       # pass event info to send_alert function
-       send_alert "$(echo -e "$EVENT_INFO\n\n$CURRENT_STATUS\n\n$MWAN_LOG")"
-}
-
-#case "$ACTION" in
-#      ifup)
-#              gather_event_info
-#      ;;
-#
-#      ifdown)
-#              gather_event_info
-#      ;;
-#esac
-
-exit 0
index 50c65ad67804240ea7eb2136a342116995e2cab2..150ea5a3f106b661f554280a9e90609e236ca2d9 100755 (executable)
@@ -4,7 +4,7 @@
 uci -q batch <<-EOF >/dev/null
        del ucitrack.@mwan3[-1]
        add ucitrack mwan3
-       set ucitrack.@mwan3[-1].exec="/usr/sbin/mwan3 restart"
+       set ucitrack.@mwan3[-1].exec="/etc/init.d/mwan3 reload"
        commit ucitrack
 EOF
 
index bb56bc6e6eb7bc297d6c7b96203ee3e4397a21bb..a8c577929ab93f6cf732ec06edd3eb88d4f90eee 100644 (file)
@@ -28,16 +28,17 @@ local function exec(cmd, args, writer)
 
                while true do
                        local buffer = fdi:read(2048)
-                       local wpid, stat, code = nixio.waitpid(pid, "nohang")
 
-                       if writer and buffer and #buffer > 0 then
-                               writer(buffer)
+                       if not buffer or #buffer == 0 then
+                               break
                        end
 
-                       if wpid and stat == "exited" then
-                               break
+                       if writer then
+                               writer(buffer)
                        end
                end
+
+               nixio.waitpid(pid)
        elseif pid == 0 then
                nixio.dup(fdo, nixio.stdout)
                fdi:close()
index b5931e0dfee0aef224d9bcc65d320a1915aceb29..dddc0c1380eae836982b6ff3a9671834f23d9a1d 100644 (file)
@@ -9,7 +9,7 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ja\n"
-"X-Generator: Poedit 2.0.3\n"
+"X-Generator: Poedit 2.0.6\n"
 
 msgid "%d IPv4-only hosts"
 msgstr "%d IPv4 限定ホスト"
@@ -48,7 +48,7 @@ msgid "30s - refresh twice per minute for reasonably current stats"
 msgstr "30s - 現在の状態の把握に適切な1分間に2回のリフレッシュ(30秒)"
 
 msgid "5m - rarely refresh to avoid frequently clearing conntrack counters"
-msgstr ""
+msgstr "5m - conntrack カウンターの頻繁なクリアを防ぐ、低頻度のリフレッシュ"
 
 msgid "60s - commit minutely, useful for non-flash storage"
 msgstr "60秒 - 1分毎のコミット、非フラッシュ ストレージに有用"
@@ -236,6 +236,8 @@ msgid ""
 "Interval at which traffic counters of still established connections are "
 "refreshed from netlink information."
 msgstr ""
+"確立中の接続のトラフィック カウンターが netlink 情報によりリフレッシュされる"
+"間隔です。"
 
 msgid "Invalid or empty backup archive"
 msgstr "無効または空のバックアップ アーカイブです。"
@@ -345,7 +347,7 @@ msgstr ""
 "ベースの増大を許可します。"
 
 msgid "Traffic / Host"
-msgstr "ã\83\88ã\83©ã\83\95ã\82£ã\83\83ã\82¯ / ã\83\9bã\82¹ã\83\88"
+msgstr "ã\83\9bã\82¹ã\83\88æ¯\8eã\81®ã\83\88ã\83©ã\83\95ã\82£ã\83\83ã\82¯"
 
 msgid "Traffic Distribution"
 msgstr "トラフィック内訳"
diff --git a/applications/luci-app-nlbwmon/po/ru/nlbwmon.po b/applications/luci-app-nlbwmon/po/ru/nlbwmon.po
new file mode 100644 (file)
index 0000000..85b1890
--- /dev/null
@@ -0,0 +1,404 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: nlbwmon\n"
+"POT-Creation-Date: 2018-01-21 19:45+0300\n"
+"PO-Revision-Date: 2018-01-24 15:03+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"
+
+msgid "%d IPv4-only hosts"
+msgstr "%d только IPv4 хост(а)"
+
+msgid "%d IPv6-only hosts"
+msgstr "%d только IPv6 хост(а)"
+
+msgid "%d dual-stack hosts"
+msgstr "%d хост(а) с двумя стеками"
+
+msgid "%s and %s"
+msgstr "%s и %s"
+
+msgid "%s, %s and %s"
+msgstr "%s, %s и %s"
+
+msgid "-1 - Restart every last day of month"
+msgstr "-1 - Перезапуск каждый последний 'День месяца'"
+
+msgid "-7 - Restart a week before end of month"
+msgstr "-7 - Перезапуск за неделю до конца месяца"
+
+msgid "1 - Restart every 1st of month"
+msgstr "1 - Перезапуск каждый 1-й месяц."
+
+msgid "10m - frequent commits at the expense of flash wear"
+msgstr "10m - частое сохранение, повышенный износ флеш памяти."
+
+msgid "12h - compromise between risk of data loss and flash wear"
+msgstr ""
+"12h - компромисс между риском потери данных и нагрузкой на флеш память."
+
+msgid "24h - least flash wear at the expense of data loss risk"
+msgstr "24h - наименьшая нагрузка на флеш память, но есть риск потери данных."
+
+msgid "30s - refresh twice per minute for reasonably current stats"
+msgstr ""
+"30s - обновлять дважды в минуту, что достаточно для отображения текущей "
+"статистики."
+
+msgid "5m - rarely refresh to avoid frequently clearing conntrack counters"
+msgstr ""
+"5m - частота обновления, чтобы избежать частого сброса значений счетчиков "
+"отслеживания соединений."
+
+msgid "60s - commit minutely, useful for non-flash storage"
+msgstr "60s - поминутное сохранение, флеш память не используется."
+
+msgid "<big id=\"conn-total\">0</big> connections"
+msgstr "<big id=\"conn-total\">0</big> соединений"
+
+msgid "<big id=\"host-total\">0</big> hosts"
+msgstr "<big id=\"host-total\">0</big> хост(а)"
+
+msgid "<big id=\"ipv6-hosts\">0%</big> IPv6 support rate among hosts"
+msgstr "<big id=\"ipv6-hosts\">0%</big> IPv6 скорость поддержки среди хостов"
+
+msgid "<big id=\"ipv6-rx\">0B</big> total IPv6 download"
+msgstr "<big id=\"ipv6-rx\">0B</big> всего IPv6 получено"
+
+msgid "<big id=\"ipv6-share\">0%</big> of the total traffic is IPv6"
+msgstr "<big id=\"ipv6-share\">0%</big> общий трафик IPv6"
+
+msgid "<big id=\"ipv6-tx\">0B</big> total IPv6 upload"
+msgstr "<big id=\"ipv6-tx\">0B</big> всего IPv6 отправлено"
+
+msgid "<big id=\"layer7-most-conn\">0</big> cause the most connections"
+msgstr "<big id=\"layer7-most-conn\">0</big> максимальное кол-во соединений"
+
+msgid "<big id=\"layer7-most-rx\">0</big> cause the most download"
+msgstr "<big id=\"layer7-most-rx\">0</big> максимальное получение (RX)"
+
+msgid "<big id=\"layer7-most-tx\">0</big> cause the most upload"
+msgstr "<big id=\"layer7-most-tx\">0</big> максимальная передача (TX)"
+
+msgid "<big id=\"layer7-total\">0</big> different application protocols"
+msgstr "<big id=\"layer7-total\">0</big> различное применение протоколов"
+
+msgid "<big id=\"rx-total\">0</big> download"
+msgstr "<big id=\"rx-total\">0</big> получение (RX)"
+
+msgid "<big id=\"tx-total\">0</big> upload"
+msgstr "<big id=\"tx-total\">0</big> передача (TX)"
+
+msgid "Accounting period"
+msgstr "Отчетный период"
+
+msgid "Advanced Settings"
+msgstr "Дополнительные настройки"
+
+msgid "Application"
+msgstr "Применение"
+
+msgid "Application Protocols"
+msgstr "Применение протоколов"
+
+msgid "Backup"
+msgstr "Резервная копия"
+
+msgid "Bandwidth Monitor"
+msgstr "Трафик"
+
+msgid "CSV, grouped by IP"
+msgstr "CSV, сгруппированный по IP-адресу"
+
+msgid "CSV, grouped by MAC"
+msgstr "CSV, сгруппированный по MAC-у"
+
+msgid "CSV, grouped by protocol"
+msgstr "CSV, сгруппированный по протоколу"
+
+msgid ""
+"Changing the accounting interval type will invalidate existing databases!"
+"<br /><strong><a href=\"%s\">Download backup</a></strong>."
+msgstr ""
+"Изменение типа интервала учета, приведет к аннулированию существующих баз "
+"данных!<br /><strong><a href=\"%s\">Загрузка резервной копии</a></strong>."
+
+msgid ""
+"Choose \"Day of month\" to restart the accounting period monthly on a "
+"specific date, e.g. every 3rd. Choose \"Fixed interval\" to restart the "
+"accounting period exactly every N days, beginning at a given date."
+msgstr ""
+"Выберите 'День месяца', чтобы перезапустить отчетный период ежемесячно на "
+"определенную дату например, каждое 3-е число месяца.<br />Выберите "
+"'Фиксированный интервал', чтобы перезапустить отчетный период через каждые N "
+"дней, начиная с заданной даты."
+
+msgid "Commit interval"
+msgstr "Интервал сохранения"
+
+msgid "Compress database"
+msgstr "Сжатие базы данных"
+
+msgid "Configuration"
+msgstr "Настройка config файла"
+
+msgid "Conn."
+msgstr "Соед."
+
+msgid "Connections"
+msgstr "Соединения"
+
+msgid "Connections / Host"
+msgstr "Соединения / Хост"
+
+msgid "Database directory"
+msgstr "Папка базы данных"
+
+msgid ""
+"Database storage directory. One file per accounting period will be placed "
+"into this directory."
+msgstr ""
+"Папка хранения базы данных. В эту папку будет помещен один файл за отчетный "
+"период."
+
+msgid "Day of month"
+msgstr "День месяца"
+
+msgid ""
+"Day of month to restart the accounting period. Use negative values to count "
+"towards the end of month, e.g. \"-5\" to specify the 27th of July or the "
+"24th of Februrary."
+msgstr ""
+"Выберите день месяца для перезапуска отчетного периода. Используйте "
+"отрицательные значения для подсчета к концу месяца, например, '-5', чтобы "
+"указать 27-е июля или 24-е февраля."
+
+msgid "Display"
+msgstr "Показать состояние"
+
+msgid "Down. (Bytes / Pkts.)"
+msgstr "Внутр. (Bytes / Pkts.)"
+
+msgid "Download (Bytes / Packets)"
+msgstr "Получение (Байты / Пакеты)"
+
+msgid "Download / Application"
+msgstr "Получение / Применение"
+
+msgid "Download Database Backup"
+msgstr "Загрузка резервной копии базы данных"
+
+msgid "Dualstack enabled hosts"
+msgstr "Dualstack включенный хост(а)"
+
+msgid "Due date"
+msgstr "Дата перезапуска"
+
+msgid "Export"
+msgstr "Сохранить статистику"
+
+msgid "Family"
+msgstr "Семейство протоколов"
+
+msgid "Fixed interval"
+msgstr "Фиксированный интервал"
+
+msgid "Force reload…"
+msgstr "Принудительная перезагрузка..."
+
+msgid "General Settings"
+msgstr "Основные настройки"
+
+msgid "Generate Backup"
+msgstr "Создать резервную копию"
+
+msgid "Host"
+msgstr "Хост"
+
+msgid "Hostname: <big id=\"bubble-hostname\">example.org</big>"
+msgstr "Имя хоста: <big id=\"bubble-hostname\">пример.org</big>"
+
+msgid "IPv4 vs. IPv6"
+msgstr "IPv4 против IPv6"
+
+msgid "IPv6"
+msgstr "IPv6"
+
+msgid "Interval"
+msgstr "Интервал"
+
+msgid ""
+"Interval at which the temporary in-memory database is committed to the "
+"persistent database directory."
+msgstr ""
+"Интервал, через который временная база данных из оперативной памяти "
+"сохраняется в папку постоянной базы данных."
+
+msgid ""
+"Interval at which traffic counters of still established connections are "
+"refreshed from netlink information."
+msgstr ""
+"Интервал при котором счетчики трафика все еще установленных подключений, "
+"обновляются из данных по сетевым соединениям."
+
+msgid "Invalid or empty backup archive"
+msgstr "Недопустимый или пустой архив резервной копии"
+
+msgid "JSON dump"
+msgstr "Дамп JSON"
+
+msgid "Length of accounting interval in days."
+msgstr "Продолжительность учетного интервала в днях."
+
+msgid "Local interfaces"
+msgstr "Локальные интерфейсы"
+
+msgid "Local subnets"
+msgstr "Локальные подсети"
+
+msgid "MAC"
+msgstr "MAC-адрес"
+
+msgid "Maximum entries"
+msgstr "Максимальное количество записей"
+
+msgid ""
+"Maximum number of accounting periods to keep, use zero to keep databases "
+"forever."
+msgstr ""
+"Максимальное количество отчетных периодов для хранения.<br />Установив "
+"значение '0', вы сохраните баз данных навсегда."
+
+msgid "Netlink Bandwidth Monitor"
+msgstr "Мониторинг трафика сети"
+
+msgid "Netlink Bandwidth Monitor - Backup / Restore"
+msgstr "Мониторинг трафика сети - Резервная копия / Восстановление"
+
+msgid "Netlink Bandwidth Monitor - Configuration"
+msgstr "Мониторинг трафика сети - Настройка"
+
+msgid "No data recorded yet."
+msgstr "Данные еще не записаны."
+
+msgid "Only conntrack streams from or to any of these networks are counted."
+msgstr "Отслеживаются только соединения из или в любую из этих сетей."
+
+msgid "Only conntrack streams from or to any of these subnets are counted."
+msgstr "Отслеживаются только соединения из или в любую из этих подсетей."
+
+msgid "Preallocate database"
+msgstr "Максимальный размер базы данных"
+
+msgid "Protocol"
+msgstr "Протокол"
+
+msgid "Protocol Mapping"
+msgstr "Сравнение протоколов"
+
+msgid ""
+"Protocol mappings to distinguish traffic types per host, one mapping per "
+"line. The first value specifies the IP protocol, the second value the port "
+"number and the third column is the name of the mapped protocol."
+msgstr ""
+"Сравнение протоколов для поиска различий типов трафика на хост, один "
+"протокол в строке.<br />Первое значение указывает IP-протокола, второе "
+"значение номер порта и третье имя протокола."
+
+msgid "Refresh interval"
+msgstr "Интервал обновления"
+
+msgid "Restore"
+msgstr "Восстановить"
+
+msgid "Restore Database Backup"
+msgstr "Восстановление резервной копии базы данных"
+
+msgid "Select accounting period:"
+msgstr "Выберите отчетный период:"
+
+msgid "Source IP"
+msgstr "IP-адрес источника"
+
+msgid "Start date"
+msgstr "Дата начала"
+
+msgid "Start date of the first accounting period, e.g. begin of ISP contract."
+msgstr ""
+"Дата начала первого отчетного периода, например начало договора с "
+"провайдером."
+
+msgid "Stored periods"
+msgstr "Сохраненные периоды"
+
+msgid ""
+"The Netlink Bandwidth Monitor (nlbwmon) is a lightweight, efficient traffic "
+"accounting program keeping track of bandwidth usage per host and protocol."
+msgstr ""
+"Мониторинг трафика сети (nlbwmon) - это легкая и эффективная программа учета "
+"трафика, отслеживающая использование хостами протоколов, портов и их "
+"активность."
+
+msgid "The following database files have been restored: %s"
+msgstr "Восстановлены следующие файлы базы данных: %s"
+
+msgid ""
+"The maximum amount of entries that should be put into the database, setting "
+"the limit to 0 will allow databases to grow indefinitely."
+msgstr ""
+"Максимальное количество записей, которые должны быть помещены в базу данных."
+"<br />Значение '0' позволит базам данных расти бесконечно."
+
+msgid "Traffic / Host"
+msgstr "Трафик / Хост"
+
+msgid "Traffic Distribution"
+msgstr "Распределение трафика"
+
+msgid "Up. (Bytes / Pkts.)"
+msgstr "Внешн. (Bytes / Pkts.)"
+
+msgid "Upload (Bytes / Packets)"
+msgstr "Передача (Байты / Пакеты)"
+
+msgid "Upload / Application"
+msgstr "Передача / Применение"
+
+msgid "Vendor: <big id=\"bubble-vendor\">Example Corp.</big>"
+msgstr "Производитель: <big id=\"bubble-vendor\">Например Corp.</big>"
+
+msgid "Warning"
+msgstr "Внимание"
+
+msgid ""
+"Whether to gzip compress archive databases. Compressing the database files "
+"makes accessing old data slightly slower but helps to reduce storage "
+"requirements."
+msgstr ""
+"Архивировать в tar.gz базы данных. Сжатие файлов базы данных, сделает доступ "
+"к данным немного медленнее, но поможет уменьшить требования к хранилищу."
+
+msgid ""
+"Whether to preallocate the maximum possible database size in memory. This is "
+"mainly useful for memory constrained systems which might not be able to "
+"satisfy memory allocation after longer uptime periods."
+msgstr ""
+"Заранее выделить максимально возможный размер базы данных в памяти. Это "
+"полезно для систем с ограниченным объемом памяти, которые могут быть не в "
+"состоянии выделить необходимый объем памяти после долгой бесперебойной "
+"работы."
+
+msgid "no traffic"
+msgstr "нет трафика"
+
+msgid "other"
+msgstr "другие"
diff --git a/applications/luci-app-noddos/po/ru/noddos.po b/applications/luci-app-noddos/po/ru/noddos.po
new file mode 100644 (file)
index 0000000..9c3d404
--- /dev/null
@@ -0,0 +1,115 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: noddos\n"
+"POT-Creation-Date: 2018-01-10 21:03+0300\n"
+"PO-Revision-Date: 2018-01-18 22:28+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"
+
+msgid "Class"
+msgstr "Класс"
+
+msgid "Client Firewall"
+msgstr "Клиент межсетевого экрана"
+
+msgid "Clients"
+msgstr "Клиенты"
+
+msgid "DhcpHostname"
+msgstr "DHCP имя хоста"
+
+msgid "DhcpVendor"
+msgstr "DHCP Vendor"
+
+msgid "Don't monitor these IPv4 addresses"
+msgstr "Не отслеживать эти IPv4-адреса."
+
+msgid "Don't monitor these IPv6 addresses"
+msgstr "Не отслеживать эти IPv6-адреса."
+
+msgid "Don't monitor these MAC addresses"
+msgstr "Не отслеживать эти MAC-адреса."
+
+msgid "Excluded IPv4 addresses"
+msgstr "Исключить IPv4-адреса"
+
+msgid "Excluded IPv6 addresses"
+msgstr "Исключить IPv6-адреса"
+
+msgid "Excluded MAC addresses"
+msgstr "Исключить MAC-адреса"
+
+msgid "Hostname"
+msgstr "Имя хоста"
+
+msgid "IPv4"
+msgstr "IPv4"
+
+msgid "MAC"
+msgstr "MAC-адрес"
+
+msgid "Manufacturer"
+msgstr "Производитель"
+
+msgid "Model"
+msgstr "Модель"
+
+msgid "Noddos Client Tracking"
+msgstr "Noddos сопровождение клиентов сети"
+
+msgid "Noddos Clients"
+msgstr "Клиенты Noddos"
+
+msgid ""
+"Noddos controls traffic from the clients on your network to the Internet. "
+"This helps protect your network, the bandwidth on your Internet connection "
+"and the Internet"
+msgstr ""
+"Noddos контролирует трафик клиентов в сети Интернет.<br />Это помогает "
+"защитить сеть, улучшить качество подключения к Интернету и пропускную "
+"способность Интернета."
+
+msgid "Private networks"
+msgstr "Частные сети"
+
+msgid "Recognized Clients"
+msgstr "Признанные клиенты"
+
+msgid ""
+"Report traffic to private networks (10/8, 172.16/12, 192.168/16, "
+"fd75:6b5d:352c:ed05::/64)"
+msgstr ""
+"Отчет о трафике в частных сетях (10/8, 172.16/12, 192.168/16, fd75:6b5d:352c:"
+"ed05::/64)."
+
+msgid "Server Settings"
+msgstr "Настройки сервера"
+
+msgid ""
+"The following clients have been discovered on the network. The last "
+"discovery was completed at"
+msgstr ""
+"В сети были обнаружены следующие клиенты. Последний найденный клиент был "
+"обнаружен "
+
+msgid "Unrecognized Clients"
+msgstr "Не распознанные клиенты"
+
+msgid "Upload anonimized traffic stats"
+msgstr "Статистика трафика"
+
+msgid ""
+"Uploading your statistics helps improving device recognition and discovering "
+"hacked devices & botnets"
+msgstr ""
+"Загрузка статистики помогает улучшить распознавание устройств и обнаружение "
+"взломанных устройств и ботнетов."
index 229b6101ba5c91c9e75844e34365b4c5af22e2e2..c626a165edae2fff68ff0d98144284b7b5353114 100644 (file)
@@ -1,55 +1,57 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: ntpc\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-04-14 13:24+0200\n"
-"PO-Revision-Date: 2012-08-15 11:41+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2012-08-15 11:41+0300\n"
+"PO-Revision-Date: 2018-01-24 14:59+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "Clock Adjustment"
 msgstr "Корректировка часов"
 
 msgid "Count of time measurements"
-msgstr "Ð\9aолиÑ\87еÑ\81Ñ\82во измерений времени"
+msgstr "Ð\9eÑ\82Ñ\81Ñ\87еÑ\82 измерений времени"
 
 msgid "Current system time"
-msgstr "Текущее время"
+msgstr "Текущее системное время"
 
 msgid "General"
-msgstr "Общие"
+msgstr "Основные настройки"
 
 msgid "Hostname"
 msgstr "Имя хоста"
 
 msgid "Offset frequency"
-msgstr "СмеÑ\89ение Ñ\87аÑ\81Ñ\82оÑ\82Ñ\8b"
+msgstr "ЧаÑ\81Ñ\82оÑ\82а Ñ\81меÑ\89ениÑ\8f"
 
 msgid "Port"
 msgstr "Порт"
 
 msgid "Synchronizes the system time"
-msgstr "Синхронизирует системное время"
+msgstr ""
+"Утилита ntpc - позволяет провести тонкую настройку синхронизации системного "
+"времени."
 
 msgid "Time Server"
-msgstr "Сервер времени"
+msgstr "Cервер времени"
 
 msgid "Time Servers"
-msgstr "Серверы времени"
+msgstr "Сервера времени"
 
 msgid "Time Synchronisation"
 msgstr "Синхронизация времени"
 
 msgid "Update interval (in seconds)"
-msgstr "Интервал обновления (в секундах)"
+msgstr "Интервал обновления<br />(в секундах)"
 
 msgid "empty = infinite"
 msgstr "пусто = бесконечно"
index 74edaf4894b92ee7241409aa9874319359ebdf44..396dedd4a3a92a25accb53a8a6776883c1e645f2 100644 (file)
@@ -86,7 +86,7 @@ pip.default = "1"
 
 local compr = s:taboption("general", Flag, "compression", translate("Enable compression"),
        translate("Enable compression"))
-compr.default = "1"
+compr.default = "0"
 
 local udp = s:taboption("general", Flag, "udp", translate("Enable UDP"),
        translate("Enable UDP channel support; this must be enabled unless you know what you are doing"))
index 0564bd4ea7835bf991e71fbef7e2ef513add4e7f..c5fb2b2a539f3b5537c0dd71e0c85b5d67c118b8 100644 (file)
@@ -84,11 +84,11 @@ function action_json()
        local jsonreq4
        local jsonreq6
 
-       local v4_port = uci:get("olsrd", "olsrd_jsoninfo", "port") or 9090
-       local v6_port = uci:get("olsrd6", "olsrd_jsoninfo", "port") or 9090
+       local v4_port = tonumber(uci:get("olsrd", "olsrd_jsoninfo", "port") or "") or 9090
+       local v6_port = tonumber(uci:get("olsrd6", "olsrd_jsoninfo", "port") or "") or 9090
 
-       jsonreq4 = utl.exec("(echo /status | nc 127.0.0.1 " .. v4_port .. " | sed -n '/^[}{ ]/p') 2>/dev/null" )
-       jsonreq6 = utl.exec("(echo /status | nc ::1 " .. v6_port .. " | sed -n '/^[}{ ]/p') 2>/dev/null")
+       jsonreq4 = utl.exec("(echo /status | nc 127.0.0.1 %d | sed -n '/^[}{ ]/p') 2>/dev/null" % v4_port)
+       jsonreq6 = utl.exec("(echo /status | nc ::1 %d | sed -n '/^[}{ ]/p') 2>/dev/null" % v6_port)
        http.prepare_content("application/json")
        if not jsonreq4 or jsonreq4 == "" then
                jsonreq4 = "{}"
@@ -101,41 +101,19 @@ end
 
 
 local function local_mac_lookup(ipaddr)
-       local _, ifa, dev
-
-       ipaddr = tostring(ipaddr)
-
-       if not ifaddr_table then
-               ifaddr_table = nixio.getifaddrs()
-       end
-
-       -- ipaddr -> ifname
-       for _, ifa in ipairs(ifaddr_table) do
-               if ifa.addr == ipaddr then
-                       dev = ifa.name
-                       break
-               end
-       end
-
-       -- ifname -> macaddr
-       for _, ifa in ipairs(ifaddr_table) do
-               if ifa.name == dev and ifa.family == "packet" then
-                       return ifa.addr
-               end
+       local _, rt
+       for _, rt in ipairs(luci.ip.routes({ type = 1, src = ipaddr })) do
+               local link = rt.dev and luci.ip.link(rt.dev)
+               local mac = link and luci.ip.checkmac(link.mac)
+               if mac then return mac end
        end
 end
 
 local function remote_mac_lookup(ipaddr)
        local _, n
-
-       if not neigh_table then
-               neigh_table = luci.ip.neighbors()
-       end
-
-       for _, n in ipairs(neigh_table) do
-               if n.mac and n.dest and n.dest:equal(ipaddr) then
-                       return n.mac
-               end
+       for _, n in ipairs(luci.ip.neighbors({ dest = ipaddr })) do
+               local mac = luci.ip.checkmac(n.mac)
+               if mac then return mac end
        end
 end
 
@@ -172,7 +150,7 @@ function action_neigh(json)
        for _, dev in ipairs(devices) do
                for _, net in ipairs(dev:get_wifinets()) do
                        local radio = net:get_device()
-                       assoclist[#assoclist+1] = {} 
+                       assoclist[#assoclist+1] = {}
                        assoclist[#assoclist]['ifname'] = net:ifname()
                        assoclist[#assoclist]['network'] = net:network()[1]
                        assoclist[#assoclist]['device'] = radio and radio:name() or nil
@@ -187,7 +165,7 @@ function action_neigh(json)
                local mac = ""
                local ip
                local neihgt = {}
-               
+
                if resolve == "1" then
                        hostname = nixio.getnameinfo(v.remoteIP, nil, 100)
                        if hostname then
@@ -201,9 +179,9 @@ function action_neigh(json)
 
                for _, val in ipairs(assoclist) do
                        if val.network == interface and val.list then
+                               local assocmac, assot
                                for assocmac, assot in pairs(val.list) do
-                                       assocmac = string.lower(assocmac or "")
-                                       if rmac == assocmac then
+                                       if rmac == luci.ip.checkmac(assocmac) then
                                                signal = tonumber(assot.signal)
                                                noise = tonumber(assot.noise)
                                                snr = (noise*-1) - (signal*-1)
@@ -372,11 +350,11 @@ function fetch_jsoninfo(otable)
        local IpVersion = uci:get_first("olsrd", "olsrd","IpVersion")
        local jsonreq4 = ""
        local jsonreq6 = ""
-       local v4_port = uci:get("olsrd", "olsrd_jsoninfo", "port") or 9090
-       local v6_port = uci:get("olsrd6", "olsrd_jsoninfo", "port") or 9090
+       local v4_port = tonumber(uci:get("olsrd", "olsrd_jsoninfo", "port") or "") or 9090
+       local v6_port = tonumber(uci:get("olsrd6", "olsrd_jsoninfo", "port") or "") or 9090
 
-       jsonreq4 = utl.exec("(echo /" .. otable .. " | nc 127.0.0.1 " .. v4_port .. " | sed -n '/^[}{ ]/p') 2>/dev/null")
-       jsonreq6 = utl.exec("(echo /" .. otable .. " | nc ::1 " .. v6_port .. " | sed -n '/^[}{ ]/p') 2>/dev/null")
+       jsonreq4 = utl.exec("(echo /%s | nc 127.0.0.1 %d | sed -n '/^[}{ ]/p') 2>/dev/null" %{ otable, v4_port })
+       jsonreq6 = utl.exec("(echo /%s | nc ::1 %d | sed -n '/^[}{ ]/p') 2>/dev/null" %{ otable, v6_port })
        local jsondata4 = {}
        local jsondata6 = {}
        local data4 = {}
index 51267e084cd266793ba72112dc1defb17ce13935..453454ca64454b2cf1887d86deb2a6841a027b95 100644 (file)
@@ -1,49 +1,49 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: olsr\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2013-09-06 09:58+0200\n"
-"Last-Translator: datasheet <michael.gritsaenko@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2013-09-06 09:58+0200\n"
+"PO-Revision-Date: 2018-01-25 22:45+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "Active MID announcements"
 msgstr "Активные объявления MID"
 
 msgid "Active OLSR nodes"
-msgstr "Активные OLSR-узлы"
+msgstr "Активные OLSR узлы"
 
 msgid "Active host net announcements"
 msgstr "Активные объявления хост-сети (HNA)"
 
 msgid "Advanced Settings"
-msgstr "РаÑ\81Ñ\88иÑ\80енные настройки"
+msgstr "Ð\94ополниÑ\82елÑ\8cные настройки"
 
 msgid "Allow gateways with NAT"
 msgstr "Разрешить шлюзы с NAT"
 
 msgid "Allow the selection of an outgoing ipv4 gateway with NAT"
-msgstr "Разрешить выбор исходящего IPv4-шлюза с NAT"
+msgstr "Разрешить выбор исходящего IPv4 шлюза с NAT"
 
 msgid "Announce uplink"
-msgstr "Ð\9eбÑ\8aÑ\8fвлÑ\8fÑ\82Ñ\8c Ð²Ð¾Ñ\81Ñ\85одÑ\8fÑ\89ий ÐºÐ°Ð½Ð°Ð»"
+msgstr "Ð\9eбÑ\8aÑ\8fвиÑ\82Ñ\8c Ð²Ð½ÐµÑ\88нее Ñ\81оединение"
 
 msgid "Announced network"
-msgstr "Ð\9eбÑ\8aÑ\8fвленнаÑ\8f сеть"
+msgstr "Ð\9eбÑ\8aÑ\8fвиÑ\82Ñ\8c сеть"
 
 msgid "Bad (ETX > 10)"
-msgstr ""
+msgstr "Плохо (ETX > 10)"
 
 msgid "Bad (SNR < 5)"
-msgstr ""
+msgstr "Плохо (SNR < 5)"
 
 msgid "Both values must use the dotted decimal notation."
 msgstr ""
@@ -54,27 +54,29 @@ msgid "Broadcast address"
 msgstr "Широковещательный адрес"
 
 msgid "Can only be a valid IPv4 or IPv6 address or 'default'"
-msgstr ""
+msgstr "Допускается только IPv4 или IPv6 адрес или 'по умолчанию'"
 
 msgid "Can only be a valid IPv6 address or 'default'"
-msgstr ""
+msgstr "Допускается только IPv6 адрес или 'по умолчанию'"
 
 msgid "Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка config Ñ\84айла"
 
 msgid ""
 "Could not get any data. Make sure the jsoninfo plugin is installed and "
 "allows connections from localhost."
 msgstr ""
+"Не удалось получить данные. Убедитесь, что плагин 'jsoninfo' установлен и "
+"разрешает соединения с localhost."
 
 msgid "Display"
-msgstr "Показать"
+msgstr "Показать состояние"
 
 msgid "Downlink"
-msgstr "Ð\9dиÑ\81Ñ\85одÑ\8fÑ\89ий ÐºÐ°Ð½Ð°Ð»"
+msgstr "Ð\92нÑ\83Ñ\82Ñ\80еннее Ñ\81оединение"
 
 msgid "Download Config"
-msgstr "Загрузить конфигурацию"
+msgstr "Загрузить config файл"
 
 msgid "ETX"
 msgstr "ETX"
@@ -86,8 +88,8 @@ msgid ""
 "Enable SmartGateway. If it is disabled, then all other SmartGateway "
 "parameters are ignored. Default is \"no\"."
 msgstr ""
-"Включить SmartGateway. Если выключено, все остальные параметры SmartGateway "
-"игнорируются. По умолчанию \"нет\"."
+"Включить SmartGW (смарт-шлюз).<br />Если выключено, все остальные параметры "
+"SmartGW игнорируются. По умолчанию 'нет'."
 
 msgid "Enable this interface."
 msgstr "Использовать этот интерфейс."
@@ -110,33 +112,34 @@ msgid ""
 "Default is \"flat\"."
 msgstr ""
 "Метрика FIB управляет значением метрики хост-маршрутов, которые "
-"устанавливает OLSRd. При \"flat\" значение метрики всегда равно 2. Это "
-"предпочтительное значение, помогающее ядру Linux очищать устаревшие "
-"маршруты. При \"correct\" используется счётчик прыжков в качестве значения "
-"метрики. \"approx\" также испозьзует счётчик прыжков, но его обновление "
-"происходит только при изменении следующего прыжка. По умолчанию используется "
-"\"flat\"."
+"устанавливает OLSRd. При 'flat' значение метрики всегда равно '2'. Это "
+"предпочтительное значение, помогающее ядру Linux очищать устаревшие маршруты."
+"<br />При 'correct' используется счётчик переходов в качестве значения "
+"метрики. 'approx' также использует счётчик переходов, но его обновление "
+"происходит только при изменении следующего перехода.<br />По умолчанию "
+"используется 'flat'."
 
 msgid "Fisheye mechanism for TCs (checked means on). Default is \"on\""
-msgstr "Механизм рыбьего глаза для TC. По умолчанию \"включено\""
+msgstr ""
+"Механизм 'fisheye' для TC-ов (средство проверки). По умолчанию 'включено'."
 
 msgid "Gateway"
 msgstr "Шлюз"
 
 msgid "General Settings"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
 
 msgid "General settings"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
 
 msgid "Good (2 < ETX < 4)"
-msgstr ""
+msgstr "Хорошо (2 < ETX < 4)"
 
 msgid "Good (30 > SNR > 20)"
-msgstr ""
+msgstr "Хорошо (30 > SNR > 20)"
 
 msgid "Green"
-msgstr ""
+msgstr "Зеленый"
 
 msgid "HNA"
 msgstr "HNA"
@@ -145,29 +148,28 @@ msgid "HNA Announcements"
 msgstr "Объявления HNA"
 
 msgid "HNA interval"
-msgstr "HNA интервал"
+msgstr "Интервал HNA"
 
 msgid "HNA validity time"
 msgstr "Время действия HNA"
 
-#, fuzzy
 msgid "HNA6 Announcements"
-msgstr "Объявления HNA"
+msgstr "Объявления HNA6"
 
 msgid "Hello"
-msgstr "Ð\9fÑ\80ивеÑ\82Ñ\81Ñ\82венное Ñ\81ообÑ\89ение"
+msgstr "Приветствие"
 
 msgid "Hello interval"
-msgstr "Ð\98нÑ\82еÑ\80вал Ð¿Ñ\80ивеÑ\82Ñ\81Ñ\82веннÑ\8bÑ\85 Ñ\81ообÑ\89ений"
+msgstr "Ð\98нÑ\82еÑ\80вал Ð¿Ñ\80ивеÑ\82Ñ\81Ñ\82виÑ\8f"
 
 msgid "Hello validity time"
-msgstr "Ð\92Ñ\80емÑ\8f Ð´ÐµÐ¹Ñ\81Ñ\82виÑ\8f Ð¿Ñ\80ивеÑ\82Ñ\81Ñ\82венного Ñ\81ообÑ\89ениÑ\8f"
+msgstr "Время действия приветствия"
 
 msgid "Hide IPv4"
-msgstr ""
+msgstr "Скрыть IPv4"
 
 msgid "Hide IPv6"
-msgstr ""
+msgstr "Скрыть IPv6"
 
 msgid "Hna4"
 msgstr "Hna4"
@@ -176,7 +178,7 @@ msgid "Hna6"
 msgstr "Hna6"
 
 msgid "Hops"
-msgstr "Прыжки"
+msgstr "Переходы"
 
 msgid "Hostname"
 msgstr "Имя хоста"
@@ -188,89 +190,91 @@ msgstr ""
 "Хосты в маршрутизируемой сети OLSR могут извещать о подключении к внешним "
 "сетям с помощью сообщений HNA."
 
-#, fuzzy
 msgid ""
 "Hosts in a OLSR routed network can announce connecitivity to external "
 "networks using HNA6 messages."
 msgstr ""
 "Хосты в маршрутизируемой сети OLSR могут извещать о подключении к внешним "
-"сетям с помощью сообщений HNA."
+"сетям с помощью сообщений HNA6."
 
 msgid ""
 "Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more "
 "robustness to the link sensing but delays neighbor registration. Defaults is "
 "\"yes\""
 msgstr ""
-"Гистерезис для автоопределения канала (только для метрики кол-ва прыжков). "
-"Ð\93иÑ\81Ñ\82еÑ\80езиÑ\81 Ñ\83велиÑ\87иваеÑ\82 Ð½Ð°Ð´Ñ\91жноÑ\81Ñ\82Ñ\8c ÐºÐ°Ð½Ð°Ð»Ð°, Ð½Ð¾ Ð²Ð½Ð¾Ñ\81иÑ\82 Ð·Ð°Ð´ÐµÑ\80жкÑ\83 Ð² Ñ\80егиÑ\81Ñ\82Ñ\80аÑ\86иÑ\8e "
-"Ñ\81оÑ\81едниÑ\85 Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82в. Ð\9fо Ñ\83молÑ\87аниÑ\8e \"да\""
+"Гистерезис для авто определения канала (только для метрики кол-ва "
+"пеÑ\80еÑ\85одов). Ð\93иÑ\81Ñ\82еÑ\80езиÑ\81 Ñ\83велиÑ\87иваеÑ\82 Ð½Ð°Ð´Ñ\91жноÑ\81Ñ\82Ñ\8c ÐºÐ°Ð½Ð°Ð»Ð°, Ð½Ð¾ Ð²Ð½Ð¾Ñ\81иÑ\82 Ð·Ð°Ð´ÐµÑ\80жкÑ\83 Ð² "
+"Ñ\80егиÑ\81Ñ\82Ñ\80аÑ\86иÑ\8e Ñ\81оÑ\81едниÑ\85 Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82в. Ð\9fо Ñ\83молÑ\87аниÑ\8e 'да'."
 
 msgid "IP Addresses"
-msgstr "IP-адреса"
+msgstr "IP-Ð\90дреса"
 
 msgid ""
 "IP-version to use. If 6and4 is selected then one olsrd instance is started "
 "for each protocol."
 msgstr ""
-"Версия IP, которая будет использована. Если выбрано 6and4, olsrd будет "
-"запÑ\83Ñ\89ен Ð´Ð»Ñ\8f ÐºÐ°Ð¶Ð´Ð¾Ð¹ Ð²ÐµÑ\80Ñ\81ии."
+"IP версия для использования. Если выбран 6and4, то для каждого протокола "
+"запÑ\83Ñ\81каеÑ\82Ñ\81Ñ\8f Ð¾Ð´Ð¸Ð½ Ñ\8dкземплÑ\8fÑ\80 olsrd."
 
 msgid "IPv4"
 msgstr "IPv4"
 
 msgid "IPv4 broadcast"
-msgstr "Широковещательный IPv4"
+msgstr "Широковещательный<br />IPv4-адрес"
 
 msgid ""
 "IPv4 broadcast address for outgoing OLSR packets. One useful example would "
 "be 255.255.255.255. Default is \"0.0.0.0\", which triggers the usage of the "
 "interface broadcast IP."
 msgstr ""
-"Широковещательный IPv4-адрес для исходящих OLSR-пакетов, например, "
-"255.255.255.255. Ð\90дÑ\80еÑ\81 Ð¿Ð¾ Ñ\83молÑ\87аниÑ\8e \"0.0.0.0\" Ð²ÐµÐ´Ñ\91Ñ\82 Ðº Ð¸Ñ\81полÑ\8cзованиÑ\8e "
-"широковещательного IP-адреса интерфейса."
+"Широковещательный адрес IPv4 для исходящих OLSR пакетов. Например "
+"255.255.255.255. Ð\9fо Ñ\83молÑ\87аниÑ\8e Ð¸Ñ\81полÑ\8cзÑ\83еÑ\82Ñ\81Ñ\8f Ð·Ð½Ð°Ñ\87ение \"0.0.0.0\", ÐºÐ¾Ñ\82оÑ\80ое "
+"запускает использование широковещательного IP-адреса интерфейса."
 
 msgid "IPv4 source"
-msgstr "IPv4-источник"
+msgstr "IPv4 источник"
 
 msgid ""
 "IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which "
 "triggers usage of the interface IP."
 msgstr ""
-"IPv4-адрес отправителя для исходящих OLSR-пакетов. Адрес по умолчанию "
-"\"0.0.0.0\" включает использование IP-адреса интерфейса."
+"IPv4-адрес отправителя для исходящих OLSR пакетов. По умолчанию используется "
+"значение \"0.0.0.0\", которое запускает использование интерфейса IP."
 
 msgid "IPv6"
 msgstr "IPv6"
 
 msgid "IPv6 multicast"
-msgstr "Групповой IPv6"
+msgstr "IPv6 мультивещание"
 
 msgid ""
 "IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal "
 "multicast."
-msgstr "Групповой IPv6-адрес. По умолчанию \"FF02::6D\"."
+msgstr ""
+"IPv6-адрес мультивещания. По умолчанию 'FF02::6D', MANET маршрутизатор "
+"локальной сети мультивещания."
 
 msgid ""
 "IPv6 network must be given in full notation, prefix must be in CIDR notation."
 msgstr ""
-"IPv6-сеть должна быть указана в полной нотации, префикс должен быть в "
+"IPv6 сеть должна быть указана в полной нотации, префикс должен быть в "
 "нотации CIDR."
 
 msgid "IPv6 source"
-msgstr "IPv6-источник"
+msgstr "IPv6 источник"
 
 msgid ""
 "IPv6 src prefix. OLSRd will choose one of the interface IPs which matches "
 "the prefix of this parameter. Default is \"0::/0\", which triggers the usage "
 "of a not-linklocal interface IP."
 msgstr ""
-"Префикс источника IPv6. OLSRd выберет один из IP-адресов интерфейса, "
-"соответствующий данному префиксу. По умолчанию \"0::/0\" включает "
-"использование нелокального IP-адреса интерфейса."
+"Префикс источника IPv6. OLSRd выберет один из IP-адресов интерфейса, который "
+"соответствует префиксу этого параметра. По умолчанию используется значение "
+"'0::/0', которое запускает использование IP интерфейса не локального "
+"соединения."
 
 msgid "IPv6-Prefix of the uplink"
-msgstr "IPv6-префикс восходящего канала"
+msgstr "IPv6 Префикс внешнего соединения"
 
 msgid ""
 "If the route to the current gateway is to be changed, the ETX value of this "
@@ -281,15 +285,14 @@ msgid ""
 msgstr ""
 "Если маршрут к текущему шлюзу должен быть изменён, значение ETX данного "
 "шлюза умножается на указанное число перед сравнением с новым значением. "
-"Значение данного параметра может быть в пределах от 0.1 до 1.0, но при "
-"изменении должно быть ближе к 1.0.<br /><b>ВНИМАНИЕ:</b>Не используйте "
-"данный параметр вместе с метрикой etx_ffeth!<br />По умолчанию \"1.0\"."
+"Значение данного параметра может быть в пределах от '0.1' до '1.0', но при "
+"изменении должно быть ближе к '1.0'.<br /><b>Внимание:</b> Не используйте "
+"данный параметр вместе с метрикой etx_ffeth!<br />По умолчанию '1.0'."
 
 msgid ""
 "If this Node uses NAT for connections to the internet. Default is \"yes\"."
 msgstr ""
-"Использует ли данный узел NAT для подключения к интернету. По умолчанию \"да"
-"\"."
+"Использует ли данный узел NAT для подключения к Интернету. По умолчанию 'да'."
 
 msgid "Interface"
 msgstr "Интерфейс"
@@ -300,8 +303,8 @@ msgid ""
 "\"mesh\"."
 msgstr ""
 "Режим интерфейса используется для предотвращения ненужных перенаправлений на "
-"коммутируемых Ethernet-интерфейсах. Возможные значения режима: \"mesh\" и "
-"\"ether\". По умолчанию \"mesh\"."
+"коммутируемых Ethernet-интерфейсах. Возможные значения режима: 'mesh' и "
+"'ether'. По умолчанию 'mesh'."
 
 msgid "Interfaces"
 msgstr "Интерфейсы"
@@ -310,67 +313,71 @@ msgid "Interfaces Defaults"
 msgstr "Значения по умолчанию для интерфейсов"
 
 msgid "Internet protocol"
-msgstr "Интернет-протокол"
+msgstr "Интернет протокол"
 
 msgid ""
 "Interval to poll network interfaces for configuration changes (in seconds). "
 "Default is \"2.5\"."
 msgstr ""
-"Ð\98нÑ\82еÑ\80вал Ð¾Ð¿Ñ\80оÑ\81а Ñ\81еÑ\82вÑ\8bÑ\85 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81ов Ð½Ð° Ð½Ð°Ð»Ð¸Ñ\87ие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ Ð² ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии "
-"(сек.). По умолчанию, \"2.5\"."
+"Ð\98нÑ\82еÑ\80вал Ð¾Ð¿Ñ\80оÑ\81а Ñ\81еÑ\82евÑ\8bÑ\85 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81ов Ð½Ð° Ð½Ð°Ð»Ð¸Ñ\87ие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ Ð² config Ñ\84айле "
+"(сек.). По умолчанию '2.5'."
 
 msgid "Invalid Value for LQMult-Value. Must be between 0.01 and 1.0."
 msgstr ""
+"Недопустимое значение для LQMult-Value. Должно быть между '0,01' и '1,0'."
 
 msgid ""
 "Invalid Value for LQMult-Value. You must use a decimal number between 0.01 "
 "and 1.0 here."
 msgstr ""
+"Недопустимое значение для LQMult-Value. Вы должны использовать десятичное "
+"число между '0,01' и '1,0'."
 
 msgid "Known OLSR routes"
-msgstr "Известные OLSR-маршруты"
+msgstr "Известные маршруты OLSR"
 
 msgid "LQ"
 msgstr "LQ"
 
 msgid "LQ aging"
-msgstr "Старение LQ"
+msgstr "LQ старение"
 
 msgid "LQ algorithm"
-msgstr "Алгоритм LQ"
+msgstr "LQ алгоритм"
 
-#, fuzzy
 msgid "LQ fisheye"
-msgstr "Рыбий глаз LQ"
+msgstr "LQ fisheye"
 
 msgid "LQ level"
-msgstr "Уровень LQ"
+msgstr "LQ частота"
 
 msgid ""
 "LQMult requires two values (IP address or 'default' and multiplicator) "
 "seperated by space."
 msgstr ""
+"LQMult требует двух значений (IP-адрес или 'default' и множитель), "
+"разделенных пробелом."
 
 msgid "Last hop"
-msgstr "Последний прыжок"
+msgstr "Последний переход"
 
 msgid "Legend"
-msgstr "Ð\9bегенда"
+msgstr "СобÑ\8bÑ\82иÑ\8f"
 
 msgid "Library"
 msgstr "Библиотека"
 
 msgid "Link Quality Settings"
-msgstr "Настройки качества соединения (LQ)"
+msgstr "Настройки качества соединений (LQ)"
 
 msgid ""
 "Link quality aging factor (only for lq level 2). Tuning parameter for "
 "etx_float and etx_fpm, smaller values mean slower changes of ETX value. "
 "(allowed values are between 0.01 and 1.0)"
 msgstr ""
-"Коэффициент старения LQ (только для уровня LQ, равного 2). Параметр "
-"подстройки для etx_float и etx_fpm. Чем меньше значение, тем меньше "
-"изменения значения ETX. Диапазон допустимых значений от 0.01 до 1.0."
+"Коэффициент старения LQ (только для уровня LQ, равного 2).<br />Параметр "
+"подстройки для etx_float и etx_fpm.<br />Чем меньше значение, тем меньше "
+"изменения значения ETX.<br />Диапазон допустимых значений от '0.0' до '1.0'."
 
 msgid ""
 "Link quality algorithm (only for lq level 2).<br /><b>etx_float</b>: "
@@ -381,23 +388,23 @@ msgid ""
 "allows ethernet links with ETX 0.1.<br />Defaults to \"etx_ff\""
 msgstr ""
 "Алгоритм LQ (только для уровня LQ, равного 2).<br /><b>etx_float</b>: ETX с "
-"плавающей точкой и экспоненциальным старением<br /><b>etx_fpm</b> : тоже что "
-"и etx_float, но с целочисленной арифметикой<br /><b>etx_ff</b> : ETX "
-"freifunk, использует весь трафик OLSR для расчета ETX<br /><b>etx_ffeth</b>: "
-"несовместимый вариант etx_ff, разрешающий Ethernet-соединения с ETX 0.1.<br /"
-">По умолчанию \"etx_ff\""
+"плавающей точкой и экспоненциальным старением.<br /><b>etx_fpm</b> : тоже "
+"что и etx_float, но с целочисленной арифметикой.<br /><b>etx_ff</b> : ETX "
+"freifunk, использует весь трафик OLSR для расчета ETX.<br /><b>etx_ffeth</"
+"b>: несовместимый вариант etx_ff, разрешающий Ethernet-соединения с ETX 0.1."
+"<br />По умолчанию 'etx_ff'."
 
 msgid ""
 "Link quality level switch between hopcount and cost-based (mostly ETX) "
 "routing.<br /><b>0</b> = do not use link quality<br /><b>2</b> = use link "
 "quality for MPR selection and routing<br />Default is \"2\""
 msgstr ""
-"Переключатель уровня LQ между маршрутизацией по кол-во прыжков и ETX.<br /"
+"Переключатель уровня LQ между маршрутизацией по кол-ву переходов и ETX.<br /"
 "><b>0</b> = не использовать LQ<br /><b>2</b> = использовать LQ для выбора "
-"MPR и маршрутизации<br />По умолчанию \"2\""
+"MPR и маршрутизации<br />По умолчанию '2'."
 
 msgid "LinkQuality Multiplicator"
-msgstr "Множитель LQ"
+msgstr "Мультипликатор качества соединения (LQ)"
 
 msgid "Links per node (average)"
 msgstr "Кол-во соединений на узел (среднее)"
@@ -427,6 +434,8 @@ msgid ""
 "Make sure that OLSRd is running, the \"jsoninfo\" plugin is loaded, "
 "configured on port 9090 and accepts connections from \"127.0.0.1\"."
 msgstr ""
+"Удостоверьтесь, что демон OLSRd работает, плагин 'txtinfo' загружен, "
+"настроен на порт 9090 и принимает соединения от '127.0.0.1'."
 
 msgid "Metric"
 msgstr "Метрика"
@@ -440,18 +449,22 @@ msgid ""
 ">reduce LQ to 192.168.0.1 by half: 192.168.0.1 0.5<br />reduce LQ to all "
 "nodes on this interface by 20%: default 0.8"
 msgstr ""
+"Умножить маршруты на указанный коэффициент в пределах от '0.01' до '1'.<br /"
+">Данный коэффициент используется только в случае, если LQ уровень > 0.<br /"
+">Примеры:<br />уменьшить LQ для 192.168.0.1 на половину: 192.168.0.1 '0.5'."
+"<br />уменьшить LQ для всех узлов на данном интерфейсе на 20%: default '0.8'."
 
-#, fuzzy
 msgid ""
 "Multiply routes with the factor given here. Allowed values are between 0.01 "
 "and 1.0. It is only used when LQ-Level is greater than 0. Examples:<br /"
 ">reduce LQ to fd91:662e:3c58::1 by half: fd91:662e:3c58::1 0.5<br />reduce "
 "LQ to all nodes on this interface by 20%: default 0.8"
 msgstr ""
-"Умножить маршруты на указанный коэффициент в пределах от 0.01 до 1. Данный "
-"коэффициент используется только в случае, если LQ уровень > 0. Примеры:<br /"
-">уменьшить LQ для 192.168.0.1 на половину: 192.168.0.1 0.5<br />уменьшить LQ "
-"для всех узлов на данном интерфейсе на 20%: default 0.8"
+"Умножить маршруты на указанный коэффициент в пределах от '0.01' до '1'.<br /"
+">Данный коэффициент используется только в случае, если LQ уровень > 0. <br /"
+">Примеры:<br />уменьшить LQ для fd91:662e:3c58::1 на половину: "
+"fd91:662e:3c58::1 '0.5'.<br />уменьшить LQ для всех узлов на данном "
+"интерфейсе на 20%: default '0.8'."
 
 msgid "NAT threshold"
 msgstr "Порог NAT"
@@ -478,7 +491,7 @@ msgid "Network address"
 msgstr "Сетевой адрес"
 
 msgid "Nic changes poll interval"
-msgstr "Ð\98нÑ\82еÑ\80вал Ð¾Ð¿Ñ\80оÑ\81а Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ NIC"
+msgstr "СеÑ\82евой Ð°Ð´Ð°Ð¿Ñ\82еÑ\80 Ð¸Ð·Ð¼ÐµÐ½Ñ\8fеÑ\82 Ð¸Ð½Ñ\82еÑ\80вал Ð¾Ð¿Ñ\80оÑ\81а"
 
 msgid "Nodes"
 msgstr "Узлы"
@@ -487,70 +500,67 @@ msgid "OLSR"
 msgstr "OLSR"
 
 msgid "OLSR - Display Options"
-msgstr "OLSR - Ð\9dаÑ\81Ñ\82Ñ\80ойки отображения"
+msgstr "OLSR - Ð\9fаÑ\80амеÑ\82Ñ\80Ñ\8b отображения"
 
 msgid "OLSR - HNA-Announcements"
 msgstr "OLSR - HNA-объявления"
 
-#, fuzzy
 msgid "OLSR - HNA6-Announcements"
-msgstr "OLSR - HNA-объявления"
+msgstr "OLSR - HNA6-объявления"
 
 msgid "OLSR - Plugins"
-msgstr "OLSR - Ð\9cодÑ\83ли"
+msgstr "OLSR - Ð\9fлагинÑ\8b"
 
 msgid "OLSR Daemon"
-msgstr "Сервис OLSR"
+msgstr "OLSR демон"
 
 msgid "OLSR Daemon - Interface"
-msgstr "Сервис OLSR - Интерфейс"
+msgstr "OLSR демон - Интерфейс"
 
 msgid "OLSR connections"
-msgstr "OLSR-соединения"
+msgstr "OLSR соединения"
 
 msgid "OLSR gateway"
-msgstr "OLSR-шлюз"
+msgstr "OLSR шлюз"
 
 msgid "OLSR node"
-msgstr "OLSR-узел"
+msgstr "OLSR узел"
 
 msgid "Orange"
-msgstr ""
+msgstr "Оранжевый"
 
 msgid "Overview"
-msgstr "Ð\9eбзоÑ\80"
+msgstr "Ð\93лавное Ð¼ÐµÐ½Ñ\8e"
 
 msgid "Overview of currently active OLSR host net announcements"
-msgstr "Обзор текущих активных OLSR-объявлений HNA"
+msgstr "Обзор текущих активных OLSR объявлений HNA"
 
 msgid "Overview of currently established OLSR connections"
-msgstr "Обзор установленных OLSR-соединений"
+msgstr "Обзор установленных на данный момент OLSR соединений"
 
 msgid "Overview of currently known OLSR nodes"
-msgstr "Обзор текущих известных OLSR-узлов"
+msgstr "Обзор известных на данный момент узлов OLSR"
 
 msgid "Overview of currently known routes to other OLSR nodes"
-msgstr "Ð\9eбзоÑ\80 Ð¸Ð·Ð²ÐµÑ\81Ñ\82нÑ\8bÑ\85 Ð¼Ð°Ñ\80Ñ\88Ñ\80Ñ\83Ñ\82ов Ðº OLSR-узлам"
+msgstr "Ð\9eбзоÑ\80 Ð¸Ð·Ð²ÐµÑ\81Ñ\82нÑ\8bÑ\85 Ð½Ð° Ð´Ð°Ð½Ð½Ñ\8bй Ð¼Ð¾Ð¼ÐµÐ½Ñ\82 Ð¼Ð°Ñ\80Ñ\88Ñ\80Ñ\83Ñ\82ов Ðº Ð´Ñ\80Ñ\83гим OLSR узлам"
 
 msgid "Overview of interfaces where OLSR is running"
 msgstr "Обзор интерфейсов с запущенным OLSR"
 
 msgid "Overview of known multiple interface announcements"
-msgstr "Ð\9eбзоÑ\80 Ð¸Ð·Ð²ÐµÑ\81Ñ\82нÑ\8bÑ\85 Ð¼Ñ\83лÑ\8cÑ\82и-инÑ\82еÑ\80Ñ\84ейÑ\81нÑ\8bÑ\85 Ð¸Ð·Ð²ÐµÑ\89ений"
+msgstr "Ð\9eбзоÑ\80 Ð¸Ð·Ð²ÐµÑ\81Ñ\82нÑ\8bÑ\85 Ð¾Ð±Ñ\8aÑ\8fвлений Ñ\81 Ð½ÐµÑ\81колÑ\8cкими Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81ами"
 
-# Может таки "умные" шлюзы? Или вообще SmartGW...
-#, fuzzy
 msgid "Overview of smart gateways in this network"
-msgstr "Обзор смарт-шлюзов в сети"
+msgstr "Обзор смарт шлюзов в этой сети"
 
 msgid "Plugin configuration"
-msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойки Ð¼Ð¾Ð´Ñ\83лей"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð¾Ð²"
 
 msgid "Plugins"
-msgstr "Ð\9cодÑ\83ли"
+msgstr "Ð\9fлагинÑ\8b"
 
 msgid "Polling rate for OLSR sockets in seconds. Default is 0.05."
-msgstr "Ð\9fеÑ\80иодиÑ\87ноÑ\81Ñ\82Ñ\8c Ð¾Ð¿Ñ\80оÑ\81а OLSR-Ñ\81океÑ\82ов Ð² Ñ\81екÑ\83ндаÑ\85. 0.05 Ð¿Ð¾ Ñ\83молÑ\87аниÑ\8e."
+msgstr "ЧаÑ\81Ñ\82оÑ\82а Ð¾Ð¿Ñ\80оÑ\81а Ð´Ð»Ñ\8f Ñ\81океÑ\82ов OLSR Ð² Ñ\81екÑ\83ндаÑ\85. Ð\9fо Ñ\83молÑ\87аниÑ\8e '0,05'."
 
 msgid "Pollrate"
 msgstr "Частота опроса"
@@ -562,10 +572,10 @@ msgid "Prefix"
 msgstr "Префикс"
 
 msgid "Red"
-msgstr ""
+msgstr "Красный"
 
 msgid "Resolve"
-msgstr "РазÑ\80еÑ\88аÑ\82Ñ\8c Ð¸Ð¼ÐµÐ½Ð°"
+msgstr "РазÑ\80еÑ\88иÑ\82Ñ\8c"
 
 msgid ""
 "Resolve hostnames on status pages. It is generally safe to allow this, but "
@@ -574,50 +584,51 @@ msgid ""
 msgstr ""
 "Разрешать имена хостов на страницах состояния. Не используйте данную "
 "функцию, если у вас публичный IP-адрес и нестабильный DNS. В противном "
-"случае загрузка страниц состояния может происходить очень медленно."
+"случае загрузка страниц состояния может происходить очень медленно.<br />В "
+"этом случае отключите ее здесь."
 
 msgid "Routes"
 msgstr "Маршруты"
 
 msgid "Secondary OLSR interfaces"
-msgstr "Вторичные OLSR-интерфейсы"
+msgstr "Вторичные OLSR интерфейсы"
 
 msgid ""
 "Sets the main IP (originator ip) of the router. This IP will NEVER change "
 "during the uptime of olsrd. Default is 0.0.0.0, which triggers usage of the "
 "IP of the first interface."
 msgstr ""
-"Устанавливает основной IP-адрес маршрутизатора. Данный адрес НИКОГДА не "
-"будет изменяться во время работы olsrd. По умолчанию 0.0.0.0 (используется "
-"IP-адрес первого сетевого интерфейса)."
+"Задает основной IP-адрес (IP-адрес инициатора) маршрутизатора. Этот IP "
+"никогда не изменится во время работы olsrd. По умолчанию используется "
+"значение 0.0.0.0, которое запускает использование IP-адреса первого "
+"интерфейса."
 
-#, fuzzy
 msgid ""
 "Sets the main IP (originator ip) of the router. This IP will NEVER change "
 "during the uptime of olsrd. Default is ::, which triggers usage of the IP of "
 "the first interface."
 msgstr ""
-"УÑ\81Ñ\82анавливаеÑ\82 Ð¾Ñ\81новной IP-адÑ\80еÑ\81 Ð¼Ð°Ñ\80Ñ\88Ñ\80Ñ\83Ñ\82изаÑ\82оÑ\80а. Ð\94аннÑ\8bй Ð°Ð´Ñ\80еÑ\81 Ð\9dÐ\98Ð\9aÐ\9eÐ\93Ð\94Ð\90 Ð½Ðµ "
-"бÑ\83деÑ\82 Ð¸Ð·Ð¼ÐµÐ½Ñ\8fÑ\82Ñ\8cÑ\81Ñ\8f Ð²Ð¾ Ð²Ñ\80емÑ\8f Ñ\80абоÑ\82Ñ\8b olsrd. Ð\9fо Ñ\83молÑ\87аниÑ\8e 0.0.0.0 (используется "
-"IP-адрес первого сетевого интерфейса)."
+"Ð\97адаеÑ\82 Ð¾Ñ\81новной IP-адÑ\80еÑ\81 (IP-адÑ\80еÑ\81 Ð¸Ð½Ð¸Ñ\86иаÑ\82оÑ\80а) Ð¼Ð°Ñ\80Ñ\88Ñ\80Ñ\83Ñ\82изаÑ\82оÑ\80а. Ð­Ñ\82оÑ\82 IP "
+"никогда Ð½Ðµ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ\82Ñ\81Ñ\8f Ð²Ð¾ Ð²Ñ\80емÑ\8f Ñ\80абоÑ\82Ñ\8b olsrd. Ð\9fо Ñ\83молÑ\87аниÑ\8e используется "
+"значение ::, которое запускает использование IP-адреса первого интерфейса."
 
 msgid "Show IPv4"
-msgstr ""
+msgstr "Показать IPv4"
 
 msgid "Show IPv6"
-msgstr ""
+msgstr "Показать IPv6"
 
 msgid "Signal Noise Ratio in dB"
-msgstr ""
+msgstr "Коэффициент шума сигнала в дБ"
 
 msgid "SmartGW"
 msgstr "SmartGW"
 
 msgid "SmartGW announcements"
-msgstr "Объявления SmartGW"
+msgstr "SmartGW объявления"
 
 msgid "SmartGateway is not configured on this system."
-msgstr "SmartGW не сконфигурирован на этой системе."
+msgstr "SmartGW (смарт-шлюз) не настроен на этой системе."
 
 msgid "Source address"
 msgstr "Адрес источника"
@@ -626,30 +637,31 @@ msgid ""
 "Specifies the speed of the uplink in kilobits/s. First parameter is "
 "upstream, second parameter is downstream. Default is \"128 1024\"."
 msgstr ""
-"УÑ\81Ñ\82анавливаеÑ\82 Ñ\81коÑ\80оÑ\81Ñ\82Ñ\8c Ð²Ð¾Ñ\81Ñ\85одÑ\8fÑ\89его ÐºÐ°Ð½Ð°Ð»Ð° (кбиÑ\82\81). Ð\9fеÑ\80вÑ\8bй Ð¿Ð°Ñ\80амеÑ\82Ñ\80 "
-"указывает на прямое, а второй на обратное направление. По умолчанию \"128 "
-"1024\"."
+"УÑ\81Ñ\82анавливаеÑ\82 Ñ\81коÑ\80оÑ\81Ñ\82Ñ\8c Ð²Ð½ÐµÑ\88него Ñ\81оединениÑ\8f Ð² ÐºÐ±Ð¸Ñ\82\81ек. Ð\9fеÑ\80вÑ\8bй Ð¿Ð°Ñ\80амеÑ\82Ñ\80 - "
+"внешняя сеть, второй параметр - внутренняя сеть. Значение по умолчанию '128 "
+"1024'."
 
 msgid "Speed of the uplink"
-msgstr "СкоÑ\80оÑ\81Ñ\82Ñ\8c Ð²Ð¾Ñ\81Ñ\85одÑ\8fÑ\89его ÐºÐ°Ð½Ð°Ð»Ð°"
+msgstr "СкоÑ\80оÑ\81Ñ\82Ñ\8c Ð²Ð½ÐµÑ\88него Ñ\81оединениÑ\8f"
 
 msgid "State"
-msgstr "СоÑ\81Ñ\82оÑ\8fние"
+msgstr "УказÑ\8bваÑ\82Ñ\8c"
 
 msgid "Status"
-msgstr "Статус"
+msgstr "Состояние"
 
 msgid "Still usable (20 > SNR > 5)"
-msgstr ""
+msgstr "Еще можно использовать (20 > SNR > 5)"
 
 msgid "Still usable (4 < ETX < 10)"
-msgstr ""
+msgstr "Еще можно использовать (4 < ETX < 10)"
 
 msgid "Success rate of packages received from the neighbour"
-msgstr "Достигнутая скорость приема посылок от соседних узлов"
+msgstr ""
+"Показатель успешности прохождения пакетов, полученных от соседнего узла"
 
 msgid "Success rate of packages sent to the neighbour"
-msgstr "Ð\94оÑ\81Ñ\82игнÑ\83Ñ\82аÑ\8f Ñ\81коÑ\80оÑ\81Ñ\82Ñ\8c Ð¿ÐµÑ\80едаÑ\87и Ð¿Ð¾Ñ\81Ñ\8bлок Ðº Ñ\81оÑ\81едним Ñ\83злам"
+msgstr "Ð\9fоказаÑ\82елÑ\8c Ñ\83Ñ\81пеÑ\88ноÑ\81Ñ\82и Ð¿Ñ\80оÑ\85ождениÑ\8f Ð¿Ð°ÐºÐµÑ\82ов, Ð¾Ñ\82пÑ\80авлÑ\8fемÑ\8bÑ\85 Ñ\81оÑ\81еднемÑ\83 Ñ\83злÑ\83"
 
 msgid "TC"
 msgstr "TC"
@@ -661,7 +673,7 @@ msgid "TC validity time"
 msgstr "Время действия TC"
 
 msgid "TOS value"
-msgstr "Значение ToS"
+msgstr "Значение TOS"
 
 msgid ""
 "The OLSR daemon is an implementation of the Optimized Link State Routing "
@@ -670,18 +682,19 @@ msgid ""
 "device. Visit <a href='http://www.olsr.org'>olsrd.org</a> for help and "
 "documentation."
 msgstr ""
-"СеÑ\80виÑ\81 OLSRd реализует поддержку протокола OLSR (Optimized Link State "
-"Routing) и тем самым обеспечивает ячеистую маршрутизацию для любого сетевого "
+"Ð\94емон OLSRd реализует поддержку протокола OLSR (Optimized Link State "
+"Routing), позволяя осуществлять маршрутизацию Mesh сетей для любого сетевого "
 "оборудования. OLSRd может работать на любом Wi-Fi-адаптере или устройстве "
-"Ethernet с поддержкой режима ad-hoc. Более подробную информацию можно найти "
-"на <a href='http://www.olsr.org'>olsr.org</a>."
+"Ethernet с поддержкой режима ad-hoc.<br />Более подробную информацию можно "
+"найти на <a href='http://www.olsr.org'>olsrd.org</a>."
 
 msgid ""
 "The fixed willingness to use. If not set willingness will be calculated "
 "dynamically based on battery/power status. Default is \"3\"."
 msgstr ""
-"Фиксированное значение готовности. Если не задано, то будет рассчитываться "
-"динамически на основе состояния батареи/питания. По умолчанию \"3\"."
+"Фиксированное значение готовности.<br />Если не задано, то будет "
+"рассчитываться динамически на основе состояния батареи/питания. По умолчанию "
+"'3'."
 
 msgid "The interface OLSRd should serve."
 msgstr "Интерфейс, обслуживаемый OLSRd."
@@ -691,7 +704,7 @@ msgid ""
 "It can have a value between 1 and 65535."
 msgstr ""
 "Порт, используемый для OLSR. Рекомендуется использовать присвоенный IANA "
-"порт 698. Допустимо любое значение в диапазоне от 1 до 65535."
+"порт 698.<br />Допустимо любое значение в диапазоне от 1 до 65535."
 
 msgid ""
 "This can be used to signal the external IPv6 prefix of the uplink to the "
@@ -699,13 +712,13 @@ msgid ""
 "the IPv6 gateway without any kind of address translation. The maximum prefix "
 "length is 64 bits. Default is \"::/0\" (no prefix)."
 msgstr ""
-"Ð\9cожеÑ\82 Ð±Ñ\8bÑ\82Ñ\8c Ð¸Ñ\81полÑ\8cзовано Ð´Ð»Ñ\8f Ð¾Ð¿Ð¾Ð²ÐµÑ\89ениÑ\8f ÐºÐ»Ð¸ÐµÐ½Ñ\82ов Ð¾Ð± IPv6-пÑ\80еÑ\84икÑ\81е Ð²Ð¾Ñ\81Ñ\85одÑ\8fÑ\89его "
-"канала. Это может позволить клиентам изменять свой локальный IPv6-адрес для "
-"использования IPv6-шлюза без какой-либо трансляции адресов. Максимальная "
-"длина префикса - 64 бита. По умолчанию \"::/0\" (без префикса)."
+"Ð\9cожеÑ\82 Ð±Ñ\8bÑ\82Ñ\8c Ð¸Ñ\81полÑ\8cзовано Ð´Ð»Ñ\8f Ð¾Ð¿Ð¾Ð²ÐµÑ\89ениÑ\8f ÐºÐ»Ð¸ÐµÐ½Ñ\82ов Ð¾Ð± IPv6-пÑ\80еÑ\84икÑ\81е Ð²Ð½ÐµÑ\88него "
+"соединения. Это может позволить клиентам изменять свой локальный IPv6-адрес "
+"длÑ\8f Ð¸Ñ\81полÑ\8cзованиÑ\8f IPv6-Ñ\88лÑ\8eза Ð±ÐµÐ· ÐºÐ°ÐºÐ¾Ð¹-либо Ñ\82Ñ\80анÑ\81лÑ\8fÑ\86ии Ð°Ð´Ñ\80еÑ\81ов. Ð\9cакÑ\81ималÑ\8cнаÑ\8f "
+"длина префикса - 64 бита. По умолчанию '::/0' (без префикса)."
 
 msgid "Timing and Validity"
-msgstr "Время и сроки действия"
+msgstr "Время и срок действия"
 
 msgid "Topology"
 msgstr "Топология"
@@ -714,31 +727,32 @@ msgid ""
 "Type of service value for the IP header of control traffic. Default is "
 "\"16\"."
 msgstr ""
-"Значение поля ToS IP -аголовка управляющего трафика. По умолчанию \"16\"."
+"Значение строки ввода ToS, IP заголовка управляющего трафика. По умолчанию "
+"'16'."
 
 msgid "Unable to connect to the OLSR daemon!"
-msgstr "Не удалось подключиться к сервису OLSR!"
+msgstr "Не удалось подключиться к демону OLSR!"
 
 msgid "Uplink"
-msgstr "Ð\92оÑ\81Ñ\85одÑ\8fÑ\89ий ÐºÐ°Ð½Ð°Ð»"
+msgstr "Ð\92неÑ\88нее Ñ\81оединение"
 
 msgid "Uplink uses NAT"
-msgstr "Ð\92оÑ\81Ñ\85одÑ\8fÑ\89ий ÐºÐ°Ð½Ð°Ð» использует NAT"
+msgstr "Ð\92неÑ\88нее Ñ\81оединение использует NAT"
 
 msgid "Use hysteresis"
 msgstr "Использовать гистерезис"
 
 msgid "Validity Time"
-msgstr ""
+msgstr "Время действия"
 
 msgid "Version"
 msgstr "Версия"
 
 msgid "Very good (ETX < 2)"
-msgstr ""
+msgstr "Очень хорошо (ETX < 2)"
 
 msgid "Very good (SNR > 30)"
-msgstr ""
+msgstr "Очень хорошо (SNR > 30)"
 
 msgid "WLAN"
 msgstr "WLAN"
@@ -747,8 +761,8 @@ msgid ""
 "Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not "
 "work, please install it."
 msgstr ""
-"Внимание: kmod-ipip не установлен. Без kmod-ipip SmartGateway не будет "
-"работать, пожалуйста, установите этот пакет."
+"<b>Внимание:</b> 'kmod-ipip' не установлен. Без пакета модуля ядра kmod-"
+"ipip, SmartGW (смарт-шлюз) не будет работать, установите его."
 
 msgid "Weight"
 msgstr "Вес"
@@ -763,50 +777,39 @@ msgid ""
 "instead."
 msgstr ""
 "При использовании нескольких соединений между хостами, вес служит для выбора "
-"используемого интерфейса. Обычно, вес рассчитывается автоматически olsrd на "
-"основе характеристик интерфейса, но данное поле позволяет установить вес "
-"вручную. Olsrd выберет соединения с наименьшим значением веса.<br /"
-"><b>Замечание: вес интерфейса используется только в случае установки поля "
-"\"Уровень LQ\" в 0. Для любых других значений поля \"Уровень LQ\", "
-"иÑ\81полÑ\8cзÑ\83еÑ\82Ñ\81Ñ\8f Ð·Ð½Ð°Ñ\87ение Ð¿Ð¾Ð»Ñ\8f ETX."
+"используемого интерфейса. Обычно, вес рассчитывается автоматически демоном "
+"Olsrd на основе характеристик интерфейса, но данная строка позволяет "
+"установить вес вручную. Olsrd выберет соединения с наименьшим значением веса."
+"<br /><b>Внимание:</b> вес интерфейса используется только в случае значения "
+"'0' для строки ввода 'Уровень LQ'.<br />Для любых других значений строки "
+"ввода 'УÑ\80овенÑ\8c LQ', Ð¸Ñ\81полÑ\8cзÑ\83еÑ\82Ñ\81Ñ\8f Ð·Ð½Ð°Ñ\87ение Ñ\81Ñ\82Ñ\80оки Ð²Ð²Ð¾Ð´Ð° 'ETX'."
 
 msgid ""
 "Which kind of uplink is exported to the other mesh nodes. An uplink is "
 "detected by looking for a local HNA of 0.0.0.0/0, ::ffff:0:0/96 or 2000::/3. "
 "Default setting is \"both\"."
 msgstr ""
-"Ð\9aакой Ð²Ð¸Ð´ Ð²Ð¾Ñ\81Ñ\85одÑ\8fÑ\89его ÐºÐ°Ð½Ð°Ð»Ð° Ñ\8dкпоÑ\80Ñ\82иÑ\80Ñ\83еÑ\82Ñ\81Ñ\8f Ð´Ñ\80Ñ\83гим Ñ\83злам Ñ\8fÑ\87еиÑ\81Ñ\82ой сети. "
-"Ð\9eпÑ\80еделение Ð²Ð¾Ñ\81Ñ\85одÑ\8fÑ\89его ÐºÐ°Ð½Ð°Ð»Ð° Ð¿Ñ\80оиÑ\81Ñ\85одиÑ\82 Ð¿Ñ\80и Ð½Ð°Ð»Ð¸Ñ\87ии Ð² Ð»Ð¾ÐºÐ°Ð»Ñ\8cном HNA "
-"0.0.0.0/0, ::ffff:0:0/96 или 2000::/3. Значение по умолчанию: \"оба\"."
+"Ð\9aакой Ð²Ð¸Ð´ Ð²Ð½ÐµÑ\88него Ñ\81оединениÑ\8f Ñ\8dкÑ\81поÑ\80Ñ\82иÑ\80Ñ\83еÑ\82Ñ\81Ñ\8f Ð´Ñ\80Ñ\83гим Ñ\83злам Mesh сети. "
+"Ð\9eпÑ\80еделение Ð²Ð½ÐµÑ\88него Ñ\81оединениÑ\8f Ð¿Ñ\80оиÑ\81Ñ\85одиÑ\82 Ð¿Ñ\80и Ð½Ð°Ð»Ð¸Ñ\87ии Ð² Ð»Ð¾ÐºÐ°Ð»Ñ\8cном HNA of "
+"0.0.0.0/0, ::ffff:0:0/96 или 2000::/3. Значение по умолчанию 'оба'."
 
-#, fuzzy
 msgid ""
 "Which kind of uplink is exported to the other mesh nodes. An uplink is "
 "detected by looking for a local HNA6 ::ffff:0:0/96 or 2000::/3. Default "
 "setting is \"both\"."
 msgstr ""
-"Ð\9aакой Ð²Ð¸Ð´ Ð²Ð¾Ñ\81Ñ\85одÑ\8fÑ\89его ÐºÐ°Ð½Ð°Ð»Ð° Ñ\8dкпоÑ\80Ñ\82иÑ\80Ñ\83еÑ\82Ñ\81Ñ\8f Ð´Ñ\80Ñ\83гим Ñ\83злам Ñ\8fÑ\87еиÑ\81Ñ\82ой сети. "
-"Ð\9eпÑ\80еделение Ð²Ð¾Ñ\81Ñ\85одÑ\8fÑ\89его ÐºÐ°Ð½Ð°Ð»Ð° Ð¿Ñ\80оиÑ\81Ñ\85одиÑ\82 Ð¿Ñ\80и Ð½Ð°Ð»Ð¸Ñ\87ии Ð² Ð»Ð¾ÐºÐ°Ð»Ñ\8cном HNA "
-"0.0.0.0/0, ::ffff:0:0/96 или 2000::/3. Значение по умолчанию: \"оба\"."
+"Ð\9aакой Ð²Ð¸Ð´ Ð²Ð½ÐµÑ\88него Ñ\81оединениÑ\8f Ñ\8dкÑ\81поÑ\80Ñ\82иÑ\80Ñ\83еÑ\82Ñ\81Ñ\8f Ð´Ñ\80Ñ\83гим Ñ\83злам Mesh сети. "
+"Ð\9eпÑ\80еделение Ð²Ð½ÐµÑ\88него Ñ\81оединениÑ\8f Ð¿Ñ\80оиÑ\81Ñ\85одиÑ\82 Ð¿Ñ\80и Ð½Ð°Ð»Ð¸Ñ\87ии Ð² Ð»Ð¾ÐºÐ°Ð»Ñ\8cном HNA6 ::"
+"ffff:0:0/96 или 2000::/3. Значение по умолчанию 'оба'."
 
 msgid "Willingness"
 msgstr "Готовность"
 
 msgid "Yellow"
-msgstr ""
+msgstr "Желтый"
 
 msgid "no"
-msgstr ""
+msgstr "нет"
 
 msgid "yes"
-msgstr ""
-
-#~ msgid "Device"
-#~ msgstr "Устройство"
-
-#~ msgid ""
-#~ "Make sure that OLSRd is running, the \"txtinfo\" plugin is loaded, "
-#~ "configured on port 2006 and accepts connections from \"127.0.0.1\"."
-#~ msgstr ""
-#~ "Удостоверьтесь, что OLSRd работает, модуль \"txtinfo\" загружен, настроен "
-#~ "на порт 2006 и принимает соединения от \"127.0.0.1\"."
+msgstr "да"
index a8070fd3feb087214e6c1f9001c13e1267ae59e3..380ee73a6dcc22dbd123848ec6e00da7bffef7fa 100644 (file)
@@ -9,6 +9,8 @@ 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
index 45d916d7275b8c3f726b13af1d5c96c6870e2744..a6b0e1dd902f0c953483326dcc5a4e02a194762c 100644 (file)
@@ -26,9 +26,9 @@ uci:foreach( "openvpn_recipes", "openvpn_recipe",
 )
 
 function s.getPID(section) -- Universal function which returns valid pid # or nil
-       local pid = sys.exec("%s | grep -w %s | grep openvpn | grep -v grep | awk '{print $1}'" % { psstring,section} )
-       if pid and #pid > 0 and tonumber(pid) ~= nil then
-               return tonumber(pid)
+       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
index 89cf1161cc3c0b2f2aa16030e287d22782e1952e..07db6ff2b6aaf7a27e680c7aba1db8f9db1e1116 100644 (file)
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: openvpn\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2013-09-06 10:01+0200\n"
-"Last-Translator: datasheet <michael.gritsaenko@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2013-09-06 10:01+0200\n"
+"PO-Revision-Date: 2018-01-31 12:42+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "%s"
-msgstr "%s"
+msgstr "%ы"
 
 msgid "'net30', 'p2p', or 'subnet'"
 msgstr "'net30', 'p2p' или 'subnet'"
 
 msgid "Accept options pushed from server"
-msgstr "Принимать опции, отправленные с сервера"
+msgstr "Принять параметры, переданные с сервера."
 
 msgid "Add"
 msgstr "Добавить"
 
 msgid "Add route after establishing connection"
-msgstr "Добавить маршрут после установки соединения"
+msgstr "Добавить маршрут после установки соединения."
 
 msgid "Additional authentication over TLS"
-msgstr "Дополнительная аутентификация через TLS"
+msgstr "Дополнительная аутентификация используя TLS."
 
 msgid "Allow client-to-client traffic"
-msgstr "Разрешить общение клиентов друг с другом"
+msgstr "Разрешить трафик между клиентами."
 
 msgid "Allow multiple clients with same certificate"
-msgstr "Разрешить несколько клиентов с одним сертификатом"
+msgstr ""
+"Разрешить одновременное подключение нескольких клиентов с одним сертификатом."
 
 msgid "Allow only one session"
-msgstr "Разрешить только одну сессию"
+msgstr "Разрешить только одну сессию."
 
 msgid "Allow remote to change its IP or port"
-msgstr "Ð\9fозволиÑ\82Ñ\8c Ñ\83далÑ\91нномÑ\83 Ñ\85оÑ\81Ñ\82Ñ\83 Ð¸Ð·Ð¼ÐµÐ½Ñ\8fÑ\82Ñ\8c IP-адÑ\80еÑ\81 Ð¸Ð»Ð¸ Ð¿Ð¾Ñ\80Ñ\82"
+msgstr "РазÑ\80еÑ\88иÑ\82Ñ\8c Ñ\83даленное Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ IP-адÑ\80еÑ\81а Ð¸Ð»Ð¸ Ð¿Ð¾Ñ\80Ñ\82а."
 
 msgid "Allowed maximum of connected clients"
-msgstr "Разрешённое максимальное количество подключенных клиентов"
+msgstr "Разрешено максимальное количество подключенных клиентов."
 
 msgid "Allowed maximum of internal"
-msgstr "Разрешённое максимальное количество внутренних"
+msgstr ""
+"Разрешено максимальное кол-во внутренних маршрутов клиенту (по "
+"умолчанию=256)."
 
 msgid "Allowed maximum of new connections"
-msgstr "Разрешённое максимальное количество новых соединений"
+msgstr "Разрешено максимальное кол-во новых соединений."
 
 msgid "Append log to file"
-msgstr "Ð\94опиÑ\81аÑ\82Ñ\8c Ð¶Ñ\83Ñ\80нал Ð² Ñ\84айл"
+msgstr "Ð\94обавиÑ\82Ñ\8c Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c Ð² Ñ\84айл Ð¶Ñ\83Ñ\80нала."
 
 msgid "Authenticate using username/password"
-msgstr "Аутентификация с использованием имени пользователя и пароля"
+msgstr "Аутентификация используя имя пользователя и пароль."
 
 msgid "Automatically redirect default route"
-msgstr "Автоматически перенаправлять маршруты по умолчанию"
+msgstr "Автоматически перенаправлять маршруты по умолчанию."
 
 msgid "Below is a list of configured OpenVPN instances and their current state"
-msgstr "Список настроенных процессов OpenVPN и их текущее состояние"
+msgstr "Список настроенных экземпляров OpenVPN и их текущее состояние."
 
 msgid "Call down cmd/script before TUN/TAP close"
-msgstr "Команда/скрипт, запускаем(ая/ый) перед закрытием TUN/TAP"
+msgstr ""
+"Команда/скрипт для командной строки, запускаемая(ый) перед отключением TUN/"
+"TAP."
 
 msgid "Certificate authority"
 msgstr "Центр сертификации"
 
 msgid "Change process priority"
-msgstr "Изменить приоритет процесса"
+msgstr "Изменить приоритет процесса после инициализации."
 
 msgid "Change to directory before initialization"
-msgstr "Ð\9fеÑ\80ейÑ\82и Ð² Ñ\83казаннÑ\83Ñ\8e Ð´Ð¸Ñ\80екÑ\82оÑ\80иÑ\8e Ð¿ÐµÑ\80ед Ð¸Ð½Ð¸Ñ\86иализаÑ\86ией"
+msgstr "Ð\9fеÑ\80ейÑ\82и Ð² Ñ\83казаннÑ\83Ñ\8e Ð¿Ð°Ð¿ÐºÑ\83 Ð¿ÐµÑ\80ед Ð¸Ð½Ð¸Ñ\86иализаÑ\86ией."
 
 msgid "Check peer certificate against a CRL"
-msgstr "Проверить сертификат пира в CRL"
+msgstr "Проверить сертификат узла на соответствие файлу CRL в формате PEM."
 
 msgid "Chroot to directory after initialization"
-msgstr "Выполнить chroot на указанную директорию после инициализации"
+msgstr ""
+"Корневой каталог после инициализации. OpenVPN не сможет получить доступ к "
+"файлам за его пределами."
 
 msgid "Client is disabled"
-msgstr "Ð\9aлиенÑ\82 Ð²Ñ\8bключен"
+msgstr "Ð\9aлиенÑ\82 Ð¾Ñ\82ключен"
 
 msgid "Configuration category"
-msgstr "Ð\9aаÑ\82егоÑ\80иÑ\8f ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии"
+msgstr "Ð\9aаÑ\82егоÑ\80иÑ\8f Ð½Ð°Ñ\81Ñ\82Ñ\80ойки"
 
 msgid "Configure client mode"
-msgstr "Настроить режим клиента"
+msgstr "Настроить режим клиента."
 
 msgid "Configure server bridge"
-msgstr "Настроить мост"
+msgstr "Настроить мост сервера."
 
 msgid "Configure server mode"
-msgstr "Настроить режим сервера"
+msgstr "Настроить режим сервера."
 
 msgid "Connect through Socks5 proxy"
-msgstr "Соединяться используя Socks5-прокси"
+msgstr "Соединяться используя Socks5 прокси."
 
 msgid "Connect to remote host through an HTTP proxy"
-msgstr "Подключиться к удалённому хосту через HTTP-прокси"
+msgstr "Подключиться к удалённому хосту используя HTTP прокси."
 
 msgid "Connection retry interval"
-msgstr "Интервал между попытками подключения"
+msgstr "Интервал между попытками подключения."
 
 msgid "Daemonize after initialization"
-msgstr "Ð\9fеÑ\80ейÑ\82и Ð² Ñ\80ежим Ð´ÐµÐ¼Ð¾Ð½Ð° Ð¿Ð¾Ñ\81ле Ð¸Ð½Ð¸Ñ\86иализаÑ\86ии"
+msgstr "Ð\97апÑ\83Ñ\81Ñ\82иÑ\82Ñ\8c Ð² Ñ\80ежиме Ð´ÐµÐ¼Ð¾Ð½Ð° Ð¿Ð¾Ñ\81ле Ð¸Ð½Ð¸Ñ\86иализаÑ\86ии."
 
 msgid "Delay n seconds after connection"
-msgstr "Задержка n секунд после подключения"
+msgstr "Задержка n секунд после подключения."
 
 msgid "Delay tun/tap open and up script execution"
-msgstr ""
-"Использовать задержку перед открытием устройства tun и выполнением скрипта"
+msgstr "Использовать задержку запуска tun/tap до выполнения скрипта"
 
 msgid "Diffie Hellman parameters"
-msgstr "Ð\9fаÑ\80амеÑ\82Ñ\80Ñ\8b Ð°Ð»Ð³Ð¾Ñ\80иÑ\82ма DH"
+msgstr "Файл Ð¿Ð°Ñ\80амеÑ\82Ñ\80ов Ð\94иÑ\84Ñ\84и Ð¥ÐµÐ»Ð¼Ð°Ð½Ð°."
 
 msgid "Directory for custom client config files"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8cÑ\81киÑ\85 Ñ\84айлов ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии ÐºÐ»Ð¸ÐµÐ½Ñ\82ов"
+msgstr "Ð\9fапка Ð´Ð»Ñ\8f Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8cÑ\81киÑ\85 config Ñ\84айлов ÐºÐ»Ð¸ÐµÐ½Ñ\82а."
 
 msgid "Disable Paging"
-msgstr "Выключить пейджинг"
+msgstr ""
+"Отключите пейджинг, вызвав функцию 'POSIX mlockall'.<br />Требуется, чтобы "
+"OpenVPN был первоначально запущен от root.<br />Хотя OpenVPN может "
+"впоследствии понизить свой UID с помощью опции '-user'."
 
 msgid "Disable cipher initialisation vector"
-msgstr "Выключить вектор инициализации шифра"
+msgstr ""
+"Отключить использование вектора инициализации алгоритма шифрования (не "
+"рекомендуется)."
 
 msgid "Disable options consistency check"
-msgstr "Ð\92Ñ\8bклÑ\8eÑ\87иÑ\82Ñ\8c Ð¿Ñ\80овеÑ\80кÑ\83 Ñ\86елоÑ\81Ñ\82ноÑ\81Ñ\82и Ð¾Ð¿Ñ\86ий"
+msgstr "Ð\92Ñ\8bклÑ\8eÑ\87иÑ\82Ñ\8c Ð¿Ñ\80овеÑ\80кÑ\83 Ñ\81оглаÑ\81ованноÑ\81Ñ\82и Ð¿Ð°Ñ\80амеÑ\82Ñ\80ов."
 
 msgid "Disable replay protection"
-msgstr "Отключить проверку повторов"
+msgstr ""
+"Отключите защиту от повторных атак.<br />Не используйте если не можете "
+"выбрать между большей эффективностью и меньшей безопасностью."
 
 msgid "Do not bind to local address and port"
-msgstr "Не выполнять привязку к локальному адресу и порту"
+msgstr ""
+"Не выполнять привязку к локальному адресу и порту.<br />Используется "
+"динамический порт, подключение только с параметром 'remote'."
 
 msgid "Don't actually execute ifconfig"
-msgstr "Не выполнять ifconfig"
+msgstr ""
+"На самом деле не выполнять команды 'ifconfig/netsh'.<br />Вместо этого "
+"передавать параметры '-ifconfig' сценариям с использованием переменных "
+"окружения."
 
 msgid "Don't add routes automatically"
-msgstr "Не добавлять маршруты автоматически"
+msgstr ""
+"Не добавлять маршруты автоматически.<br />Вместо этого передавать маршруты в "
+"'-route-up' скрипт используя переменные окружения."
 
 msgid "Don't cache --askpass or --auth-user-pass passwords"
-msgstr "Не кешировать пароли --askpass или --auth-user-pass"
+msgstr ""
+"Не кэшировать пароли '-askpass' или '-auth-user-pass' в виртуальной памяти."
 
-#, fuzzy
 msgid "Don't inherit global push options"
-msgstr "Не наследовать глобальные параметры push"
+msgstr ""
+"Не наследовать общие параметры 'Push Options' для конкретного клиента.  Это "
+"позволит игнорировать 'Push Options' на уровне конфиг файла."
 
 msgid "Don't log timestamps"
-msgstr "Ð\9dе Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8bваÑ\82Ñ\8c Ð¾Ñ\82меÑ\82ки Ð²Ñ\80емени Ð² Ð¶Ñ\83Ñ\80нал"
+msgstr "Ð\9dе Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8bваÑ\82Ñ\8c Ð¼ÐµÑ\82ки Ð²Ñ\80емени Ð² Ñ\81иÑ\81Ñ\82емнÑ\8bй Ð¶Ñ\83Ñ\80нал."
 
 msgid "Don't pull routes automatically"
 msgstr ""
+"Когда используется опция '-client' или '-pull', принять опции переданные "
+"сервером ИСКЛЮЧАЯ опции для маршрутов и dhcp опции например DNS серверы.<br /"
+">Когда используется на клиенте, эта опция эффективно 'затыкает' сервер от "
+"попытки добавить маршруты в таблицу маршрутизации клиента. <br />Хотя имейте "
+"ввиду что эта опция по прежнему позволяет серверу устанавливать свойства TCP/"
+"IP для клиентского TUN/TAP интерфейса."
 
 msgid "Don't re-read key on restart"
-msgstr "Не считывать заново ключ при перезапуске"
+msgstr ""
+"Не перечитывайте файлы ключей при перезапуске (выполнении 'SIGUSR1' или "
+"'ping-restart')."
 
 msgid "Don't require client certificate"
-msgstr "Не требовать сертификат у клиента"
+msgstr ""
+"Не требовать сертификата клиента, клиент будет аутентифицироваться используя "
+"только логин и пароль."
 
 msgid "Don't use adaptive lzo compression"
-msgstr "Не использовать адаптивное сжатие LZO"
+msgstr "Не использовать адаптивное сжатие 'lzo'."
 
 msgid "Don't warn on ifconfig inconsistencies"
-msgstr "Не извещать об ошибках ifconfig"
+msgstr ""
+"Не выводить предупреждение проверки согласованности параметров, если "
+"параметр 'ifconfig' с этой стороны соединения не совпадает с удаленной "
+"стороной."
 
 msgid "Echo parameters to log"
-msgstr "Ð\92Ñ\8bводиÑ\82Ñ\8c Ð¿Ð°Ñ\80амеÑ\82Ñ\80Ñ\8b Ð² Ð¶Ñ\83Ñ\80нал"
+msgstr "Ð\97апиÑ\81Ñ\8bваÑ\82Ñ\8c Ð¿Ð°Ñ\80амеÑ\82Ñ\80Ñ\8b Ñ\8dÑ\85о-оÑ\82веÑ\82ов Ð² Ñ\81иÑ\81Ñ\82емнÑ\8bй Ð¶Ñ\83Ñ\80нал."
 
 msgid "Empirically measure MTU"
-msgstr "Эмпирически измерять MTU"
+msgstr "Эмпирически измерять MTU."
 
 msgid "Enable OpenSSL hardware crypto engines"
-msgstr "Включить поддержку аппаратного шифрования OpenSSL"
+msgstr "Включить поддержку аппаратного шифрования OpenSSL."
 
 msgid "Enable Path MTU discovery"
-msgstr "Включить обнаружение пути MTU (PMTUD)"
+msgstr "Включить обнаружение пути MTU (PMTUD)."
 
 msgid "Enable Static Key encryption mode (non-TLS)"
-msgstr "Включить шифрование с постоянным ключом (не TLS)"
+msgstr ""
+"Включить режим шифрования с использованием Статического ключа (не TLS). "
+"Использовать общий секретный файл, который был сгенерирован 'genkey'."
 
 msgid "Enable TLS and assume client role"
-msgstr "Ð\92клÑ\8eÑ\87иÑ\82Ñ\8c TLS Ð² Ñ\80ежиме ÐºÐ»Ð¸ÐµÐ½Ñ\82а"
+msgstr "Ð\92клÑ\8eÑ\87иÑ\82Ñ\8c TLS Ð¸ Ð²Ñ\8bÑ\81Ñ\82Ñ\83пиÑ\82Ñ\8c Ð² Ñ\80оли ÐºÐ»Ð¸ÐµÐ½Ñ\82а Ð²Ð¾ Ð²Ñ\80емÑ\8f Ð¿Ð¾Ð´Ñ\82веÑ\80ждениÑ\8f TLS."
 
 msgid "Enable TLS and assume server role"
-msgstr "Включить TLS в режиме сервера"
+msgstr "Включить в режиме сервера протокол TLS."
 
 msgid "Enable internal datagram fragmentation"
-msgstr "Включить внутреннюю фрагментацию дейтаграмм"
+msgstr ""
+"Включить внутреннюю фрагментацию датаграмм, чтобы не отправлялись UDP-"
+"датаграммы, размер которых превышает максимальное число байтов."
 
 msgid "Enable management interface on <em>IP</em> <em>port</em>"
-msgstr "Включить интерфейс управления на <em>IP</em> <em>порту</em>"
+msgstr ""
+"Включить интерфейс управления, назначив ему <em>IP-адрес</em> <em>порт</em>."
 
 msgid "Enabled"
 msgstr "Включено"
 
 msgid "Encrypt and authenticate all control channel packets with the key"
-msgstr "Шифровать и аутентифициоровать ключом все пакеты канала управления"
+msgstr ""
+"Шифрование и проверка подлинности всех пакетов каналов управления с помощью "
+"ключа"
 
 msgid "Encryption cipher for packets"
-msgstr "ШиÑ\84Ñ\80ование Ð´Ð»Ñ\8f Ð¿Ð°ÐºÐµÑ\82ов"
+msgstr "Ð\90лгоÑ\80иÑ\82м Ñ\88иÑ\84Ñ\80ованиÑ\8f Ð´Ð»Ñ\8f Ð¿Ð°ÐºÐµÑ\82ов."
 
 msgid "Execute shell cmd after routes are added"
-msgstr "Выполнить shell-команду после добавления маршрутов"
+msgstr "Выполнить shell команду после добавления маршрутов."
 
 msgid "Execute shell command on remote ip change"
-msgstr "Выполнить shell-команду при изменении IP-адреса удалённого хоста"
+msgstr "Выполнить shell команду при изменении IP-адреса удалённого хоста."
 
 msgid ""
 "Executed in server mode on new client connections, when the client is still "
 "untrusted"
 msgstr ""
-"Выполняется в режиме сервера при появлении новых клиентских соединений, если "
-"к клиенту ещё нет доверия"
+"Выполнять в режиме сервера '-mode server' при появлении новых клиентских "
+"соединений, если к клиенту ещё нет доверия."
 
 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"
+"Выполнять в режиме сервера '-mode server' каждый раз, когда адрес/маршрут "
+"IPv4 или MAC-адрес добавлен в таблицу маршрутизации OpenVPN."
 
 msgid "Exit on TLS negotiation failure"
-msgstr "Выйти при ошибке согласования TLS"
+msgstr "Выйти при ошибке согласования использования протокола TLS."
 
 msgid "Get PEM password from controlling tty before we daemonize"
-msgstr "Получить пароль PEM от управляющей консоли перед уходом в фон"
+msgstr "Получить PEM пароль от управления tty, прежде чем включить демон."
 
 msgid "HMAC authentication for packets"
-msgstr "HMAC-аутентификация для пакетов"
+msgstr "Аутентификация с помощью HMAC ключа для пакетов."
 
 msgid "Handling of authentication failures"
-msgstr "Обработка ошибок аутентификации"
+msgstr ""
+"Настройка реакции на ошибки проверки имени пользователя / пароля, такие как "
+"ответ клиента на AUTH_FAILED сообщение от сервера или провал проверки пароля "
+"закрытого ключа."
 
 msgid ""
 "Helper directive to simplify the expression of --ping and --ping-restart in "
 "server mode configurations"
 msgstr ""
-"Ð\92Ñ\81помогаÑ\82елÑ\8cнаÑ\8f Ð´Ð¸Ñ\80екÑ\82ива Ð´Ð»Ñ\8f Ñ\83пÑ\80оÑ\89ениÑ\8f Ð²Ñ\8bÑ\80ажений --ping Ð¸ --ping-restart Ð² "
-"конфигурациях серверного режима"
+"Ð\92Ñ\81помогаÑ\82елÑ\8cнаÑ\8f ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° Ð¿Ñ\80едназнаÑ\87еннаÑ\8f Ð´Ð»Ñ\8f Ñ\83пÑ\80оÑ\89ениÑ\8f Ð²Ñ\8bÑ\80ажений '-ping' Ð¸ '-"
+"ping-restart' в режиме настройки сервера."
 
 msgid "If hostname resolve fails, retry"
-msgstr "Ð\9fÑ\8bÑ\82аÑ\82Ñ\8cÑ\81Ñ\8f Ð·Ð°Ð½Ð¾Ð²Ð¾ Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87иÑ\82Ñ\8cÑ\81Ñ\8f Ð¿Ñ\80и Ð¾Ñ\88ибке Ð¾Ð¿Ñ\80еделениÑ\8f Ð¸Ð¼ÐµÐ½Ð¸ Ñ\85оÑ\81Ñ\82а"
+msgstr "Ð\9fÑ\8bÑ\82аÑ\82Ñ\8cÑ\81Ñ\8f Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87иÑ\82Ñ\8cÑ\81Ñ\8f Ñ\81нова Ð¿Ñ\80и Ð¾Ñ\88ибке Ð¾Ð¿Ñ\80еделениÑ\8f Ð¸Ð¼ÐµÐ½Ð¸ Ñ\85оÑ\81Ñ\82а."
 
 msgid "Instance \"%s\""
-msgstr "Ð\9fÑ\80оÑ\86еÑ\81Ñ\81 \"%s\""
+msgstr "ЭкземплÑ\8fÑ\80 \"%s\""
 
 msgid "Invalid"
-msgstr "Неверный"
+msgstr "Неверно"
 
 msgid "Keep local IP address on restart"
-msgstr "Не изменять локальный IP-адрес при перезапуске"
+msgstr "Не изменять локальный IP-адрес при перезапуске."
 
 msgid "Keep remote IP address on restart"
-msgstr "Не изменять удалённый IP-адрес при перезапуске"
+msgstr "Не изменять удалённый IP-адрес при перезапуске."
 
 msgid "Keep tun/tap device open on restart"
-msgstr "Ð\9dе Ð·Ð°ÐºÑ\80Ñ\8bваÑ\82Ñ\8c Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82во tun/tap Ð¿Ñ\80и Ð¿ÐµÑ\80езапÑ\83Ñ\81ке"
+msgstr "СоÑ\85Ñ\80анÑ\8fÑ\82Ñ\8c Ð²Ð¸Ñ\80Ñ\82Ñ\83алÑ\8cное Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82во tun/tap Ð·Ð°Ð¿Ñ\83Ñ\89еннÑ\8bм Ð¿Ñ\80и Ð¿ÐµÑ\80езагÑ\80Ñ\83зке."
 
-# Может "Окно перехода ключей", надо смотреть контекст
-#, fuzzy
 msgid "Key transition window"
 msgstr "Окно передачи ключей"
 
 msgid "Limit repeated log messages"
-msgstr "Ð\9eгÑ\80аниÑ\87иÑ\82Ñ\8c Ð¿Ð¾Ð²Ñ\82оÑ\80Ñ\8fÑ\8eÑ\89иеÑ\81Ñ\8f Ñ\81ообÑ\89ениÑ\8f Ð¶Ñ\83Ñ\80нала"
+msgstr "Ð\9eгÑ\80аниÑ\87иÑ\82Ñ\8c Ð¿Ð¾Ð²Ñ\82оÑ\80Ñ\8fÑ\8eÑ\89иеÑ\81Ñ\8f Ñ\81ообÑ\89ениÑ\8f Ð² Ð¶Ñ\83Ñ\80нале."
 
 msgid "Local certificate"
 msgstr "Локальный сертификат"
 
 msgid "Local host name or ip address"
-msgstr "Имя локального хоста или IP-адрес"
+msgstr "Имя локального хоста или IP-адрес."
 
 msgid "Local private key"
-msgstr "Локальный секретный ключ"
+msgstr "Локальный Приватный ключ"
 
 msgid "Major mode"
 msgstr "Основной режим"
 
 msgid "Make tun device IPv6 capable"
-msgstr "Включить поддержку IPv6 для устройства tun"
+msgstr "Включить поддержку IPv6 для виртуального устройства tun."
 
 msgid "Maximum number of queued TCP output packets"
-msgstr "Максимальное количество исходящих TCP-пакетов в очереди"
+msgstr "Максимальное количество исходящих TCP пакетов в очереди."
 
 msgid "Number of allocated broadcast buffers"
-msgstr "Количество выделенных широковещательных буферов"
+msgstr "Количество выделенных широковещательных буферов."
 
 msgid "Number of lines for log file history"
-msgstr "Количество строк в файле журнала"
+msgstr "Количество строк в файле журнала."
 
 msgid "Only accept connections from given X509 name"
-msgstr "Ð\9fÑ\80инимаÑ\82Ñ\8c Ñ\81оединениÑ\8f Ñ\82олÑ\8cко Ð¾Ñ\82 Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ð¸Ð¼ÐµÐ½Ð¸ X509"
+msgstr "ТолÑ\8cко Ð¿Ñ\80инимаÑ\82Ñ\8c Ñ\81оединениÑ\8f Ð¾Ñ\82 Ð¸Ð¼ÐµÐ½Ð¸ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ñ\81еÑ\80Ñ\82иÑ\84икаÑ\82а X509."
 
 msgid "Only process ping timeouts if routes exist"
 msgstr ""
-"Ð\9eбÑ\80абаÑ\82Ñ\8bваÑ\82Ñ\8c Ñ\82аймаÑ\83Ñ\82 ping-запÑ\80оÑ\81ов Ñ\82олÑ\8cко Ð² Ñ\81лÑ\83Ñ\87ае, ÐºÐ¾Ð³Ð´Ð° Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83еÑ\82 "
-"необходимый маршрут"
+"Ð\98Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð²Ñ\80еменнÑ\83Ñ\8e Ð·Ð°Ð´ÐµÑ\80жкÑ\83 Ð¿Ð¸Ð½Ð³-запÑ\80оÑ\81ов Ñ\82олÑ\8cко Ð² Ñ\81лÑ\83Ñ\87ае, ÐºÐ¾Ð³Ð´Ð° "
+"существует необходимый маршрут."
 
 msgid "OpenVPN"
 msgstr "OpenVPN"
 
 msgid "OpenVPN instances"
-msgstr "Ð\9fÑ\80оÑ\86еÑ\81Ñ\81ы OpenVPN"
+msgstr "ЭкземплÑ\8fÑ\80ы OpenVPN"
 
 msgid "Optimize TUN/TAP/UDP writes"
-msgstr "Оптимизировать запись TUN/TAP/UDP"
+msgstr ""
+"Оптимизация записей ввода/вывода TUN/TAP/UDP (экспериментальная опция)."
 
 msgid "Output to syslog and do not daemonize"
-msgstr "Ð\92Ñ\8bводиÑ\82Ñ\8c Ñ\81ообÑ\89ениÑ\8f Ð² Ñ\81иÑ\81Ñ\82емнÑ\8bй Ð¶Ñ\83Ñ\80нал Ð¸ Ð½Ðµ Ð¿ÐµÑ\80еÑ\85одиÑ\82Ñ\8c Ð² Ñ\84оновÑ\8bй Ñ\80ежим"
+msgstr "Ð\97апиÑ\81Ñ\8bваÑ\82Ñ\8c Ñ\81обÑ\8bÑ\82иÑ\8f Ð² Ñ\81иÑ\81Ñ\82емнÑ\8bй Ð¶Ñ\83Ñ\80нал Ð¸ Ð½Ðµ Ð¿ÐµÑ\80еÑ\85одиÑ\82Ñ\8c Ð² Ñ\80ежим Ð´ÐµÐ¼Ð¾Ð½Ð°."
 
 msgid "Overview"
-msgstr "Ð\9eбзоÑ\80"
+msgstr "Ð\93лавное Ð¼ÐµÐ½Ñ\8e"
 
 msgid "PKCS#12 file containing keys"
-msgstr "Файл с ключами PKCS#12"
+msgstr ""
+"Задайте файл 'PKCS #12', содержащий локальный Приватный ключ, локальный "
+"сертификат и root CA сертификат."
 
 msgid "Pass environment variables to script"
-msgstr "Передавать переменные окружения скрипту"
+msgstr "Передавать переменные окружения скрипту."
 
 msgid "Persist replay-protection state"
-msgstr "Сохранять состояние защищённого ответа"
+msgstr ""
+"Сохранять состояние защиты от воспроизведения в сеансах, используя файл для "
+"сохранения и перезагрузки состояния."
 
-#, fuzzy
 msgid "Persist/unpersist ifconfig-pool"
-msgstr "Сохранять/не сохранять пул ifconfig"
+msgstr "Сохранять/не сохранять пул ifconfig."
 
 msgid "Ping remote every n seconds over TCP/UDP port"
-msgstr "Выполнять ping каждые n секунд, используя порт TCP/UDP"
+msgstr "Выполнять пинг-запрос каждые n секунд, используя порт TCP/UDP."
 
 msgid "Policy level over usage of external programs and scripts"
-msgstr "Уровень безопасности для внешних программ и скриптов"
+msgstr "Уровень безопасности для внешних программ и скриптов."
 
 msgid "Port"
 msgstr "Порт"
@@ -344,247 +391,254 @@ msgid "Protocol"
 msgstr "Протокол"
 
 msgid "Proxy timeout in seconds"
-msgstr "ТаймаÑ\83Ñ\82 Ð¿Ñ\80окÑ\81и (Ñ\81ек.)"
+msgstr "Ð\92Ñ\80емÑ\8f Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ\8f Ð¿Ñ\80окÑ\81и Ð² Ñ\81екÑ\83ндаÑ\85."
 
 msgid "Push an ifconfig option to remote"
-msgstr "Ð\9fеÑ\80едаваÑ\82Ñ\8c Ð¾Ð¿Ñ\86иÑ\8e ifconfig Ñ\83далÑ\91нной Ñ\81Ñ\82оÑ\80оне"
+msgstr "Ð\92Ñ\8bполниÑ\82Ñ\8c ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\83 ifconfig Ð½Ð° Ñ\83далÑ\91нном Ñ\83зле."
 
 msgid "Push options to peer"
-msgstr "Ð\9fеÑ\80едаваÑ\82Ñ\8c Ð¾Ð¿Ñ\86ии Ð¿Ð¸Ñ\80Ñ\83"
+msgstr "Ð\9fаÑ\80амеÑ\82Ñ\80Ñ\8b Ñ\83зла - 'Push options'."
 
 msgid "Query management channel for private key"
-msgstr "Ð\97апÑ\80оÑ\81иÑ\82Ñ\8c ÐºÐ°Ð½Ð°Ð» Ñ\83пÑ\80авлениÑ\8f Ð´Ð»Ñ\8f Ð·Ð°ÐºÑ\80Ñ\8bÑ\82ого ÐºÐ»Ñ\8eÑ\87а"
+msgstr "Ð\9aанал Ñ\83пÑ\80авлениÑ\8f Ð·Ð°Ð¿Ñ\80оÑ\81ами Ð´Ð»Ñ\8f Ð\9fÑ\80иваÑ\82ного ÐºÐ»Ñ\8eÑ\87а."
 
 msgid "Randomly choose remote server"
-msgstr "Случайно выбирать удалённый сервер"
+msgstr "Случайный выбор удалённого сервера."
 
 msgid "Refuse connection if no custom client config"
 msgstr ""
-"РазоÑ\80ваÑ\82Ñ\8c Ñ\81оединение, ÐµÑ\81ли Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8cÑ\81каÑ\8f ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86иÑ\8f ÐºÐ»Ð¸ÐµÐ½Ñ\82а Ð¾Ñ\82Ñ\81Ñ\83Ñ\82Ñ\81Ñ\82вÑ\83еÑ\82"
+"РазоÑ\80ваÑ\82Ñ\8c Ñ\81оединение, ÐµÑ\81ли Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8cÑ\81кий config Ñ\84айл ÐºÐ»Ð¸ÐµÐ½Ñ\82а Ð¾Ñ\82Ñ\81Ñ\83Ñ\82Ñ\81Ñ\82вÑ\83еÑ\82."
 
 msgid "Remap SIGUSR1 signals"
-msgstr "Обрабатывать сигнал SIGUSR1"
+msgstr ""
+"Управление внутренними или внешними сигналами генерируемыми 'SIGUSR1' и "
+"переназначаемыми 'SIGHUP'."
 
 msgid "Remote host name or ip address"
-msgstr "Имя удалённого хоста или IP-адрес"
+msgstr "Имя удалённого хоста или IP-адрес."
 
 msgid "Remote ping timeout"
-msgstr "ТаймаÑ\83Ñ\82 Ñ\83далÑ\91ннÑ\8bÑ\85 ping-запÑ\80оÑ\81ов"
+msgstr "Ð\92Ñ\80емÑ\8f Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ\8f Ñ\83даленного Ð¿Ð¸Ð½Ð³-запÑ\80оÑ\81а."
 
 msgid "Renegotiate data chan. key after bytes"
-msgstr "Пересогласовать ключ канала данных после кол-ва байт"
+msgstr ""
+"Повторное согласование ключа канала данных после отправки или получения n "
+"байт (по умолчанию отключено)."
 
 msgid "Renegotiate data chan. key after packets"
-msgstr "Пересогласовать ключ канала данных после кол-ва пакетов"
+msgstr ""
+"Повторное согласование ключа канала данных после отправки и получения n "
+"пакетов (по умолчанию отключено)."
 
 msgid "Renegotiate data chan. key after seconds"
-msgstr "Пересогласовать ключ канала данных после кол-ва секунд"
+msgstr ""
+"Повторное согласование ключа канала данных через n секунд (по "
+"умолчанию=3600)."
 
-#, fuzzy
 msgid "Replay protection sliding window size"
-msgstr "Размер скользящего окна защиты от повторов"
+msgstr ""
+"Использовать защиту от повтора - скользящее окно размером 'n' с интервалом "
+"времени 't' секунд."
 
 msgid "Require explicit designation on certificate"
-msgstr "Требовать явного указания в сертификате"
+msgstr "Требовать явного указания в сертификате."
 
 msgid "Require explicit key usage on certificate"
-msgstr "Требовать явного использования ключа в сертификате"
+msgstr "Требовать явного использования ключа в сертификате."
 
 msgid "Restart after remote ping timeout"
-msgstr "Ð\9dаÑ\87аÑ\82Ñ\8c Ð·Ð°Ð½Ð¾Ð²Ð¾ Ð¿Ð¾Ñ\81ле Ñ\82аймаÑ\83Ñ\82а ping-запÑ\80оÑ\81а"
+msgstr "Ð\9fеÑ\80езапÑ\83Ñ\81к Ð¿Ð¾Ñ\81ле Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ\8f Ñ\83даленного Ð¿Ð¸Ð½Ð³-запÑ\80оÑ\81а."
 
 msgid "Retransmit timeout on TLS control channel"
-msgstr "Таймаут повторной отправки канала управления TLS"
+msgstr ""
+"Пакет ретранслирует тайм-аут на канале управления протокола TLS, если нет "
+"подтверждения от удаленного узла в течение секунд (по умолчанию=2)."
 
 msgid "Retry indefinitely on HTTP proxy errors"
-msgstr "Постоянно пытаться заново подключиться при ошибке HTTP-прокси"
+msgstr ""
+"Постоянно пытаться заново подключиться при ошибке HTTP прокси.<br />Если "
+"возникает ошибка прокси-сервера HTTP, имитировать сброс 'SIGUSR1'."
 
 msgid "Retry indefinitely on Socks proxy errors"
-msgstr "Постоянно пытаться заново подключиться при ошибке Socks-прокси"
+msgstr ""
+"Постоянно пытаться заново подключиться при ошибке Socks прокси. Если "
+"возникает ошибка прокси-сервера HTTP, имитировать сброс 'SIGUSR1'."
 
 msgid "Route subnet to client"
-msgstr "Перенаправить подсеть клиенту"
+msgstr "Перенаправить подсеть клиенту."
 
 msgid "Run as an inetd or xinetd server"
-msgstr "Запустить как inetd- или xinetd-сервер"
+msgstr "Запуск от имени сервера 'inetd' или 'xinetd'."
 
 msgid "Run script cmd on client connection"
-msgstr "Ð\92Ñ\8bполниÑ\82Ñ\8c Ñ\81кÑ\80ипÑ\82 Ð¿Ñ\80и Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87ении ÐºÐ»Ð¸ÐµÐ½Ñ\82а"
+msgstr "Ð\97апÑ\83Ñ\81Ñ\82иÑ\82Ñ\8c Ñ\81кÑ\80ипÑ\82 ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ Ñ\81Ñ\82Ñ\80оки Ð¿Ñ\80и Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87ении ÐºÐ»Ð¸ÐµÐ½Ñ\82а."
 
 msgid "Run script cmd on client disconnection"
-msgstr "Ð\92Ñ\8bполниÑ\82Ñ\8c Ñ\81кÑ\80ипÑ\82 Ð¿Ñ\80и Ð¾Ñ\82клÑ\8eÑ\87ении ÐºÐ»Ð¸ÐµÐ½Ñ\82а"
+msgstr "Ð\97апÑ\83Ñ\81Ñ\82иÑ\82Ñ\8c Ñ\81кÑ\80ипÑ\82 ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ Ñ\81Ñ\82Ñ\80оки Ð¿Ñ\80и Ð¾Ñ\82клÑ\8eÑ\87ении ÐºÐ»Ð¸ÐµÐ½Ñ\82а."
 
 msgid "Run up/down scripts for all restarts"
-msgstr "Запускать up/down скрипты для всех перезапусков"
+msgstr "Запускать 'up/down' скрипты во время всех перезапусков."
 
 msgid "Send notification to peer on disconnect"
-msgstr "Ð\9fоÑ\81лаÑ\82Ñ\8c Ñ\83ведомление Ð¿Ð¸Ñ\80Ñ\83 Ð¿Ñ\80и Ñ\80азÑ\8aединении"
+msgstr "Ð\9eÑ\82пÑ\80авиÑ\82Ñ\8c Ñ\83ведомление Ð½Ð° Ñ\83зел Ð¿Ñ\80и Ð¾Ñ\82клÑ\8eÑ\87ении."
 
 msgid "Set GID to group"
-msgstr "УÑ\81Ñ\82ановиÑ\82Ñ\8c GID Ð³Ñ\80Ñ\83ппе"
+msgstr "Ð\97адайÑ\82е GID Ð³Ñ\80Ñ\83ппÑ\8b."
 
 msgid "Set TCP/UDP MTU"
-msgstr "УÑ\81Ñ\82ановиÑ\82Ñ\8c TCP/UDP MTU"
+msgstr "Ð\97адайÑ\82е MTU Ð´Ð»Ñ\8f TCP/UDP."
 
 msgid "Set UID to user"
-msgstr "УÑ\81Ñ\82ановиÑ\82Ñ\8c UID Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8e"
+msgstr "Ð\97адайÑ\82е UID Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f."
 
-#, fuzzy
 msgid "Set aside a pool of subnets"
-msgstr "УÑ\81Ñ\82ановиÑ\82Ñ\8c Ð¿Ñ\83л Ð¿Ð¾Ð´Ñ\81еÑ\82ей"
+msgstr "Ð\92Ñ\8bделиÑ\82Ñ\8c Ð¿Ñ\83л Ð¿Ð¾Ð´Ñ\81еÑ\82ей."
 
 msgid "Set extended HTTP proxy options"
-msgstr "УÑ\81Ñ\82ановиÑ\82Ñ\8c Ñ\80аÑ\81Ñ\88иÑ\80еннÑ\8bе Ð½Ð°Ñ\81Ñ\82Ñ\80ойки HTTP-пÑ\80окÑ\81и"
+msgstr "Ð\97адайÑ\82е Ñ\80аÑ\81Ñ\88иÑ\80еннÑ\8bе Ð¿Ð°Ñ\80амеÑ\82Ñ\80Ñ\8b HTTP Ð¿Ñ\80окÑ\81и."
 
 msgid "Set output verbosity"
-msgstr "УÑ\81Ñ\82ановиÑ\82Ñ\8c Ñ\83Ñ\80овенÑ\8c Ð²Ñ\8bвода"
+msgstr "Ð\97адайÑ\82е Ð´ÐµÑ\82ализаÑ\86иÑ\8e Ð²ÐµÐ´ÐµÐ½Ð¸Ñ\8f Ð¶Ñ\83Ñ\80нала."
 
 msgid "Set size of real and virtual address hash tables"
-msgstr "Установить размер реальной и виртуальной хеш-таблиц"
+msgstr ""
+"Задайте размер реального адреса хэш-таблицы 'r' и виртуального адреса хэш-"
+"таблицы 'v'. По умолчанию для обеих таблиц установлено значение 256."
 
 msgid "Set the TCP/UDP receive buffer size"
-msgstr "УÑ\81Ñ\82ановиÑ\82Ñ\8c Ñ\80азмеÑ\80 Ð±Ñ\83Ñ\84еÑ\80а Ð¿Ñ\80иÑ\91ма TCP/UDP"
+msgstr "Ð\97адайÑ\82е Ñ\80азмеÑ\80 Ð±Ñ\83Ñ\84еÑ\80а Ð¿Ñ\80иÑ\91ма TCP/UDP."
 
 msgid "Set the TCP/UDP send buffer size"
-msgstr "УÑ\81Ñ\82ановиÑ\82Ñ\8c Ñ\80азмеÑ\80 Ð±Ñ\83Ñ\84еÑ\80а Ð¿ÐµÑ\80едаÑ\87и TCP/UDP"
+msgstr "Ð\97адайÑ\82е Ñ\80азмеÑ\80 Ð±Ñ\83Ñ\84еÑ\80а Ð¿ÐµÑ\80едаÑ\87и TCP/UDP."
 
 msgid "Set tun/tap TX queue length"
-msgstr "Установить размер очереди передачи tun/tap"
+msgstr ""
+"Задайте длину очереди передачи интерфейса tun/tap. В настоящее время по "
+"умолчанию 100."
 
 msgid "Set tun/tap adapter parameters"
-msgstr "Установить параметры адаптера tun/tap"
+msgstr ""
+"Задайте параметры адаптеру tun/tap. l это IP-адрес локальной конечной точки "
+"VPN. Для устройств TUN rn является IP-адресом удаленной конечной точки VPN. "
+"Для устройств TAP rn-это маска подсети сегмента виртуального Ethernet, к "
+"которому создается или подключается."
 
 msgid "Set tun/tap device MTU"
-msgstr "УÑ\81Ñ\82ановиÑ\82Ñ\8c MTU Ð´Ð»Ñ\8f tun/tap Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва"
+msgstr "Ð\97адайÑ\82е MTU Ð´Ð»Ñ\8f Ð²Ð¸Ñ\80Ñ\82Ñ\83алÑ\8cного Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва tun/tap."
 
 msgid "Set tun/tap device overhead"
-msgstr "Установить накладные расходы tun/tap устройства"
+msgstr ""
+"Задайте возможное превышение размера MTU для виртуального устройства tun/tap."
 
 msgid "Set upper bound on TCP MSS"
-msgstr "УÑ\81Ñ\82ановиÑ\82Ñ\8c Ð²ÐµÑ\80Ñ\85нÑ\8eÑ\8e Ð³Ñ\80аниÑ\86Ñ\83 Ð´Ð»Ñ\8f TCP MSS"
+msgstr "Ð\97адайÑ\82е Ð²ÐµÑ\80Ñ\85нÑ\8eÑ\8e Ð³Ñ\80аниÑ\86Ñ\83 Ð´Ð»Ñ\8f TCP MSS."
 
 msgid "Shaping for peer bandwidth"
-msgstr "Шейпинг Ð¿Ñ\80опÑ\83Ñ\81кной Ñ\81поÑ\81обноÑ\81Ñ\82и Ð¿Ð¸Ñ\80а"
+msgstr "ФоÑ\80миÑ\80ование Ð¿Ð¾Ð»Ð¾Ñ\81Ñ\8b Ð¿Ñ\80опÑ\83Ñ\81каниÑ\8f Ñ\83злов."
 
 msgid "Shell cmd to execute after tun device open"
-msgstr "Выполнить shell-команду после открытия устройства tun"
+msgstr "Выполнить shell команду после старта виртуального устройства tun."
 
 msgid "Shell cmd to run after tun device close"
-msgstr "Выполнить shell-команду после закрытия устройства tun"
+msgstr "Выполнить shell команду после закрытия виртуального устройства tun."
 
 msgid "Shell command to verify X509 name"
-msgstr "Shell-команда для проверки имени X509"
+msgstr "Команда shell для проверки имени сертификата X509."
 
 msgid "Silence the output of replay warnings"
-msgstr "Заглушить вывод предупреждений повторов"
+msgstr ""
+"Заглушить вывод предупреждений о повторах, которые являются обычным ложным "
+"сигналом в Wi-Fi сетях."
 
 msgid "Size of cipher key"
-msgstr "Размер ключа шифрования"
+msgstr "Размер ключа алгоритма шифрования."
 
 msgid "Specify a default gateway for routes"
-msgstr "УÑ\81Ñ\82ановиÑ\82Ñ\8c Ñ\88лÑ\8eз Ð¿Ð¾ Ñ\83молÑ\87аниÑ\8e Ð´Ð»Ñ\8f Ð¼Ð°Ñ\80Ñ\88Ñ\80Ñ\83Ñ\82ов"
+msgstr "Ð\9dазнаÑ\87иÑ\82Ñ\8c Ñ\88лÑ\8eз Ð¿Ð¾ Ñ\83молÑ\87аниÑ\8e Ð´Ð»Ñ\8f Ð¼Ð°Ñ\80Ñ\88Ñ\80Ñ\83Ñ\82ов."
 
 msgid "Start OpenVPN in a hibernating state"
-msgstr "Запустить OpenVPN в спящем режиме"
+msgstr "Запустить OpenVPN в спящем режиме."
 
 msgid "Start/Stop"
-msgstr "Старт/Стоп"
+msgstr "Старт / Стоп"
 
 msgid "Started"
 msgstr "Запущено"
 
 msgid "Status file format version"
-msgstr "Ð\92еÑ\80Ñ\81иÑ\8f Ñ\84оÑ\80маÑ\82а Ñ\81Ñ\82аÑ\82Ñ\83Ñ\81ного Ñ\84айла"
+msgstr "Ð\92еÑ\80Ñ\81иÑ\8f Ñ\84оÑ\80маÑ\82а Ñ\84айла Ñ\81оÑ\81Ñ\82оÑ\8fниÑ\8f."
 
 msgid "Switch to advanced configuration »"
 msgstr "Перейти к расширенным настройкам »"
 
 msgid "TCP/UDP port # for both local and remote"
-msgstr "Номер локального и удалённого TCP/UDP порта"
+msgstr "Номер локального и удалённого TCP/UDP порта."
 
 msgid "TCP/UDP port # for local (default=1194)"
-msgstr "Номер локального TCP/UDP порта (1194 по умолчанию)"
+msgstr "Номер локального TCP/UDP порта (1194 по умолчанию)."
 
 msgid "TCP/UDP port # for remote (default=1194)"
-msgstr "Номер удалённого TCP/UDP порта (1194 по умолчанию)"
+msgstr "Номер удалённого TCP/UDP порта (1194 по умолчанию)."
 
 msgid "TLS cipher"
-msgstr "ШиÑ\84Ñ\80 TLS"
+msgstr "Ð\90лгоÑ\80иÑ\82м Ñ\88иÑ\84Ñ\80ованиÑ\8f TLS."
 
 msgid "TOS passthrough (applies to IPv4 only)"
-msgstr "Пропуск ToS (только для IPv4)"
+msgstr "TOS пересылки (применяется только к IPv4)."
 
 msgid "Temporary directory for client-connect return file"
-msgstr "Ð\92Ñ\80еменнаÑ\8f Ð´Ð¸Ñ\80екÑ\82оÑ\80иÑ\8f Ð´Ð»Ñ\8f Ñ\84айла Ð²Ð¾Ð·Ñ\80аÑ\82а Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87ениÑ\8f ÐºÐ»Ð¸ÐµÐ½Ñ\82а"
+msgstr "Ð\92Ñ\80еменнаÑ\8f Ð¿Ð°Ð¿ÐºÐ° Ð´Ð»Ñ\8f Ñ\84айла Ð²Ð¾Ð·Ð²Ñ\80аÑ\82а '-client-connect'."
 
 msgid "The highest supported TLS version"
-msgstr ""
+msgstr "Самая высокая поддерживаемая версия протокола TLS."
 
 msgid "The key direction for 'tls-auth' and 'secret' options"
-msgstr ""
+msgstr "Указать ключ для параметров 'tls-auth' и 'secret'."
 
 msgid "The lowest supported TLS version"
-msgstr ""
+msgstr "Самая низкая поддерживаемая версия протокола TLS."
 
 msgid "Timeframe for key exchange"
-msgstr "Временное окно для обмена ключами"
+msgstr "Временные рамки для обмена ключами."
 
 msgid "Type of used device"
-msgstr "Тип используемого устройства"
+msgstr "Тип используемого устройства."
 
 msgid "Use fast LZO compression"
-msgstr "Использовать быстрое сжатие LZO"
+msgstr "Использовать быстрое сжатие 'lzo'."
 
 msgid "Use individual addresses rather than /30 subnets"
-msgstr "Ð\98Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð°Ð´Ñ\80еÑ\81а Ð²Ð¼ÐµÑ\81Ñ\82о Ð¿Ð¾Ð´Ñ\81еÑ\82ей /30"
+msgstr "Ð\98Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð¾Ñ\82делÑ\8cнÑ\8bе Ð°Ð´Ñ\80еÑ\81а Ð²Ð¼ÐµÑ\81Ñ\82о Ð¿Ð¾Ð´Ñ\81еÑ\82ей /30."
 
 msgid "Use protocol"
 msgstr "Использовать протокол"
 
 msgid "Use tun/tap device node"
-msgstr "Использовать файл устройства tun/tap"
+msgstr "Использование виртуального  устройства tun/tap узлом."
 
 msgid "Use username as common name"
-msgstr "Ð\98Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð¸Ð¼Ñ\8f Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f ÐºÐ°Ðº Ð¾Ð±Ñ\89ее Ð¸Ð¼Ñ\8f"
+msgstr "Ð\98Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð¸Ð¼Ñ\8f Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f Ð² ÐºÐ°Ñ\87еÑ\81Ñ\82ве Ð¾Ð±Ñ\89его Ð¸Ð¼ÐµÐ½Ð¸."
 
 msgid "Write log to file"
-msgstr "Записать журнал в файл"
+msgstr "Записывать события в файл."
 
 msgid "Write process ID to file"
-msgstr "Записать ID процесса в файл"
+msgstr "Записать ID процесса в файл."
 
 msgid "Write status to file every n seconds"
-msgstr "Записывать статус в файл каждые n секунд"
+msgstr "Записывать состояние в файл каждые n секунд."
 
 msgid "no"
 msgstr "нет"
 
 msgid "tun/tap device"
-msgstr "устройство tun/tap"
+msgstr "Виртуальное устройство tun/tap."
 
 msgid "tun/tap inactivity timeout"
-msgstr "таймаут простоя tun/tap"
+msgstr "промежуток времени простоя tun/tap."
 
 msgid "yes (%i)"
 msgstr "да (%i)"
 
 msgid "« Switch to basic configuration"
 msgstr "« Перейти к основным настройкам"
-
-#~ msgid "Cryptography"
-#~ msgstr "Криптография"
-
-#~ msgid "Networking"
-#~ msgstr "Сеть"
-
-#~ msgid "Service"
-#~ msgstr "Служба"
-
-#~ msgid "VPN"
-#~ msgstr "VPN"
-
-#~ msgid "openvpn_%s"
-#~ msgstr "openvpn_%s"
-
-#~ msgid "openvpn_%s_desc"
-#~ msgstr "openvpn_%s_описание"
diff --git a/applications/luci-app-p2pblock/Makefile b/applications/luci-app-p2pblock/Makefile
deleted file mode 100644 (file)
index 137849c..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# 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 the Freifunk P2P-Block addon
-LUCI_DEPENDS:=+luci-app-firewall +freifunk-p2pblock @BROKEN
-
-include ../../luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-p2pblock/luasrc/controller/ff_p2pblock.lua b/applications/luci-app-p2pblock/luasrc/controller/ff_p2pblock.lua
deleted file mode 100644 (file)
index eaedda2..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- Copyright 2009 Jo-Philipp Wich <jow@openwrt.org>
--- Licensed to the public under the Apache License 2.0.
-
-module("luci.controller.ff_p2pblock", package.seeall)
-
-function index()
-       entry({"admin", "network", "firewall", "p2pblock"}, cbi("luci_fw/p2pblock"),
-               _("P2P-Block"), 40)
-end
diff --git a/applications/luci-app-p2pblock/luasrc/model/cbi/luci_fw/p2pblock.lua b/applications/luci-app-p2pblock/luasrc/model/cbi/luci_fw/p2pblock.lua
deleted file mode 100644 (file)
index 1f21429..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
--- Copyright 2009 Jo-Philipp Wich <jow@openwrt.org>
--- Licensed to the public under the Apache License 2.0.
-
-local sys = require "luci.sys"
-
-m = Map("freifunk_p2pblock", translate("P2P-Block"),
-       translate("P2P-Block is a greylisting mechanism to block various peer-to-peer protocols for non-whitelisted clients."))
-
-s = m:section(NamedSection, "p2pblock", "settings", "Settings")
-s.anonymous = true
-s.addremove = false
-
-en = s:option(Flag, "_enabled", translate("Enable P2P-Block"))
-en.rmempty = false
-
-function en.cfgvalue()
-       return ( sys.init.enabled("freifunk-p2pblock") and "1" or "0" )
-end
-
-function en.write(self, section, val)
-       if val == "1" then
-               sys.init.enable("freifunk-p2pblock")
-       else
-               sys.init.disable("freifunk-p2pblock")
-       end
-end
-
-s:option(Value, "portrange", translate("Portrange"))
-
-s:option(Value, "blocktime", translate("Block Time"),
-       translate("seconds"))
-
-s:option(DynamicList, "whitelist", translate("Whitelisted IPs"))
-
-l7 = s:option(MultiValue, "layer7", translate("Layer7-Protocols"))
-l7.widget = "checkbox"
-l7:value("aim", "AIM Chat")
-l7:value("bittorrent", "Bittorrent")
-l7:value("edonkey", "eDonkey, eMule, Kademlia")
-l7:value("fasttrack", "Fasttrack Protocol")
-l7:value("ftp", "File Transfer Protocol")
-l7:value("gnutella", "Gnutella")
-l7:value("http", "Hypertext Transfer Protocol")
-l7:value("ident", "Ident Protocol")
-l7:value("irc", "Internet Relay Chat")
-l7:value("jabber", "Jabber/XMPP")
-l7:value("msnmessenger", "MSN Messenger")
-l7:value("ntp", "Network Time Protocol")
-l7:value("pop3", "POP3 Protocol")
-l7:value("smtp", "SMTP Protocol")
-l7:value("ssl", "SSL Protocol")
-l7:value("vnc", "VNC Protocol")
-
-ipp2p = s:option(MultiValue, "ipp2p", translate("IP-P2P"))
-ipp2p.widget = "checkbox"
-ipp2p:value("edk", "eDonkey, eMule, Kademlia")
-ipp2p:value("kazaa", "KaZaA, FastTrack")
-ipp2p:value("gnu", "Gnutella")
-ipp2p:value("dc", "Direct Connect")
-ipp2p:value("bit", "BitTorrent, extended BT")
-ipp2p:value("apple", "AppleJuice")
-ipp2p:value("winmx", "WinMX")
-ipp2p:value("soul", "SoulSeek")
-ipp2p:value("ares", "AresLite")
-
-return m
diff --git a/applications/luci-app-p2pblock/po/ca/p2pblock.po b/applications/luci-app-p2pblock/po/ca/p2pblock.po
deleted file mode 100644 (file)
index fe99a77..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#  default.pot
-#  generated from ./i18n/english/luasrc/i18n/default.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: 2011-02-14 17:43+0100\n"
-"Last-Translator: Manuel Munz <freifunk@somakoma.de>\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"
-
-msgid "Block Time"
-msgstr "Temps de bloqueig"
-
-msgid "Enable P2P-Block"
-msgstr "Habilita el Blocat P2P"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Protocols de capa 7"
-
-msgid "P2P-Block"
-msgstr "Blocat P2P"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"El Blocat P2P és un mecanisme de llista grisa per blocar diversos protocols "
-"peer-tp-peer per clients que no estiguin a la llista blanca."
-
-msgid "Portrange"
-msgstr "Rang de ports"
-
-msgid "Whitelisted IPs"
-msgstr "IPs a la llista blanca"
-
-msgid "seconds"
-msgstr "segons"
diff --git a/applications/luci-app-p2pblock/po/cs/p2pblock.po b/applications/luci-app-p2pblock/po/cs/p2pblock.po
deleted file mode 100644 (file)
index 02eafef..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-08-04 22:44+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"
-
-msgid "Block Time"
-msgstr "Doba blokování"
-
-msgid "Enable P2P-Block"
-msgstr "Povolit P2P-Block"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Layer7-Protokoly"
-
-msgid "P2P-Block"
-msgstr "P2P-Block"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-
-msgid "Portrange"
-msgstr "Rozsah portů"
-
-msgid "Whitelisted IPs"
-msgstr "Povolené IP adresy"
-
-msgid "seconds"
-msgstr "sekundy"
diff --git a/applications/luci-app-p2pblock/po/de/p2pblock.po b/applications/luci-app-p2pblock/po/de/p2pblock.po
deleted file mode 100644 (file)
index e3613d6..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-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: 2011-02-14 17:44+0100\n"
-"Last-Translator: Manuel Munz <freifunk@somakoma.de>\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"
-
-msgid "Block Time"
-msgstr "Sperr-Zeitraum"
-
-msgid "Enable P2P-Block"
-msgstr "P2P-Sperr-Mechanismus aktivieren"
-
-msgid "IP-P2P"
-msgstr "IPP2P"
-
-msgid "Layer7-Protocols"
-msgstr "Layer7-Protokolle"
-
-msgid "P2P-Block"
-msgstr "P2P-Sperre"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"P2P-Block ist ein Mechanismus zum vorrübergehendem Sperren von Peer-to-Peer "
-"Protokollen für nicht auf der Whitelist stehende Clients. "
-
-msgid "Portrange"
-msgstr "Überwachter Port-Bereich"
-
-msgid "Whitelisted IPs"
-msgstr "Freigeschaltete IP-Adressen"
-
-msgid "seconds"
-msgstr "Angabe in Sekunden"
diff --git a/applications/luci-app-p2pblock/po/el/p2pblock.po b/applications/luci-app-p2pblock/po/el/p2pblock.po
deleted file mode 100644 (file)
index 9db357a..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-18 15:23+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"
-
-msgid "Block Time"
-msgstr ""
-
-msgid "Enable P2P-Block"
-msgstr ""
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr ""
-
-msgid "P2P-Block"
-msgstr ""
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-
-msgid "Portrange"
-msgstr ""
-
-msgid "Whitelisted IPs"
-msgstr ""
-
-msgid "seconds"
-msgstr "δευτερόλεπτα"
diff --git a/applications/luci-app-p2pblock/po/en/p2pblock.po b/applications/luci-app-p2pblock/po/en/p2pblock.po
deleted file mode 100644 (file)
index 00cccc8..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-msgid "Block Time"
-msgstr ""
-
-msgid "Enable P2P-Block"
-msgstr ""
-
-msgid "IP-P2P"
-msgstr ""
-
-msgid "Layer7-Protocols"
-msgstr ""
-
-msgid "P2P-Block"
-msgstr ""
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-
-msgid "Portrange"
-msgstr ""
-
-msgid "Whitelisted IPs"
-msgstr ""
-
-msgid "seconds"
-msgstr ""
diff --git a/applications/luci-app-p2pblock/po/es/p2pblock.po b/applications/luci-app-p2pblock/po/es/p2pblock.po
deleted file mode 100644 (file)
index 1edc533..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-19 16:56+0200\n"
-"PO-Revision-Date: 2012-08-19 16:56+0200\n"
-"Last-Translator: josevteg <josevteg@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\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: Pootle 2.0.6\n"
-
-msgid "Block Time"
-msgstr "Tiempo de bloqueo"
-
-msgid "Enable P2P-Block"
-msgstr "Activar bloqueo P2P"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Protocolo Layer7"
-
-msgid "P2P-Block"
-msgstr "Bloqueo de P2P"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"El bloqueo de P2P es un mecanismo de lista gris para bloquear varios "
-"protocolos punto a punto a clientes que no están en lista blanca."
-
-msgid "Portrange"
-msgstr "Rango de puertos"
-
-msgid "Whitelisted IPs"
-msgstr "IPs en la lista blanca"
-
-msgid "seconds"
-msgstr "segundos"
diff --git a/applications/luci-app-p2pblock/po/fr/p2pblock.po b/applications/luci-app-p2pblock/po/fr/p2pblock.po
deleted file mode 100644 (file)
index 524d3d0..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-06-13 21:39+0200\n"
-"PO-Revision-Date: 2012-01-15 07:06+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"
-
-msgid "Block Time"
-msgstr "Temps de blocage"
-
-msgid "Enable P2P-Block"
-msgstr "Activer le blocage P2P"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Protocoles de couche 7"
-
-msgid "P2P-Block"
-msgstr "Blocage P2P"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"Le blocage P2P est un mécanisme de liste grise pour bloquer divers "
-"protocoles de pair-à-pair de clients non autorisés."
-
-msgid "Portrange"
-msgstr "Gamme de ports"
-
-msgid "Whitelisted IPs"
-msgstr "Adresses IP autorisées"
-
-msgid "seconds"
-msgstr "secondes"
diff --git a/applications/luci-app-p2pblock/po/he/p2pblock.po b/applications/luci-app-p2pblock/po/he/p2pblock.po
deleted file mode 100644 (file)
index 5b2679b..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-09-10 03:39+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"
-
-msgid "Block Time"
-msgstr "זמן חסימה"
-
-msgid "Enable P2P-Block"
-msgstr "אפשר חסימת P2P"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "פרוטוקולי Layer7"
-
-msgid "P2P-Block"
-msgstr "חסימת P2P"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"חסימת P2P הינו מנגנון ליצירת 'רשימה אפורה', במטרה לחסום סוגים שונים של "
-"פרוטוקולי P2P עבור לקוחות שאינם ב'רשימה הלבנה'."
-
-msgid "Portrange"
-msgstr "טווח פורטים"
-
-msgid "Whitelisted IPs"
-msgstr "כתובות IP ברשימה הלבנה"
-
-msgid "seconds"
-msgstr "שניות"
diff --git a/applications/luci-app-p2pblock/po/hu/p2pblock.po b/applications/luci-app-p2pblock/po/hu/p2pblock.po
deleted file mode 100644 (file)
index 4f1dffa..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-04-01 19:16+0200\n"
-"Last-Translator: juhosg <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.4\n"
-
-msgid "Block Time"
-msgstr "Blokkolási idő"
-
-msgid "Enable P2P-Block"
-msgstr "P2P-Block engedélyezése"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Layer7 protokollok"
-
-msgid "P2P-Block"
-msgstr "P2P-Block"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"A P2P-Block különféle peer-to-peer protokollok blokkolására szolgáló "
-"mechanizmus, a fehérlistában nem szereplő ügyfelek részére."
-
-msgid "Portrange"
-msgstr "Port tartomány"
-
-msgid "Whitelisted IPs"
-msgstr "Fehérlistás IP címek"
-
-msgid "seconds"
-msgstr "másodperc"
diff --git a/applications/luci-app-p2pblock/po/it/p2pblock.po b/applications/luci-app-p2pblock/po/it/p2pblock.po
deleted file mode 100644 (file)
index 3be5010..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-04-20 10:18+0200\n"
-"PO-Revision-Date: 2012-04-20 10:21+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"
-
-msgid "Block Time"
-msgstr "Periodo di censura"
-
-msgid "Enable P2P-Block"
-msgstr "Abilita la censura del P2P"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Protocolli di Layer7"
-
-msgid "P2P-Block"
-msgstr "Censura P2P"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"La censura, block, del P2P è un meccanismo per bloccare diversi protocolli "
-"peer-to-peer da parte di clienti non apparteneti alla whitelist."
-
-msgid "Portrange"
-msgstr "Range delle porte"
-
-msgid "Whitelisted IPs"
-msgstr "IP in whitelist"
-
-msgid "seconds"
-msgstr "secondi"
diff --git a/applications/luci-app-p2pblock/po/ja/p2pblock.po b/applications/luci-app-p2pblock/po/ja/p2pblock.po
deleted file mode 100644 (file)
index 00cccc8..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-msgid "Block Time"
-msgstr ""
-
-msgid "Enable P2P-Block"
-msgstr ""
-
-msgid "IP-P2P"
-msgstr ""
-
-msgid "Layer7-Protocols"
-msgstr ""
-
-msgid "P2P-Block"
-msgstr ""
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-
-msgid "Portrange"
-msgstr ""
-
-msgid "Whitelisted IPs"
-msgstr ""
-
-msgid "seconds"
-msgstr ""
diff --git a/applications/luci-app-p2pblock/po/ms/p2pblock.po b/applications/luci-app-p2pblock/po/ms/p2pblock.po
deleted file mode 100644 (file)
index 00cccc8..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-msgid "Block Time"
-msgstr ""
-
-msgid "Enable P2P-Block"
-msgstr ""
-
-msgid "IP-P2P"
-msgstr ""
-
-msgid "Layer7-Protocols"
-msgstr ""
-
-msgid "P2P-Block"
-msgstr ""
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-
-msgid "Portrange"
-msgstr ""
-
-msgid "Whitelisted IPs"
-msgstr ""
-
-msgid "seconds"
-msgstr ""
diff --git a/applications/luci-app-p2pblock/po/no/p2pblock.po b/applications/luci-app-p2pblock/po/no/p2pblock.po
deleted file mode 100644 (file)
index af9c25e..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-msgid ""
-msgstr ""
-"Last-Translator: Lars Hardy <lars.hardy@gmail.com>\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-msgid "Block Time"
-msgstr "Blokkerings tid"
-
-msgid "Enable P2P-Block"
-msgstr "Aktiver P2P-Blokkering"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Lag7-Protokoller"
-
-msgid "P2P-Block"
-msgstr "P2P-Blokkering"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"P2P-blokkering er en mekanisme for å blokkere ulike peer-to-peer protokoller "
-"for klienter som ikke er hvitelistede."
-
-msgid "Portrange"
-msgstr "Portområde"
-
-msgid "Whitelisted IPs"
-msgstr "Hvitelistede IP'er"
-
-msgid "seconds"
-msgstr "sekunder"
diff --git a/applications/luci-app-p2pblock/po/pl/p2pblock.po b/applications/luci-app-p2pblock/po/pl/p2pblock.po
deleted file mode 100644 (file)
index 9222a08..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-29 10:53+0200\n"
-"PO-Revision-Date: 2012-03-29 10:55+0200\n"
-"Last-Translator: Anonymous Pootle User\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.4\n"
-
-msgid "Block Time"
-msgstr "Czas blokowania"
-
-msgid "Enable P2P-Block"
-msgstr "Włącz P2P-Block"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Protokoły Layer7"
-
-msgid "P2P-Block"
-msgstr "P2P-Block"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"P2P-Block jest mechanizmem który blokuje rozmaite protokoły peer-to-peer dla "
-"klientów spoza dozwolonej listy."
-
-msgid "Portrange"
-msgstr "Zakres portów"
-
-msgid "Whitelisted IPs"
-msgstr "Dozwolone adresy IP"
-
-msgid "seconds"
-msgstr "sekund"
diff --git a/applications/luci-app-p2pblock/po/pt-br/p2pblock.po b/applications/luci-app-p2pblock/po/pt-br/p2pblock.po
deleted file mode 100644 (file)
index 8ebac37..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-
-msgid "Block Time"
-msgstr "Tempo de bloqueio"
-
-msgid "Enable P2P-Block"
-msgstr "Habilite o bloqueio P2P"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Protocolos da camada de aplicação"
-
-msgid "P2P-Block"
-msgstr "P2P-Block"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"P2P-Block é um mecanismo de lista cinza para bloquear vários protocolos "
-"peer-to-peer para clientes fora da lista branca."
-
-msgid "Portrange"
-msgstr "Faixa de porta"
-
-msgid "Whitelisted IPs"
-msgstr "IPs na lista branca"
-
-msgid "seconds"
-msgstr "segundos"
diff --git a/applications/luci-app-p2pblock/po/pt/p2pblock.po b/applications/luci-app-p2pblock/po/pt/p2pblock.po
deleted file mode 100644 (file)
index 365f9f2..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-01 01:17+0200\n"
-"PO-Revision-Date: 2013-05-01 01:30+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"
-
-msgid "Block Time"
-msgstr "Tempo a bloquear"
-
-msgid "Enable P2P-Block"
-msgstr "Activar Bloqueio P2P"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Portocolos Layer7"
-
-msgid "P2P-Block"
-msgstr "Bloqueio P2P"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"Bloqueio P2P é um mecanismo lista verde para bloquear vários protocolos "
-"peer-to-peer para clientes que não se encontram na lista branca"
-
-msgid "Portrange"
-msgstr "Intervalo de Portas"
-
-msgid "Whitelisted IPs"
-msgstr "IPs na lista branca"
-
-msgid "seconds"
-msgstr "segundos"
diff --git a/applications/luci-app-p2pblock/po/ro/p2pblock.po b/applications/luci-app-p2pblock/po/ro/p2pblock.po
deleted file mode 100644 (file)
index 2f7d74e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-10-07 17:09+0200\n"
-"Last-Translator: Daniel <daniel.petre@pitesti.rcs-rds.ro>\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.4\n"
-
-msgid "Block Time"
-msgstr "Durata de blocare"
-
-msgid "Enable P2P-Block"
-msgstr "Activeaza blocarea P2P"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Protocoale Layer7"
-
-msgid "P2P-Block"
-msgstr "Blocare P2P"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"Blocarea P2P este un mecanism de blocare a diferitelor protocoale pentru "
-"clienti necunoscuti."
-
-msgid "Portrange"
-msgstr "Gama de porturi"
-
-msgid "Whitelisted IPs"
-msgstr "Adrese IP de incredere"
-
-msgid "seconds"
-msgstr "secunde"
diff --git a/applications/luci-app-p2pblock/po/ru/p2pblock.po b/applications/luci-app-p2pblock/po/ru/p2pblock.po
deleted file mode 100644 (file)
index f6a2740..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: LuCI: p2pblock\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-06-01 12:02+0200\n"
-"PO-Revision-Date: 2013-11-13 18:46+0200\n"
-"Last-Translator: Роман <x.wserfer@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\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"
-"X-Poedit-SourceCharset: UTF-8\n"
-
-msgid "Block Time"
-msgstr "Время блокировки"
-
-msgid "Enable P2P-Block"
-msgstr "Включить блокировку P2P"
-
-#, fuzzy
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Протоколы 7-го уровня"
-
-msgid "P2P-Block"
-msgstr "Блокировка P2P"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"Блокировка P2P позволяет запретить P2P-протоколы для клиентов вне белого "
-"списка."
-
-msgid "Portrange"
-msgstr "Диапазон портов"
-
-msgid "Whitelisted IPs"
-msgstr "Белый список IP"
-
-msgid "seconds"
-msgstr "секунды"
diff --git a/applications/luci-app-p2pblock/po/sk/p2pblock.po b/applications/luci-app-p2pblock/po/sk/p2pblock.po
deleted file mode 100644 (file)
index 1881b3c..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"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"
-
-msgid "Block Time"
-msgstr ""
-
-msgid "Enable P2P-Block"
-msgstr ""
-
-msgid "IP-P2P"
-msgstr ""
-
-msgid "Layer7-Protocols"
-msgstr ""
-
-msgid "P2P-Block"
-msgstr ""
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-
-msgid "Portrange"
-msgstr ""
-
-msgid "Whitelisted IPs"
-msgstr ""
-
-msgid "seconds"
-msgstr ""
diff --git a/applications/luci-app-p2pblock/po/sv/p2pblock.po b/applications/luci-app-p2pblock/po/sv/p2pblock.po
deleted file mode 100644 (file)
index f98c6cc..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: sv\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Block Time"
-msgstr "Tid för blockering"
-
-msgid "Enable P2P-Block"
-msgstr "Aktivera P2P-blockering"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Layer7-protokollen"
-
-msgid "P2P-Block"
-msgstr "P2P-blockering"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"P2P-Block är en grålistande mekanism för att blockera vissa peer-to-peer-"
-"protokoll för icke-vitlistade klienter."
-
-msgid "Portrange"
-msgstr "Porträckvidd"
-
-msgid "Whitelisted IPs"
-msgstr "Vitlistade IP-adresser"
-
-msgid "seconds"
-msgstr "sekunder"
diff --git a/applications/luci-app-p2pblock/po/templates/p2pblock.pot b/applications/luci-app-p2pblock/po/templates/p2pblock.pot
deleted file mode 100644 (file)
index 6fa5da1..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-msgid "Block Time"
-msgstr ""
-
-msgid "Enable P2P-Block"
-msgstr ""
-
-msgid "IP-P2P"
-msgstr ""
-
-msgid "Layer7-Protocols"
-msgstr ""
-
-msgid "P2P-Block"
-msgstr ""
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-
-msgid "Portrange"
-msgstr ""
-
-msgid "Whitelisted IPs"
-msgstr ""
-
-msgid "seconds"
-msgstr ""
diff --git a/applications/luci-app-p2pblock/po/tr/p2pblock.po b/applications/luci-app-p2pblock/po/tr/p2pblock.po
deleted file mode 100644 (file)
index 7c670d8..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-10-11 22:45+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"
-
-msgid "Block Time"
-msgstr "Engel Zamanı"
-
-msgid "Enable P2P-Block"
-msgstr "P2P-Bloğu'nu Aç"
-
-msgid "IP-P2P"
-msgstr "iP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Layer7 - Protokolleri"
-
-msgid "P2P-Block"
-msgstr "P2P-Bloğu"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"P2P-Bloğu bir engel (greylist) mekanizmasıdır. izin verilenler listesinde "
-"(Beyaz Liste) olmayan istemciler için p2p protokolünü engeller."
-
-msgid "Portrange"
-msgstr "Portrange"
-
-msgid "Whitelisted IPs"
-msgstr "Beyaz Liste iPleri"
-
-msgid "seconds"
-msgstr "saniye"
diff --git a/applications/luci-app-p2pblock/po/uk/p2pblock.po b/applications/luci-app-p2pblock/po/uk/p2pblock.po
deleted file mode 100644 (file)
index 3e7dff9..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-08-13 16:04+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"
-
-msgid "Block Time"
-msgstr "Загальний час"
-
-msgid "Enable P2P-Block"
-msgstr "Активувати блокування P2P"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Протокол Layer7"
-
-msgid "P2P-Block"
-msgstr "P2P блоковано"
-
-#, fuzzy
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"P2P-блокування являє собою механізм сірих списків для блокування різних "
-"рівний-однотипних протоколів для НЕ-білого списку клієнтів."
-
-msgid "Portrange"
-msgstr "Діапазон портів"
-
-msgid "Whitelisted IPs"
-msgstr "Білий список IP-адрес"
-
-msgid "seconds"
-msgstr "секунд"
diff --git a/applications/luci-app-p2pblock/po/vi/p2pblock.po b/applications/luci-app-p2pblock/po/vi/p2pblock.po
deleted file mode 100644 (file)
index 4bad090..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: Manuel Munz <freifunk@somakoma.de>\n"
-"Language-Team: \n"
-"Language: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-msgid "Block Time"
-msgstr "Thá»\9di gian Block"
-
-msgid "Enable P2P-Block"
-msgstr "Kích hoạt P2P-Block"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "Layer7-protocols"
-
-msgid "P2P-Block"
-msgstr "P2P-Block"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr ""
-"P2P-Block là má»\99t cÆ¡ chế greylisting Ä\91á»\83 chặn các peer-to-peer "
-"protocols cho khách hàng không nằm trên whitelisted."
-
-msgid "Portrange"
-msgstr "Portrange"
-
-msgid "Whitelisted IPs"
-msgstr "Whitelisted IPs"
-
-msgid "seconds"
-msgstr "giây"
diff --git a/applications/luci-app-p2pblock/po/zh-cn/p2pblock.po b/applications/luci-app-p2pblock/po/zh-cn/p2pblock.po
deleted file mode 100644 (file)
index 66725be..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-06-17 19:11+0200\n"
-"PO-Revision-Date: 2013-10-08 15:22+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Block Time"
-msgstr "封锁时间"
-
-msgid "Enable P2P-Block"
-msgstr "启动P2P封锁"
-
-msgid "IP-P2P"
-msgstr "IP-P2P"
-
-msgid "Layer7-Protocols"
-msgstr "第7层协议"
-
-msgid "P2P-Block"
-msgstr "P2P封锁"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr "P2P封锁使用灰名单机制,以阻止非白名单客户的各种P2P协议。"
-
-msgid "Portrange"
-msgstr "端口范围"
-
-msgid "Whitelisted IPs"
-msgstr "白名单IP地址"
-
-msgid "seconds"
-msgstr "秒"
diff --git a/applications/luci-app-p2pblock/po/zh-tw/p2pblock.po b/applications/luci-app-p2pblock/po/zh-tw/p2pblock.po
deleted file mode 100644 (file)
index f542f77..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-14 11:09+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"
-
-msgid "Block Time"
-msgstr "阻斷時間"
-
-msgid "Enable P2P-Block"
-msgstr "啓用P2P禁斷"
-
-msgid "IP-P2P"
-msgstr "IP點對點協定"
-
-msgid "Layer7-Protocols"
-msgstr "第七層協定"
-
-msgid "P2P-Block"
-msgstr "P2P禁斷"
-
-msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
-"for non-whitelisted clients."
-msgstr "P2P-Block是一個灰名單機制, 針對不在白名單清單裡面的用戶, 阻斷各種類的P2P點對點協定."
-
-msgid "Portrange"
-msgstr "範圍埠"
-
-msgid "Whitelisted IPs"
-msgstr "白名單列表IP"
-
-msgid "seconds"
-msgstr "秒數"
diff --git a/applications/luci-app-p2pblock/root/etc/uci-defaults/40_luci-p2pblock b/applications/luci-app-p2pblock/root/etc/uci-defaults/40_luci-p2pblock
deleted file mode 100755 (executable)
index 030ebbe..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-uci -q batch <<-EOF >/dev/null
-       delete citrack.@freifunk_p2pblock[-1]
-       add ucitrack freifunk_p2pblock
-       set ucitrack.@freifunk_p2pblock[-1].init=freifunk-p2pblock
-       commit ucitrack
-EOF
-
-rm -f /tmp/luci-indexcache
-exit 0
index 923b22e00ecf2de36c4d8609b8416b0d1da6a6b6..5a05be8fac2fa4a02c49e4d8a9136ec5d54923e7 100644 (file)
@@ -1,19 +1,19 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: p910nd\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-08-15 11:42+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\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-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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "Bidirectional mode"
 msgstr "Двунаправленный режим"
@@ -25,33 +25,26 @@ msgid ""
 "First you have to install the packages to get support for USB (kmod-usb-"
 "printer) or parallel port (kmod-lp)."
 msgstr ""
-"Ð\94лÑ\8f Ð½Ð°Ñ\87ала Ð²Ð°Ð¼ Ð½ÐµÐ¾Ð±Ñ\85одимо Ñ\83Ñ\81Ñ\82ановиÑ\82Ñ\8c Ð¿Ð°ÐºÐµÑ\82Ñ\8b Ð´Ð»Ñ\8f Ð¿Ð¾Ð´Ð´ÐµÑ\80жки USB (kmod-usb-"
-"printer) или параллельного порта (kmod-lp)."
+"СнаÑ\87ала Ð²Ñ\8b Ð´Ð¾Ð»Ð¶Ð½Ñ\8b Ñ\83Ñ\81Ñ\82ановиÑ\82Ñ\8c Ð¿Ð°ÐºÐµÑ\82Ñ\8b Ð¼Ð¾Ð´Ñ\83лей Ñ\8fдÑ\80а, Ñ\87Ñ\82обÑ\8b Ð¿Ð¾Ð»Ñ\83Ñ\87иÑ\82Ñ\8c Ð¿Ð¾Ð´Ð´ÐµÑ\80жкÑ\83 "
+"принтеров с интерфейсом USB (kmod-usb-printer) или LPT (kmod-lp)."
 
 msgid "Interface"
-msgstr ""
+msgstr "Интерфейс"
 
 msgid "Port"
 msgstr "Порт"
 
 msgid "Settings"
-msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойки"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка"
 
 msgid "Specifies the interface to listen on."
-msgstr ""
+msgstr "Задать интерфейс для входящих соединений."
 
 msgid "TCP listener port."
-msgstr "Прослушиваемый TCP-порт."
+msgstr "Порт для входящих соединений TCP."
 
 msgid "enable"
-msgstr "включить"
+msgstr "Ð\92ключить"
 
 msgid "p910nd - Printer server"
-msgstr "p910nd - сервер печати"
-
-#~ msgid "port_help"
-#~ msgstr "Помощь по портам"
-
-#~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer."
-#~ msgstr ""
-#~ "p910nd прослушивает порт 910+N. То есть 9100 - номер первого принтера."
+msgstr "Сервер печати p910nd"
diff --git a/applications/luci-app-pagekitec/Makefile b/applications/luci-app-pagekitec/Makefile
new file mode 100644 (file)
index 0000000..d875009
--- /dev/null
@@ -0,0 +1,16 @@
+#
+# Copyright (C) 2018 Karl Palsson <karlp@tweak.net.au>
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LuCI Support for PageKite
+LUCI_DEPENDS:=+pagekitec
+
+PKG_MAINTAINER:=Karl Palsson <karlp@tweak.net.au>
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-pagekitec/luasrc/controller/pagekitec.lua b/applications/luci-app-pagekitec/luasrc/controller/pagekitec.lua
new file mode 100644 (file)
index 0000000..938356b
--- /dev/null
@@ -0,0 +1,8 @@
+-- Copyright 2018 Karl Palsson <karlp@tweak.net.au>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.pagekitec", package.seeall)
+
+function index()
+    entry({"admin", "services", "pagekitec"}, cbi("pagekitec"), _("PageKite"))
+end
diff --git a/applications/luci-app-pagekitec/luasrc/model/cbi/pagekitec.lua b/applications/luci-app-pagekitec/luasrc/model/cbi/pagekitec.lua
new file mode 100644 (file)
index 0000000..1abd3f7
--- /dev/null
@@ -0,0 +1,26 @@
+m = Map("pagekitec", translate("PageKite"),
+    translate([[
+<p/>Note: you need a working PageKite account, or at least, your own running front end for this form to work.
+Visit <a href="https://pagekite.net/home/">your account</a> to set up a name for your
+router and get a secret key for the connection.
+<p/><em>Note: this web configurator only supports
+some very very basic uses of pagekite.</em>
+]]))
+
+s = m:section(TypedSection, "pagekitec", translate("PageKite"))
+s.anonymous = true
+
+p = s:option(Value, "kitename", translate("Kite Name"))
+p = s:option(Value, "kitesecret", translate("Kite Secret"))
+p.password = true
+p = s:option(Flag, "static", translate("Static Setup"),
+       translate([[Static setup, disable FE failover and DDNS updates, set this if you are running your
+       own frontend without a pagekite.me account]]))
+
+p = s:option(Flag, "simple_http", translate("Basic HTTP"),
+    translate([[Enable a tunnel to the local HTTP server (in most cases, this admin
+site)]]))
+p = s:option(Flag, "simple_ssh", translate("Basic SSH"),
+    translate([[Enable a tunnel to the local SSH server]]))
+
+return m
diff --git a/applications/luci-app-pagekitec/po/ja/pagekitec.po b/applications/luci-app-pagekitec/po/ja/pagekitec.po
new file mode 100644 (file)
index 0000000..c303f58
--- /dev/null
@@ -0,0 +1,59 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.7\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid ""
+"<p/>Note: you need a working PageKite account, or at least, your own running "
+"front end for this form to work. Visit <a href=\"https://pagekite.net/home/"
+"\">your account</a> to set up a name for your router and get a secret key "
+"for the connection. <p/><em>Note: this web configurator only supports some "
+"very very basic uses of pagekite.</em>"
+msgstr ""
+"<p/>注意: 動作には PageKite アカウント、もしくは少なくともこのフォーム用の実"
+"行中のフロントエンドが必要です。ルーター用の名前をセットアップするには<a "
+"href=\"https://pagekite.net/home/\">アカウント</a>へアクセスし、接続用のシー"
+"クレット キーを取得します。<p/><em>注意: この Web 設定は、PageKite の非常に簡"
+"易な使用のみサポートしています。</em>"
+
+msgid "Basic HTTP"
+msgstr "ベーシック HTTP"
+
+msgid "Basic SSH"
+msgstr "ベーシック SSH"
+
+msgid ""
+"Enable a tunnel to the local HTTP server (in most cases, this admin site)"
+msgstr "ローカル HTTP サーバーへのトンネルを有効化(通常、この管理サイト)"
+
+msgid "Enable a tunnel to the local SSH server"
+msgstr "ローカル SSH サーバーへのトンネルを有効化"
+
+msgid "Kite Name"
+msgstr "Kite 名"
+
+msgid "Kite Secret"
+msgstr "Kite シークレット"
+
+msgid "PageKite"
+msgstr "PageKite"
+
+msgid "Static Setup"
+msgstr "静的セットアップ"
+
+msgid ""
+"Static setup, disable FE failover and DDNS updates, set this if you are "
+"running your own frontend without a pagekite.me account"
+msgstr ""
+"静的セットアップは、 FE フェイルオーバーと DDNS アップデートを無効にします。"
+"もし pagekite.me アカウント無しにフロントエンドを実行している場合、これを設定"
+"します。"
diff --git a/applications/luci-app-pagekitec/po/templates/pagekitec.pot b/applications/luci-app-pagekitec/po/templates/pagekitec.pot
new file mode 100644 (file)
index 0000000..3b76ee6
--- /dev/null
@@ -0,0 +1,40 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid ""
+"<p/>Note: you need a working PageKite account, or at least, your own running "
+"front end for this form to work. Visit <a href=\"https://pagekite.net/home/"
+"\">your account</a> to set up a name for your router and get a secret key "
+"for the connection. <p/><em>Note: this web configurator only supports some "
+"very very basic uses of pagekite.</em>"
+msgstr ""
+
+msgid "Basic HTTP"
+msgstr ""
+
+msgid "Basic SSH"
+msgstr ""
+
+msgid ""
+"Enable a tunnel to the local HTTP server (in most cases, this admin site)"
+msgstr ""
+
+msgid "Enable a tunnel to the local SSH server"
+msgstr ""
+
+msgid "Kite Name"
+msgstr ""
+
+msgid "Kite Secret"
+msgstr ""
+
+msgid "PageKite"
+msgstr ""
+
+msgid "Static Setup"
+msgstr ""
+
+msgid ""
+"Static setup, disable FE failover and DDNS updates, set this if you are "
+"running your own frontend without a pagekite.me account"
+msgstr ""
diff --git a/applications/luci-app-pagekitec/root/etc/uci-defaults/40_luci-pagekitec b/applications/luci-app-pagekitec/root/etc/uci-defaults/40_luci-pagekitec
new file mode 100755 (executable)
index 0000000..95d7e9e
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+uci -q batch <<-EOF >/dev/null
+       delete ucitrack.@pagekitec[-1]
+       add ucitrack pagekitec
+       set ucitrack.@pagekitec[-1].init=pagekitec
+       commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
diff --git a/applications/luci-app-pbx-voicemail/COPYING b/applications/luci-app-pbx-voicemail/COPYING
deleted file mode 100644 (file)
index 94a9ed0..0000000
+++ /dev/null
@@ -1,674 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    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 3 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, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/applications/luci-app-pbx-voicemail/Makefile b/applications/luci-app-pbx-voicemail/Makefile
deleted file mode 100644 (file)
index eefe0fd..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# 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 PBX Administration Voicemail Support
-LUCI_DEPENDS:=+luci-app-pbx +asterisk18 +msmtp +coreutils-base64 @BROKEN
-
-include ../../luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-pbx-voicemail/luasrc/controller/pbx-voicemail.lua b/applications/luci-app-pbx-voicemail/luasrc/controller/pbx-voicemail.lua
deleted file mode 100644 (file)
index 6f3dfac..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
---[[
-    Copyright 2011 Iordan Iordanov <iiordanov (AT) gmail.com>
-
-    This file is part of luci-pbx-voicemail.
-
-    luci-pbx-voicemail 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 3 of the License, or
-    (at your option) any later version.
-
-    luci-pbx-voicemail 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 luci-pbx-voicemail.  If not, see <http://www.gnu.org/licenses/>.
-]]--
-
-module("luci.controller.pbx-voicemail", package.seeall)
-
-function index()
-        entry({"admin", "services", "pbx", "pbx-voicemail"}, cbi("pbx-voicemail"), "Voicemail", 5)
-end
diff --git a/applications/luci-app-pbx-voicemail/luasrc/model/cbi/pbx-voicemail.lua b/applications/luci-app-pbx-voicemail/luasrc/model/cbi/pbx-voicemail.lua
deleted file mode 100644 (file)
index a6087e9..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
---[[
-    Copyright 2011 Iordan Iordanov <iiordanov (AT) gmail.com>
-
-    This file is part of luci-pbx-voicemail.
-
-    luci-pbx-voicemail 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 3 of the License, or
-    (at your option) any later version.
-
-    luci-pbx-voicemail 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 luci-pbx-voicemail.  If not, see <http://www.gnu.org/licenses/>.
-]]--
-
-if     nixio.fs.access("/etc/init.d/asterisk")   then
-   server = "asterisk"
-elseif nixio.fs.access("/etc/init.d/freeswitch") then
-   server = "freeswitch"
-else
-   server = ""
-end
-
-modulename = "pbx-voicemail"
-vmlogfile  = "/tmp/last_sent_voicemail.log"
-
-m = Map (modulename, translate("Voicemail Setup"),
-         translate("Here you can configure a global voicemail for this PBX. Since this system is \
-         intended to run on embedded systems like routers, there is no local storage of voicemail - \
-         it must be sent out by email. Therefore you need to configure an outgoing mail (SMTP) server \
-         (for example your ISP's, Google's, or Yahoo's SMTP server), and provide a list of \
-         addresses that receive recorded voicemail."))
-
--- Recreate the config, and restart services after changes are commited to the configuration.
-function m.on_after_commit(self)
-        luci.sys.call("/etc/init.d/pbx-" .. server .. " restart 1\>/dev/null 2\>/dev/null")
-        luci.sys.call("/etc/init.d/"     .. server .. " restart 1\>/dev/null 2\>/dev/null")
-end
-
-
-----------------------------------------------------------------------------------------------------
-s = m:section(NamedSection, "global_voicemail", "voicemail", translate("Global Voicemail Setup"),
-              translate("When you enable voicemail, you will have the opportunity to specify \
-              email addresses that receive recorded voicemail. You must also set up an SMTP server below."))
-s.anonymous = true
-
-enable = s:option(ListValue, "enabled", translate("Enable Voicemail"))
-enable:value("yes", translate("Yes"))
-enable:value("no",  translate("No"))
-enable.default = "no"
-
-emails = s:option(DynamicList, "global_email_addresses",
-                  translate("Email Addresses that Receive Voicemail"))
-emails:depends("enabled", "yes")
-
-savepath = s:option(Value, "global_save_path", translate("Local Storage Directory"),
-                    translate("You can also retain copies of voicemail messages on the device running \
-                              your PBX. The path specified here will be created if it doesn't exist. \
-                              Beware of limited space on embedded devices like routers, and enable this \
-                              option only if you know what you are doing."))
-savepath.optional = true
-
-if     nixio.fs.access("/etc/pbx-voicemail/recordings/greeting.gsm")   then
-   m1 = s:option(DummyValue, "_m1")
-   m1:depends("enabled", "yes")
-   m1.default = "NOTE: Found a voicemail greeting. To check or change your voicemail greeting, dial *789 \
-                 and the system will play back your current greeting. After that, a long beep will sound and \
-                 you can press * in order to record a new message. Hang up to avoid recording a message. \
-                 If you press *, a second long beep will sound, and you can record a new greeting. \
-                 Hang up or press # to stop recording. When # is pressed the system will play back the \
-                 new greeting."
-else
-   m1 = s:option(DummyValue, "_m1")
-   m1:depends("enabled", "yes")
-   m1.default = "WARNING: Could not find voicemail greeting. Callers will hear only a beep before \
-                 recording starts. To record a greeting, dial *789, and press * after the long beep. \
-                 If you press *, a second long beep will sound, and you can record a new greeting. \
-                 Hang up or press # to stop recording. When # is pressed the system will play back the \
-                 new greeting."
-end
-
-
-----------------------------------------------------------------------------------------------------
-s = m:section(NamedSection, "voicemail_smtp", "voicemail", translate("Outgoing mail (SMTP) Server"),
-              translate("In order for this PBX to send emails containing voicemail recordings, you need to \
-              set up an SMTP server here. Your ISP usually provides an SMTP server for that purpose. \
-              You can also set up a third party SMTP server such as the one provided by Google or Yahoo."))
-s.anonymous = true
-
-serv = s:option(Value, "smtp_server", translate("SMTP Server Hostname or IP Address"))
-serv.datatype = "host(0)"
-
-port = s:option(Value, "smtp_port", translate("SMTP Port Number"))
-port.datatype = "port"
-port.default = "25"
-
-tls = s:option(ListValue, "smtp_tls", translate("Secure Connection Using TLS"))
-tls:value("on",  translate("Yes"))
-tls:value("off", translate("No"))
-tls.default = "on"
-
-auth = s:option(ListValue, "smtp_auth", translate("SMTP Server Authentication"))
-auth:value("on",  translate("Yes"))
-auth:value("off", translate("No"))
-auth.default = "off"
-
-user = s:option(Value, "smtp_user", translate("SMTP User Name"))
-user:depends("smtp_auth", "on")
-
-pwd = s:option(Value, "smtp_password", translate("SMTP Password"),
-               translate("Your real SMTP password is not shown for your protection. It will be changed \
-                         only when you change the value in this box."))
-pwd.password = true
-pwd:depends("smtp_auth", "on")
-                            
--- We skip reading off the saved value and return nothing.
-function pwd.cfgvalue(self, section)
-   return "Password Not Displayed"
-end
-   
--- We check the entered value against the saved one, and only write if the entered value is
--- something other than the empty string, and it differes from the saved value.
-function pwd.write(self, section, value)
-   local orig_pwd = m:get(section, self.option)
-   if value == "Password Not Displayed" then value = "" end
-   if value and #value > 0 and orig_pwd ~= value then
-      Value.write(self, section, value)
-   end
-end
-
-----------------------------------------------------------------------------------------------------
-s = m:section(NamedSection, "voicemail_log", "voicemail", translate("Last Sent Voicemail Log"))
-s.anonymous = true
-
-s:option (DummyValue, "vmlog")
-
-sts = s:option(DummyValue, "_sts") 
-sts.template = "cbi/tvalue"
-sts.rows = 5
-
-function sts.cfgvalue(self, section)
-   log = nixio.fs.readfile(vmlogfile)
-   if log == nil or log == "" then
-      log = "No errors or messages reported."
-   end
-   return log
-end
-
-return m
diff --git a/applications/luci-app-pbx-voicemail/po/ca/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/ca/pbx-voicemail.po
deleted file mode 100644 (file)
index c0119f7..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-07-01 05:47+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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr "Adreces de correu electrònic que reben correu de veu"
-
-msgid "Enable Voicemail"
-msgstr "Habilita el correu de veu"
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr "Registre del últim correu de veu enviat"
-
-msgid "Local Storage Directory"
-msgstr "Directori d'emmagatzematge local"
-
-msgid "No"
-msgstr "No"
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr "Servidor de correu sortint (SMTP)"
-
-msgid "SMTP Password"
-msgstr "Contrasenya SMTP"
-
-msgid "SMTP Port Number"
-msgstr "Nombre de port SMTP"
-
-msgid "SMTP Server Authentication"
-msgstr "Autenticació del servidor SMTP"
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr "Adreça IP o nom de host del servidor SMTP"
-
-msgid "SMTP User Name"
-msgstr "Nom d'usuari SMTP"
-
-msgid "Secure Connection Using TLS"
-msgstr "Assegura la connexió mitjançant TLS"
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-"Quan habiliteu el correu de veu, tindreu l'oportunitat d'especificar adreces "
-"de correu electrònic que reben correu de veu gravat. Heu d'establir també "
-"un servidor SMTP a baix."
-
-msgid "Yes"
-msgstr "Sí"
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-"Podeu també retenir còpies de missatges de veu en el dispositiu executant el "
-"vostre PBX. La ruta especificat aquí es crearà si no existeix. Teniu compte "
-"d'espai limitat en dispositius incrustats com els encaminadors, i habiliteu "
-"aquesta opció només si coneixeu ho que feu."
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
-"La vostra contrasenya SMTP no es mostra per a la vostra protecció. Es "
-"canviarà només quan canvieu el valor en aquesta caixa."
diff --git a/applications/luci-app-pbx-voicemail/po/cs/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/cs/pbx-voicemail.po
deleted file mode 100644 (file)
index 6d94b35..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-06-05 19:16+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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr "Povolit Voicemail"
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr "Ne"
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr ""
-
-msgid "SMTP Password"
-msgstr "SMTP heslo"
-
-msgid "SMTP Port Number"
-msgstr "SMTP číslo portu"
-
-msgid "SMTP Server Authentication"
-msgstr ""
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr ""
-
-msgid "SMTP User Name"
-msgstr "SMTP uživatelské jméno"
-
-msgid "Secure Connection Using TLS"
-msgstr ""
-
-msgid "Voicemail Setup"
-msgstr "Voicemail nastavení"
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr "Ano"
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/de/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/de/pbx-voicemail.po
deleted file mode 100644 (file)
index 224b5a9..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-01-28 22:30+0200\n"
-"Last-Translator: DAC324 <gerd_roethig@web.de>\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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr "E-Mail Adressen die Sprachnachrichten empfangen"
-
-msgid "Enable Voicemail"
-msgstr "Anrufbeantworter aktivieren"
-
-msgid "Global Voicemail Setup"
-msgstr "Allgemeine Einstellungen für Voicemail"
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-"Es kann ein systemweiter Anrufbeantworter für diese Telefonanlage (<abbr "
-"title=\"Private Branch eXchange\">PBX</abbr>) konfiguriert werden. Da dieses "
-"System für den Einsatz auf embedded Systemen wie Routern optimiert wurde, "
-"gibt es keine Möglichkeit die Sprachnachrichten lokal zu speichern. Sie "
-"müssen per E-Mail versendet werden. Daher muss ein ausgehender Mail-Server "
-"(<abbr title=\"Simple Mail Transfer Protocol\">SMTP</abbr>) konfiguriert "
-"werden. Hier kann zum Beispiel der SMTP-Server des Providers, aber auch ein "
-"Freemailer wie GMail eingetragen werden. Zusätzlich muss noch eine Liste von "
-"Adressen angegeben werden, an die aufgezeichnete Sprachnachrichten geschickt "
-"werden."
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-"Damit diese Telefonanlage (<abbr title=\"Private Branch eXchange\">PBX</abbr>) "
-"E-Mails mit Sprachaufnahmen senden kann, muss an dieser Stelle ein SMTP-"
-"Server eingetragen werden. Ihr Internet-Dienstanbieter (<abbr "
-"title=\"Internet Service Provider\">ISP</abbr>) stellt normalerweise einen "
-"SMTP-Server für diesen Zweck zur Verfügung. Sie können auch einen SMTP-"
-"Server eines Drittanbieters, wie z.B. Google oder Yahoo, hier einstellen."
-
-msgid "Last Sent Voicemail Log"
-msgstr "Log der zuletzt gesendeten Voicemails"
-
-msgid "Local Storage Directory"
-msgstr "Lokales Speicherverzeichnis"
-
-msgid "No"
-msgstr "Nein"
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr "Server für ausgehende Mails (SMTP)"
-
-msgid "SMTP Password"
-msgstr "SMTP-Passwort"
-
-msgid "SMTP Port Number"
-msgstr "SMTP-Portnummer"
-
-msgid "SMTP Server Authentication"
-msgstr "SMTP-Server-Anmeldung"
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr "SMTP-Servername oder IP-Adresse"
-
-msgid "SMTP User Name"
-msgstr "SMTP-Benutzername"
-
-msgid "Secure Connection Using TLS"
-msgstr "Sichere Verbindung über TLS"
-
-msgid "Voicemail Setup"
-msgstr "Voicemail-Einstellungen"
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-"Wenn Sie Voicemail aktivieren, können Sie E-Mail-Adressen angeben, die "
-"aufgenommene Voicemails erhalten sollen. Sie müssen ebenfalls einen SMTP-"
-"Server unten angeben."
-
-msgid "Yes"
-msgstr "Ja"
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-"Sie können auch Kopien Ihrer Voicemail-Nachrichten auf dem Gerät speichern. "
-"Der hier angegebene Pfad wird erstellt, falls er nicht existiert. Beachten "
-"Sie, dass Geräte wie Router nur begrenzten Speicherplatz haben, und "
-"aktivieren Sie diese Option nur, wenn Sie wissen, was Sie tun."
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
-"Ihr SMTP-Passwort wird zu Ihrem Schutz nicht angezeigt. Es wird nur "
-"geändert, wenn Sie dein Eintrag in diesem Kästchen verändern."
-
-#~ msgid "Directory to save voicemail into"
-#~ msgstr "Verzeichnis für eingehende Sprachnachrichten"
-
-#~ msgid "Enabled"
-#~ msgstr "Aktiviert"
-
-#~ msgid ""
-#~ "Here you can configure a global voicemail for this PBX. Since this system "
-#~ "is intended to run on embedded systems like routers, there is no local "
-#~ "storage of voicemail - it must be sent out by email. Therefore you need "
-#~ "to configure an outgoing mail (SMTP) server (for example the SMTP server "
-#~ "your ISP provides, or GMail), and provide a list of addresses the "
-#~ "voicemail will be sent to."
-#~ msgstr ""
-#~ "Es kann ein systemweiter Anrufbeantworter für diese Telefonanlage (<abbr "
-#~ "title=\"Private Branch eXchange\">PBX</abbr>) konfiguriert werden. Da "
-#~ "dieses System für den Einsatz auf embedded Systemen wie Routern optimiert "
-#~ "wurde, gibt es keine Möglichkeit die Sprachnachrichten lokal zu "
-#~ "speichern. Sie müssen per E-Mail versendet werden. Daher muss ein "
-#~ "ausgehender Mail-Server (<abbr title=\"Simple Mail Transfer Protocol"
-#~ "\">SMTP</abbr>) konfiguriert werden. Hier kann zum Beispiel der SMTP-"
-#~ "Server des Providers, aber auch ein Freemailer wie GMail verwendet "
-#~ "werden. Zusätzlich muss noch eine Liste von Adressen angegeben werden, zu "
-#~ "denen die Sprachnachrichten geschickt werden."
diff --git a/applications/luci-app-pbx-voicemail/po/el/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/el/pbx-voicemail.po
deleted file mode 100644 (file)
index fc0a2e3..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-03-18 15:26+0200\n"
-"Last-Translator: Vasilis <acinonyx@openwrt.gr>\n"
-"Language-Team: none\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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr ""
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr "Όχι"
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr ""
-
-msgid "SMTP Password"
-msgstr ""
-
-msgid "SMTP Port Number"
-msgstr ""
-
-msgid "SMTP Server Authentication"
-msgstr ""
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr ""
-
-msgid "SMTP User Name"
-msgstr ""
-
-msgid "Secure Connection Using TLS"
-msgstr ""
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
-
-#~ msgid "Enabled"
-#~ msgstr "Ενεργοποιημένο"
diff --git a/applications/luci-app-pbx-voicemail/po/en/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/en/pbx-voicemail.po
deleted file mode 100644 (file)
index 79c8848..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr "Email Addresses that Receive Voicemail"
-
-msgid "Enable Voicemail"
-msgstr "Enable Voicemail"
-
-msgid "Global Voicemail Setup"
-msgstr "Global Voicemail Setup"
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-
-msgid "Last Sent Voicemail Log"
-msgstr "Last Sent Voicemail Log"
-
-msgid "Local Storage Directory"
-msgstr "Local Storage Directory"
-
-msgid "No"
-msgstr "No"
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr "Outgoing mail (SMTP) Server"
-
-msgid "SMTP Password"
-msgstr "SMTP Password"
-
-msgid "SMTP Port Number"
-msgstr "SMTP Port Number"
-
-msgid "SMTP Server Authentication"
-msgstr "SMTP Server Authentication"
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr "SMTP Server Hostname or IP Address"
-
-msgid "SMTP User Name"
-msgstr "SMTP User Name"
-
-msgid "Secure Connection Using TLS"
-msgstr "Secure Connection Using TLS"
-
-msgid "Voicemail Setup"
-msgstr "Voicemail Setup"
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-
-msgid "Yes"
-msgstr "Yes"
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-
-#~ msgid "Directory to save voicemail into"
-#~ msgstr "Directory to save voicemail into"
-
-#~ msgid "Email addresses to forward to"
-#~ msgstr "Email addresses to forward to"
-
-#~ msgid "Enabled"
-#~ msgstr "Enabled"
-
-#~ msgid ""
-#~ "Here you can configure a global voicemail for this PBX. Since this system "
-#~ "is intended to run on embedded systems like routers, there is no local "
-#~ "storage of voicemail - it must be sent out by email. Therefore you need "
-#~ "to configure an outgoing mail (SMTP) server (for example the SMTP server "
-#~ "your ISP provides, or GMail), and provide a list of addresses the "
-#~ "voicemail will be sent to."
-#~ msgstr ""
-#~ "Here you can configure a global voicemail for this PBX. Since this system "
-#~ "is intended to run on embedded systems like routers, there is no local "
-#~ "storage of voicemail - it must be sent out by email. Therefore you need "
-#~ "to configure an outgoing mail (SMTP) server (for example the SMTP server "
-#~ "your ISP provides, or GMail), and provide a list of addresses the "
-#~ "voicemail will be sent to."
-
-#~ msgid ""
-#~ "In order for this PBX to send emails containing voicemail recordings, you "
-#~ "need to set up an SMTP server here. Your ISP usually provides an SMTP "
-#~ "server for that purpose. You can also set up a GMail, Yahoo, or other 3rd "
-#~ "party SMTP server."
-#~ msgstr ""
-#~ "In order for this PBX to send emails containing voicemail recordings, you "
-#~ "need to set up an SMTP server here. Your ISP usually provides an SMTP "
-#~ "server for that purpose. You can also set up a GMail, Yahoo, or other 3rd "
-#~ "party SMTP server."
-
-#~ msgid "SMTP port number"
-#~ msgstr "SMTP port number"
-
-#~ msgid "SMTP server authentication"
-#~ msgstr "SMTP server authentication"
-
-#~ msgid "SMTP server hostname or IP"
-#~ msgstr "SMTP server hostname or IP"
-
-#~ msgid "SMTP user name"
-#~ msgstr "SMTP user name"
-
-#~ msgid "Timeout before sending callers to voicemail"
-#~ msgstr "Timeout before sending callers to voicemail"
-
-#~ msgid "Use TLS (secure connection)"
-#~ msgstr "Use TLS (secure connection)"
-
-#~ msgid ""
-#~ "When you enable voicemail, you will have the opportunity to specify email "
-#~ "addresses which receive the message. You must also set up an SMTP server "
-#~ "below."
-#~ msgstr ""
-#~ "When you enable voicemail, you will have the opportunity to specify email "
-#~ "addresses which receive the message. You must also set up an SMTP server "
-#~ "below."
diff --git a/applications/luci-app-pbx-voicemail/po/es/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/es/pbx-voicemail.po
deleted file mode 100644 (file)
index 384e169..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-08-23 22:44+0200\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: Pootle 2.0.6\n"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr "Dirección de correo electrónica que recibe Voicemail"
-
-msgid "Enable Voicemail"
-msgstr "Activar Voicemail"
-
-msgid "Global Voicemail Setup"
-msgstr "Configuración global de Voicemail"
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-"Configure un correo de voz global para esta PBX. Como el sistema está "
-"diseñado para sistemas integrados como routers, no tiene un almacenamiento "
-"local y debe enviarse por correo. Por este motivo debe configurar un "
-"servidor SMTP de correo saliente (como ISP, Google o el correo de Yahoo) y "
-"establecer una lista de direcciones que recibirán el correo de voz grabado."
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-"Para usar esta PBX para enviar correos con grabaciones de correos de voz "
-"tiene que configurar un servidor SMTP. Su ISP es posible que tenga uno. "
-"También puede usar otros como los de Google o Yahoo."
-
-msgid "Last Sent Voicemail Log"
-msgstr "Último registro de Voicemail enviado"
-
-msgid "Local Storage Directory"
-msgstr "Directorio local de almacenamiento"
-
-msgid "No"
-msgstr "No"
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr "Servidor de correo SMTP saliente"
-
-msgid "SMTP Password"
-msgstr "Contraseña SMTP"
-
-msgid "SMTP Port Number"
-msgstr "Número de puerto SMTP"
-
-msgid "SMTP Server Authentication"
-msgstr "Autentificación de servidor SMTP"
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr "Nombre del servidor SMTP o dirección IP"
-
-msgid "SMTP User Name"
-msgstr "Nombre de usuario SMTP"
-
-msgid "Secure Connection Using TLS"
-msgstr "Asegurar la conexión con TLS"
-
-msgid "Voicemail Setup"
-msgstr "Configuración de Voicemail"
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-"Cuando active Voicemail tendrá que especificar direcciones de correo que "
-"recibirán los correos grabados así como un servidor SMTP."
-
-msgid "Yes"
-msgstr "Sí"
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-"También puede guardar copias de los mensajes de Voicemail en el dispositivo. "
-"El camino se creará si no existe. Tenga cuidado de no sobrepasar el espacio "
-"disponible en dispositivos pequeños como routers."
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
-"Su contraseña SMTP real no se muestra. Se cambiará solo cuando cambie el "
-"valor en esta caja."
diff --git a/applications/luci-app-pbx-voicemail/po/fr/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/fr/pbx-voicemail.po
deleted file mode 100644 (file)
index 0ccaa50..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr ""
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr ""
-
-msgid "SMTP Password"
-msgstr ""
-
-msgid "SMTP Port Number"
-msgstr ""
-
-msgid "SMTP Server Authentication"
-msgstr ""
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr ""
-
-msgid "SMTP User Name"
-msgstr ""
-
-msgid "Secure Connection Using TLS"
-msgstr ""
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/he/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/he/pbx-voicemail.po
deleted file mode 100644 (file)
index be25f0b..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr ""
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr ""
-
-msgid "SMTP Password"
-msgstr ""
-
-msgid "SMTP Port Number"
-msgstr ""
-
-msgid "SMTP Server Authentication"
-msgstr ""
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr ""
-
-msgid "SMTP User Name"
-msgstr ""
-
-msgid "Secure Connection Using TLS"
-msgstr ""
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/hu/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/hu/pbx-voicemail.po
deleted file mode 100644 (file)
index be25f0b..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr ""
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr ""
-
-msgid "SMTP Password"
-msgstr ""
-
-msgid "SMTP Port Number"
-msgstr ""
-
-msgid "SMTP Server Authentication"
-msgstr ""
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr ""
-
-msgid "SMTP User Name"
-msgstr ""
-
-msgid "Secure Connection Using TLS"
-msgstr ""
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/it/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/it/pbx-voicemail.po
deleted file mode 100644 (file)
index fe8c4bf..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-02-09 21:15+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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr "Indirizzi e-mail che ricevono Voicemail"
-
-msgid "Enable Voicemail"
-msgstr "Attiva Voicemail"
-
-msgid "Global Voicemail Setup"
-msgstr "Attiva Voicemail"
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-"Qui è possibile configurare un messaggio vocale globale per questo PBX. "
-"Poiché questo sistema è destinato a girare su sistemi embedded come router, "
-"non vi è alcuna memorizzazione locale di segreteria - deve essere inviato "
-"via e-mail. Pertanto, è necessario configurare un server di posta in uscita "
-"(SMTP) (ad esempio del vostro ISP, di Google, Server Yahoo  SMTP), e di "
-"fornire un elenco di indirizzi che ricevono posta vocale registrato."
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-"Affinché questo PBX possa inviare messaggi di posta elettronica contenenti "
-"le registrazioni vocali, è necessario impostare un server SMTP qui. Il tuo "
-"ISP in genere fornisce un server SMTP per tale scopo. È inoltre possibile "
-"impostare un terzo SMTP  come quello fornito da Google o Yahoo."
-
-msgid "Last Sent Voicemail Log"
-msgstr "Ultimo file di registro Voicemail inviato"
-
-msgid "Local Storage Directory"
-msgstr "Cartella di memorizzazione Locale"
-
-msgid "No"
-msgstr "No"
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr "Server posta in uscita (SMTP)"
-
-msgid "SMTP Password"
-msgstr "Password SMTP"
-
-msgid "SMTP Port Number"
-msgstr "Numero Porta SMTP"
-
-msgid "SMTP Server Authentication"
-msgstr "Autenticazione Server SMTP"
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr "Nome Host Server SMTP o Indirizzo IP"
-
-msgid "SMTP User Name"
-msgstr "Nome Utente SMTP"
-
-msgid "Secure Connection Using TLS"
-msgstr "Connessione Sicura utilizzando TLS"
-
-msgid "Voicemail Setup"
-msgstr "Impostazione Voicemail"
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-"Quando si attiva la segreteria telefonica, si avrà la possibilità di "
-"specificare gli indirizzi e-mail che ricevono i messaggi vocali registrati. "
-"È inoltre necessario impostare un server SMTP di seguito."
-
-msgid "Yes"
-msgstr "Sì"
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-"È inoltre possibile conservare copie dei messaggi vocali sul dispositivo che "
-"esegue il PBX. Il percorso specificato in questo campo viene creato se non "
-"esiste. Attenzione lo spazio è limitato sui dispositivi embedded come "
-"router, e abilitare questa opzione solo se si sa cosa si sta facendo."
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
-"La tua password SMTP reale non viene visualizzata per la vostra protezione. "
-"Verrà modificato solo quando si modifica il valore in questa casella."
diff --git a/applications/luci-app-pbx-voicemail/po/ja/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/ja/pbx-voicemail.po
deleted file mode 100644 (file)
index 19e26bf..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr ""
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr ""
-
-msgid "SMTP Password"
-msgstr ""
-
-msgid "SMTP Port Number"
-msgstr ""
-
-msgid "SMTP Server Authentication"
-msgstr ""
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr ""
-
-msgid "SMTP User Name"
-msgstr ""
-
-msgid "Secure Connection Using TLS"
-msgstr ""
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/ms/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/ms/pbx-voicemail.po
deleted file mode 100644 (file)
index bf633a6..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr ""
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr ""
-
-msgid "SMTP Password"
-msgstr ""
-
-msgid "SMTP Port Number"
-msgstr ""
-
-msgid "SMTP Server Authentication"
-msgstr ""
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr ""
-
-msgid "SMTP User Name"
-msgstr ""
-
-msgid "Secure Connection Using TLS"
-msgstr ""
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/no/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/no/pbx-voicemail.po
deleted file mode 100644 (file)
index be25f0b..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr ""
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr ""
-
-msgid "SMTP Password"
-msgstr ""
-
-msgid "SMTP Port Number"
-msgstr ""
-
-msgid "SMTP Server Authentication"
-msgstr ""
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr ""
-
-msgid "SMTP User Name"
-msgstr ""
-
-msgid "Secure Connection Using TLS"
-msgstr ""
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/pl/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/pl/pbx-voicemail.po
deleted file mode 100644 (file)
index 3f07fe4..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-05 02:29+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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr "Adres e-mail do odbierania poczty głosowej"
-
-msgid "Enable Voicemail"
-msgstr "Włącz pocztę głosową"
-
-msgid "Global Voicemail Setup"
-msgstr "Ustawienia globalnej poczty głosowej"
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-"Tutaj można skonfigurować globalną pocztę głosową dla PBX. Ponieważ system "
-"ten jest przeznaczony do pracy w systemach wbudowanych, takich jak routery, "
-"nie ma możliwości lokalnego przechowywania poczty głosowej - wiadomości "
-"muszą być wysłane e-mailem. Z tego powodu należy skonfigurować serwer poczty "
-"wychodzącej (SMTP) i podać listę adresów, które będą otrzymywać nagrania z "
-"poczty głosowej"
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-"W celu wysyłało e-maili zawierających nagrania poczty głosowej przez PBX, "
-"należy skonfigurować serwer SMTP. Twój dostawca usług internetowych "
-"zazwyczaj dostarcza serwer SMTP. Można również skonfigurować serwer SMTP "
-"firm trzecich, takich jak Google lub Yahoo."
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr "Lokalny katalog przechowywania"
-
-msgid "No"
-msgstr "Nie"
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr "Serwer poczty wychodzącej (SMTP)"
-
-msgid "SMTP Password"
-msgstr "Hasło SMTP"
-
-msgid "SMTP Port Number"
-msgstr "Numer portu SMTP"
-
-msgid "SMTP Server Authentication"
-msgstr "Uwierzytelnianie serwera SMTP"
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr "Nazwa hosta serwera SMTP lub adres IP"
-
-msgid "SMTP User Name"
-msgstr "Nazwa użytkownika SMTP"
-
-msgid "Secure Connection Using TLS"
-msgstr "Bezpieczne połączenie za pomocą protokołu TLS"
-
-msgid "Voicemail Setup"
-msgstr "Ustawienia Poczty głosowej"
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-"Po włączeniu poczty głosowej, będziesz miał szansę na podanie adresów "
-"e-mail, które będą otrzymywać nagrane wiadomości głosowe. Musisz również "
-"skonfigurować serwer SMTP."
-
-msgid "Yes"
-msgstr "Tak"
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-"Możesz też zachować kopie nagrań poczty głosowej na urządzeniu, na którym "
-"działa PBX. Ścieżka określona tutaj zostanie utworzona, jeśli nie istnieje. "
-"Pamiętaj o ograniczonym miejscu na urządzeniach takich jak routery i włącz "
-"tę opcję tylko jeśli wiesz co robisz."
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
-"Twoje prawdziwe hasło SMTP nie jest pokazane dla Twojej ochrony. Zostanie "
-"zmienione tylko jeśli zmienisz wartość w tym polu."
diff --git a/applications/luci-app-pbx-voicemail/po/pt-br/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/pt-br/pbx-voicemail.po
deleted file mode 100644 (file)
index 2e3a51e..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-09-16 02:32+0200\n"
-"Last-Translator: Julio Cezar <jsilvestree@gmail.com>\n"
-"Language-Team: none\n"
-"Language: pt_BR\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr "Endereços de correio eletrônicos que Recebem Correio de Voz"
-
-msgid "Enable Voicemail"
-msgstr "Habilitar o Correio de Voz"
-
-msgid "Global Voicemail Setup"
-msgstr "Configuração Global do Correio de Voz"
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-"Aqui você pode configurar um correio de voz global para este PBX. Uma vez "
-"que este sistema é previsto para ser executado em ambientes embarcados como "
-"roteadores, não existe armazenamento local do correio de voz - ele deve ser "
-"enviado por correio eletrônico. Desta maneira, você deve configurar um "
-"servidor (SMTP) de correio eletrônico (por exemplo, o servidor SMTP do seu "
-"provedor de Internet, do Google ou do Yahool), e fornecer uma lista dos "
-"endereços para os quais o correio de voz será enviado."
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-"Para este PBX enviar mensagens eletrônicas contendo as gravações do correio "
-"de voz, você precisa definir aqui um servidor SMTP. Seu provedor de Internet "
-"geralmente fornece um servidor SMTP para este propósito. Você também pode "
-"usar um servidor de terceiros como os fornecidos pelo GMail ou Yahoo."
-
-msgid "Last Sent Voicemail Log"
-msgstr "Registro do Último Correio de Voz Enviado"
-
-msgid "Local Storage Directory"
-msgstr "Diretório de Armazenamento Local"
-
-msgid "No"
-msgstr "Não"
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr "Servidor de correio eletrônico (SMTP) para envio"
-
-msgid "SMTP Password"
-msgstr "Senha do SMTP"
-
-msgid "SMTP Port Number"
-msgstr "Porta do SMTP"
-
-msgid "SMTP Server Authentication"
-msgstr "Autenticação do Servidor SMTP"
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr "Nome do Equipamento ou Endereço IP do Servidor SMTP"
-
-msgid "SMTP User Name"
-msgstr "Nome do Usuário do SMTP"
-
-msgid "Secure Connection Using TLS"
-msgstr "Proteja a Conexão Usando TLS"
-
-msgid "Voicemail Setup"
-msgstr "Configuração do Correio de Voz"
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-"Quando você habilita o correio de voz, você terá a oportunidade de "
-"especificar endereços de correio eletrônio que recebem o correio de voz "
-"gravado. Você precisa também configurar um servidor SMTP abaixo."
-
-msgid "Yes"
-msgstr "Sim"
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-"Você pode também manter cópias das mensagens de correio de voz no "
-"dispositivo executando o seu PBX. O caminho especificado aqui será criado se "
-"ele não existe. Cuidado com espaço limitado em dispositivos embarcados, como "
-"roteadores, e habilite esta opção apenas se você sabe o que você está "
-"fazendo."
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
-"Sua senha real do SMTP não é mostrada para a sua proteção. Ela será alterada "
-"apenas quando você modificar o valor neste campo."
-
-#~ msgid "Directory to save voicemail into"
-#~ msgstr "Diretório para salvar o correio de voz"
-
-#~ msgid "Email addresses to forward to"
-#~ msgstr "Endereços de correio eletrônicos para encaminhar"
-
-#~ msgid "Enabled"
-#~ msgstr "Habilitado"
-
-#~ msgid ""
-#~ "Here you can configure a global voicemail for this PBX. Since this system "
-#~ "is intended to run on embedded systems like routers, there is no local "
-#~ "storage of voicemail - it must be sent out by email. Therefore you need "
-#~ "to configure an outgoing mail (SMTP) server (for example the SMTP server "
-#~ "your ISP provides, or GMail), and provide a list of addresses the "
-#~ "voicemail will be sent to."
-#~ msgstr ""
-#~ "Aqui você pode configurar um correio de voz global para este PBX. Uma vez "
-#~ "que este sistema é previsto para ser executado em ambientes embarcados "
-#~ "como roteadores, não existe armazenamento local do correio de voz - ele "
-#~ "deve ser enviado por correio eletrônico. Desta maneira, você deve "
-#~ "configurar um servidor (SMTP) de correio eletrônico (por exemplo, o "
-#~ "servidor SMTP do seu provedor de Internet, ou o do GMail), e fornecer uma "
-#~ "lista dos endereços para os quais o correio de voz será enviado."
-
-#~ msgid ""
-#~ "In order for this PBX to send emails containing voicemail recordings, you "
-#~ "need to set up an SMTP server here. Your ISP usually provides an SMTP "
-#~ "server for that purpose. You can also set up a GMail, Yahoo, or other 3rd "
-#~ "party SMTP server."
-#~ msgstr ""
-#~ "Para este PBX enviar mensagens eletrônicas contendo as gravações do "
-#~ "correio de voz, você precisa definir aqui um servidor SMTP. Seu provedor "
-#~ "de Internet geralmente fornece um servidor SMTP para este propósito. Você "
-#~ "também pode usar o servidor SMTP do GMail, Yahoo, ou outro de terceiros."
-
-#~ msgid "SMTP port number"
-#~ msgstr "Número da porta do SMTP"
-
-#~ msgid "SMTP server authentication"
-#~ msgstr "Autenticação do servidor SMTP"
-
-#~ msgid "SMTP server hostname or IP"
-#~ msgstr "Nome do equipamento ou endereço IP do servidor SMTP"
-
-#~ msgid "SMTP user name"
-#~ msgstr "Nome do usuário do SMTP"
-
-#~ msgid "Timeout before sending callers to voicemail"
-#~ msgstr "Tempo de espera antes de enviar chamadas para correio de voz"
-
-#~ msgid "Use TLS (secure connection)"
-#~ msgstr "Usar TLS (conexão segura)"
-
-#~ msgid ""
-#~ "When you enable voicemail, you will have the opportunity to specify email "
-#~ "addresses which receive the message. You must also set up an SMTP server "
-#~ "below."
-#~ msgstr ""
-#~ "Quando você habilita o correio de voz, você terá a oportunidade de "
-#~ "especificar endereços de correio eletrônio que recebem a mensagem. Você "
-#~ "também deve configurar um servidor SMTP abaixo."
diff --git a/applications/luci-app-pbx-voicemail/po/pt/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/pt/pbx-voicemail.po
deleted file mode 100644 (file)
index f5cfd89..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-06-03 18:28+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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr "Ativar Voicemail"
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr "Não"
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr "Servidor de Envio de mail (SMTP)"
-
-msgid "SMTP Password"
-msgstr "Password SMTP"
-
-msgid "SMTP Port Number"
-msgstr "Porta SMTP"
-
-msgid "SMTP Server Authentication"
-msgstr "Servidor de Autenticação SMTP"
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr "Nome ou Endereço IP do Servidor SMTP"
-
-msgid "SMTP User Name"
-msgstr "Utilizador SMTP"
-
-msgid "Secure Connection Using TLS"
-msgstr "Ligação Segura usando TLS"
-
-msgid "Voicemail Setup"
-msgstr "Configuração do Voicemail"
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr "Sim"
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/ro/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/ro/pbx-voicemail.po
deleted file mode 100644 (file)
index 42b66f6..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-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=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
-"20)) ? 1 : 2;\n"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr ""
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr ""
-
-msgid "SMTP Password"
-msgstr ""
-
-msgid "SMTP Port Number"
-msgstr ""
-
-msgid "SMTP Server Authentication"
-msgstr ""
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr ""
-
-msgid "SMTP User Name"
-msgstr ""
-
-msgid "Secure Connection Using TLS"
-msgstr ""
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/ru/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/ru/pbx-voicemail.po
deleted file mode 100644 (file)
index ae49c6d..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: LuCI: pbx-voicemail\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2012-08-15 17:42+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\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"
-"X-Poedit-SourceCharset: UTF-8\n"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr "Адрес эл. почты для получения голосовой почты"
-
-msgid "Enable Voicemail"
-msgstr "Включить голосовую почту"
-
-msgid "Global Voicemail Setup"
-msgstr "Глобальные настройки голосовой почты"
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-"Здесь Вы можете настроить голосовую почту АТС. Так как данная система "
-"является встраиваемой и предназначена для таких устройств как, например, "
-"маршрутизаторы, локальное хранилище голосовой почты отсутствует. Голосовая "
-"почта пересылается через электронную почту. Следовательно, вам нужно указать "
-"сервер исходящей почты (SMTP) и перечислить адреса, на которые будет "
-"пересылаться голосовая почта."
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-"Чтобы отсылать электронную почту с записями голосовой почты, вам необходимо "
-"указать SMTP-сервер. Вы можете использовать SMTP-сервер вашего интернет-"
-"провайдера или любой другой, например, SMTP-сервер Google или Yahoo."
-
-msgid "Last Sent Voicemail Log"
-msgstr "Запись журнала последнего отправленного сообщения голосовой почты"
-
-msgid "Local Storage Directory"
-msgstr "Локальная директория хранения"
-
-msgid "No"
-msgstr "Нет"
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr "Сервер исходящей почты (SMTP)"
-
-msgid "SMTP Password"
-msgstr "Пароль SMTP"
-
-msgid "SMTP Port Number"
-msgstr "Номер порта SMTP"
-
-msgid "SMTP Server Authentication"
-msgstr "Аутентификация SMTP-сервера"
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr "Имя SMTP-сервера или IP-адрес"
-
-msgid "SMTP User Name"
-msgstr "Имя пользователя SMTP"
-
-msgid "Secure Connection Using TLS"
-msgstr "Защищенное соединение с использованием TLS"
-
-msgid "Voicemail Setup"
-msgstr "Настройка голосовой почты"
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-"При включении голосовой почты, у вас будет возможность указать адреса "
-"электронной почты, на которые будут отправляться записи голосовой почты. Вы "
-"также должны указать SMTP-сервер ниже."
-
-msgid "Yes"
-msgstr "Да"
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-"Вы также можете сохранять копии сообщений голосовой почты локально на "
-"устройстве с запущенной АТС. Указанный здесь путь будет создан в случае его "
-"отсутствия. Учитывайте, что пространство для хранения сообщений голосовой "
-"почты может быть ограничено вашим устройством."
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
-"Ваш настоящий пароль SMTP здесь не показан. Он будет изменён только тогда, "
-"когда вы измените значение в этом поле."
-
-#~ msgid "Directory to save voicemail into"
-#~ msgstr "Директория для сохранения голосовой почты"
-
-#~ msgid "Email addresses to forward to"
-#~ msgstr "Адрес эл. почты для перенаправления"
-
-#~ msgid "Enabled"
-#~ msgstr "Включено"
-
-#~ msgid ""
-#~ "Here you can configure a global voicemail for this PBX. Since this system "
-#~ "is intended to run on embedded systems like routers, there is no local "
-#~ "storage of voicemail - it must be sent out by email. Therefore you need "
-#~ "to configure an outgoing mail (SMTP) server (for example the SMTP server "
-#~ "your ISP provides, or GMail), and provide a list of addresses the "
-#~ "voicemail will be sent to."
-#~ msgstr ""
-#~ "Здесь Вы можете настроить голосовую почту АТС. Так как данная система "
-#~ "является встраиваемой и предназначена для таких устройств как, например, "
-#~ "маршрутизаторы, локальное хранилище голосовой почты отсутствует. "
-#~ "Голосовая почта пересылается через электронную почту. Следовательно, Вам "
-#~ "нужно указать сервер (SMTP) исходящей почты и перечислить адреса на "
-#~ "которые будет пересылаться голосовая почта."
-
-#~ msgid ""
-#~ "In order for this PBX to send emails containing voicemail recordings, you "
-#~ "need to set up an SMTP server here. Your ISP usually provides an SMTP "
-#~ "server for that purpose. You can also set up a GMail, Yahoo, or other 3rd "
-#~ "party SMTP server."
-#~ msgstr ""
-#~ "Чтобы отсылать электронную почту с записями голосовой почты, Вам "
-#~ "необходимо указать SMTP сервер. Вы можете использовать SMTP сервер вашего "
-#~ "интернет провайдера или любой другой, например, SMTP сервер GMail или "
-#~ "Yahoo."
-
-#~ msgid "SMTP port number"
-#~ msgstr "Номер порта SMTP"
-
-#~ msgid "SMTP server authentication"
-#~ msgstr "Аутентификация SMTP сервера"
-
-#~ msgid "SMTP server hostname or IP"
-#~ msgstr "Имя SMTP сервера или IP адрес"
-
-#~ msgid "SMTP user name"
-#~ msgstr "Имя пользователя SMTP"
-
-#~ msgid "Timeout before sending callers to voicemail"
-#~ msgstr "Таймаут перед перенаправлением звонящих на голосовую почту"
-
-#~ msgid "Use TLS (secure connection)"
-#~ msgstr "Использовать TLS (защищенное соединение)"
-
-#~ msgid ""
-#~ "When you enable voicemail, you will have the opportunity to specify email "
-#~ "addresses which receive the message. You must also set up an SMTP server "
-#~ "below."
-#~ msgstr ""
-#~ "При включении голосовой почты, у Вас будет возможность указать адреса "
-#~ "электронной почты на которые будут отправляться записи голосовой почты. "
-#~ "Вы также должны указать SMTP сервер ниже."
diff --git a/applications/luci-app-pbx-voicemail/po/sk/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/sk/pbx-voicemail.po
deleted file mode 100644 (file)
index c3a5c5f..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr ""
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr ""
-
-msgid "SMTP Password"
-msgstr ""
-
-msgid "SMTP Port Number"
-msgstr ""
-
-msgid "SMTP Server Authentication"
-msgstr ""
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr ""
-
-msgid "SMTP User Name"
-msgstr ""
-
-msgid "Secure Connection Using TLS"
-msgstr ""
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/sv/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/sv/pbx-voicemail.po
deleted file mode 100644 (file)
index 4945538..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: sv\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr "E-postadresser som ska ta emot röstbrev"
-
-msgid "Enable Voicemail"
-msgstr "Aktivera röstbrevlåda"
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr "Lokal lagringsmapp"
-
-msgid "No"
-msgstr "Nej"
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr "Utgående mail (SMTP)-server"
-
-msgid "SMTP Password"
-msgstr "SMTP-lösenord"
-
-msgid "SMTP Port Number"
-msgstr "SMTP-portnummer"
-
-msgid "SMTP Server Authentication"
-msgstr "Autentisering för SMTP-server"
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr "SMTP-servern värdnamn eller IP-adress"
-
-msgid "SMTP User Name"
-msgstr "Användarnamn för SMTP"
-
-msgid "Secure Connection Using TLS"
-msgstr "Säker anslutning med användning av TLS"
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr "Ja"
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/templates/pbx-voicemail.pot b/applications/luci-app-pbx-voicemail/po/templates/pbx-voicemail.pot
deleted file mode 100644 (file)
index 35cdca3..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr ""
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr ""
-
-msgid "SMTP Password"
-msgstr ""
-
-msgid "SMTP Port Number"
-msgstr ""
-
-msgid "SMTP Server Authentication"
-msgstr ""
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr ""
-
-msgid "SMTP User Name"
-msgstr ""
-
-msgid "Secure Connection Using TLS"
-msgstr ""
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/tr/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/tr/pbx-voicemail.po
deleted file mode 100644 (file)
index 19e26bf..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr ""
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr ""
-
-msgid "SMTP Password"
-msgstr ""
-
-msgid "SMTP Port Number"
-msgstr ""
-
-msgid "SMTP Server Authentication"
-msgstr ""
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr ""
-
-msgid "SMTP User Name"
-msgstr ""
-
-msgid "Secure Connection Using TLS"
-msgstr ""
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/uk/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/uk/pbx-voicemail.po
deleted file mode 100644 (file)
index 5654183..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-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=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr ""
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr ""
-
-msgid "SMTP Password"
-msgstr ""
-
-msgid "SMTP Port Number"
-msgstr ""
-
-msgid "SMTP Server Authentication"
-msgstr ""
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr ""
-
-msgid "SMTP User Name"
-msgstr ""
-
-msgid "Secure Connection Using TLS"
-msgstr ""
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/vi/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/vi/pbx-voicemail.po
deleted file mode 100644 (file)
index 19e26bf..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr ""
-
-msgid "Enable Voicemail"
-msgstr ""
-
-msgid "Global Voicemail Setup"
-msgstr ""
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-
-msgid "Last Sent Voicemail Log"
-msgstr ""
-
-msgid "Local Storage Directory"
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr ""
-
-msgid "SMTP Password"
-msgstr ""
-
-msgid "SMTP Port Number"
-msgstr ""
-
-msgid "SMTP Server Authentication"
-msgstr ""
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr ""
-
-msgid "SMTP User Name"
-msgstr ""
-
-msgid "Secure Connection Using TLS"
-msgstr ""
-
-msgid "Voicemail Setup"
-msgstr ""
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
diff --git a/applications/luci-app-pbx-voicemail/po/zh-cn/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/zh-cn/pbx-voicemail.po
deleted file mode 100644 (file)
index 5545c05..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-#
-# Yangfl <mmyangfl@gmail.com>, 2017.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2017-10-28 16:41+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"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr "接收语音邮箱的电子邮箱地址"
-
-msgid "Enable Voicemail"
-msgstr "启用语音邮箱"
-
-msgid "Global Voicemail Setup"
-msgstr "全局语音邮箱设置"
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-"在这里,您可以为 PBX 配置一个全球性的语音邮件。由于这个系统运行在嵌入式系统"
-"中,如路由器,这里并无本地语言邮件的储存空间 - 它必须通过电子邮件发送出去。因"
-"此,您需要配置一个外发邮件(SMTP)服务器(例如您的 ISP、谷歌或雅虎的 SMTP 服"
-"务器),并提供接收记录语音信箱的地址的列表。"
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-"为了这个 PBX 发送包含语音信箱录音的电子邮件,您需要在这里设置一个 SMTP 服务"
-"器。您的 ISP 通常会提供一个 SMTP 服务器。您也可以设立一个第三方的 SMTP 服务"
-"器,如谷歌或雅虎那样。"
-
-msgid "Last Sent Voicemail Log"
-msgstr "上一次发送语音信箱的日志"
-
-msgid "Local Storage Directory"
-msgstr "本地存储目录"
-
-msgid "No"
-msgstr "不"
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr "电子邮件发送服务器(SMTP)"
-
-msgid "SMTP Password"
-msgstr "SMTP 登录密码"
-
-msgid "SMTP Port Number"
-msgstr "SMTP 端口"
-
-msgid "SMTP Server Authentication"
-msgstr "SMTP 服务器认证"
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr "SMTP 服务器主机名或 IP 地址"
-
-msgid "SMTP User Name"
-msgstr "SMTP 用户名"
-
-msgid "Secure Connection Using TLS"
-msgstr "使用 TLS 安全连接"
-
-msgid "Voicemail Setup"
-msgstr "语音邮箱设置"
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-"当您启用了语音信箱,您将可以指定接收记录语音信箱的电子邮件地址。您也必须在下"
-"面设置 SMTP 服务器。"
-
-msgid "Yes"
-msgstr "是"
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-"您也可以在您运行 PBX 的设备上保留语音信箱留言的副本。此处指定的路径当不存在"
-"时,将会创建。谨防嵌入式设备上有限的存取空间,如路由器,所以此选项只有当您确"
-"定用途时才可使用。"
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
-"为了保护您,真正的 SMTP 密码将不会显示。只有当您改变框中的数值时它才会变更。"
diff --git a/applications/luci-app-pbx-voicemail/po/zh-tw/pbx-voicemail.po b/applications/luci-app-pbx-voicemail/po/zh-tw/pbx-voicemail.po
deleted file mode 100644 (file)
index 8464289..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-#
-# Yangfl <mmyangfl@gmail.com>, 2017.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2017-10-28 16:41+0800\n"
-"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
-"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
-"Language: zh_TW\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Gtranslator 2.91.7\n"
-
-msgid "Email Addresses that Receive Voicemail"
-msgstr "接收語音郵箱的電子郵箱位址"
-
-msgid "Enable Voicemail"
-msgstr "啟用語音郵箱"
-
-msgid "Global Voicemail Setup"
-msgstr "全域性語音郵箱設定"
-
-msgid ""
-"Here you can configure a global voicemail for this PBX. Since this system is "
-"intended to run on embedded systems like routers, there is no local storage "
-"of voicemail - it must be sent out by email. Therefore you need to configure "
-"an outgoing mail (SMTP) server (for example your ISP's, Google's, or Yahoo's "
-"SMTP server), and provide a list of addresses that receive recorded "
-"voicemail."
-msgstr ""
-"在這裡,您可以為 PBX 配置一個全球性的語音郵件。由於這個系統執行在嵌入式系統"
-"中,如路由器,這裡並無本地語言郵件的儲存空間 - 它必須通過電子郵件傳送出去。因"
-"此,您需要配置一個外發郵件(SMTP)伺服器(例如您的 ISP、谷歌或雅虎的 SMTP 服"
-"務器),並提供接收記錄語音信箱的位址的列表。"
-
-msgid ""
-"In order for this PBX to send emails containing voicemail recordings, you "
-"need to set up an SMTP server here. Your ISP usually provides an SMTP server "
-"for that purpose. You can also set up a third party SMTP server such as the "
-"one provided by Google or Yahoo."
-msgstr ""
-"為了這個 PBX 傳送包含語音信箱錄音的電子郵件,您需要在這裡設定一個 SMTP 服務"
-"器。您的 ISP 通常會提供一個 SMTP 伺服器。您也可以設立一個第三方的 SMTP 服務"
-"器,如谷歌或雅虎那樣。"
-
-msgid "Last Sent Voicemail Log"
-msgstr "上一次傳送語音信箱的日誌"
-
-msgid "Local Storage Directory"
-msgstr "本地儲存目錄"
-
-msgid "No"
-msgstr "不"
-
-msgid "Outgoing mail (SMTP) Server"
-msgstr "電子郵件傳送伺服器(SMTP)"
-
-msgid "SMTP Password"
-msgstr "SMTP 登入密碼"
-
-msgid "SMTP Port Number"
-msgstr "SMTP 埠"
-
-msgid "SMTP Server Authentication"
-msgstr "SMTP 伺服器認證"
-
-msgid "SMTP Server Hostname or IP Address"
-msgstr "SMTP 伺服器主機名或 IP 位址"
-
-msgid "SMTP User Name"
-msgstr "SMTP 使用者名稱"
-
-msgid "Secure Connection Using TLS"
-msgstr "使用 TLS 安全連線"
-
-msgid "Voicemail Setup"
-msgstr "語音郵箱設定"
-
-msgid ""
-"When you enable voicemail, you will have the opportunity to specify email "
-"addresses that receive recorded voicemail. You must also set up an SMTP "
-"server below."
-msgstr ""
-"當您啟用了語音信箱,您將可以指定接收記錄語音信箱的電子郵件位址。您也必須在下"
-"面設定 SMTP 伺服器。"
-
-msgid "Yes"
-msgstr "是"
-
-msgid ""
-"You can also retain copies of voicemail messages on the device running your "
-"PBX. The path specified here will be created if it doesn't exist. Beware of "
-"limited space on embedded devices like routers, and enable this option only "
-"if you know what you are doing."
-msgstr ""
-"您也可以在您執行 PBX 的裝置上保留語音信箱留言的副本。此處指定的路徑當不存在"
-"時,將會建立。謹防嵌入式裝置上有限的存取空間,如路由器,所以此選項只有當您確"
-"定用途時才可使用。"
-
-msgid ""
-"Your real SMTP password is not shown for your protection. It will be changed "
-"only when you change the value in this box."
-msgstr ""
-"為了保護您,真正的 SMTP 密碼將不會顯示。只有當您改變框中的數值時它才會變更。"
diff --git a/applications/luci-app-pbx-voicemail/root/etc/config/pbx-voicemail b/applications/luci-app-pbx-voicemail/root/etc/config/pbx-voicemail
deleted file mode 100644 (file)
index 94e3e96..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-config 'voicemail' 'global_voicemail'
-
-config 'voicemail' 'voicemail_smtp'
-
-config 'voicemail' 'voicemail_log'
-
diff --git a/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-move-greeting b/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-move-greeting
deleted file mode 100755 (executable)
index 21fe694..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-
-if [ -f "/tmp/voicemail/greeting.gsm" ]
-then
-    mv /tmp/voicemail/greeting.gsm /etc/pbx-voicemail/recordings/
-fi
diff --git a/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account-auth.TEMPLATE b/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account-auth.TEMPLATE
deleted file mode 100644 (file)
index 6b2026c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-user           |USER|
-password       |PASSWORD|
diff --git a/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account-default.TEMPLATE b/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account-default.TEMPLATE
deleted file mode 100644 (file)
index a001c64..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-account default : defaultacct
-
diff --git a/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account.TEMPLATE b/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-account.TEMPLATE
deleted file mode 100644 (file)
index fd1f479..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-account        defaultacct
-host           |HOST|
-port           |PORT|
-from           voicemail@pbx
-
diff --git a/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-defaults.TEMPLATE b/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-msmtprc-defaults.TEMPLATE
deleted file mode 100644 (file)
index a4456b8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-defaults
-auth             |AUTH|
-tls_certcheck    off
-tls              |TLS|
-
diff --git a/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-send-voicemail b/applications/luci-app-pbx-voicemail/root/etc/pbx-voicemail/pbx-send-voicemail
deleted file mode 100755 (executable)
index ba639d0..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2011 Iordan Iordanov <iiordanov (AT) gmail.com>
-#
-#    This file is part of luci-pbx-voicemail.
-#
-#    luci-pbx-voicemail 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 3 of the License, or
-#    (at your option) any later version.
-#
-#    luci-pbx-voicemail 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 luci-pbx-voicemail.  If not, see <http://www.gnu.org/licenses/>.
-#
-#
-# Thanks to http://www.zedwood.com for providing an excellent example of how to
-# properly assemble an email message with a base64 encoded attachment.
-#
-
-LOGFILE=/tmp/voicemail/last_sent_voicemail.log
-
-# Redirect standard error and standard output to a log file.
-rm  -f "$LOGFILE"
-exec 1>"$LOGFILE"
-exec 2>&1
-
-# Appends its second argument to a file named in the first argument.
-append_to_file ()
-{
-    echo "$2">>$1;
-}
-
-# Grab the attachment name, which should be sent as the first argument, and
-# exit with a warning if there is no voicemail to send.
-ATTACHMENT="$1"
-[ ! -f "$ATTACHMENT" ] && echo "WARNING: Found no voicemail recording to send." && exit
-
-# Grab the callerID which should have been sent as an argument.
-CALLERID="$2"
-[ -z "$CALLERID" ]   && CALLERID="An unknown caller"
-
-# Determine addresses we would like to send the voicemail to and exit if none are found.
-TO="`uci -q get pbx-voicemail.global_voicemail.global_email_addresses | tr ' ' ','`"
-[ -z "$TO" ] && echo "WARNING: Found no addresses to send voicemail to." && exit
-
-# See whether we should retain a copy of the voicemail.
-SAVEPATH="`uci -q get pbx-voicemail.global_voicemail.global_save_path`"
-
-DATE="`date +%Y-%m-%d`"
-TIME="`date +%H:%M:%S`"
-FROM="voicemail@pbx"
-REPLY="do-not-reply@pbx"
-SUBJECT="Voicemail from $CALLERID, $DATE, $TIME"
-MSGBODY="$CALLERID has left voicemail for you on $DATE at $TIME."
-MIMETYPE="audio/wav"
-TMP1="/tmp/voicemail/tmpemail1.$$";
-TMP2="/tmp/voicemail/tmpemail2.$$";
-BOUNDARY="`date +%s | md5sum | awk '{print $1}'`"
-FILENAME="voicemail-$DATE-$TIME.WAV"
-
-# Clean up just in case.
-rm -f $TMP1 $TMP2
-
-append_to_file $TMP1 "From: $FROM"
-append_to_file $TMP1 "To: $TO"
-append_to_file $TMP1 "Reply-To: $REPLY"
-append_to_file $TMP1 "Subject: $SUBJECT"
-append_to_file $TMP1 "Content-Type: multipart/mixed; boundary=\""$BOUNDARY"\""
-append_to_file $TMP1 ""
-append_to_file $TMP1 "This is a MIME formatted message.  If you see this text it means that your"
-append_to_file $TMP1 "email software does not support MIME formatted messages."
-append_to_file $TMP1 ""
-append_to_file $TMP1 "--$BOUNDARY"
-append_to_file $TMP1 "Content-Type: text/plain; charset=ISO-8859-1; format=flowed"
-append_to_file $TMP1 "Content-Transfer-Encoding: 7bit"
-append_to_file $TMP1 "Content-Disposition: inline"
-append_to_file $TMP1 ""
-append_to_file $TMP1 "$MSGBODY"
-append_to_file $TMP1 ""
-append_to_file $TMP1 ""
-append_to_file $TMP1 "--$BOUNDARY"
-append_to_file $TMP1 "Content-Type: $MIMETYPE; name=\"$FILENAME\""
-append_to_file $TMP1 "Content-Transfer-Encoding: base64"
-append_to_file $TMP1 "Content-Disposition: attachment; filename=\"$FILENAME\";"
-append_to_file $TMP1 ""
-
-append_to_file $TMP2 ""
-append_to_file $TMP2 ""
-append_to_file $TMP2 "--$BOUNDARY--"
-append_to_file $TMP2 ""
-append_to_file $TMP2 ""
-
-# Cat everything together and pass to msmtprc to send out.
-( cat $TMP1
-  cat "$ATTACHMENT" | base64
-  cat $TMP2 ) | msmtp -t -C /etc/pbx-msmtprc
-
-# Clean up email temp files.
-rm -f $TMP1 $TMP2
-
-# Either delete or move the attachment based on the SAVEPATH variable.
-if [ -z "$SAVEPATH" ]
-then
-    rm -f "$ATTACHMENT"
-else
-    mkdir -p "$SAVEPATH"
-    mv --backup=t "$ATTACHMENT" "$SAVEPATH/$FILENAME"
-fi
-
diff --git a/applications/luci-app-pbx/COPYING b/applications/luci-app-pbx/COPYING
deleted file mode 100644 (file)
index 94a9ed0..0000000
+++ /dev/null
@@ -1,674 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    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 3 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, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/applications/luci-app-pbx/CREDITS-SOUNDS b/applications/luci-app-pbx/CREDITS-SOUNDS
deleted file mode 100644 (file)
index 1fa64bc..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-This file pertains to the sounds files included in root/etc/pbx-asterisk/sounds
-
-Recorded by:
-Allison Smith (http://www.theivrvoice.com)
-
-Financial Contributions by:
-Digium, Inc. (http://www.digium.com)
diff --git a/applications/luci-app-pbx/LICENSE-SOUNDS b/applications/luci-app-pbx/LICENSE-SOUNDS
deleted file mode 100644 (file)
index fe9c822..0000000
+++ /dev/null
@@ -1,312 +0,0 @@
-This file pertains to the sounds files included in root/etc/pbx-asterisk/sounds
-
-LICENSE FOR VOICE PROMPT FILES
-------------------------------
-
-The voice prompt files distributed herewith are Copyright (C) 2003-2008
-Allison Smith, and provided under terms of the following License.  For
-more information, or to purchase custom voice prompt files, please
-visit:
-
-http://www.digium.com/ivr or http://www.theasteriskvoice.com
-
-LICENSE
--------
-
-THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS
-CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS
-PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE
-WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS
-PROHIBITED.
-
-BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND
-AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS
-LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU
-THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH
-TERMS AND CONDITIONS.
-
-1. Definitions.
-
-a. "Collective Work" means a work, such as a periodical issue,
-anthology or encyclopedia, in which the Work in its entirety in
-unmodified form, along with one or more other contributions,
-constituting separate and independent works in themselves, are
-assembled into a collective whole. A work that constitutes a
-Collective Work will not be considered a Derivative Work (as defined
-below) for the purposes of this License.
-
-b. "Creative Commons Compatible License" means a license that is
-listed at http://creativecommons.org/compatiblelicenses that has been
-approved by Creative Commons as being essentially equivalent to this
-License, including, at a minimum, because that license: (i) contains
-terms that have the same purpose, meaning and effect as the License
-Elements of this License; and, (ii) explicitly permits the relicensing
-of derivatives of works made available under that license under this
-License or either a Creative Commons unported license or a Creative
-Commons jurisdiction license with the same License Elements as this
-License.
-
-c. "Derivative Work" means a work based upon the Work or upon the Work
-and other pre-existing works, such as a translation, musical
-arrangement, dramatization, fictionalization, motion picture version,
-sound recording, art reproduction, abridgment, condensation, or any
-other form in which the Work may be recast, transformed, or adapted,
-except that a work that constitutes a Collective Work will not be
-considered a Derivative Work for the purpose of this License. For the
-avoidance of doubt, where the Work is a musical composition or sound
-recording, the synchronization of the Work in timed-relation with a
-moving image ("synching") will be considered a Derivative Work for the
-purpose of this License.
-
-d. "License Elements" means the following high-level license
-attributes as selected by Licensor and indicated in the title of this
-License: Attribution, ShareAlike.
-
-e. "Licensor" means the individual, individuals, entity or entities
-that offers the Work under the terms of this License.
-
-f. "Original Author" means the individual, individuals, entity or
-entities who created the Work.
-
-g. "Work" means the copyrighted voice prompt files recorded by Allison
-Smith for Asterisk and distributed with this License.
-
-h. "You" means an individual or entity exercising rights under this
-License who has not previously violated the terms of this License with
-respect to the Work, or who has received express permission from the
-Licensor to exercise rights under this License despite a previous
-violation.
-
-2. Fair Use Rights.
-
-Nothing in this license is intended to reduce, limit, or restrict any
-rights arising from fair use, first sale or other limitations on the
-exclusive rights of the copyright owner under copyright law or other
-applicable laws.
-
-3. License Grant.
-
-Subject to the terms and conditions of this License, Licensor hereby
-grants You a worldwide, royalty-free, non-exclusive, perpetual (for
-the duration of the applicable copyright) license to exercise the
-rights in the Work as stated below:
-
-a. to reproduce the Work, to incorporate the Work into one or more
-Collective Works, and to reproduce the Work as incorporated in the
-Collective Works;
-
-b. to create and reproduce Derivative Works provided that any such
-Derivative Work, including any translation in any medium, takes
-reasonable steps to clearly label, demarcate or otherwise identify
-that changes were made to the original Work. For example, a
-translation could be marked "The original work was translated from
-English to Spanish," or a modification could indicate "The original
-work has been modified.";
-
-c. to distribute copies or phonorecords of, display publicly, perform
-publicly, and perform publicly by means of a digital audio
-transmission the Work including as incorporated in Collective Works;
-
-d. to distribute copies or phonorecords of, display publicly, perform
-publicly, and perform publicly by means of a digital audio
-transmission Derivative Works.
-
-e. For the avoidance of doubt, where the Work is a musical
-composition:
-
- i. Performance Royalties Under Blanket Licenses. Licensor waives the
- exclusive right to collect, whether individually or, in the event
- that Licensor is a member of a performance rights society
- (e.g. ASCAP, BMI, SESAC), via that society, royalties for the public
- performance or public digital performance e.g. webcast) of the Work.
-
- ii.Mechanical Rights and Statutory Royalties. Licensor waives the
- exclusive right to collect, whether individually or via a music
- rights agency or designated agent (e.g. Harry Fox Agency), royalties
- for any phonorecord You create from the Work ("cover version") and
- distribute, subject to the compulsory license created by 17 USC
- Section 115 of the US Copyright Act (or the equivalent in other
- jurisdictions).
-
-f. Webcasting Rights and Statutory Royalties. For the avoidance of
-doubt, where the Work is a sound recording, Licensor waives the
-exclusive right to collect, whether individually or via a
-performance-rights society (e.g. SoundExchange), royalties for the
-public digital performance (e.g. webcast) of the Work, subject to the
-compulsory license created by 17 USC Section 114 of the US Copyright
-Act (or the equivalent in other jurisdictions).
-
-The above rights may be exercised in all media and formats whether now
-known or hereafter devised. The above rights include the right to make
-such modifications as are technically necessary to exercise the rights
-in other media and formats. All rights not expressly granted by
-Licensor are hereby reserved.
-
-4. Restrictions.
-
-The license granted in Section 3 above is expressly made subject to
-and limited by the following restrictions:
-
-a. You may distribute, publicly display, publicly perform, or publicly
-digitally perform the Work only under the terms of this License, and
-You must include a copy of, or the Uniform Resource Identifier for,
-this License with every copy or phonorecord of the Work You
-distribute, publicly display, publicly perform, or publicly digitally
-perform. You may not offer or impose any terms on the Work that
-restrict the terms of this License or the ability of a recipient of
-the Work to exercise of the rights granted to that recipient under the
-terms of the License. You may not sublicense the Work. You must keep
-intact all notices that refer to this License and to the disclaimer of
-warranties. When You distribute, publicly display, publicly perform,
-or publicly digitally perform the Work, You may not impose any
-technological measures on the Work that restrict the ability of a
-recipient of the Work from You to exercise of the rights granted to
-that recipient under the terms of the License. This Section 4(a)
-applies to the Work as incorporated in a Collective Work, but this
-does not require the Collective Work apart from the Work itself to be
-made subject to the terms of this License. If You create a Collective
-Work, upon notice from any Licensor You must, to the extent
-practicable, remove from the Collective Work any credit as required by
-Section 4(c), as requested. If You create a Derivative Work, upon
-notice from any Licensor You must, to the extent practicable, remove
-from the Derivative Work any credit as required by Section 4(c), as
-requested.
-
-b. You may distribute, publicly display, publicly perform, or publicly
-digitally perform a Derivative Work only under: (i) the terms of this
-License; (ii) a later version of this License with the same License
-Elements as this License; (iii) either the Creative Commons (Unported)
-license or a Creative Commons jurisdiction license (either this or a
-later license version) that contains the same License Elements as this
-License (e.g. Attribution-ShareAlike 3.0 (Unported)); (iv) a Creative
-Commons Compatible License. If you license the Derivative Work under
-one of the licenses mentioned in (iv), you must comply with the terms
-of that license. If you license the Derivative Work under the terms of
-any of the licenses mentioned in (i), (ii) or (iii) (the "Applicable
-License"), you must comply with the terms of the Applicable License
-generally and with the following provisions: (I) You must include a
-copy of, or the Uniform Resource Identifier for, the Applicable
-License with every copy or phonorecord of each Derivative Work You
-distribute, publicly display, publicly perform, or publicly digitally
-perform; (II) You may not offer or impose any terms on the Derivative
-Works that restrict the terms of the Applicable License or the ability
-of a recipient of the Work to exercise the rights granted to that
-recipient under the terms of the Applicable License; (III) You must
-keep intact all notices that refer to the Applicable License and to
-the disclaimer of warranties; and, (IV) when You distribute, publicly
-display, publicly perform, or publicly digitally perform the Work, You
-may not impose any technological measures on the Derivative Work that
-restrict the ability of a recipient of the Derivative Work from You to
-exercise the rights granted to that recipient under the terms of the
-Applicable License. This Section 4(b) applies to the Derivative Work
-as incorporated in a Collective Work, but this does not require the
-Collective Work apart from the Derivative Work itself to be made
-subject to the terms of the Applicable License.
-
-c. If You distribute, publicly display, publicly perform, or publicly
-digitally perform the Work (as defined in Section 1 above) or any
-Derivative Works (as defined in Section 1 above) or Collective Works
-(as defined in Section 1 above), You must, unless a request has been
-made pursuant to Section 4(a), keep intact all copyright notices for
-the Work and provide, reasonable to the medium or means You are
-utilizing: (i) the name of the Original Author (or pseudonym, if
-applicable) if supplied, and/or (ii) if the Original Author and/or
-Licensor designate another party or parties (e.g. a sponsor institute,
-publishing entity, journal) for attribution ("Attribution Parties") in
-Licensor's copyright notice, terms of service or by other reasonable
-means, the name of such party or parties; the title of the Work if
-supplied; to the extent reasonably practicable, the Uniform Resource
-Identifier, if any, that Licensor specifies to be associated with the
-Work, unless such URI does not refer to the copyright notice or
-licensing information for the Work; and, consistent with Section 3(b)
-in the case of a Derivative Work, a credit identifying the use of the
-Work in the Derivative Work (e.g., "French translation of the Work by
-Original Author," or "Screenplay based on original Work by Original
-Author"). The credit required by this Section 4(c) may be implemented
-in any reasonable manner; provided, however, that in the case of a
-Derivative Work or Collective Work, at a minimum such credit will
-appear, if a credit for all contributing authors of the Derivative
-Work or Collective Work appears, then as part of these credits and in
-a manner at least as prominent as the credits for the other
-contributing authors. For the avoidance of doubt, You may only use the
-credit required by this Section for the purpose of attribution in the
-manner set out above and, by exercising Your rights under this
-License, You may not implicitly or explicitly assert or imply any
-connection with, sponsorship or endorsement by the Original Author,
-Licensor and/or Attribution Parties, as appropriate, of You or Your
-use of the Work, without the separate, express prior written
-permission of the Original Author, Licensor and/or Attribution
-Parties.
-
-5. Representations, Warranties and Disclaimer.
-
-UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING,
-LICENSOR OFFERS THE WORK AS-IS AND ONLY TO THE EXTENT OF ANY RIGHTS
-HELD IN THE LICENSED WORK BY THE LICENSOR. THE LICENSOR MAKES NO
-REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK,
-EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT
-LIMITATION, WARRANTIES OF TITLE, MARKETABILITY, MERCHANTIBILITY,
-FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
-LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF
-ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW
-THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY
-TO YOU.
-
-6. Limitation on Liability.
-
-EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL
-LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL,
-INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT
-OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. Termination.
-
-a. This License and the rights granted hereunder will terminate
-automatically upon any breach by You of the terms of this
-License. Individuals or entities who have received Derivative Works or
-Collective Works from You under this License, however, will not have
-their licenses terminated provided such individuals or entities remain
-in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8
-will survive any termination of this License.
-
-b. Subject to the above terms and conditions, the license granted here
-is perpetual (for the duration of the applicable copyright in the
-Work). Notwithstanding the above, Licensor reserves the right to
-release the Work under different license terms or to stop distributing
-the Work at any time; provided, however that any such election will
-not serve to withdraw this License (or any other license that has
-been, or is required to be, granted under the terms of this License),
-and this License will continue in full force and effect unless
-terminated as stated above.
-
-8. Miscellaneous.
-
-a. Each time You distribute or publicly digitally perform the Work (as
-defined in Section 1 above) or a Collective Work (as defined in
-Section 1 above), the Licensor offers to the recipient a license to
-the Work on the same terms and conditions as the license granted to
-You under this License.
-
-b. Each time You distribute or publicly digitally perform a Derivative
-Work, Licensor offers to the recipient a license to the original Work
-on the same terms and conditions as the license granted to You under
-this License.
-
-c. If any provision of this License is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this License, and without further action
-by the parties to this agreement, such provision shall be reformed to
-the minimum extent necessary to make such provision valid and
-enforceable.
-
-d. No term or provision of this License shall be deemed waived and no
-breach consented to unless such waiver or consent shall be in writing
-and signed by the party to be charged with such waiver or consent.
-
-e. This License constitutes the entire agreement between the parties
-with respect to the Work licensed here. There are no understandings,
-agreements or representations with respect to the Work not specified
-here. Licensor shall not be bound by any additional provisions that
-may appear in any communication from You. This License may not be
-modified without the mutual written agreement of the Licensor and You.
diff --git a/applications/luci-app-pbx/Makefile b/applications/luci-app-pbx/Makefile
deleted file mode 100644 (file)
index 772713b..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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 PBX Administration
-LUCI_DEPENDS:= @BROKEN \
-       +asterisk18 +asterisk18-app-authenticate +asterisk18-app-disa \
-       +asterisk18-app-setcallerid +asterisk18-app-system +asterisk18-chan-gtalk \
-       +asterisk18-codec-a-mu +asterisk18-codec-alaw +asterisk18-func-cut \
-       +asterisk18-res-clioriginate +asterisk18-func-channel +asterisk18-chan-local \
-       +asterisk18-app-record +asterisk18-app-senddtmf +asterisk18-res-crypto
-
-include ../../luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-pbx/luasrc/controller/pbx.lua b/applications/luci-app-pbx/luasrc/controller/pbx.lua
deleted file mode 100644 (file)
index b77814b..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
---[[
-    Copyright 2011 Iordan Iordanov <iiordanov (AT) gmail.com>
-
-    This file is part of luci-pbx.
-
-    luci-pbx 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 3 of the License, or
-    (at your option) any later version.
-
-    luci-pbx 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 luci-pbx.  If not, see <http://www.gnu.org/licenses/>.
-]]--
-
-module("luci.controller.pbx", package.seeall)
-
-function index()
-        entry({"admin", "services", "pbx"},                 cbi("pbx"),          "PBX",              80)
-        entry({"admin", "services", "pbx", "pbx-google"},   cbi("pbx-google"),   "Google Accounts",   1)
-        entry({"admin", "services", "pbx", "pbx-voip"},     cbi("pbx-voip"),     "SIP Accounts",      2)
-        entry({"admin", "services", "pbx", "pbx-users"},    cbi("pbx-users"),    "User Accounts",     3)
-        entry({"admin", "services", "pbx", "pbx-calls"},    cbi("pbx-calls"),    "Call Routing",      4)
-        entry({"admin", "services", "pbx", "pbx-advanced"}, cbi("pbx-advanced"), "Advanced Settings", 6)
-end
diff --git a/applications/luci-app-pbx/luasrc/model/cbi/pbx-advanced.lua b/applications/luci-app-pbx/luasrc/model/cbi/pbx-advanced.lua
deleted file mode 100644 (file)
index 34288c6..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
---[[
-    Copyright 2011 Iordan Iordanov <iiordanov (AT) gmail.com>
-
-    This file is part of luci-pbx.
-
-    luci-pbx 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 3 of the License, or
-    (at your option) any later version.
-
-    luci-pbx 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 luci-pbx.  If not, see <http://www.gnu.org/licenses/>.
-]]--
-
-if     nixio.fs.access("/etc/init.d/asterisk")   then
-   server = "asterisk"
-elseif nixio.fs.access("/etc/init.d/freeswitch") then
-   server = "freeswitch"
-else
-   server = ""
-end
-
-appname         = "PBX"
-modulename      = "pbx-advanced"
-defaultbindport = 5060
-defaultrtpstart = 19850
-defaultrtpend   = 19900
-
--- Returns all the network related settings, including a constructed RTP range
-function get_network_info()
-        externhost = m.uci:get(modulename, "advanced", "externhost")
-        ipaddr     = m.uci:get("network", "lan", "ipaddr")
-        bindport   = m.uci:get(modulename, "advanced", "bindport")
-        rtpstart   = m.uci:get(modulename, "advanced", "rtpstart")
-        rtpend     = m.uci:get(modulename, "advanced", "rtpend")
-
-        if bindport == nil then bindport = defaultbindport end
-        if rtpstart == nil then rtpstart = defaultrtpstart end
-        if rtpend   == nil then rtpend   = defaultrtpend   end
-
-        if rtpstart == nil or rtpend == nil then
-                rtprange = nil
-        else
-                rtprange = rtpstart .. "-" .. rtpend
-        end
-
-        return bindport, rtprange, ipaddr, externhost
-end
-
--- If not present, insert empty rules in the given config & section named PBX-SIP and PBX-RTP
-function insert_empty_sip_rtp_rules(config, section)
-
-                -- Add rules named PBX-SIP and PBX-RTP if not existing
-                found_sip_rule = false
-                found_rtp_rule = false
-                m.uci:foreach(config, section,
-                        function(s1)
-                                if     s1._name == 'PBX-SIP' then
-                                        found_sip_rule = true
-                                elseif s1._name == 'PBX-RTP' then
-                                        found_rtp_rule = true
-                                end
-                        end)
-                
-                if found_sip_rule ~= true then
-                        newrule=m.uci:add(config, section)
-                        m.uci:set(config, newrule, '_name', 'PBX-SIP')
-                end
-                if found_rtp_rule ~= true then
-                        newrule=m.uci:add(config, section)
-                        m.uci:set(config, newrule, '_name', 'PBX-RTP')
-                end
-end
-
--- Delete rules in the given config & section named PBX-SIP and PBX-RTP
-function delete_sip_rtp_rules(config, section)
-
-                -- Remove rules named PBX-SIP and PBX-RTP
-                commit = false
-                m.uci:foreach(config, section,
-                        function(s1)
-                                if s1._name == 'PBX-SIP' or s1._name == 'PBX-RTP' then
-                                        m.uci:delete(config, s1['.name'])
-                                        commit = true
-                                end
-                        end)
-
-        -- If something changed, then we commit the config.
-        if commit == true then m.uci:commit(config) end
-end
-
--- Deletes QoS rules associated with this PBX.
-function delete_qos_rules()
-        delete_sip_rtp_rules ("qos", "classify")
-end
-
-
-function insert_qos_rules()
-        -- Insert empty PBX-SIP and PBX-RTP rules if not present.
-        insert_empty_sip_rtp_rules ("qos", "classify")
-
-        -- Get the network information
-        bindport, rtprange, ipaddr, externhost = get_network_info()
-
-        -- Iterate through the QoS rules, and if there is no other rule with the same port
-        -- range at the priority service level, insert this rule.
-        commit = false
-        m.uci:foreach("qos", "classify",
-                function(s1)
-                        if     s1._name == 'PBX-SIP' then
-                                if s1.ports ~= bindport or s1.target ~= "Priority" or s1.proto ~= "udp" then
-                                        m.uci:set("qos", s1['.name'], "ports",  bindport)
-                                        m.uci:set("qos", s1['.name'], "proto",  "udp")
-                                        m.uci:set("qos", s1['.name'], "target", "Priority")
-                                        commit = true
-                                end
-                        elseif s1._name == 'PBX-RTP' then
-                                if s1.ports ~= rtprange or s1.target ~= "Priority" or s1.proto ~= "udp" then
-                                        m.uci:set("qos", s1['.name'], "ports",  rtprange)
-                                        m.uci:set("qos", s1['.name'], "proto",  "udp")
-                                        m.uci:set("qos", s1['.name'], "target", "Priority")
-                                        commit = true
-                                end
-                        end
-                end)
-
-        -- If something changed, then we commit the qos config.
-        if commit == true then m.uci:commit("qos") end
-end
-
--- This function is a (so far) unsuccessful attempt to manipulate the firewall rules from here
--- Need to do more testing and eventually move to this mode.
-function maintain_firewall_rules()
-        -- Get the network information
-        bindport, rtprange, ipaddr, externhost = get_network_info()
-
-        commit = false
-        -- Only if externhost is set, do we control firewall rules.
-        if externhost ~= nil and bindport ~= nil and rtprange ~= nil then
-                -- Insert empty PBX-SIP and PBX-RTP rules if not present.
-                insert_empty_sip_rtp_rules ("firewall", "rule")
-
-                -- Iterate through the firewall rules, and if the dest_port and dest_ip setting of the\
-                -- SIP and RTP rule do not match what we want configured, set all the entries in the rule\
-                -- appropriately.
-                m.uci:foreach("firewall", "rule",
-                        function(s1)
-                                if     s1._name == 'PBX-SIP' then
-                                        if s1.dest_port ~= bindport then
-                                                m.uci:set("firewall", s1['.name'], "dest_port", bindport)
-                                                m.uci:set("firewall", s1['.name'], "src", "wan")
-                                                m.uci:set("firewall", s1['.name'], "proto", "udp")
-                                                m.uci:set("firewall", s1['.name'], "target", "ACCEPT")
-                                                commit = true
-                                        end
-                                elseif s1._name == 'PBX-RTP' then
-                                        if s1.dest_port ~= rtprange then
-                                                m.uci:set("firewall", s1['.name'], "dest_port", rtprange)
-                                                m.uci:set("firewall", s1['.name'], "src", "wan")
-                                                m.uci:set("firewall", s1['.name'], "proto", "udp")
-                                                m.uci:set("firewall", s1['.name'], "target", "ACCEPT")
-                                                commit = true
-                                        end
-                                end
-                        end)
-        else
-                -- We delete the firewall rules if one or more of the necessary parameters are not set.
-                sip_rule_name=nil
-                rtp_rule_name=nil
-        
-                -- First discover the configuration names of the rules.
-                m.uci:foreach("firewall", "rule",
-                        function(s1)
-                                if     s1._name == 'PBX-SIP' then
-                                        sip_rule_name = s1['.name']
-                                elseif s1._name == 'PBX-RTP' then
-                                        rtp_rule_name = s1['.name']
-                                end
-                        end)
-                
-                -- Then, using the names, actually delete the rules.
-                if sip_rule_name ~= nil then
-                        m.uci:delete("firewall", sip_rule_name)
-                        commit = true
-                end
-                if rtp_rule_name ~= nil then
-                        m.uci:delete("firewall", rtp_rule_name)
-                        commit = true
-                end
-        end
-
-        -- If something changed, then we commit the firewall config.
-        if commit == true then m.uci:commit("firewall") end
-end
-
-m = Map (modulename, translate("Advanced Settings"),
-         translate("This section contains settings that do not need to be changed under \
-         normal circumstances. In addition, here you can configure your system \
-         for use with remote SIP devices, and resolve call quality issues by enabling \
-         the insertion of QoS rules."))
-
--- Recreate the voip server config, and restart necessary services after changes are commited
--- to the advanced configuration. The firewall must restart because of "Remote Usage".
-function m.on_after_commit(self)
-
-        -- Make sure firewall rules are in place
-        maintain_firewall_rules()
-
-        -- If insertion of QoS rules is enabled
-        if m.uci:get(modulename, "advanced", "qos_enabled") == "yes" then
-                insert_qos_rules()
-        else
-                delete_qos_rules()
-        end
-
-        luci.sys.call("/etc/init.d/pbx-" .. server .. " restart 1\>/dev/null 2\>/dev/null")
-        luci.sys.call("/etc/init.d/"     .. server .. " restart 1\>/dev/null 2\>/dev/null")
-        luci.sys.call("/etc/init.d/firewall             restart 1\>/dev/null 2\>/dev/null")
-end
-
------------------------------------------------------------------------------
-s = m:section(NamedSection, "advanced", "settings", translate("Advanced Settings"))
-s.anonymous = true
-
-s:tab("general",  translate("General Settings"))
-s:tab("remote_usage", translate("Remote Usage"),
-      translatef("You can use your SIP devices/softphones with this system from a remote location \
-      as well, as long as your Internet Service Provider gives you a public IP. \
-      You will be able to call other local users for free (e.g. other Analog Telephone Adapters (ATAs)) \
-      and use your VoIP providers to make calls as if you were local to the PBX. \
-      After configuring this tab, go back to where users are configured and see the new \
-      Server and Port setting you need to configure the remote SIP devices with. Please note that if this \
-      PBX is not running on your router/gateway, you will need to configure port forwarding (NAT) on your \
-      router/gateway. Please forward the ports below (SIP port and RTP range) to the IP address of the \
-      device running this PBX."))
-
-s:tab("qos",  translate("QoS Settings"), 
-      translate("If you experience jittery or high latency audio during heavy downloads, you may want \
-      to enable QoS. QoS prioritizes traffic to and from your network for specified ports and IP \
-      addresses, resulting in better latency and throughput for sound in our case. If enabled below, \
-      a QoS rule for this service will be configured by the PBX automatically, but you must visit the \
-      QoS configuration page (Network->QoS) to configure other critical QoS settings like Download \
-      and Upload speed."))
-
-ringtime = s:taboption("general", Value, "ringtime", translate("Number of Seconds to Ring"),
-                 translate("Set the number of seconds to ring users upon incoming calls before hanging up \
-                 or going to voicemail, if the voicemail is installed and enabled."))
-ringtime.datatype = "port"
-ringtime.default = 30
-
-ua = s:taboption("general", Value, "useragent", translate("User Agent String"),
-                 translate("This is the name that the VoIP server will use to identify itself when \
-                 registering to VoIP (SIP) providers. Some providers require this to a specific \
-                 string matching a hardware SIP device."))
-ua.default = appname
-
-h = s:taboption("remote_usage", Value, "externhost", translate("Domain/IP Address/Dynamic Domain"),
-                translate("You can enter your domain name, external IP address, or dynamic domain name here. \
-                The best thing to input is a static IP address. If your IP address is dynamic and it changes, \
-                your configuration will become invalid. Hence, it's recommended to set up Dynamic DNS in this case. \
-                and enter your Dynamic DNS hostname here. You can configure Dynamic DNS with the luci-app-ddns package."))
-h.datatype = "host(0)"
-
-p = s:taboption("remote_usage", Value, "bindport", translate("External SIP Port"),
-                translate("Pick a random port number between 6500 and 9500 for the service to listen on. \
-                Do not pick the standard 5060, because it is often subject to brute-force attacks. \
-                When finished, (1) click \"Save and Apply\", and (2) look in the \
-                \"SIP Device/Softphone Accounts\" section for updated Server and Port settings \
-                for your SIP Devices/Softphones."))
-p.datatype = "port"
-
-p = s:taboption("remote_usage", Value, "rtpstart", translate("RTP Port Range Start"),
-                translate("RTP traffic carries actual voice packets. This is the start of the port range \
-                that will be used for setting up RTP communication. It's usually OK to leave this \
-                at the default value."))
-p.datatype = "port"
-p.default = defaultrtpstart
-
-p = s:taboption("remote_usage", Value, "rtpend", translate("RTP Port Range End"))
-p.datatype = "port"
-p.default = defaultrtpend
-
-p = s:taboption("qos", ListValue, "qos_enabled", translate("Insert QoS Rules"))
-p:value("yes", translate("Yes"))
-p:value("no",  translate("No"))
-p.default = "yes"
-
-return m
diff --git a/applications/luci-app-pbx/luasrc/model/cbi/pbx-calls.lua b/applications/luci-app-pbx/luasrc/model/cbi/pbx-calls.lua
deleted file mode 100644 (file)
index ca373d6..0000000
+++ /dev/null
@@ -1,424 +0,0 @@
---[[
-    Copyright 2011 Iordan Iordanov <iiordanov (AT) gmail.com>
-
-    This file is part of luci-pbx.
-
-    luci-pbx 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 3 of the License, or
-    (at your option) any later version.
-
-    luci-pbx 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 luci-pbx.  If not, see <http://www.gnu.org/licenses/>.
-]]--
-
-if     nixio.fs.access("/etc/init.d/asterisk")   then
-   server = "asterisk"
-elseif nixio.fs.access("/etc/init.d/freeswitch") then
-   server = "freeswitch"
-else
-   server = ""
-end
-
-modulename        = "pbx-calls"
-voipmodulename    = "pbx-voip"
-googlemodulename  = "pbx-google"
-usersmodulename   = "pbx-users"
-allvalidaccounts  = {}
-nallvalidaccounts = 0
-validoutaccounts  = {}
-nvalidoutaccounts = 0
-validinaccounts   = {}
-nvalidinaccounts  = 0
-allvalidusers     = {}
-nallvalidusers    = 0
-validoutusers     = {}
-nvalidoutusers    = 0
-
-
--- Checks whether the entered extension is valid syntactically.
-function is_valid_extension(exten)
-   return (exten:match("[#*+0-9NXZ]+$") ~= nil)
-end
-
-
-m = Map (modulename, translate("Call Routing"),
-         translate("This is where you indicate which Google/SIP accounts are used to call what \
-                   country/area codes, which users can use what SIP/Google accounts, how incoming \
-                   calls are routed, what numbers can get into this PBX with a password, and what \
-                   numbers are blacklisted."))
-
--- Recreate the config, and restart services after changes are commited to the configuration.
-function m.on_after_commit(self)
-        luci.sys.call("/etc/init.d/pbx-" .. server .. " restart 1\>/dev/null 2\>/dev/null")
-        luci.sys.call("/etc/init.d/"     .. server .. " restart 1\>/dev/null 2\>/dev/null")
-end
-
--- Add Google accounts to all valid accounts, and accounts valid for incoming and outgoing calls.
-m.uci:foreach(googlemodulename, "gtalk_jabber", 
-              function(s1)
-                 -- Add this provider to list of valid accounts.
-                 if s1.username ~= nil and s1.name ~= nil then
-                    allvalidaccounts[s1.name] = s1.username
-                    nallvalidaccounts = nallvalidaccounts + 1
-
-                    if s1.make_outgoing_calls == "yes" then
-                       -- Add provider to the associative array of valid outgoing accounts.
-                       validoutaccounts[s1.name] = s1.username
-                       nvalidoutaccounts = nvalidoutaccounts + 1
-                    end
-
-                    if s1.register == "yes" then
-                       -- Add provider to the associative array of valid outgoing accounts.
-                       validinaccounts[s1.name]  = s1.username
-                       nvalidinaccounts = nvalidinaccounts + 1
-                    end
-                 end
-              end)
-
--- Add SIP accounts to all valid accounts, and accounts valid for incoming and outgoing calls.
-m.uci:foreach(voipmodulename, "voip_provider", 
-              function(s1)
-                 -- Add this provider to list of valid accounts.
-                 if s1.defaultuser ~= nil and s1.host ~= nil and s1.name ~= nil then
-                    allvalidaccounts[s1.name] = s1.defaultuser .. "@" .. s1.host
-                    nallvalidaccounts = nallvalidaccounts + 1
-
-                    if s1.make_outgoing_calls == "yes" then
-                       -- Add provider to the associative array of valid outgoing accounts.
-                       validoutaccounts[s1.name] = s1.defaultuser .. "@" .. s1.host
-                       nvalidoutaccounts = nvalidoutaccounts + 1
-                    end
-
-                    if s1.register == "yes" then
-                       -- Add provider to the associative array of valid outgoing accounts.
-                       validinaccounts[s1.name]  = s1.defaultuser .. "@" .. s1.host
-                       nvalidinaccounts = nvalidinaccounts + 1
-                    end
-                 end
-              end)
-
--- Add Local User accounts to all valid users, and users allowed to make outgoing calls.
-m.uci:foreach(usersmodulename, "local_user",
-              function(s1)
-                 -- Add user to list of all valid users.
-                 if s1.defaultuser ~= nil then
-                    allvalidusers[s1.defaultuser] = true
-                    nallvalidusers = nallvalidusers + 1
-                    
-                    if s1.can_call == "yes" then
-                       validoutusers[s1.defaultuser] = true
-                       nvalidoutusers = nvalidoutusers + 1
-                    end
-                 end
-              end)
-
-
-----------------------------------------------------------------------------------------------------
--- If there are no accounts configured, or no accounts enabled for outgoing calls, display a warning.
--- Otherwise, display the usual help text within the section.
-if     nallvalidaccounts == 0 then
-   text = translate("NOTE: There are no Google or SIP provider accounts configured.")
-elseif nvalidoutaccounts == 0 then
-   text = translate("NOTE: There are no Google or SIP provider accounts enabled for outgoing calls.")
-else
-   text = translate("If you have more than one account that can make outgoing calls, you \
-   should enter a list of phone numbers and/or prefixes in the following fields for each \
-   provider listed. Invalid prefixes are removed silently, and only 0-9, X, Z, N, #, *, \
-   and + are valid characters. The letter X matches 0-9, Z matches 1-9, and N matches 2-9. \
-   For example to make calls to Germany through a provider, you can enter 49. To make calls \
-   to North America, you can enter 1NXXNXXXXXX. If one of your providers can make \"local\" \
-   calls to an area code like New York's 646, you can enter 646NXXXXXX for that \
-   provider. You should leave one account with an empty list to make calls with \
-   it by default, if no other provider's prefixes match. The system will automatically \
-   replace an empty list with a message that the provider dials all numbers not matched by another \
-   provider's prefixes. Be as specific as possible (i.e. 1NXXNXXXXXX is better than 1). Please note \
-   all international dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a \
-   space-separated list, and/or one per line by hitting enter after every one.")
-end
-
-
-s = m:section(NamedSection, "outgoing_calls", "call_routing", translate("Outgoing Calls"), text)
-s.anonymous = true
-
-for k,v in pairs(validoutaccounts) do
-   patterns = s:option(DynamicList, k, v)
-   
-   -- If the saved field is empty, we return a string
-   -- telling the user that this provider would dial any exten.
-   function patterns.cfgvalue(self, section)
-      value = self.map:get(section, self.option)
-      
-      if value == nil then
-         return {translate("Dials numbers unmatched elsewhere")}
-      else
-         return value
-      end
-   end
-   
-   -- Write only valid extensions into the config file.
-   function patterns.write(self, section, value)
-      newvalue = {}
-      nindex = 1
-      for index, field in ipairs(value) do
-         val = luci.util.trim(value[index])
-         if is_valid_extension(val) == true then
-            newvalue[nindex] = val
-            nindex = nindex + 1
-         end
-      end
-      DynamicList.write(self, section, newvalue)
-   end
-end
-
-----------------------------------------------------------------------------------------------------
--- If there are no accounts configured, or no accounts enabled for incoming calls, display a warning.
--- Otherwise, display the usual help text within the section.
-if     nallvalidaccounts == 0 then
-   text = translate("NOTE: There are no Google or SIP provider accounts configured.")
-elseif nvalidinaccounts == 0 then
-   text = translate("NOTE: There are no Google or SIP provider accounts enabled for incoming calls.")
-else
-   text = translate("For each provider enabled for incoming calls, here you can restrict which users to\
-                ring on incoming calls. If the list is empty, the system will indicate that all users \
-                enabled for incoming calls will ring. Invalid usernames will be rejected \
-                silently. Also, entering a username here overrides the user's setting to not receive \
-                incoming calls. This way, you can make certain users ring only for specific providers. \
-                Entries can be made in a space-separated list, and/or one per line by hitting enter after \
-                every one.")
-end
-
-
-s = m:section(NamedSection, "incoming_calls", "call_routing", translate("Incoming Calls"), text)
-s.anonymous = true
-
-for k,v in pairs(validinaccounts) do
-   users = s:option(DynamicList, k, v)
-   
-   -- If the saved field is empty, we return a string telling the user that
-   -- this provider would ring all users configured for incoming calls.
-   function users.cfgvalue(self, section)
-      value = self.map:get(section, self.option)
-      
-      if value == nil then
-         return {translate("Rings users enabled for incoming calls")}
-      else
-         return value
-      end
-   end
-   
-   -- Write only valid user names.
-   function users.write(self, section, value)
-      newvalue = {}
-      nindex = 1
-      for index, field in ipairs(value) do
-         trimuser = luci.util.trim(value[index])
-         if allvalidusers[trimuser] == true then
-            newvalue[nindex] = trimuser
-            nindex = nindex + 1
-         end
-      end
-      DynamicList.write(self, section, newvalue)
-   end
-end
-
-
-----------------------------------------------------------------------------------------------------
--- If there are no user accounts configured, no user accounts enabled for outgoing calls,
--- display a warning. Otherwise, display the usual help text within the section.
-if     nallvalidusers == 0 then
-   text = translate("NOTE: There are no local user accounts configured.")
-elseif nvalidoutusers == 0 then
-   text = translate("NOTE: There are no local user accounts enabled for outgoing calls.")
-else
-   text = translate("For each user enabled for outgoing calls you can restrict what providers the user \
-        can use for outgoing calls. By default all users can use all providers. To show up in the list \
-        below the user should be allowed to make outgoing calls in the \"User Accounts\" page. Enter VoIP \
-        providers in the format username@some.host.name, as listed in \"Outgoing Calls\" above. It's \
-        easiest to copy and paste the providers from above. Invalid entries, including providers not \
-        enabled for outgoing calls, will be rejected silently. Entries can be made in a space-separated \
-        list, and/or one per line by hitting enter after every one.")
-end
-
-
-s = m:section(NamedSection, "providers_user_can_use", "call_routing",
-     translate("Providers Used for Outgoing Calls"), text)
-s.anonymous = true
-
-for k,v in pairs(validoutusers) do
-   providers = s:option(DynamicList, k, k)
-
-   -- If the saved field is empty, we return a string telling the user
-   -- that this user uses all providers enavled for outgoing calls.
-   function providers.cfgvalue(self, section)
-      value = self.map:get(section, self.option)
-      
-      if value == nil then
-         return {translate("Uses providers enabled for outgoing calls")}
-      else
-         newvalue = {}
-         -- Convert internal names to user@host values.
-         for i,v in ipairs(value) do
-            newvalue[i] = validoutaccounts[v]
-         end
-         return newvalue
-      end
-   end
-   
-   -- Cook the new values prior to entering them into the config file.
-   -- Also, enter them only if they are valid.
-   function providers.write(self, section, value)
-      cookedvalue = {}
-      cindex = 1
-      for index, field in ipairs(value) do
-         cooked = string.gsub(luci.util.trim(value[index]), "%W", "_")
-         if validoutaccounts[cooked] ~= nil then
-            cookedvalue[cindex] = cooked
-            cindex = cindex + 1
-         end
-      end
-      DynamicList.write(self, section, cookedvalue)
-   end
-end
-
-----------------------------------------------------------------------------------------------------
-s = m:section(TypedSection, "callthrough_numbers", translate("Call-through Numbers"),
-        translate("Designate numbers that are allowed to call through this system and which user's \
-                  privileges they will have."))
-s.anonymous = true
-s.addremove = true
-
-num = s:option(DynamicList, "callthrough_number_list", translate("Call-through Numbers"),
-        translate("Specify numbers individually here. Press enter to add more numbers. \
-        You will have to experiment with what country and area codes you need to add \
-        to the number."))
-num.datatype = "uinteger"
-
-p = s:option(ListValue, "enabled", translate("Enabled"))
-p:value("yes", translate("Yes"))
-p:value("no",  translate("No"))
-p.default = "yes"
-
-user = s:option(Value, "defaultuser",  translate("User Name"),
-         translate("The number(s) specified above will be able to dial out with this user's providers. \
-                   Invalid usernames, including users not enabled for outgoing calls, are dropped silently. \
-                   Please verify that the entry was accepted."))
-function user.write(self, section, value)
-   trimuser = luci.util.trim(value)
-   if allvalidusers[trimuser] == true then
-      Value.write(self, section, trimuser)
-   end
-end
-
-pwd = s:option(Value, "pin", translate("PIN"),
-               translate("Your PIN disappears when saved for your protection. It will be changed \
-                         only when you enter a value different from the saved one. Leaving the PIN \
-                         empty is possible, but please beware of the security implications."))
-pwd.password = true
-pwd.rmempty = false
-
--- We skip reading off the saved value and return nothing.
-function pwd.cfgvalue(self, section)
-    return "" 
-end
-
--- We check the entered value against the saved one, and only write if the entered value is
--- something other than the empty string, and it differes from the saved value.
-function pwd.write(self, section, value)
-    local orig_pwd = m:get(section, self.option)
-    if value and #value > 0 and orig_pwd ~= value then
-        Value.write(self, section, value)
-    end
-end
-
-----------------------------------------------------------------------------------------------------
-s = m:section(TypedSection, "callback_numbers", translate("Call-back Numbers"),
-        translate("Designate numbers to whom the system will hang up and call back, which provider will \
-                   be used to call them, and which user's privileges will be granted to them."))
-s.anonymous = true
-s.addremove = true
-
-num = s:option(DynamicList, "callback_number_list", translate("Call-back Numbers"),
-        translate("Specify numbers individually here. Press enter to add more numbers. \
-        You will have to experiment with what country and area codes you need to add \
-        to the number."))
-num.datatype = "uinteger"
-
-p = s:option(ListValue, "enabled", translate("Enabled"))
-p:value("yes", translate("Yes"))
-p:value("no",  translate("No"))
-p.default = "yes"
-
-delay = s:option(Value, "callback_hangup_delay", translate("Hang-up Delay"),
-            translate("How long to wait before hanging up. If the provider you use to dial automatically forwards \
-            to voicemail, you can set this value to a delay that will allow you to hang up before your call gets \
-            forwarded and you get billed for it."))
-delay.datatype = "uinteger"
-delay.default = 0
-
-user = s:option(Value, "defaultuser",  translate("User Name"),
-         translate("The number(s) specified above will be able to dial out with this user's providers. \
-                   Invalid usernames, including users not enabled for outgoing calls, are dropped silently. \
-                   Please verify that the entry was accepted."))
-function user.write(self, section, value)
-   trimuser = luci.util.trim(value)
-   if allvalidusers[trimuser] == true then
-      Value.write(self, section, trimuser)
-   end
-end
-
-pwd = s:option(Value, "pin", translate("PIN"),
-               translate("Your PIN disappears when saved for your protection. It will be changed \
-                         only when you enter a value different from the saved one. Leaving the PIN \
-                         empty is possible, but please beware of the security implications."))
-pwd.password = true
-pwd.rmempty = false
-
--- We skip reading off the saved value and return nothing.
-function pwd.cfgvalue(self, section)
-    return "" 
-end
-
--- We check the entered value against the saved one, and only write if the entered value is
--- something other than the empty string, and it differes from the saved value.
-function pwd.write(self, section, value)
-    local orig_pwd = m:get(section, self.option)
-    if value and #value > 0 and orig_pwd ~= value then
-        Value.write(self, section, value)
-    end
-end
-
-provider = s:option(Value, "callback_provider",  translate("Call-back Provider"),
-         translate("Enter a VoIP provider to use for call-back in the format username@some.host.name, as listed in \
-         \"Outgoing Calls\" above. It's easiest to copy and paste the providers from above. Invalid entries, including \
-         providers not enabled for outgoing calls, will be rejected silently."))
-function provider.write(self, section, value)
-    cooked = string.gsub(luci.util.trim(value), "%W", "_")
-    if validoutaccounts[cooked] ~= nil then
-        Value.write(self, section, value)
-    end
-end
-
-----------------------------------------------------------------------------------------------------
-s = m:section(NamedSection, "blacklisting", "call_routing", translate("Blacklisted Numbers"),
-              translate("Enter phone numbers that you want to decline calls from automatically. \
-              You should probably omit the country code and any leading zeroes, but please \
-              experiment to make sure you are blocking numbers from your desired area successfully."))
-s.anonymous = true
-
-b = s:option(DynamicList, "blacklist1", translate("Dynamic List of Blacklisted Numbers"),
-            translate("Specify numbers individually here. Press enter to add more numbers."))
-b.cast = "string"
-b.datatype = "uinteger"
-
-b = s:option(Value, "blacklist2", translate("Space-Separated List of Blacklisted Numbers"),
-            translate("Copy-paste large lists of numbers here."))
-b.template = "cbi/tvalue"
-b.rows = 3
-
-return m
diff --git a/applications/luci-app-pbx/luasrc/model/cbi/pbx-google.lua b/applications/luci-app-pbx/luasrc/model/cbi/pbx-google.lua
deleted file mode 100644 (file)
index 3c36a16..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
---[[
-    Copyright 2011 Iordan Iordanov <iiordanov (AT) gmail.com>
-
-    This file is part of luci-pbx.
-
-    luci-pbx 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 3 of the License, or
-    (at your option) any later version.
-
-    luci-pbx 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 luci-pbx.  If not, see <http://www.gnu.org/licenses/>.
-]]--
-
-if     nixio.fs.access("/etc/init.d/asterisk")   then
-   server = "asterisk"
-elseif nixio.fs.access("/etc/init.d/freeswitch") then
-   server = "freeswitch"
-else
-   server = ""
-end
-
-modulename           = "pbx-google"
-googlemodulename     = "pbx-google"
-defaultstatus        = "dnd"
-defaultstatusmessage = "PBX online, may lose messages"
-
-m = Map (modulename, translate("Google Accounts"),
-         translate("This is where you set up your Google (Talk and Voice) Accounts, in order to start \
-                using them for dialing and receiving calls (voice chat and real phone calls). Please \
-                make at least one voice call using the Google Talk plugin installable through the \
-                GMail interface, and then log out from your account everywhere. Click \"Add\" \
-                to add as many accounts as you wish."))
-
--- Recreate the config, and restart services after changes are commited to the configuration.
-function m.on_after_commit(self)
-   -- Create a field "name" for each account that identifies the account in the backend.
-   commit = false
-   m.uci:foreach(modulename, "gtalk_jabber", 
-                 function(s1)
-                    if s1.username ~= nil then
-                       name=string.gsub(s1.username, "%W", "_")
-                       if s1.name ~= name then
-                          m.uci:set(modulename, s1['.name'], "name", name)
-                          commit = true
-                       end
-                    end
-                 end)
-   if commit == true then  m.uci:commit(modulename) end
-   
-   luci.sys.call("/etc/init.d/pbx-" .. server .. " restart 1\>/dev/null 2\>/dev/null")
-   luci.sys.call("/etc/init.d/asterisk             restart 1\>/dev/null 2\>/dev/null")
-end
-
------------------------------------------------------------------------------
-s = m:section(TypedSection, "gtalk_jabber", translate("Google Voice/Talk Accounts"))
-s.anonymous = true
-s.addremove = true
-
-s:option(Value, "username",     translate("Email"))
-
-pwd = s:option(Value, "secret", translate("Password"),
-               translate("When your password is saved, it disappears from this field and is not displayed \
-                         for your protection. The previously saved password will be changed only when you \
-                         enter a value different from the saved one."))
-pwd.password = true
-pwd.rmempty = false
-
--- We skip reading off the saved value and return nothing.
-function pwd.cfgvalue(self, section)
-    return "" 
-end
-
--- We check the entered value against the saved one, and only write if the entered value is
--- something other than the empty string, and it differes from the saved value.
-function pwd.write(self, section, value)
-    local orig_pwd = m:get(section, self.option)
-    if value and #value > 0 and orig_pwd ~= value then
-        Value.write(self, section, value)
-    end
-end
-
-
-p = s:option(ListValue, "register",
-             translate("Enable Incoming Calls (set Status below)"),
-             translate("When somebody starts voice chat with your GTalk account or calls the GVoice, \
-                       number (if you have Google Voice), the call will be forwarded to any users \
-                        that are online (registered using a SIP device or softphone) and permitted to \
-                        receive the call. If you have Google Voice, you must go to your GVoice settings and \
-                        forward calls to Google chat in order to actually receive calls made to your \
-                        GVoice number. If you have trouble receiving calls from GVoice, experiment \
-                        with the Call Screening option in your GVoice Settings. Finally, make sure no other \
-                        client is online with this account (browser in gmail, mobile/desktop Google Talk \
-                        App) as it may interfere."))
-p:value("yes", translate("Yes"))
-p:value("no",  translate("No"))
-p.default = "yes"
-
-p = s:option(ListValue, "make_outgoing_calls", translate("Enable Outgoing Calls"),
-      translate("Use this account to make outgoing calls as configured in the \"Call Routing\" section."))
-p:value("yes", translate("Yes"))
-p:value("no",  translate("No"))
-p.default = "yes"
-
-st = s:option(ListValue, "status", translate("Google Talk Status"))
-st:depends("register", "yes")
-st:value("dnd", translate("Do Not Disturb"))
-st:value("away",  translate("Away"))
-st:value("available",  translate("Available"))
-st.default = defaultstatus
-
-stm = s:option(Value, "statusmessage", translate("Google Talk Status Message"),
-             translate("Avoid using anything but alpha-numeric characters, space, comma, and period."))
-stm:depends("register", "yes")
-stm.default = defaultstatusmessage
-
-return m
diff --git a/applications/luci-app-pbx/luasrc/model/cbi/pbx-users.lua b/applications/luci-app-pbx/luasrc/model/cbi/pbx-users.lua
deleted file mode 100644 (file)
index c7c8b4d..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
---[[
-    Copyright 2011 Iordan Iordanov <iiordanov (AT) gmail.com>
-
-    This file is part of luci-pbx.
-
-    luci-pbx 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 3 of the License, or
-    (at your option) any later version.
-
-    luci-pbx 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 luci-pbx.  If not, see <http://www.gnu.org/licenses/>.
-]]--
-
-if     nixio.fs.access("/etc/init.d/asterisk")   then
-   server = "asterisk"
-elseif nixio.fs.access("/etc/init.d/freeswitch") then
-   server = "freeswitch"
-else
-   server = ""
-end
-
-modulename         = "pbx-users"
-modulenamecalls    = "pbx-calls"
-modulenameadvanced = "pbx-advanced"
-
-        
-m = Map (modulename, translate("User Accounts"), 
-        translate("Here you must configure at least one SIP account, that you \
-                will use to register with this service. Use this account either in an Analog Telephony \
-                Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid on your \
-                smartphone, or Ekiga, Linphone, or X-Lite on your computer. By default, all SIP accounts \
-                will ring simultaneously if a call is made to one of your VoIP provider accounts or GV \
-                numbers."))
-
--- Recreate the config, and restart services after changes are commited to the configuration.
-function m.on_after_commit(self)
-        luci.sys.call("/etc/init.d/pbx-" .. server .. " restart 1\>/dev/null 2\>/dev/null")
-        luci.sys.call("/etc/init.d/"     .. server .. " restart 1\>/dev/null 2\>/dev/null")
-end
-
-externhost = m.uci:get(modulenameadvanced, "advanced", "externhost")
-bindport   = m.uci:get(modulenameadvanced, "advanced", "bindport")
-ipaddr     = m.uci:get("network", "lan", "ipaddr")
-
------------------------------------------------------------------------------
-s = m:section(NamedSection, "server", "user", translate("Server Setting"))
-s.anonymous = true
-
-if ipaddr == nil or ipaddr == "" then
-   ipaddr = "(IP address not static)"
-end
-
-if bindport ~= nil then
-   just_ipaddr = ipaddr
-   ipaddr = ipaddr .. ":" .. bindport
-end
-
-s:option(DummyValue, "ipaddr", translate("Server Setting for Local SIP Devices"),
-         translate("Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices you will \
-                   use ONLY locally and never from a remote location.")).default = ipaddr
-
-if externhost ~= nil then
-   if bindport ~= nil then
-      just_externhost = externhost
-      externhost = externhost .. ":" .. bindport
-   end
-   s:option(DummyValue, "externhost", translate("Server Setting for Remote SIP Devices"),
-            translate("Enter this hostname (or hostname:port) in the Server/Registrar setting of SIP \
-                      devices you will use from a remote location (they will work locally too).")
-                     ).default = externhost
-end
-
-if bindport ~= nil then
-        s:option(DummyValue, "bindport", translate("Port Setting for SIP Devices"),
-        translatef("If setting Server/Registrar to %s or %s does not work for you, try setting \
-        it to %s or %s and entering this port number in a separate field that specifies the \
-        Server/Registrar port number. Beware that some devices have a confusing \
-        setting that sets the port where SIP requests originate from on the SIP \
-        device itself (the bind port). The port specified on this page is NOT this bind port \
-        but the port this service listens on.", 
-        ipaddr, externhost, just_ipaddr, just_externhost)).default = bindport
-end
-
------------------------------------------------------------------------------
-s = m:section(TypedSection, "local_user", translate("SIP Device/Softphone Accounts"))
-s.anonymous = true
-s.addremove = true
-
-s:option(Value, "fullname", translate("Full Name"),
-         translate("You can specify a real name to show up in the Caller ID here."))
-
-du = s:option(Value, "defaultuser",  translate("User Name"),
-         translate("Use (four to five digit) numeric user name if you are connecting normal telephones \
-                   with ATAs to this system (so they can dial user names)."))
-du.datatype = "uciname"
-
-pwd = s:option(Value, "secret", translate("Password"),
-               translate("Your password disappears when saved for your protection. It will be changed \
-                         only when you enter a value different from the saved one."))
-pwd.password = true
-pwd.rmempty = false
-
--- We skip reading off the saved value and return nothing.
-function pwd.cfgvalue(self, section)
-    return "" 
-end
-
--- We check the entered value against the saved one, and only write if the entered value is
--- something other than the empty string, and it differes from the saved value.
-function pwd.write(self, section, value)
-    local orig_pwd = m:get(section, self.option)
-    if value and #value > 0 and orig_pwd ~= value then
-        Value.write(self, section, value)
-    end
-end
-
-p = s:option(ListValue, "ring", translate("Receives Incoming Calls"))
-p:value("yes", translate("Yes"))
-p:value("no",  translate("No"))
-p.default = "yes"
-
-p = s:option(ListValue, "can_call", translate("Makes Outgoing Calls"))
-p:value("yes", translate("Yes"))
-p:value("no",  translate("No"))
-p.default = "yes"
-
-return m
diff --git a/applications/luci-app-pbx/luasrc/model/cbi/pbx-voip.lua b/applications/luci-app-pbx/luasrc/model/cbi/pbx-voip.lua
deleted file mode 100644 (file)
index 9b46202..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
---[[
-    Copyright 2011 Iordan Iordanov <iiordanov (AT) gmail.com>
-
-    This file is part of luci-pbx.
-
-    luci-pbx 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 3 of the License, or
-    (at your option) any later version.
-
-    luci-pbx 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 luci-pbx.  If not, see <http://www.gnu.org/licenses/>.
-]]--
-
-if     nixio.fs.access("/etc/init.d/asterisk")   then
-   server = "asterisk"
-elseif nixio.fs.access("/etc/init.d/freeswitch") then
-   server = "freeswitch"
-else
-   server = ""
-end
-
-modulename = "pbx-voip"
-
-m = Map (modulename, translate("SIP Accounts"),
-         translate("This is where you set up your SIP (VoIP) accounts ts like Sipgate, SipSorcery, \
-        the popular Betamax providers, and any other providers with SIP settings in order to start \
-        using them for dialing and receiving calls (SIP uri and real phone calls). Click \"Add\" to \
-        add as many accounts as you wish."))
-
--- Recreate the config, and restart services after changes are commited to the configuration.
-function m.on_after_commit(self)
-   commit = false
-   -- Create a field "name" for each account that identifies the account in the backend.
-   m.uci:foreach(modulename, "voip_provider", 
-                 function(s1)
-                    if s1.defaultuser ~= nil and s1.host ~= nil then
-                       name=string.gsub(s1.defaultuser.."_"..s1.host, "%W", "_")
-                       if s1.name ~= name then
-                          m.uci:set(modulename, s1['.name'], "name", name)
-                          commit = true
-                       end
-                    end
-                 end)
-   if commit == true then m.uci:commit(modulename) end
-
-   luci.sys.call("/etc/init.d/pbx-" .. server .. " restart 1\>/dev/null 2\>/dev/null")
-   luci.sys.call("/etc/init.d/"     .. server .. " restart 1\>/dev/null 2\>/dev/null")
-end
-
------------------------------------------------------------------------------
-s = m:section(TypedSection, "voip_provider", translate("SIP Provider Accounts"))
-s.anonymous = true
-s.addremove = true
-
-s:option(Value, "defaultuser",  translate("User Name"))
-pwd = s:option(Value, "secret", translate("Password"),
-               translate("When your password is saved, it disappears from this field and is not displayed \
-                         for your protection. The previously saved password will be changed only when you \
-                         enter a value different from the saved one."))
-
-
-
-pwd.password = true
-pwd.rmempty = false
-
--- We skip reading off the saved value and return nothing.
-function pwd.cfgvalue(self, section)
-    return "" 
-end
-
--- We check the entered value against the saved one, and only write if the entered value is
--- something other than the empty string, and it differes from the saved value.
-function pwd.write(self, section, value)
-    local orig_pwd = m:get(section, self.option)
-    if value and #value > 0 and orig_pwd ~= value then
-        Value.write(self, section, value)
-    end
-end
-
-h = s:option(Value, "host", translate("SIP Server/Registrar"))
-h.datatype = "host(0)"
-
-p = s:option(ListValue, "register", translate("Enable Incoming Calls (Register via SIP)"),
-             translate("This option should be set to \"Yes\" if you have a DID \(real telephone number\) \
-                        associated with this SIP account or want to receive SIP uri calls through this \
-                        provider.")) 
-p:value("yes", translate("Yes"))
-p:value("no",  translate("No"))
-p.default = "yes"
-
-p = s:option(ListValue, "make_outgoing_calls", translate("Enable Outgoing Calls"),
-             translate("Use this account to make outgoing calls."))
-p:value("yes", translate("Yes"))
-p:value("no",  translate("No"))
-p.default = "yes"
-
-from = s:option(Value, "fromdomain",
-                translate("SIP Realm (needed by some providers)"))
-from.optional = true
-from.datatype = "host(0)"
-
-port = s:option(Value, "port", translate("SIP Server/Registrar Port"))
-port.optional = true
-port.datatype = "port"
-
-op = s:option(Value, "outboundproxy", translate("Outbound Proxy"))
-op.optional = true
-op.datatype = "host(0)"
-
-return m
diff --git a/applications/luci-app-pbx/luasrc/model/cbi/pbx.lua b/applications/luci-app-pbx/luasrc/model/cbi/pbx.lua
deleted file mode 100644 (file)
index 4c5fcbd..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
---[[
-    Copyright 2011 Iordan Iordanov <iiordanov (AT) gmail.com>
-
-    This file is part of luci-pbx.
-
-    luci-pbx 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 3 of the License, or
-    (at your option) any later version.
-
-    luci-pbx 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 luci-pbx.  If not, see <http://www.gnu.org/licenses/>.
-]]--
-
-modulename = "pbx"
-
-
-if     nixio.fs.access("/etc/init.d/asterisk")   then
-   server = "asterisk"
-elseif nixio.fs.access("/etc/init.d/freeswitch") then
-   server = "freeswitch"
-else
-   server = ""
-end
-
-
--- Returns formatted output of string containing only the words at the indices
--- specified in the table "indices".
-function format_indices(string, indices)
-   if indices == nil then
-      return "Error: No indices to format specified.\n" 
-   end
-
-   -- Split input into separate lines.
-   lines = luci.util.split(luci.util.trim(string), "\n")
-   
-   -- Split lines into separate words.
-   splitlines = {}
-   for lpos,line in ipairs(lines) do
-      splitlines[lpos] = luci.util.split(luci.util.trim(line), "%s+", nil, true)
-   end
-   
-   -- For each split line, if the word at all indices specified
-   -- to be formatted are not null, add the formatted line to the
-   -- gathered output.
-   output = ""
-   for lpos,splitline in ipairs(splitlines) do
-      loutput = ""
-      for ipos,index in ipairs(indices) do
-         if splitline[index] ~= nil then
-            loutput = loutput .. string.format("%-40s", splitline[index])
-         else
-            loutput = nil
-            break
-         end
-      end
-      
-      if loutput ~= nil then
-         output = output .. loutput .. "\n"
-      end
-   end
-   return output
-end
-
-
-m = Map (modulename, translate("PBX Main Page"),
-      translate("This configuration page allows you to configure a phone system (PBX) service which \
-      permits making phone calls through multiple Google and SIP (like Sipgate, \
-      SipSorcery, and Betamax) accounts and sharing them among many SIP devices. \
-      Note that Google accounts, SIP accounts, and local user accounts are configured in the \
-      \"Google Accounts\", \"SIP Accounts\", and \"User Accounts\" sub-sections. \
-      You must add at least one User Account to this PBX, and then configure a SIP device or \
-      softphone to use the account, in order to make and receive calls with your Google/SIP \
-      accounts. Configuring multiple users will allow you to make free calls between all users, \
-      and share the configured Google and SIP accounts. If you have more than one Google and SIP \
-      accounts set up, you should probably configure how calls to and from them are routed in \
-      the \"Call Routing\" page. If you're interested in using your own PBX from anywhere in the \
-      world, then visit the \"Remote Usage\" section in the \"Advanced Settings\" page."))
-
------------------------------------------------------------------------------------------
-s = m:section(NamedSection, "connection_status", "main",
-              translate("PBX Service Status"))
-s.anonymous = true
-
-s:option (DummyValue, "status", translate("Service Status"))
-
-sts = s:option(DummyValue, "_sts") 
-sts.template = "cbi/tvalue"
-sts.rows = 20
-
-function sts.cfgvalue(self, section)
-
-   if server == "asterisk" then
-      regs = luci.sys.exec("asterisk -rx 'sip show registry' | sed 's/peer-//'")
-      jabs = luci.sys.exec("asterisk -rx 'jabber show connections' | grep onnected")
-      usrs = luci.sys.exec("asterisk -rx 'sip show users'")
-      chan = luci.sys.exec("asterisk -rx 'core show channels'")
-
-      return format_indices(regs, {1, 5}) ..
-             format_indices(jabs, {2, 4}) .. "\n" ..
-             format_indices(usrs, {1}   ) .. "\n" .. chan
-
-   elseif server == "freeswitch" then
-      return "Freeswitch is not supported yet.\n"
-   else
-      return "Neither Asterisk nor FreeSwitch discovered, please install Asterisk, as Freeswitch is not supported yet.\n"
-   end
-end
-
-return m
diff --git a/applications/luci-app-pbx/po/ca/pbx.po b/applications/luci-app-pbx/po/ca/pbx.po
deleted file mode 100644 (file)
index c8a0a99..0000000
+++ /dev/null
@@ -1,509 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-07-01 05:14+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"
-
-msgid "Advanced Settings"
-msgstr "Ajusts avançats"
-
-msgid "Available"
-msgstr "Disponible"
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-"Eviteu utilitzar res excepte caràcters alfanumèrics, espai, coma, i punt."
-
-msgid "Away"
-msgstr "Fora"
-
-msgid "Blacklisted Numbers"
-msgstr "Nombres prohibits"
-
-msgid "Call Routing"
-msgstr "Encaminament de trucades"
-
-msgid "Call-back Numbers"
-msgstr "Nombres de trucada de tornada"
-
-msgid "Call-back Provider"
-msgstr "Proveïdor de trucada de tornada"
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr "Copieu i enganxeu llistes grans de nombres aquí."
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-"Designeu els nombres que es permeten trucar a través d'aquest sistema i els "
-"privilegis de qual usuari tindran."
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-"Designeu els nombres als quals el sistema penjarà i trucarà de tornada, qual "
-"proveïdor s'emprarà per a trucar-los, i els privilegis de qual usuari se "
-"lis concedirà."
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr "Truca els nombres que no coincideixen d'altra manera"
-
-msgid "Do Not Disturb"
-msgstr "No molestis"
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr ""
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr "Habilita trucades entrants (registreu via SIP)"
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr "Habilita trucades entrants (establiu l'Estat a baix)"
-
-msgid "Enable Outgoing Calls"
-msgstr "Habilita trucades sortints"
-
-msgid "Enabled"
-msgstr "Habilitat"
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr "Port SIP extern"
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr "Nom complet"
-
-msgid "General Settings"
-msgstr "Ajusts generals"
-
-msgid "Google Accounts"
-msgstr "Comptes de Google"
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr ""
-
-msgid "Hang-up Delay"
-msgstr "Retard de penja"
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-"Quant temps per a esperar abans de penjar. Si el proveïdor que empreu per a "
-"trucar automàticament redirigeix al correu de veu, podeu estableix aquest "
-"valor a un retard que us permet penjar abans que la teva trucada es "
-"redirigeixi i s'us cobri per ella."
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr "Trucades entrants"
-
-msgid "Insert QoS Rules"
-msgstr "Insereix regles QoS"
-
-msgid "Makes Outgoing Calls"
-msgstr "Fa trucades sortints"
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr "NOTA: No hi ha cap compte configurat ni del Google ni de proveïdor SIP."
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-"NOTA: No hi ha cap compte habilitat ni del Google ni de proveïdor SIP per "
-"als trucades entrants."
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-"NOTA: No hi ha cap compte habilitat ni del Google ni de proveïdor SIP per "
-"als trucades sortints."
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr "NOTA: No hi ha cap compte d'usuari local configurat."
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-"NOTA: No hi ha cap compte d'usuari local habilitat per als trucades "
-"sortints."
-
-msgid "No"
-msgstr "No"
-
-msgid "Number of Seconds to Ring"
-msgstr "Nombre de segons a sonar"
-
-msgid "Outbound Proxy"
-msgstr "Servidor intermediari de sortida"
-
-msgid "Outgoing Calls"
-msgstr "Trucades sortints"
-
-msgid "PBX Main Page"
-msgstr "Pàgina principal PBX"
-
-msgid "PBX Service Status"
-msgstr "Estat del servei PBX"
-
-msgid "PIN"
-msgstr "PIN"
-
-msgid "Password"
-msgstr "Contrasenya"
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr "Ajust de port per als dispositius SIP"
-
-msgid "Providers Used for Outgoing Calls"
-msgstr "Proveïdors utilitzats per als trucades sortints"
-
-msgid "QoS Settings"
-msgstr "Ajusts QoS"
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr "Rep trucades entrants"
-
-msgid "Remote Usage"
-msgstr "Ús remot"
-
-msgid "Rings users enabled for incoming calls"
-msgstr "Truca als usuaris habilitats per a rebre trucades"
-
-msgid "SIP Accounts"
-msgstr "Comptes SIP"
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr "Comptes de proveïdor SIP"
-
-msgid "SIP Realm (needed by some providers)"
-msgstr "Regne SIP (necessitat per alguns proveïdors)"
-
-msgid "SIP Server/Registrar"
-msgstr "Servidor/Registrador SIP"
-
-msgid "SIP Server/Registrar Port"
-msgstr "Port del Servidor/Registrador SIP"
-
-msgid "Server Setting"
-msgstr "Ajust de servidor"
-
-msgid "Server Setting for Local SIP Devices"
-msgstr "Ajust de servidor pels dispositius SIP locals"
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr "Ajust de servidor pels dispositius SIP remots"
-
-msgid "Service Status"
-msgstr "Estat de servei"
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-"Estableix el nombre de segons per a sonar als usuaris abans de penjar o anar "
-"al correu de veu, si el correu de veu està instal·lat i habilitat."
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr "Llista de nombres prohibits separats per espai"
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-"Especifiqueu els nombres individualment aquí. Premeu Enter per afegir més "
-"nombres."
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-"Utilitza aquest compte per fer trucades sortints com configurat en la secció "
-"\"Encaminament de trucades\"."
-
-msgid "Use this account to make outgoing calls."
-msgstr "Utilitza aquest compte per fer trucades sortints."
-
-msgid "User Accounts"
-msgstr "Comptes d'usuari"
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr "Nom d'usuari"
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr "Sí"
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/cs/pbx.po b/applications/luci-app-pbx/po/cs/pbx.po
deleted file mode 100644 (file)
index 8b69ef1..0000000
+++ /dev/null
@@ -1,487 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-07-12 20:19+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"
-
-msgid "Advanced Settings"
-msgstr "Pokročilé nastavení"
-
-msgid "Available"
-msgstr "Dostupné"
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr "Pryč"
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr "Nevyrušovat"
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr "Email"
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr "Povolit příchozí hovory (Registrace přes SIP)"
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr "Povolit odchozí hovory"
-
-msgid "Enabled"
-msgstr "Povoleno"
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr "Externí SIP port"
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr "Celé jméno (jméno a příjmení)"
-
-msgid "General Settings"
-msgstr "Obecné nastavení"
-
-msgid "Google Accounts"
-msgstr "Google účty"
-
-msgid "Google Talk Status"
-msgstr "Stav Google Talk"
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr "Google Voice/Talk účty"
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr "Příchozí volání"
-
-msgid "Insert QoS Rules"
-msgstr "Vložte QoS pravidla"
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr "Ne"
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr "Odchozí volání"
-
-msgid "PBX Main Page"
-msgstr "Hlavní stránka PBX"
-
-msgid "PBX Service Status"
-msgstr "Stav PBX služby"
-
-msgid "PIN"
-msgstr "PIN"
-
-msgid "Password"
-msgstr "Heslo"
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr "Nastavení QoS"
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr "SIP účty"
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr "Stav služby"
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr "Uživatelské účty"
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr "Uživatelské jméno"
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr "Ano"
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/de/pbx.po b/applications/luci-app-pbx/po/de/pbx.po
deleted file mode 100644 (file)
index 3bc4bd4..0000000
+++ /dev/null
@@ -1,699 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-01-30 18:17+0200\n"
-"Last-Translator: DAC324 <gerd_roethig@web.de>\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"
-
-msgid "Advanced Settings"
-msgstr "Erweiterte Einstellungen"
-
-msgid "Available"
-msgstr "Verfügbar"
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr "Nur alphanumerische Zeichen, Komma, Punkt und Leerzeichen verwenden"
-
-msgid "Away"
-msgstr "Abwesend"
-
-msgid "Blacklisted Numbers"
-msgstr "Nicht erlaubte Nummern (Blacklist)"
-
-msgid "Call Routing"
-msgstr "Anrufweiterleitung"
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr "Durchwahl Nummern"
-
-msgid "Copy-paste large lists of numbers here."
-msgstr "Hier können per Copy & Paste größere Nummernlisten eingefügt werden."
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr "Wählt Nummern an, für die es keine andere Übereinstimmung gibt"
-
-msgid "Do Not Disturb"
-msgstr "Beschäftigt"
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr "Domäne/IP-Adresse/Dynamische Domäne"
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr "Dynamische Liste nicht erlaubter Nummern (Dynamische Blacklist)"
-
-msgid "Email"
-msgstr "E-Mail"
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr "Eingehende Anrufe akzeptieren (registrieren via SIP)"
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr "Eingehende Anrufe akzeptieren (Status unten einstellen)"
-
-msgid "Enable Outgoing Calls"
-msgstr "Ausgehende Anrufe aktivieren"
-
-msgid "Enabled"
-msgstr "Aktiv"
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-"Geben Sie Telefonnummern ein, von denen Anrufe automatisch zurückgewiesen "
-"werden sollen. Sie sollten die Ländervorwahl und alle führenden Nullen "
-"weglassen, aber experimentieren Sie ruhig, damit Sie auch wirklich alle "
-"Nummern blockieren, die blockiert werden sollen."
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-"Geben SIe diese IP (oder IP:Port) in der Server-/Registrar-Einstellung der "
-"SIP-Geräte an, die Sie NUR local und niemals von einem entfernten Ort "
-"einsetzen werden."
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-"Geben SIe diese IP (oder IP:Port) in der Server-/Registrar-Einstellung der "
-"SIP-Geräte an, die Sie von einem entfernten Ort einsetzen werden (sie "
-"funktionieren auch lokal)."
-
-msgid "External SIP Port"
-msgstr "Externer SIP Port"
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-"Hier können Sie für jeden Dienstanbieter, der für eingehende Anrufe "
-"eingerichtet ist, festlegen, welche Nutzer ein Klingelzeichen bei "
-"eingehenden Anrufen erhalten. Ist die Liste leer, klingelt es bei allen "
-"Nutzern, die eingehende Anrufe empfangen dürfen. Ungültige Benutzernamen "
-"werden ohne Fehlermeldung zurückgewiesen. Außerdem überschreibt der Eintrag "
-"eines Benutzernamens an dieser Stelle die evtl. vorhandene Einstellung für "
-"diesen Benutzer, keine eingehenden Anrufe zu erhalten. Auf diese Weise kann "
-"eingestellt werden, dass die Nutzer nur bei bestimmten Dienstanbietern ein "
-"Klingelzeichen erhalten. Einträge in dieser Liste können entweder durch "
-"Leerzeichen getrennt oder als ein Eintrag pro Zeile (Eingabetaste nach jedem "
-"Eintrag) eingegeben werden."
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-"Hier können Sie für jeden Benutzer, der für abgehende Anrufe eingerichtet "
-"ist, festlegen, welche Dienstanbieter verwendet werden dürfen. In der "
-"Voreinstellung dürfen alle Benutzer auch alle Dienstanbieter verwenden. Um "
-"in der Liste unten aufzutauchen, sollte dem Benutzer auf der Seite "
-"\"Benutzerkonten\" erlaubt werden, abgehende Anrufe machen zu dürfen. Geben "
-"Sie VoIP-Dienstanbieter im Format Benutzername@Servername an, wie bereits "
-"oben unter \"Abgehende Anrufe\". Am einfachsten kopieren Sie die "
-"Dienstanbieter von dort und fügen sie hier wieder ein. Ungültige Einträge, "
-"einschließlich nicht für abgehende Anrufe zugelassene Dienstanbieter, werden "
-"ohne Fehlermeldung zurückgewiesen. Einträge in dieser Liste können entweder "
-"durch Leerzeichen getrennt und/oder als ein Eintrag pro Zeile (Eingabetaste "
-"nach jedem Eintrag) eingegeben werden."
-
-msgid "Full Name"
-msgstr "Vollständiger Name"
-
-msgid "General Settings"
-msgstr "Allgemeine Einstellungen"
-
-msgid "Google Accounts"
-msgstr "Google-Konten"
-
-msgid "Google Talk Status"
-msgstr "Status für Google Talk"
-
-msgid "Google Talk Status Message"
-msgstr "Statusbenachrichtigung für Google Talk"
-
-msgid "Google Voice/Talk Accounts"
-msgstr "Google Voice/Talk-Konten"
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-"Hier müssen Sie wenigstens ein SIP-Konto angeben, welches Sie zur Anmeldung "
-"an diesen Dienst nutzen. Verwenden Sie dieses Konto entweder in einem "
-"Adapter für analoges Telefonieren (ATA) oder einer SIP-Software wie "
-"CSipSimple, Linphone, oder Sipdroid auf Ihrem Smartphone, oder Ekiga, "
-"Linphone, oder X-Lite auf Ihrem Computer. In der Voreinstellung klingeln "
-"alle SIP-Konten gleichzeitig, wenn ein Anruf auf eines Ihrer VoIP-Konten "
-"oder Ihre GV-Nummern gemacht wird."
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-"Wenn EInstellen des Servers/Registrars auf %s oder %s bei Ihnen nicht "
-"funktioniert, versuchen Sie die Einstellung %s oder %s und geben Sie die "
-"Portnummer in ein separates Feld für Server/Registrat-Portnummer ein. "
-"Achtung: Einige Geräte haben eine verwirrende Einstellung, die den Port "
-"setzt, von dem die SIP-Anfragen auf dem Gerät selbst herkommen (der Bindungs-"
-"Port). Der Port auf dieser Seite meint NICHT diesen Bindungs-Port, sondern "
-"den Port, an dem der Dienst lauscht."
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-"Wenn Sie stotternden oder stark verzögerten Ton während großer Downloads "
-"haben, sollten Sie QoS einschalten. QoS priorisiert Verkehr von und zu Ihrem "
-"Netzwerk für bestimmte Ports und IP-Adressen mit dem Ergebnis einer besseren "
-"Tonübertragung in unserem Fall. Wenn unten eingeschaltet, wird eine QoS-"
-"Regel automatisch vom PBX eingerichtet, aber Sie müssen die QoS-"
-"Konfigurationsseite (Netzwerk->QoS) aufrufen, um andere kritische QoS-"
-"Einstellungen wie Upload-und Download-Geschwindigkeit vorzunehmen."
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-"Wenn Sie mehr als ein Konto für abgehende Anrufe haben, sollten Sie eine "
-"Liste von Telefonnummern/Vorwahlen in den folgenden Feldern für jeden "
-"aufgeführten Dienstanbieter eintragen. Ungültige Vorwahlen werden ohne "
-"Fehlermeldung entfernt, nur 0-9, X, Z, N, #, *, und + sind gültige Zeichen. "
-"Der Buchstabe X entspricht 0-9, Z entrpricht 1-9, N entspricht 2-9. Zum "
-"Beispiel können Sie 49 eingeben, um Anrufe nach Deutschland über einen "
-"Dienstanbieter zu tätigen. Für Anrufe nach Nordamerika geben Sie 1NXXNXXXXXX "
-"an. Unterstützt ein Dienstanbieter Ortsgespräche, wie im Gebiet 646 von New "
-"York, geben Sie 646NXXXXXX für diesen Anbieter ein. Ein Konto sollte eine "
-"leere Liste behalten, damit Sie darüber standardmäßig Anrufe tätigen können, "
-"wenn keine der Vorwahlen für die anderen Anbieter übereinstimmt. Das System "
-"ersetzt eine leere Liste automatisch mit dem Eintrag, dass dieser Anbieter "
-"alle Vorwahlen unterstützt, die von den anderen Anbietern nicht unterstützt "
-"werden. Seien Sie so spezifisch wie möglich (1NXXNXXXXXX ist besser als 1). "
-"Bitte beachten Sie, dass alle internationalen Vorwahl-Codes (wie 00, 011, "
-"010, 0011) verworfen werden. Einträge können durch Leezeichen getrennt und/"
-"oder einzeln pro Zeile (Abschließen mit Eingabe-Taste) eingegeben werden."
-
-msgid "Incoming Calls"
-msgstr "Eingehende Anrufe"
-
-msgid "Insert QoS Rules"
-msgstr "QoS-Regeln einfügen"
-
-msgid "Makes Outgoing Calls"
-msgstr "Macht ausgehende Anrufe"
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-"ACHTUNG: Es sind keine Konten für Google oder einen SIP-Dienstanbieter "
-"eingerichtet."
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-"ACHTUNG: Es sind keine Konten für Google oder einen SIP-Dienstanbieter für "
-"eingehende Anrufe eingerichtet."
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-"ACHTUNG: Es sind keine Konten für Google oder einen SIP-Dienstanbieter für "
-"abgehende Anrufe eingerichtet."
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr "ACHTUNG: Es sind keine lokalen Benutzerkonten eingerichtet."
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-"ACHTUNG: Es sind keine lokalen Benutzerkonten für abgehende Anrufe "
-"eingerichtet."
-
-msgid "No"
-msgstr "Nein"
-
-msgid "Number of Seconds to Ring"
-msgstr "Dauer des Klingelns in Sekunden"
-
-msgid "Outbound Proxy"
-msgstr "Proxy für ausgehende Verbindungen"
-
-msgid "Outgoing Calls"
-msgstr "Abgehende Anrufe"
-
-msgid "PBX Main Page"
-msgstr "PBX-Hauptseite"
-
-msgid "PBX Service Status"
-msgstr "PBX-Dienststatus"
-
-msgid "PIN"
-msgstr "PIN"
-
-msgid "Password"
-msgstr "Passwort"
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr "Port-Einstellung für SIP-Geräte"
-
-msgid "Providers Used for Outgoing Calls"
-msgstr "Provider für abgehende Anrufe"
-
-msgid "QoS Settings"
-msgstr "QoS Einstellungen"
-
-msgid "RTP Port Range End"
-msgstr "Ende des RTP-Port-Bereichs"
-
-msgid "RTP Port Range Start"
-msgstr "Anfang des RTP-Port-Bereichs"
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-"RTP-Verkehr überträgt die aktuellen Sprachpakete. Dies ist der Anfang des "
-"Port-Bereichs, der für die Einrichtung der RTP-Verbindung verwendet wird. "
-"Normalerweise kann hier die Voreinstellung belassen werden."
-
-msgid "Receives Incoming Calls"
-msgstr "Empfängt eingehende Anrufe"
-
-msgid "Remote Usage"
-msgstr "Benutzung aus der Ferne"
-
-msgid "Rings users enabled for incoming calls"
-msgstr "Für eingehende Anrufe freigeschaltete Nutzer erhalten Klingelzeichen"
-
-msgid "SIP Accounts"
-msgstr "SIP-Konten"
-
-msgid "SIP Device/Softphone Accounts"
-msgstr "SIP-Geräte-/Softphone-Konten"
-
-msgid "SIP Provider Accounts"
-msgstr "SIP-Dienstanbieter-Konten"
-
-msgid "SIP Realm (needed by some providers)"
-msgstr "SIP-Bereich (von manchen Dienstanbietern benötigt)"
-
-msgid "SIP Server/Registrar"
-msgstr "SIP-Server/Registrar"
-
-msgid "SIP Server/Registrar Port"
-msgstr "SIP-Server/Registrar Port"
-
-msgid "Server Setting"
-msgstr "Servereinstellung"
-
-msgid "Server Setting for Local SIP Devices"
-msgstr "Servereinstellung für lokale SIP-Geräte"
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr "Servereinstellung für entfernte SIP-Geräte"
-
-msgid "Service Status"
-msgstr "Dienst-Status"
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-"Stellen Sie ein (in Sekunden), wie lange es bei den Benutzern klingeln soll, "
-"bevor aufgelegt oder zur Voicemail (falls installiert und aktiv) "
-"übergegangen wird.  "
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr "Mit Leerzeichen unterteilte Liste gesperrter Nummern"
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-"Geben Sie die Nummern hier einzeln an. Drücken Sie Eingabe, um weitere "
-"Nummern hinzuzufügen."
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-"Die oben angegebene(n) Nummer(n) können für ausgehende Anrufe mit den "
-"Dienstanbietern dieses Nutzers verwendet werden. Ungültige Benutzernamen, "
-"einschließlich Nutzer, die nicht für ausgehende Anrufe freigeschaltet sind, "
-"werden ohne Fehlermeldung verworfen. Bitte überprüfen Sie deshalb, ob der "
-"Eintrag akzeptiert wurde."
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-"Diese Konfigurationsseite erlaubt Ihnen die Einrichtung eines "
-"Telefonsystemdienstes (PBX), der Anrufe über mehrere Google- und SIP-Konten "
-"(wie Sipgate, SipSorcery und Betamax) erlaubt. Sie können diese Konten für "
-"viele SIP-Geräte verwenden. Beachten Sie, dass Google-, SIP- und lokale "
-"Benutzer-Konten in den Abschnitten \"Google-Konten\", \"SIP-Konten\" und "
-"\"Benutzerkonten\" eingerichtet werden. Sie müssen mindestens ein "
-"Benutzerkonto für diesen PBX vorsehen und dann ein SIP-Gerät oder Softphone "
-"für die Benutzung dieses Kontos einrichten, damit Sie Anrufe mit Ihren "
-"Google-/SIP-Konten tätigen oder empfangen können. Wenn Sie mehr als ein "
-"Google- / SIP-Konto eingerichtet haben, sollten Sie auf der Seite "
-"\"Anrufweiterleitung\" einrichten, wie diese Anrufe behandelt werden. Wenn "
-"Sie Ihr PBX von irgendwo auf der Welt nutzen wollen, schauen Sie auf den "
-"Abschnitt \"Benutzung aus der Ferne\" auf der Seite \"Erweiterte "
-"Einstellungen\". "
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-"Dies ist der Name, den der VoIP-Server verwenden wird, um sich selbst bei "
-"der Registrierung beim VoIP-Dienstanbieter zu  identifizieren. Einige "
-"Anbieter verlangen, dass dies ein spezieller Begriff ist, der einem Hardware-"
-"SIP-Gerät entspricht."
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-"Hier geben Sie an, welche Google-/SIP-Konten für welche Ländervorwahlen "
-"benutzt werden sollen, welche Nutzer welche Konten verwenden dürfen, wie "
-"Anrufe weitergeleitet werden, welche Nummern mit Password in diesen PBX "
-"kommen, und welche Nummern ausgeschlossen werden."
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-"Hier stellen Sie Ihre Google (Talk und Voice) Konten ein, um sie für "
-"abgehende und ankommende Anrufe nutzen zu können (Voice Chat und Telefon-"
-"Anrufe). Bitte tätigen Sie wenigstens einen Sprach-Anruf mit dem Google-Talk-"
-"Plugin, das über das GMail-Interface zu installieren ist, und melden Sie "
-"sich dann überall aus Ihrem Konto ab. Klicken Sie auf \"Hinzufügen\" um so "
-"viele Konten hinzuzufügen, wie Sie wollen."
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-"Hier stellen Sie Ihre SIP (VoIP) Konten, wie Sipgate, SipSorcery, die "
-"populären Betamax-Anbieter, und alle anderen Anbieter mit SIP-Einstellungen "
-"ein, um sie für abgehende und ankommende Anrufe nutzen zu können (SIP uri "
-"und Telefon-Anrufe). Klicken Sie auf \"Hinzufügen\" um so viele Konten "
-"hinzuzufügen, wie Sie wollen."
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-"Diese Option sollte auf \"Ja\" gesetzt werden, wenn Sie eine DID (reale "
-"Telefonnummer) haben, die mit diesem SIP-Konto verknüpft ist, oder wenn Sie "
-"SIP-Anrufe über diesen Anbieter empfangen wollen."
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-"Dieser Abschnitt enthält Einstellungen, die unter normalen Umständen nicht "
-"geändert werden müssen. Zusätzlich konnen Sie hier Ihr System für die "
-"Verwendung mit entfernten SIP-Geräten einrichten und Probleme bei der "
-"Tonqualität beheben, indem Sie die Festlegung von QoS-Regeln aktivieren."
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-"Verwenden Sie eine vier- bis fünfstellige Nummer als Benutzernamen, wenn Sie "
-"normale Telefone mit ATA an dieses System anschließen (damit diese Namen "
-"über deren Zifferntastatur eingegeben werden können)."
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-"Dieses Konto für abgehende Anrufe verwenden, wie im Abschnitt "
-"\"Anrufweiterleitung\" eingestellt."
-
-msgid "Use this account to make outgoing calls."
-msgstr "Dieses Konto für abgehende Anrufe verwenden."
-
-msgid "User Accounts"
-msgstr "Benutzerkonten"
-
-msgid "User Agent String"
-msgstr "Benutzeridentifikation (User Agent)"
-
-msgid "User Name"
-msgstr "Benutzername"
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr "Verwendet für abgehende Anrufe eingerichtete Dienstanbieter"
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-"Wenn jemand einen Voice-Chat mit Ihrem GTalk-Konto oder die GVoice-Nummer "
-"(falls Sie Google Voice haben) anruft, wird der Anruf an jeden Benutzer "
-"weiter geleitet, der Online ist (mit SIP-Gerät oder Softphone) und den Anruf "
-"empfangen darf. Wenn Sie Google Voice haben, müssen Sie in Ihre GVoice-"
-"Einstellungen gehen und Anrufe zu Google Chat weiter leiten, damit Sie "
-"Anrufe auf Ihre GVoice-Nummer empfangen können. Bei Problemen mit dem "
-"Empfang von Anrufen über GVoice, experimentieren Sie mit der Option "
-"\"Anrufprüfung\" in den GVoice-Einstellungen. Stellen Sie schließlich "
-"sicher, dass kein anderer Client mit diesem Konto Online ist (z.B. Browser "
-"in GMail, Google Talk App mobil oder auf PC), denn das könnte Einfluss haben."
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-"Wenn Ihr Passwort gespeichert wird, verschwindet es aus diesem Feld und wird "
-"zu Ihrem Schutz nicht angezeigt. Ein vorher gespeichertes Passwort wird nur "
-"geändert, wenn Sie ein geändertes Passwort eingeben."
-
-msgid "Yes"
-msgstr "Ja"
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-"Sie können hier einen Klarnamen angeben, der als Name des Anrufers erscheint."
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-"Sie können Ihre SIP-Geräte/Softphones mit diesem System auch von einem "
-"entfernten Ort aus benutzen, so lange Ihnen Ihr Internet-Dienstanbieter eine "
-"öffentliche IP-Adresse zuweist. Sie können andere lokale Benutzer kostenlos "
-"anrufen (z.B. andere Analog-Telefon-Adapter (ATA)) und Ihre VoIP-Anbieter "
-"für Anrufe verwenden, als ob Sie am lokalen PBX angeschlossen wären. Nach "
-"der Einrichtung dieses Tabs gehen Sie zu den Benutzereinstellungen zurück "
-"und schauen Sie nach den neuen Einstellungen für Server und Port, die Sie an "
-"den entfernten SIP-Geräten vornehmen müssen. Bitte beachten Sie, dass Sie "
-"NAT/Portweiterleitung auf dem Router/Gateway einrichten müssen, falls dieser "
-"PBX nicht auf Ihrem Router/Gateway läuft. Bitte leiten Sie die unten "
-"angegebenen Ports (SIP-Port und RTP-Bereich) auf die IP-Adresse dieses PBX "
-"weiter."
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-"Ihre PIN verschwindet beim Speichern aus diesem Feld und wird zu Ihrem "
-"Schutz nicht angezeigt. Eine vorher gespeicherte PIN wird nur geändert, wenn "
-"Sie eine geänderte PIN eingeben. Sie können die PIN leer lassen, aber denken "
-"Sie an die Konsequenzen für die Sicherheit."
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-"Ihr Passwort verschwindet beim Speichern und wird zu Ihrem Schutz nicht "
-"angezeigt. Es wird nur geändert, wenn Sie ein anderes Passwort eingeben."
-
-#~ msgid ""
-#~ "Designate numbers that are allowed to call through this system and which "
-#~ "user's privileges it will have."
-#~ msgstr ""
-#~ "Nummern auswählen, die durch dieses System anrufen können, und deren "
-#~ "Benutzerrechte einstellen"
-
-#~ msgid ""
-#~ "Pick a random port number between 6500 and 9500 for the service to listen "
-#~ "on. Do not pick the standard 5060, because it is often subject to brute-"
-#~ "force attacks. When finished, (1) click \"Save and Apply\", and (2) click "
-#~ "the \"Restart VoIP Service\" button above. Finally, (3) look in the \"SIP "
-#~ "Device/Softphone Accounts\" section for updated Server and Port settings "
-#~ "for your SIP Devices/Softphones."
-#~ msgstr ""
-#~ "Wählen Sie eine zufällige Portnummer zwischen 6500 und 9000 für den Dienst "
-#~ "aus. Nehmen Sie nicht die standardmäßige 5060, weil sie oft attackiert wird. "
-#~ "Wenn fertig (1) klicken Sie auf \"Speichern und Anwenden\" und (2) auf \"VoIP-"
-#~ "Dienst neu starten\" oben. Schließlich (3) sehen Sie im Abschnitt \"SIP-Geräte"
-#~ "/Softphone-Konten\" nach aktualisierten Einstellungen für Ihre SIP-"
-#~ "Geräte/Softphones."
-
-#~ msgid ""
-#~ "You can enter your domain name, external IP address, or dynamic domain "
-#~ "name here Please keep in mind that if your IP address is dynamic and it "
-#~ "changes your configuration will become invalid. Hence, it's recommended "
-#~ "to set up Dynamic DNS in this case."
-#~ msgstr ""
-#~ "Sie können Ihren Domänennamen, externe IP-Adresse, oder dynamischen "
-#~ "Domänennamen hier angeben.Bitte beachten Sie, dass Ihre Konfiguration "
-#~ "ungältig wird, wenn Sie eine dynamische IP-Adresse besitzen und sich diese "
-#~ "ändert. Für diesen Fall wird deshalb die Einrichtung von dnamischem DNS "
-#~ "empfohlen."
-
-#~ msgid "Account Status"
-#~ msgstr "Konto-Status"
-
-#~ msgid "Account Status Message"
-#~ msgstr "Konto-Status Meldung"
-
-#~ msgid "Domain Name/Dynamic Domain Name"
-#~ msgstr "DNS Name (auch dynamisch möglich)"
diff --git a/applications/luci-app-pbx/po/el/pbx.po b/applications/luci-app-pbx/po/el/pbx.po
deleted file mode 100644 (file)
index 717e256..0000000
+++ /dev/null
@@ -1,493 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-03-31 15:41+0200\n"
-"Last-Translator: Vasilis <acinonyx@openwrt.gr>\n"
-"Language-Team: none\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"
-
-msgid "Advanced Settings"
-msgstr ""
-
-msgid "Available"
-msgstr ""
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr "Μην Ενοχλείτε"
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr ""
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr ""
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr ""
-
-msgid "Enabled"
-msgstr "Ενεργοποιημένο"
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr ""
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr "Πλήρες Όνομα"
-
-msgid "General Settings"
-msgstr "Γενικές Ρυθμίσεις"
-
-msgid "Google Accounts"
-msgstr "Λογαριασμοί Google"
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr "Λογαριασμοί Google Voice/Talk"
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr "Εισερχόμενες Κλήσεις"
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr "Όχι"
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr "Εξερχόμενες Κλήσεις"
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr "PIN"
-
-msgid "Password"
-msgstr "Κωδικός πρόσβασης"
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr ""
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr "Λογαριασμοί SIP"
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-#~ msgid "Account Status"
-#~ msgstr "Κατάσταση Λογαριασμού"
-
-#~ msgid "Account Status Message"
-#~ msgstr "Μήνυμα Κατάστασης Λογαριασμού"
diff --git a/applications/luci-app-pbx/po/en/pbx.po b/applications/luci-app-pbx/po/en/pbx.po
deleted file mode 100644 (file)
index 8b995e1..0000000
+++ /dev/null
@@ -1,502 +0,0 @@
-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"
-
-msgid "Advanced Settings"
-msgstr "Advanced Settings"
-
-msgid "Available"
-msgstr "Available"
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-
-msgid "Away"
-msgstr "Away"
-
-msgid "Blacklisted Numbers"
-msgstr "Blacklisted Numbers"
-
-msgid "Call Routing"
-msgstr "Call Routing"
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr "Call-through Numbers"
-
-msgid "Copy-paste large lists of numbers here."
-msgstr "Copy-paste large lists of numbers here."
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr "Do Not Disturb"
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr "Dynamic List of Blacklisted Numbers"
-
-msgid "Email"
-msgstr "Email"
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr "Enable Incoming Calls (Register via SIP)"
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr "Enable Outgoing Calls"
-
-msgid "Enabled"
-msgstr "Enabled"
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr "External SIP Port"
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr "Full Name"
-
-msgid "General Settings"
-msgstr "General Settings"
-
-msgid "Google Accounts"
-msgstr "Google Accounts"
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr "Google Voice/Talk Accounts"
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr "Incoming Calls"
-
-msgid "Insert QoS Rules"
-msgstr "Insert QoS Rules"
-
-msgid "Makes Outgoing Calls"
-msgstr "Makes Outgoing Calls"
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr "No"
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr "Outbound Proxy"
-
-msgid "Outgoing Calls"
-msgstr "Outgoing Calls"
-
-msgid "PBX Main Page"
-msgstr "PBX Main Page"
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr "PIN"
-
-msgid "Password"
-msgstr "Password"
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr "Port Setting for SIP Devices"
-
-msgid "Providers Used for Outgoing Calls"
-msgstr "Providers Used for Outgoing Calls"
-
-msgid "QoS Settings"
-msgstr "QoS Settings"
-
-msgid "RTP Port Range End"
-msgstr "RTP Port Range End"
-
-msgid "RTP Port Range Start"
-msgstr "RTP Port Range Start"
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr "Receives Incoming Calls"
-
-msgid "Remote Usage"
-msgstr "Remote Usage"
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr "SIP Accounts"
-
-msgid "SIP Device/Softphone Accounts"
-msgstr "SIP Device/Softphone Accounts"
-
-msgid "SIP Provider Accounts"
-msgstr "SIP Provider Accounts"
-
-msgid "SIP Realm (needed by some providers)"
-msgstr "SIP Realm (needed by some providers)"
-
-msgid "SIP Server/Registrar"
-msgstr "SIP Server/Registrar"
-
-msgid "SIP Server/Registrar Port"
-msgstr "SIP Server/Registrar Port"
-
-msgid "Server Setting"
-msgstr "Server Setting"
-
-msgid "Server Setting for Local SIP Devices"
-msgstr "Server Setting for Local SIP Devices"
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr "Server Setting for Remote SIP Devices"
-
-msgid "Service Status"
-msgstr "Service Status"
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr "Space-Separated List of Blacklisted Numbers"
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr "Specify numbers individually here. Press enter to add more numbers."
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-
-msgid "Use this account to make outgoing calls."
-msgstr "Use this account to make outgoing calls."
-
-msgid "User Accounts"
-msgstr "User Accounts"
-
-msgid "User Agent String"
-msgstr "User Agent String"
-
-msgid "User Name"
-msgstr "User Name"
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr "Yes"
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr "You can specify a real name to show up in the Caller ID here."
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-#~ msgid "Account Status"
-#~ msgstr "Account Status"
-
-#~ msgid "Account Status Message"
-#~ msgstr "Account Status Message"
-
-#~ msgid "Domain Name/Dynamic Domain Name"
-#~ msgstr "Domain Name/Dynamic Domain Name"
-
-#~ msgid "Enable Incoming Calls (See Status, Message below)"
-#~ msgstr "Enable Incoming Calls (See Status, Message below)"
-
-#~ msgid "Service Control and Connection Status"
-#~ msgstr "Service Control and Connection Status"
diff --git a/applications/luci-app-pbx/po/es/pbx.po b/applications/luci-app-pbx/po/es/pbx.po
deleted file mode 100644 (file)
index 8071b61..0000000
+++ /dev/null
@@ -1,677 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-06-15 13:15+0200\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: Pootle 2.0.6\n"
-
-msgid "Advanced Settings"
-msgstr "Configuración avanzada"
-
-msgid "Available"
-msgstr "Disponible"
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr "Usar sólo caracteres alfanuméricos, espacio, coma y punto."
-
-msgid "Away"
-msgstr "No disponible"
-
-msgid "Blacklisted Numbers"
-msgstr "Lista negra"
-
-msgid "Call Routing"
-msgstr "Enrutado de llamadas"
-
-msgid "Call-back Numbers"
-msgstr "Números de call-back"
-
-msgid "Call-back Provider"
-msgstr "Proveedor de call-back"
-
-msgid "Call-through Numbers"
-msgstr "Números call-through"
-
-msgid "Copy-paste large lists of numbers here."
-msgstr "Pegue aquí grandes listas de números."
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-"Listar los números a los que se permitirá llamar desde este sistema y qué "
-"privilegios de usuario tendrán."
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-"Listar los números a los que el sistema colgará y volverá a llamar, qué "
-"proveedor se usará para llamarles y qué privilegios de usuario se les dará."
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr "Marca el resto de números en cualquier lugar"
-
-msgid "Do Not Disturb"
-msgstr "No molestar"
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr "Dominio/Dirección IP/Dominio dinámico"
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr "Lista dinámica de números en lista negra"
-
-msgid "Email"
-msgstr "e-mail"
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr "Permitir llamadas entrantes (registrar vía SIP)"
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr "Permitir llamadas entrantes (ver estado abajo)"
-
-msgid "Enable Outgoing Calls"
-msgstr "Permitir llamadas salientes"
-
-msgid "Enabled"
-msgstr "Activado"
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-"Proveedor VoIP para callbacks en formato nombredeusuario@algun.nombre.host, "
-"tal y como se detalla arriba en \"Llamadas salientes\". Puede copiar y pegar "
-"los proveedores desde ahí. Las entradas no válidas, incluyendo a proveedores "
-"no habilitados para llamadas saliente, serán rechazadas sin mostrar aviso."
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-"Números de teléfono de los que se reclina la llamada automáticamente. Es "
-"posible que tenga que omitir el código de país y ceros precedentes, pero "
-"experimente para asegurarse que bloquea los números correctamente."
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-"Ponga esta IP (o IP:puerto) en el parámetro Servidor/Registrador de los "
-"dispositivos SIP que usará SOLO localmente y nunca desde una posición remota."
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-"Ponga este nombre de máquina en el parámetro Servidor/Registrador de los "
-"dispositivos SIP que usará desde posiciones remotas (también vale "
-"localmente)."
-
-msgid "External SIP Port"
-msgstr "Puerto externo SIP"
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-"Para cada proveedor al que se habilita a hacer llamadas entrantes puede "
-"restringir a qué usuarios llamar. Si se deja vacío el sistema indicará que "
-"llamará a todos los usuarios que puedan recibir llamadas entrantes. Los "
-"nombres de usuario no válidos se rechazarán sin aviso. Estos nombres de "
-"usuario hacen ignorar la configuración de usuario de no recibir llamadas. De "
-"esta manera puede hacer que a ciertos usuarios sólo les llamen ciertos "
-"proveedores. Puede separar los nombres con espacios o poniéndolos en líneas "
-"diferentes."
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-"Para cada usuario habilitado a hacer llamadas salientes puede restringir qué "
-"proveedores usar. Por defecto todos los usuarios pueden usar a todos los "
-"proveedores. Para mostrarse en la lista el usuario debe poder hacer llamadas "
-"salientes (ver página \"Cuentas de usuario\"). Ponga los proveedores en "
-"formato username@some.host.name igual que se listan en \"Llamadas salientes"
-"\" arriba. Los nombres no válidos se rechazarán sin aviso.Puede separar los "
-"nombres con espacios o poniéndolos en líneas diferentes."
-
-msgid "Full Name"
-msgstr "Nombre completo"
-
-msgid "General Settings"
-msgstr "Configuración general"
-
-msgid "Google Accounts"
-msgstr "Cuentas en google"
-
-msgid "Google Talk Status"
-msgstr "Estado de Google Talk"
-
-msgid "Google Talk Status Message"
-msgstr "Mensaje de estado de Google Talk"
-
-msgid "Google Voice/Talk Accounts"
-msgstr "Cuentas Google Voice/Talk"
-
-msgid "Hang-up Delay"
-msgstr "Retraso para descolgar"
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-"Configure una cuenta SIP que usará para conectar con este servicio. Úsela "
-"tanpo en un adaptador de telefonía analógico (ATA) o en un programa SIP como "
-"CSipSimple, Linphone, o Sipdroid para smartphones, o Ekiga, Linphone, o X-"
-"Lite para ordenadores. Por defecto, todas las cuentas SIP sonarán a la vez "
-"si se hace una llamada desde una de las cuentas de su proveedor de VoIP o "
-"números GV."
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-"Cuánto esperar antes de descolgar. Si el proveedor que usas para marcar "
-"automáticamente desvía a un correo de voz puedes ajustar este valor con un "
-"retraso que permitirá descolgar antes de que se desvíe la llamada y se "
-"facture."
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-"Si la configuración Servidor/Registrador en %s o %s no le funciona, prueba a "
-"poner %s o %s e introduzca este número de puerto en un campo separado que "
-"especifique el número de puerto del Servidor/Registrador. Algunos "
-"dispositivos tienen una configuración extraña que muestra este puerto desde "
-"el que el SIP origina peticiones en el mismo dispositivo SIP (el puerto "
-"asociado). El puerto que está configurando aquí NO es este puerto asociado "
-"sino el puerto en el que el servicio escucha."
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-"Si nota saltos o retrasos en el audio mientras realiza descargas puede "
-"querer activar QoS. QoS prioriza el tráfico a y desde su red para ciertos "
-"puertos y direcciones IP mejorando la latencia y el rendimiento del sonido "
-"en dicho caso. Al activarlo el PBX creará una regla QoS para este servicio, "
-"pero deberá rellenar en la página de configuración de QoS (Red/QoS) otros "
-"parámetros necesarios como la velocidad de subida y la de bajada."
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-"Si tiene más de una cuenta para hacer llamadas salientes, debe introducir "
-"una lista de números de teléfono y/o prefijos para cada proveedor. Los "
-"prefijos no válidos se rechazarán sin aviso y solo son caracteres válidos "
-"0-9, X, Z, N, #, *, y +. La letra X equivale a 0-9, Z a 1-9 y N a 2-9. Por "
-"ejemplo para hacer llamadas a Alemania con su proveedor debe introducir 49. "
-"Para hacer llamadas a Estados Unidos 1NXXNXXXXXX. Si uno de sus proveedores "
-"puede hacer llamadas locales a un código de área como el 646 de Nueva York "
-"debe introducir 646NXXXXXX para ese proveedor. Debería dehar una cuenta con "
-"una lista vacía para que haga las llamadas por defecto en caso de que ningún "
-"prefijo encaje. El sistema reemplazará automáticamente la lista vacía con el "
-"mensaje de que el proveedor marca todos los números que no estén en los "
-"prefijos de otros proveedores. Sea todo lo específico que pueda (ej. "
-"1NXXNXXXXXX es mejor que 1). Todos los códigos internaciones de marcado se "
-"descartan (ej. 00, 011, 010, 0011). Las entradas pueden ser una lista "
-"separada por espacios y/o cambios de línea."
-
-msgid "Incoming Calls"
-msgstr "Llamadas entrantes"
-
-msgid "Insert QoS Rules"
-msgstr "Reglas QoS"
-
-msgid "Makes Outgoing Calls"
-msgstr "Realizar llamadas salientes"
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr "NOTA: Sin cuentas configuradas de Google o porveedor SIP."
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-"NOTA: Sin cuentas configuradas de Google o porveedor SIP para llamadas "
-"entrantes."
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-"NOTA: Sin cuentas configuradas de Google o porveedor SIP para llamadas "
-"salientes."
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr "NOTA: Sin cuentas locales configuradas."
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr "NOTA: Sin cuentas locales habilitadas para llamadas saientes."
-
-msgid "No"
-msgstr "No"
-
-msgid "Number of Seconds to Ring"
-msgstr "Número de segundos a sonar"
-
-msgid "Outbound Proxy"
-msgstr "Proxy saliente"
-
-msgid "Outgoing Calls"
-msgstr "Llamadas salientes"
-
-msgid "PBX Main Page"
-msgstr "Página principal de PBX"
-
-msgid "PBX Service Status"
-msgstr "Estado del servicio PBX"
-
-msgid "PIN"
-msgstr "PIN"
-
-msgid "Password"
-msgstr "Contraseña"
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-"Escoge un número de puerto aleatorio entre 6500 y 9500 para el servicio. No "
-"elijas el estándar 5060 ya que es objeto, a menudo, de ataques por fuerza "
-"bruta. Cuando hayas terminado pulsa en \"Salvar y aplicar\" y busca en la "
-"sección \"Cuentas SIP del dispositivo/softphone\" el puerto actual para tus "
-"dispositivos/softphones SIP."
-
-msgid "Port Setting for SIP Devices"
-msgstr "Configuración de puerto para dispositivos SIP"
-
-msgid "Providers Used for Outgoing Calls"
-msgstr "Proveedores usados para llamadas salientess"
-
-msgid "QoS Settings"
-msgstr "Configuración de QoS"
-
-msgid "RTP Port Range End"
-msgstr "Fin del rango de puertos RTP"
-
-msgid "RTP Port Range Start"
-msgstr "Inicio del rango de puertos RTP"
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-"El tráfico RTP es el que lleva los paquetes de voz. Este es el inicio del "
-"rango de puertos que se usará para comunicaciones RTP. Suele ser correcto "
-"dejar el valor por defecto."
-
-msgid "Receives Incoming Calls"
-msgstr "Recibe llamadas entrantes"
-
-msgid "Remote Usage"
-msgstr "Uso remoto"
-
-msgid "Rings users enabled for incoming calls"
-msgstr "Llama a usuarios habilitados a recibir llamadas"
-
-msgid "SIP Accounts"
-msgstr "Cuentas SIP"
-
-msgid "SIP Device/Softphone Accounts"
-msgstr "Dispositivo SIP/Cuentas Softphone"
-
-msgid "SIP Provider Accounts"
-msgstr "Cuentas del proveedor SIP"
-
-msgid "SIP Realm (needed by some providers)"
-msgstr "Ámbito SIP (necesario para algunos proveedores)"
-
-msgid "SIP Server/Registrar"
-msgstr "Servidor/Registrador del SIP"
-
-msgid "SIP Server/Registrar Port"
-msgstr "Puerto del Servidor/Registrador del SIP"
-
-msgid "Server Setting"
-msgstr "Configuración del servidor"
-
-msgid "Server Setting for Local SIP Devices"
-msgstr "Dispositivos SIP locales"
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr "Dispositivos SIP remotos"
-
-msgid "Service Status"
-msgstr "Estado del servicio"
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-"Segundos que se llamará a los usuarios antes de colgar o pasar a correo voz "
-"(si el correo voz está instalado y habilitado)."
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr "Lista negra (separar números con espacios)"
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr "Números individuales. Pulse enter para añadir más."
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-"Especifica números individualmente. Pulsa enter para añadir más. Tendrás que "
-"experimentar con qué códigos de país y área necesitas añadir al número."
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-"Estos números podrán llamar con los proveedores de este usuario. Los nombres "
-"de usuario no válidos se descartan sin aviso. Por favor, verifique que los "
-"números se aceptan."
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-"Aquí puede configurar un servicio de sistema telefónico (PBX) que le "
-"permitirá hacer llamadas por múltiples cuentas Google y SIP (como Sipgate, "
-"SipSorcery, and Betamax) y compartirlas entre muchos dispositivos SIP. Tenga "
-"en cuenta que las cuentas Google, SIP y locales deben configurarse en "
-"subsecciones diferentes. Debe añadir al menos una cuenta de usuarioa este "
-"PBX y configurar un dispositivo SIP o softphone para usarla para recibir las "
-"llamadas de sus cuentas Google/SIP. Configurar múltiples usuarios le "
-"permitirá hacer llamadas gratuitas entre los usuarios y compartir las "
-"cuentas Google/SIP configuradas. Si tiene más de una cuenta Google/SIP "
-"configurada tendrá que configurar cómo se enrutan en la página \"Enrutado de "
-"llamadas\". Si está interesado en usar su PBX desde cualquier sitio del "
-"mundo puede visitar la sección \"Uso remoto\" en la página \"Configuración "
-"avanzada\"."
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-"Nombre del servidor VoIP que usará para identificarse cuando se registre en "
-"proveedores de VoIP (SIP). Algunos requieres que sea una cadena específica a "
-"una dispositivo hardware."
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-"Indique las cuentas Google/SIP que usará para llamar a qué códigos de país/"
-"zona, qué usuarios pueden usuarios pueden usar qué cuentas SIP/Google y cómo "
-"se enrutan las llamadas entrantes, qué números pueden entrar en esta PBX con "
-"una contraseña y qué números están en lista negra."
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-"Configure sus cuentas Google (Talk y Voz) para empezar a usarlas para hacer "
-"y recibir llamadas (chat de voz y teléfono real). Haga al menos una llamada "
-"de voz con el plugin de Google Talk (instalable desde GMail) y desconéctese "
-"de la cuenta en cualquier otro sitio."
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-"Configure sus cuentas SIP (VoIP) como Sipgate, SipSorcery, los popular "
-"proveedores Betamax y cualquier otro proveedor para empezar a usarlos para "
-"hacer y recibir llamadas (uri SIP y teléfono real)."
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-"Debería ser \"Sí\" si tiene un DID (teléfono real) asociado a esta cuenta "
-"SIP o quiere recibir llamads uri SIP de este proveedor."
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-"Algunos de estos parámetros no suele ser necesario cambiarlos. Además puede "
-"configurar su sistema para usar con dispositivos SIP remotos y resolver "
-"problemas de calidad de llamada habilitando algunas reglas QoS."
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-"Use nombre de usuario númericos (cuatro o cinco dígitos) si conecta a "
-"teléfonos normales con ATAs a este sistema (para que puedan marcar números "
-"de usuario)."
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-"Cuenta para llamadas salientes como se configura en la sección \"Enrutado de "
-"llamadas\"."
-
-msgid "Use this account to make outgoing calls."
-msgstr "Cuenta para llamadas salientes."
-
-msgid "User Accounts"
-msgstr "Cuentas de usuario"
-
-msgid "User Agent String"
-msgstr "Cadena \"User Agent\""
-
-msgid "User Name"
-msgstr "Nombre de usuario"
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr "Usar proveedores habilitados para llamadas salientes"
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-"Cuando alguien inicia un chat de voz con su cuenta de GTalk o llame al "
-"número de GVoice (si tiene Google Voice) la llamada se transferirá a "
-"cualquier usuario que esté conectado (registrado usando un dispositivo SIP o "
-"softphone) y se le permitirá recibir la llamada. Si tiene Google Voice debe "
-"ir a la configuración de GVoice y traspasar las llamadas a Google chat para "
-"recibir las hechas a si número de GVoice. Si tiene problemas recibiendo "
-"llamadas de GVoice pruebe con la opción \"Call Screening\" en la "
-"configuración de GVoice. Asegúrese de que ningún otro cliente esté conectado "
-"con esta cuenta (navegador en gmail, o una aplicación para móvil o "
-"escritorio) ya que podría interferir."
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-"Cuando se salve su contraseña desaparece de este campo y no se muestra para "
-"su seguridad. La contraseña sólo se podrá cambiar si introduce un valor "
-"diferente al salvado."
-
-msgid "Yes"
-msgstr "Sí"
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-"Puedes introducir el nombre de dominio, dirección IP external o nombre "
-"dinámino aquí. Lo mejor es introducir una dirección IP estática. Si la "
-"dirección es dinámica la configuración sería inválida cuando cambiase. En "
-"estos casos es recomendable configurar Dynamic DNS e introducir tu nombre de "
-"host Dynamic DNS. Puedes instalar y configurar Dynamic DNS con el paquete "
-"luci-app-ddns."
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr "Nombre real a mostrar en el \"Caller ID\"."
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-"Puede usar sus dispositivos SIP/softphones con este sistema desde una "
-"ubicación remota mientras su proveedor de internet le dé una dirección IP "
-"pública. Podrá llamar a usuarios locales gratis (ej. otros adaptadores de "
-"teléfonos analógicos) y podrá usar sus proveedores de VoIP para hacer "
-"llamadas como si estuviese en su PBX local. Tras configurar esta pestaña "
-"vuelva a la configuración de usuarios y veo el nuevo servidor y puerto que "
-"debe configurar en sus dispositivos SIP remotos. Tenga en cuenta que si este "
-"PBX no funciona en su router/pasarela, tendrá que configurar el traspaso de "
-"puertos (NAT) en su router/pasarela. Traspase los puertos indicados (Puerto "
-"SIP y rango RTP) hacia la dirección IP del dispositivo en que corre esta PBX."
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-"Su PIN desaparecerá cuando se salve para su protección. Se cambiará solo "
-"cuando introduzca un valor diferente al salvado. No se puede dejar el PIN "
-"vacío."
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-"Su contraseña desaparecerá cuando se salve para su protección. Sólo se puede "
-"cambiar si entra un valor diferente al salvado."
-
-#~ msgid ""
-#~ "Designate numbers that are allowed to call through this system and which "
-#~ "user's privileges it will have."
-#~ msgstr ""
-#~ "Números a los que se permite llamar por este sistema y privilegios de "
-#~ "usuario."
-
-#~ msgid ""
-#~ "Pick a random port number between 6500 and 9500 for the service to listen "
-#~ "on. Do not pick the standard 5060, because it is often subject to brute-"
-#~ "force attacks. When finished, (1) click \"Save and Apply\", and (2) click "
-#~ "the \"Restart VoIP Service\" button above. Finally, (3) look in the \"SIP "
-#~ "Device/Softphone Accounts\" section for updated Server and Port settings "
-#~ "for your SIP Devices/Softphones."
-#~ msgstr ""
-#~ "Puerto aleatorio entre 6500 y 9500 en el que escuche el servicio. No elija "
-#~ "el estándar 5060 porque es susceptible de ataques por fuerza bruta. Cuando "
-#~ "termine (1) pulsa \"Salvar y aplicar\" y (2) pulse \"Rearrancar servicio VoIP\". "
-#~ "Finalmente (3) busque en la sección \"Dispositivo SIP/Cuentas softphone\" la "
-#~ "configuración del puerto."
-
-#~ msgid ""
-#~ "You can enter your domain name, external IP address, or dynamic domain "
-#~ "name here Please keep in mind that if your IP address is dynamic and it "
-#~ "changes your configuration will become invalid. Hence, it's recommended "
-#~ "to set up Dynamic DNS in this case."
-#~ msgstr ""
-#~ "Nombre de dominio, dirección IP externa o nombre de dominio dinámico. Si su "
-#~ "dirección IP es dinámica y cambia su configuración podría resultar no "
-#~ "válida. Se recomienda el uso de DNS dinámico en estos casos."
diff --git a/applications/luci-app-pbx/po/fr/pbx.po b/applications/luci-app-pbx/po/fr/pbx.po
deleted file mode 100644 (file)
index 971a696..0000000
+++ /dev/null
@@ -1,484 +0,0 @@
-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"
-
-msgid "Advanced Settings"
-msgstr ""
-
-msgid "Available"
-msgstr ""
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr ""
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr ""
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr ""
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr ""
-
-msgid "Enabled"
-msgstr ""
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr ""
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr ""
-
-msgid "General Settings"
-msgstr ""
-
-msgid "Google Accounts"
-msgstr ""
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr ""
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr ""
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr ""
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr ""
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/he/pbx.po b/applications/luci-app-pbx/po/he/pbx.po
deleted file mode 100644 (file)
index 2a45821..0000000
+++ /dev/null
@@ -1,484 +0,0 @@
-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"
-
-msgid "Advanced Settings"
-msgstr ""
-
-msgid "Available"
-msgstr ""
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr ""
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr ""
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr ""
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr ""
-
-msgid "Enabled"
-msgstr ""
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr ""
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr ""
-
-msgid "General Settings"
-msgstr ""
-
-msgid "Google Accounts"
-msgstr ""
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr ""
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr ""
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr ""
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr ""
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/hu/pbx.po b/applications/luci-app-pbx/po/hu/pbx.po
deleted file mode 100644 (file)
index 2a45821..0000000
+++ /dev/null
@@ -1,484 +0,0 @@
-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"
-
-msgid "Advanced Settings"
-msgstr ""
-
-msgid "Available"
-msgstr ""
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr ""
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr ""
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr ""
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr ""
-
-msgid "Enabled"
-msgstr ""
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr ""
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr ""
-
-msgid "General Settings"
-msgstr ""
-
-msgid "Google Accounts"
-msgstr ""
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr ""
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr ""
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr ""
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr ""
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/it/pbx.po b/applications/luci-app-pbx/po/it/pbx.po
deleted file mode 100644 (file)
index 6da8e45..0000000
+++ /dev/null
@@ -1,487 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-12-15 19:31+0200\n"
-"Last-Translator: claudyus <claudyus84@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"
-
-msgid "Advanced Settings"
-msgstr "Opzioni avanzate"
-
-msgid "Available"
-msgstr ""
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr ""
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr ""
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr ""
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr ""
-
-msgid "Enabled"
-msgstr ""
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr ""
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr ""
-
-msgid "General Settings"
-msgstr ""
-
-msgid "Google Accounts"
-msgstr ""
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr ""
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr ""
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr ""
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr ""
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/ja/pbx.po b/applications/luci-app-pbx/po/ja/pbx.po
deleted file mode 100644 (file)
index 76199f4..0000000
+++ /dev/null
@@ -1,493 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-04-21 07:57+0200\n"
-"Last-Translator: Kentaro <kentaro.matsuyama@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: Pootle 2.0.4\n"
-
-msgid "Advanced Settings"
-msgstr "詳細設定"
-
-msgid "Available"
-msgstr ""
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr ""
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr "Eメール"
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr ""
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr ""
-
-msgid "Enabled"
-msgstr ""
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr "外部SIPポート"
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr ""
-
-msgid "General Settings"
-msgstr "基本設定"
-
-msgid "Google Accounts"
-msgstr "Google アカウント"
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr "Google Voice/Talk アカウント"
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr ""
-
-msgid "Insert QoS Rules"
-msgstr "QoS ルール設定を有効にする"
-
-msgid "Makes Outgoing Calls"
-msgstr "発信を許可する"
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr "いいえ"
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr "PBX メインページ"
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr "PIN"
-
-msgid "Password"
-msgstr "パスワード"
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr "QoS 設定"
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr "受信を許可する"
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr "SIP アカウント"
-
-msgid "SIP Device/Softphone Accounts"
-msgstr "SIP デバイス/ソフトフォン アカウント"
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr "サーバー設定"
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr "ユーザーエージェント名"
-
-msgid "User Name"
-msgstr "ユーザー名"
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr "はい"
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-#~ msgid "Account Status"
-#~ msgstr "アカウントのステータス"
-
-#~ msgid "Account Status Message"
-#~ msgstr "アカウントステータス・メッセージ"
diff --git a/applications/luci-app-pbx/po/ms/pbx.po b/applications/luci-app-pbx/po/ms/pbx.po
deleted file mode 100644 (file)
index 23403f2..0000000
+++ /dev/null
@@ -1,483 +0,0 @@
-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"
-
-msgid "Advanced Settings"
-msgstr ""
-
-msgid "Available"
-msgstr ""
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr ""
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr ""
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr ""
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr ""
-
-msgid "Enabled"
-msgstr ""
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr ""
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr ""
-
-msgid "General Settings"
-msgstr ""
-
-msgid "Google Accounts"
-msgstr ""
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr ""
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr ""
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr ""
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr ""
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/no/pbx.po b/applications/luci-app-pbx/po/no/pbx.po
deleted file mode 100644 (file)
index 2a45821..0000000
+++ /dev/null
@@ -1,484 +0,0 @@
-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"
-
-msgid "Advanced Settings"
-msgstr ""
-
-msgid "Available"
-msgstr ""
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr ""
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr ""
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr ""
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr ""
-
-msgid "Enabled"
-msgstr ""
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr ""
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr ""
-
-msgid "General Settings"
-msgstr ""
-
-msgid "Google Accounts"
-msgstr ""
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr ""
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr ""
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr ""
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr ""
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/pl/pbx.po b/applications/luci-app-pbx/po/pl/pbx.po
deleted file mode 100644 (file)
index 4e80a45..0000000
+++ /dev/null
@@ -1,508 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-05 04:37+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"
-
-msgid "Advanced Settings"
-msgstr "Ustawienia zaawansowane"
-
-msgid "Available"
-msgstr "Dostępny"
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr "Unikaj znaków innych niż alfanumeryczne, spacja, przecinek i kropka."
-
-msgid "Away"
-msgstr "Oddalony"
-
-msgid "Blacklisted Numbers"
-msgstr "Numery na czarnej liście"
-
-msgid "Call Routing"
-msgstr "Przekierowanie połączeń"
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-# Chodzi tu o numery, przez które dzwoni się, aby obniżyć koszta połączeń zagranicznych. Jeśli ktoś ma pomysł na lepsze tłumaczenie, proszę zmienić. W sieci nie znalazłem.
-msgid "Call-through Numbers"
-msgstr "Numery pośredniczące"
-
-msgid "Copy-paste large lists of numbers here."
-msgstr "Wklej tu wielkie listy numerów."
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr "Nie przeszkadzać"
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr "Domena/adres IP/dynamiczna domena"
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr "Dynamiczna czarna lista numerów"
-
-msgid "Email"
-msgstr "E-mail"
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr "Włącz połączenia przychodzące (rejestruj przez SIP)"
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr "Włącz połączenia przychodzące (zobacz status poniżej)"
-
-msgid "Enable Outgoing Calls"
-msgstr "Włącz połączenia wychodzące"
-
-msgid "Enabled"
-msgstr "Włączone"
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-"Podaj numery telefonów, które powinny być automatycznie odrzucane. "
-"Prawdopodobnie powinieneś pominąć numer kierunkowy kraju i zera z przodu, "
-"ale samemu to przetestuj, aby upewnić się, że blokowanie działa prawidłowo "
-"dla Twojego położenia."
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-"Podaj to IP (lub parę IP:port) w ustawieniach serwera/rejestratora urządzeń "
-"SIP których będziesz używać WYŁĄCZNIE lokalnie i nigdy z zewnątrz."
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-"Podaj tę nazwę hosta (lub parę nazwa hosta:port) w ustawieniach serwera/"
-"rejestratora urządzeń SIP których będziesz używać z zewnątrz (będą też "
-"działać lokalnie)."
-
-msgid "External SIP Port"
-msgstr "Zewnętrzny port SIP"
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-"Dla każdego użytkownika z prawem wykonywania połączeń wychodzących możesz "
-"ograniczyć których operatorów mogą używać do tych połączeń. Domyślnie każdy "
-"użytkownik może używać dowolnego operatora. Użytkownik musi mieć prawo "
-"wykonywania połączeń wychodzących ustawione na stronie \"Konta użytkowników"
-"\", aby pojawić się na poniższej liście. Podaj operatorów VoIP w formacie "
-"nazwa.użytkownika@jakaś.nazwa.hosta, tak jak są wypisani w \"Połączeniach "
-"wychodzących\" powyżej. Łatwiej jest skopiować powyższych operatorów. "
-"Nieprawidłowe wpisy, włącznie z operatorami bez prawa do połączeń "
-"wychodzących, będą odrzucani bez komunikatów. Wpisy mogą być rozdzielone "
-"spacjami albo podane po jednym w wierszu."
-
-msgid "Full Name"
-msgstr "Pełne imię i nazwisko"
-
-msgid "General Settings"
-msgstr "Ustawienia ogólne"
-
-msgid "Google Accounts"
-msgstr "Konta Google"
-
-msgid "Google Talk Status"
-msgstr "Status Google Talk"
-
-msgid "Google Talk Status Message"
-msgstr "Opis Google Talk"
-
-msgid "Google Voice/Talk Accounts"
-msgstr "Konta Google Voice/Talk"
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr "Połączenia przychodzące"
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr ""
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr ""
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/pt-br/pbx.po b/applications/luci-app-pbx/po/pt-br/pbx.po
deleted file mode 100644 (file)
index fd93e4f..0000000
+++ /dev/null
@@ -1,744 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-08-04 09:00+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
-"Language-Team: none\n"
-"Language: pt_BR\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Advanced Settings"
-msgstr "Configurações Avançadas"
-
-msgid "Available"
-msgstr "Disponível"
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-"Evite usar qualquer carácter que não seja um alfanumérico, espaço, vírgula "
-"ou ponto."
-
-msgid "Away"
-msgstr "Ausente"
-
-msgid "Blacklisted Numbers"
-msgstr "Números na Lista Negra"
-
-msgid "Call Routing"
-msgstr "Roteamento de Chamada"
-
-# 20140630: edersg: tradução
-msgid "Call-back Numbers"
-msgstr "Voltar a discar os números"
-
-# 20140630: edersg: tradução
-msgid "Call-back Provider"
-msgstr "Voltar a chamar o provedor"
-
-msgid "Call-through Numbers"
-msgstr "Números de Ligação Direta"
-
-msgid "Copy-paste large lists of numbers here."
-msgstr "Copie e cole aqui listas de números extensas."
-
-# 20140630: edersg: tradução
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-"Designar os números que estão autorizados a chamar por este sistema e quais "
-"privilégios do usuário eles terão."
-
-# 20140630: edersg: tradução
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-"Designar números para os quais o sistema irá desligar e ligar de volta, qual "
-"provedor será utilizado para chamá-los, e quais privilégios do usuário "
-"serão concedidos a eles."
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr "Disca números que não casam em qualquer lugar."
-
-msgid "Do Not Disturb"
-msgstr "Não Perturbe"
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr "Domínio/Endereço IP/Domínio Dinâmico"
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr "Lista Dinâmica dos Números da Lista Negra"
-
-msgid "Email"
-msgstr "Email"
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr "Habilitar Chamadas Recebidas (Registrar pelo SIP)"
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr "Habilitar Chamadas Recebidas (defina o Estado abaixo)"
-
-msgid "Enable Outgoing Calls"
-msgstr "Habilitar Chamadas para Fora"
-
-msgid "Enabled"
-msgstr "Habilitado"
-
-# 20140630: edersg: tradução
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-"Digite um provedor VoIP para utilizar para voltar a chamada no formato "
-"username@some.host.name conforme listado acima em \"Chamadas Originadas\". É "
-"mais fácil copiar e colar os provedores. As entradas inválidas, incluindo "
-"provedores não habilitados para chamadas de saída, serão rejeitados em "
-"silêncio."
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-"Entre com os números de telefone que você deseja rejeitar automaticamente. "
-"Você pode omitir o código do país e qualquer zeros no início, mas, por "
-"favor, teste para ter certeza que você está bloqueando da área desejada com "
-"sucesso."
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-"Entre este endereço IP (ou IP:porta) na configuração de servidor/registrador "
-"dos seus dispositivos SIP que você irá usar SOMENTE localmente e nunca de um "
-"local remoto."
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-"Entre com o nome do equipamento (ou equipamento:porta) na configuração de "
-"servidor/Registrar do seus dispositivos SIP que você irá usar de um local "
-"remoto (eles também funcionarão localmente)."
-
-msgid "External SIP Port"
-msgstr "Porta SIP Externa"
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-"Para cada provedor habilitado para receber chamadas, aqui você pode "
-"restringir quais usuários tocarão quando receber chamadas. Se a lista "
-"estiver vazia, o sistema indicará que todos os usuários com recepção de "
-"chamadas habilitada tocarão. Nome de usuários inválidos serão rejeitados "
-"silenciosamente. Além disto, entrar com um nome de usuário aqui sobrescreve "
-"a configuração do usuário para não receber chamadas. Desta forma, você pode "
-"fazer com que alguns usuários toquem somente para alguns provedores "
-"específicos. As entradas podem ser inseridas usando uma lista separada por "
-"espaço ou um por nova linha."
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-"Para cada usuário habilitado para realizar chamadas externas, você pode "
-"restringir quais provedores o usuário poderá usar. Por padrão, todos os "
-"usuários podem usar todos os provedores. Para aparecer na lista abaixo, o "
-"usuário deve estar habilitado para realizar chamadas externas na página de "
-"\"Contas de Usuários\". Entre com os provedores de VoIP no formato "
-"usuário@algum.nome.de.equipamento, como listado em \"Chamadas Efetuadas\" "
-"abaixo. É mais fácil copiar e colar os provedores da lista abaixo. Entradas "
-"inválidas, includindo provedores não habilitados para chamadas externas, "
-"serão rejeitadas silenciosamente. As entradas podem ser inseridas usando uma "
-"lista separada por espaço ou um por nova linha."
-
-msgid "Full Name"
-msgstr "Nome Completo"
-
-msgid "General Settings"
-msgstr "Configurações Gerais"
-
-msgid "Google Accounts"
-msgstr "Contas do Google"
-
-msgid "Google Talk Status"
-msgstr "Estado do Google Talk"
-
-msgid "Google Talk Status Message"
-msgstr "Mensagem de Estado do Google Talk"
-
-msgid "Google Voice/Talk Accounts"
-msgstr "Contas do Google Voice/Talk"
-
-# 20140630: edersg: tradução
-msgid "Hang-up Delay"
-msgstr "Atraso de hang-up"
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-"Aqui você deve configurar pelo menos uma conta SIP, que você irá usar para "
-"se cadastrar neste serviço. Use essa conta, seja em um adaptador de "
-"telefonia analógica (ATA), ou em um softphone SIP como Linphone, CSipSimple, "
-"ou Sipdroid em seu smartphone, ou o Ekiga, Linphone, ou X-Lite no seu "
-"computador. Por padrão, ao receber uma chamada em uma das suas contas nos "
-"provedores VoIP ou em números GV, todas as contas SIP tocarão "
-"simultaneamente."
-
-# 20140630: edersg: tradução
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-"Quanto tempo esperar antes de desligar. Se o provedor que você utiliza para "
-"discar automaticamente encaminha para a caixa postal de voz, você pode "
-"definir este valor para um atraso que irá permitir que você desligue sua "
-"chamada antes de ser encaminhada e cobrado financeiramente por isso."
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-"Se definir o servidor/registrador como %s ou %s não funcionar para você, "
-"tente defini-lo como %s ou %s e entre com este número de porta em um campo "
-"separado que especifica o número da porta do servidor/registrador. Fique "
-"ciente que alguns dispositivos têm uma configuração confusa que define a "
-"porta de origem das solicitações SIP no dispositivo SIP em si (a porta local "
-"no dispositivo). A porta especificada nesta página não é essa porta de "
-"ligação, mas a porta na qual o serviço escutará serviço."
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-"Se você sentir falhas ou alta latência enquanto baixa conteúdos pesados​​, "
-"você pode querer habilitar o <abbr title=\"Quality of Service, Qualidade de "
-"serviço\">QoS</abbr>. O <abbr title=\"Quality of Service, Qualidade de "
-"serviço\">QoS</abbr> prioriza o tráfego de e para a sua rede para endereços "
-"IP e portas específicas, resultando em melhor latência e redimento de som. "
-"Se ativado, será configurada automaticamente pelo PABX uma regra de <abbr "
-"title=\"Quality of Service, Qualidade de serviço\">QoS</abbr> para este "
-"serviço, mas você deve visitar a página de configuração de <abbr title="
-"\"Quality of Service, Qualidade de serviço\">QoS</abbr> (Rede -> QoS) para "
-"configurar outras configurações críticas de QoS como as velocidades da sua "
-"conexão."
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-"Se você tiver mais de uma conta que pode fazer chamadas externas, você deve "
-"informar uma lista de números de telefone e/ou prefixos nos seguintes campos "
-"para cada provedor listados. Prefixos inválidos são removidos "
-"silênciosamente, e some os caracteres 0-9, X, Z, N, # *,, e + são válidos. A "
-"letra X corresponde a 0-9, Z corresponde a 1-9, e N corresponde a 2-9. Por "
-"exemplo, para fazer chamadas para a Alemanha através de um provedor, você "
-"pode digitar 49. Para fazer chamadas para a América do Norte, você pode "
-"entrar 1NXXNXXXXXX. Se um de seus provedores pode fazer chamadas locais para "
-"um código de área como Nova York (646), você pode entrar com 646NXXXXXX para "
-"esse provedor. Você deve deixar uma conta com uma lista vazia para fazer "
-"chamadas com ele por padrão para o caso do prefixo não casar com nenhum "
-"outro fornecedor. O sistema irá substituir automaticamente uma lista vazia "
-"com uma mensagem que os este provedor será utilizado caso nenhuma das regras "
-"dos demais provedores casem. Seja tão específico quanto possível (isto é "
-"1NXXNXXXXXX é melhor do que 1). Por favor, note que todos os códigos de "
-"discagem internacionais são descartados (por exemplo 00, 011, 010, 0011). As "
-"entradas podem ser feitas em uma lista separada por espaços ou por nova "
-"linha."
-
-msgid "Incoming Calls"
-msgstr "Chamadas Recebidas"
-
-msgid "Insert QoS Rules"
-msgstr "Inserir Regras QoS"
-
-msgid "Makes Outgoing Calls"
-msgstr "Realiza Chamadas para Fora"
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr "NOTA: Não existe uma conta Google ou provedor SIP configurado."
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-"NOTA: Não existe uma conta Google ou provedor SIP habilitado para receber "
-"chamadas."
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-"NOTA: Não existe uma conta Google ou provedor SIP habilitado para efetuar "
-"chamadas externas."
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr "NOTA: Não existe uma conta local configurada."
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-"NOTA: Não existe uma conta local configurada para efetuar chamadas externas."
-
-msgid "No"
-msgstr "Não"
-
-msgid "Number of Seconds to Ring"
-msgstr "Número de Segundos para Tocar"
-
-msgid "Outbound Proxy"
-msgstr "Proxy Externo"
-
-msgid "Outgoing Calls"
-msgstr "Chamadas Efetuadas"
-
-msgid "PBX Main Page"
-msgstr "Página Principal do PBX"
-
-msgid "PBX Service Status"
-msgstr "Estado do Serviço PBX"
-
-msgid "PIN"
-msgstr "PIN"
-
-msgid "Password"
-msgstr "Senha"
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-"Escolha uma porta aleatória entre 6500 e 9500 onde o serviço irá escutar. "
-"Não escolha a porta padrão 5060 pois ela é frequentemente alvo de ataques de "
-"força bruta. Quanto terminar, (1) clique em \"Salvar e Aplicar\", e (2) olhe "
-"na seção \"Dispositivo SIP/Contas do Softphone\" para as configurações "
-"atualizadas do servidor e porta para o seu Dispositivo SIP/Softphone."
-
-msgid "Port Setting for SIP Devices"
-msgstr "Configuração da Porta para Dispositivos SIP"
-
-msgid "Providers Used for Outgoing Calls"
-msgstr "Provedores Usados para as Chamadas para Fora"
-
-msgid "QoS Settings"
-msgstr "Configurações de QoS"
-
-msgid "RTP Port Range End"
-msgstr "Final da Faixa de Portas RTP"
-
-msgid "RTP Port Range Start"
-msgstr "Inicio da Faixa de Portas RTP"
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-"O tráfego RTP transporta de fato os pacotes de voz. Este é o início do "
-"intervalo de portas que será usado para a estabelecer uma comunicação RTP. "
-"Geralmente não é um problema deixar esta configuração com o valor padrão."
-
-msgid "Receives Incoming Calls"
-msgstr "Recebe Chamadas para Dentro"
-
-msgid "Remote Usage"
-msgstr "Uso Remoto"
-
-msgid "Rings users enabled for incoming calls"
-msgstr "Toca usuários habilitados para receber chamadas"
-
-msgid "SIP Accounts"
-msgstr "Contas SIP"
-
-msgid "SIP Device/Softphone Accounts"
-msgstr "Contas de Dispositivos SIP/Telefones em Software"
-
-msgid "SIP Provider Accounts"
-msgstr "Contas dos Provedores SIP"
-
-msgid "SIP Realm (needed by some providers)"
-msgstr "Domínio SIP (necessário para alguns provedores)"
-
-msgid "SIP Server/Registrar"
-msgstr "Servidor SIP/Registrador"
-
-msgid "SIP Server/Registrar Port"
-msgstr "Porta do Servidor SIP/Registrador"
-
-msgid "Server Setting"
-msgstr "Configuração do Servidor"
-
-msgid "Server Setting for Local SIP Devices"
-msgstr "Configuração do Servidor para Dispositivos SIP Locais"
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr "Configuração do Servidor para Dispositivos SIP Remotos"
-
-msgid "Service Status"
-msgstr "Estado do Serviço"
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-"Define o número de segundos para tocar o telefone ao receber chamadas antes "
-"de desligar ou ir para a caixa postal, se o correio de voz estiver instalado "
-"e habilitado."
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr "Números na Lista Negra separados por Espaço"
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-"Especifique os números individualmente aqui. Pressione o Enter para "
-"adicionar mais números."
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-"Especifique aqui os números individualmente. Pressione o \"Enter\" para "
-"adicionar mais números. Você terá que experimentar com qual código de país "
-"ou de área você precisa adicionar aos números."
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-"O número(s) acima especificados serão capazes de discar com os provedores "
-"deste usuário. Nomes inválidos, incluindo usuários não habilitados para "
-"chamadas externas, serão descartados silenciosamente. Por favor, verifique "
-"se a entrada foi aceita."
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-"Esta página de configuração permite configurar um sistema de serviço de "
-"telefone (PABX), que permite fazer chamadas telefônicas através do Google "
-"múltipla e SIP (como Sipgate, SipSorcery e Betamax) contas e compartilhá-los "
-"entre diversos dispositivos SIP. Note-se que as contas do Google, contas "
-"SIP, e contas de usuários locais são configurados em \"Contas do Google\", "
-"\"Contas SIP\" e \"Contas de Usuário\" sub-seções. Você deve adicionar pelo "
-"menos uma conta de usuário para este PABX e configurar um dispositivo SIP ou "
-"softphone para usar a conta, a fim de fazer e receber chamadas com o "
-"Google / SIP contas. Configurando vários usuários permitem que você faça "
-"chamadas gratuitas entre todos os usuários, e partilhar o Google configurado "
-"e contas SIP. Se você tem mais de um Google e contas SIP configurado, você "
-"provavelmente deve configurar como as chamadas de e para eles são "
-"encaminhados para a \"Call Routing\" página. Se você está interessado em "
-"usar o seu próprio PABX de qualquer lugar do mundo, então, visitar o "
-"\"Remote Uso\" na seção \"Advanced Settings\" página."
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-"Este é o nome que o servidor VoIP será usado para identificar-se quando se "
-"registrar para VoIP (SIP) fornecedores. Alguns provedores exigem isso para "
-"uma seqüência específica de correspondência de um dispositivo de hardware "
-"SIP."
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-"Este é o local onde você indica quais contas Google/SIP serão usadas para "
-"chamar quais códigos de área/país, que usuários poderão usar quais contas "
-"Google/SIP, como as chamadas recebidas serão roteadas, que números podem ser "
-"recebidos por este PBX com uma senha e qual números estão banidos."
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-"Este é o local onde você configura suas contas Google (Talk e Voice) para "
-"poder usá-las para realizar ou receber chamadas (conversa por voz e chamadas "
-"para telefones reais). Por favor, realize ao menos uma chamada de voz usando "
-"o plugin do Google Talk, instalável na interface do GMail. Após esta "
-"chamada, saia da sua conta em todos os serviços. Clique em \"Adicionar\" "
-"para adicionar quantas contas você desejar."
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-"Este é o local onde você configura suas contas SIP (VoIP) como Sipgate, "
-"SipSorcery, os populares provedores Betamax, e qualquer outro provedor com "
-"suporte a SIP para permitir o uso destas contas para efetuar e receber "
-"chamadas (URI de SIP e chamads para números reais). Clique em \"Adicionar\" "
-"para adicionar quantas contas você desejar."
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-"Esta opção deve estar definida como \"Sim\" se você tem um DDR (Discagem "
-"Direta a Ramal) associado com esta conta SIP or quer receber chamadas URI de "
-"SIP através deste provedor."
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-"Esta seção contém configurações que não precisam ser modificadas em "
-"condições normais. Aqui você pode configurar seu sistema para usar com "
-"dispositivos SIP remotos e resolver problemas com a qualidade das chamadas "
-"através da inserção de regras de <abbr title=\"Quality of Service, Qualidade "
-"de serviço\">QoS</abbr>."
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-"Use o nome de usuário numérico (4 a 5 dígitos) se você estiver conectando "
-"telefones normais com ATAs para este sistema (para que eles possam discar os "
-"nomes de seus usuários)."
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-"Use esta conta para realizar chamadas externas como configurado na seção de "
-"\"Roteamento de Chamada\"."
-
-msgid "Use this account to make outgoing calls."
-msgstr "Use esta conta para realizar chamadas externas."
-
-msgid "User Accounts"
-msgstr "Contas de Usuários"
-
-msgid "User Agent String"
-msgstr "Texto para o Agente do Usuário"
-
-msgid "User Name"
-msgstr "Nome do Usuário"
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr "Usa provedores habilitados para chamadas externas"
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-"Quando alguém iniciar uma conversa por voz com sua conta do GTalk ou chamar "
-"seu número GVoice (se você tiver uma conta Google Voice), a chamada será "
-"encaminhada para qualquer usuários que estão conectados (registados "
-"utilizando um dispositivo SIP ou softphone) e autorizados a receber a "
-"chamada. Se você tiver uma conta Google Voice, você deve ir para as "
-"configurações da sua conta GVoice e encaminhar as chamadas para o Google "
-"Chat, a fim de realmente receber chamadas feitas para o seu número GVoice. "
-"Se você tiver problemas para receber chamadas oriundas do GVoice, "
-"experimente a opção \"Call Screening/Monitoramento de Chamadas\" na "
-"configurações da sua conta GVoice. Finalmente, certifique-se de nenhum outro "
-"cliente está online com essa conta (navegador contado no GMail, aplicativo "
-"Google Talk no Desktop ou Celular), pois isto pode interferir."
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-"Quando a sua senha for salva, ela desaparece deste campo e não será exibida "
-"para sua proteção. A senha será alterada somente quando você informar uma "
-"nova senha diferente da que foi salva anteriormente."
-
-msgid "Yes"
-msgstr "Sim"
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-"Você pode informar aqui o nome do domínio, endereço IP externo, ou um nome "
-"de domínio dinâmico. O melhor é informar um endereço IP estático. Se o seu "
-"endereço IP é dinâmico e ele muda, sua configuração se tornará inválida. "
-"Desta forma, é recomendado configurar um serviço de domínios dinâmicos e "
-"utilizar este nome aqui. Você pode configurar o serviço de domínios "
-"dinâmicos com o pacote luci-app-ddns."
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-"Você pode especificar um nome real para aparecer no identificador de "
-"chamadas."
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-"Você pode usar seus dispositivos SIP/softphones com este sistema a partir de "
-"um local remoto, desde que o seu provedor de Internet lhe forneça um "
-"endereço IP público. Você poderá ligar para outros usuários locais sem custo "
-"(por exemplo, outros adaptadores de telefone analógico (ATAs)) e usar seus "
-"provedores de VoIP para fazer chamadas como se fossem originadas do local do "
-"seu PBX. Depois de configurar esta aba, volte para onde os usuários são "
-"configurados e veja as novas configurações de servidor e porta com as quais "
-"você precisa configurar os seus dispositivos SIP remotos. Por favor, note "
-"que se este PABX não está rodando no seu roteador, você terá que configurar "
-"o redirecionamento de portas (NAT) no seu roteador. Por favor, encaminhe as "
-"portas abaixo (porta SIP e intervalo de porta RTP) para o endereço IP do "
-"dispositivo que executa este PBX."
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-"Seu PIN desaparece deste campo quando for salvo e não será exibido para sua "
-"proteção. Ele será alterada somente quando você informar um PIN diferente do "
-"que foi salvo anteriormente. É possível deixá-lo em branco mas fique atento "
-"quanto as implicações na segurança."
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-"Sua senha desaparece deste campo quando for salva e não será exibida para "
-"sua proteção. A senha será alterada somente quando você informar uma nova "
-"senha diferente da que foi salva anteriormente."
-
-#~ msgid ""
-#~ "Designate numbers that are allowed to call through this system and which "
-#~ "user's privileges it will have."
-#~ msgstr ""
-#~ "Números definidos que poderão realizar chamadas através deste sistema e "
-#~ "quais privilégios o usuário terá."
-
-#~ msgid ""
-#~ "Pick a random port number between 6500 and 9500 for the service to listen "
-#~ "on. Do not pick the standard 5060, because it is often subject to brute-"
-#~ "force attacks. When finished, (1) click \"Save and Apply\", and (2) click "
-#~ "the \"Restart VoIP Service\" button above. Finally, (3) look in the \"SIP "
-#~ "Device/Softphone Accounts\" section for updated Server and Port settings "
-#~ "for your SIP Devices/Softphones."
-#~ msgstr ""
-#~ "Escolha um número de porta aleatória entre 6500 e 9500 para o serviço "
-#~ "escutar. Não escolher o padrão 5060, porque é frequentemente alvo de ataques "
-#~ "de força bruta. Quando terminar, (1) clique em \"Salvar e Aplicar\", e (2) "
-#~ "clique no \"Reiniciar o serviço VoIP\" acima. Finalmente, (3) olhe na seção "
-#~ "\"Contas de Dispositivos SIP/Telefones em Software\" para atualizar o endereço "
-#~ "e porta do servidor para seu Dispositivos SIP/Telefones em Software."
-
-#~ msgid ""
-#~ "You can enter your domain name, external IP address, or dynamic domain "
-#~ "name here Please keep in mind that if your IP address is dynamic and it "
-#~ "changes your configuration will become invalid. Hence, it's recommended "
-#~ "to set up Dynamic DNS in this case."
-#~ msgstr ""
-#~ "Você pode digitar aqui o seu nome de domínio, endereço IP externo, ou nome "
-#~ "de domínio dinâmico. Tenha em mente que se o seu endereço IP é dinâmico e "
-#~ "ele mudar, a sua configuração se tornará inválida. Por isso, é recomendado "
-#~ "configurar um DNS dinâmico neste caso."
-
-#~ msgid "Account Status"
-#~ msgstr "Estado da Conta"
-
-#~ msgid "Account Status Message"
-#~ msgstr "Mensagem do Estado da Conta"
-
-#~ msgid "Domain Name/Dynamic Domain Name"
-#~ msgstr "Nome do Domínio/Nome do Domínio Dinâmico"
-
-#~ msgid "Enable Incoming Calls (See Status, Message below)"
-#~ msgstr "Habilitar Chamadas Recebidas (Veja o Estado, Mensagem abaixo)"
-
-#~ msgid "Service Control and Connection Status"
-#~ msgstr "Controle do Serviço e Estado da Conexão"
diff --git a/applications/luci-app-pbx/po/pt/pbx.po b/applications/luci-app-pbx/po/pt/pbx.po
deleted file mode 100644 (file)
index 75b6c8c..0000000
+++ /dev/null
@@ -1,487 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-09-22 19:17+0200\n"
-"Last-Translator: Low <pedroloureiro1@sapo.pt>\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"
-
-msgid "Advanced Settings"
-msgstr ""
-
-msgid "Available"
-msgstr "Disponível"
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr ""
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr ""
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr ""
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr ""
-
-msgid "Enabled"
-msgstr "Ativado"
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr ""
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr "Nome Completo"
-
-msgid "General Settings"
-msgstr ""
-
-msgid "Google Accounts"
-msgstr ""
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr ""
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr ""
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr "Não"
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr ""
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr ""
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr "Sim"
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/ro/pbx.po b/applications/luci-app-pbx/po/ro/pbx.po
deleted file mode 100644 (file)
index 49e8dac..0000000
+++ /dev/null
@@ -1,488 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-06-28 18:50+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"
-
-msgid "Advanced Settings"
-msgstr "Setări avansate"
-
-msgid "Available"
-msgstr "Disponibil"
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr "Nu deranjaţi"
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr "Domeniu/Adresă IP/Domeniu dinamic"
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr ""
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr ""
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr ""
-
-msgid "Enabled"
-msgstr "Activat"
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr ""
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr "Nume complet"
-
-msgid "General Settings"
-msgstr "Setări generale"
-
-msgid "Google Accounts"
-msgstr "Conturi Google"
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr ""
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr ""
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr ""
-
-msgid "Password"
-msgstr "Parolă"
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr "Setări QoS"
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr ""
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/ru/pbx.po b/applications/luci-app-pbx/po/ru/pbx.po
deleted file mode 100644 (file)
index e85c947..0000000
+++ /dev/null
@@ -1,525 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-09-06 10:28+0200\n"
-"Last-Translator: datasheet <michael.gritsaenko@gmail.com>\n"
-"Language-Team: none\n"
-"Language: ru\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"
-
-msgid "Advanced Settings"
-msgstr "Расширенные установки"
-
-msgid "Available"
-msgstr "Доступен"
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-"Старайтесь не использовать ничего, кроме алфавитно-цифровых символов, "
-"пробелов, запятых и точек."
-
-msgid "Away"
-msgstr "Отошел"
-
-msgid "Blacklisted Numbers"
-msgstr "Номера в \"черном\" списке"
-
-msgid "Call Routing"
-msgstr "Маршрутизация вызовов"
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr "Номера сквозных вызовов"
-
-msgid "Copy-paste large lists of numbers here."
-msgstr "Вставьте большие списки номеров здесь"
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr "Не беспокоить"
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr "Динамический список запрещенных номеров"
-
-msgid "Email"
-msgstr "Эл. почта"
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr "Разрешить входящие вызовы (регистрация через SIP)"
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr "Разрешить входящие звонки (см. ниже Статус)"
-
-msgid "Enable Outgoing Calls"
-msgstr "Разрешить исходящие вызовы"
-
-msgid "Enabled"
-msgstr "Включено"
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-"Введите телефонные номера, звонки с которых вы хотите автоматически "
-"отклонять. Вы, вероятно, не должны вводить код страны и ведущие нули, но, "
-"чтобы удостовериться в этом, пожалуйста проверьте, что звонки из "
-"нежелательной зоны успешно блокируются."
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-"Введите этот IP (или IP порт) в установках Сервера/Регистратора SIP "
-"устройств, который вы будете использовать ТОЛЬКО локально и никогда удаленно."
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-"Введите это имя_хоста (или имя_хоста:порт) в установках Сервера/Регистратора "
-"тех SIP-устройств, которые вы будете использовать удаленно (локально они "
-"также будут работать)."
-
-msgid "External SIP Port"
-msgstr "Внешний порт SIP"
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr "Полное имя"
-
-msgid "General Settings"
-msgstr "Общие установки"
-
-msgid "Google Accounts"
-msgstr "Учетные записи Google"
-
-msgid "Google Talk Status"
-msgstr "Статус Google Talk"
-
-msgid "Google Talk Status Message"
-msgstr "Сообщение статуса Google Talk"
-
-msgid "Google Voice/Talk Accounts"
-msgstr "Учетные записи Google Voice/Talk"
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr "Входящие вызовы"
-
-msgid "Insert QoS Rules"
-msgstr "Вставить правила QoS"
-
-msgid "Makes Outgoing Calls"
-msgstr "Совершает исходящие вызовы"
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr "Нет"
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr "Outbound прокси сервер"
-
-msgid "Outgoing Calls"
-msgstr "Исходящие вызовы"
-
-msgid "PBX Main Page"
-msgstr "Главная страница АТС"
-
-#, fuzzy
-msgid "PBX Service Status"
-msgstr "Состояние службы АТС"
-
-msgid "PIN"
-msgstr "PIN"
-
-msgid "Password"
-msgstr "Пароль"
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr "Настройки порта устройств SIP"
-
-msgid "Providers Used for Outgoing Calls"
-msgstr "Провайдеры исходящих вызовов"
-
-msgid "QoS Settings"
-msgstr "Установки QoS"
-
-msgid "RTP Port Range End"
-msgstr "Конец диапазона портов RTP"
-
-msgid "RTP Port Range Start"
-msgstr "Начало диапазоно портов RTP"
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr "Принимает входящие вызовы"
-
-msgid "Remote Usage"
-msgstr "Удаленное использование"
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr "Учетные записи SIP"
-
-msgid "SIP Device/Softphone Accounts"
-msgstr "Учетные записи SIP устройства/программного телефона"
-
-msgid "SIP Provider Accounts"
-msgstr "Учетные записи SIP провайдера"
-
-msgid "SIP Realm (needed by some providers)"
-msgstr "SIP Realm (нужен для некоторых провайдеров)"
-
-msgid "SIP Server/Registrar"
-msgstr "SIP Сервер/Регистратор"
-
-msgid "SIP Server/Registrar Port"
-msgstr "Порт SIP Сервера/Регистратора"
-
-msgid "Server Setting"
-msgstr "Настройки сервера"
-
-msgid "Server Setting for Local SIP Devices"
-msgstr "Установки сервера для локальных SIP устройств"
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr "Настройки сервера для удаленных SIP устройств"
-
-msgid "Service Status"
-msgstr "Состояние сервиса"
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr "Черный список номеров (пробел между номерами для разделения)"
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-"Укажите отдельные номера. Нажмите enter, чтобы добавить больше номеров."
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-"Использовать эту учетную запись для исходящих вызовов в соответстии с "
-"наcтройками секции \"Маршрутизация вызовов\"."
-
-msgid "Use this account to make outgoing calls."
-msgstr "Использовать эту учетную запись для исходящих вызовов"
-
-msgid "User Accounts"
-msgstr "Учетные записи пользователя"
-
-msgid "User Agent String"
-msgstr "Строка агента пользователя"
-
-msgid "User Name"
-msgstr "Имя пользователя"
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr "Да"
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr "Здесь Вы можете указать имя для отображения вместо ID звонящего."
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-#~ msgid ""
-#~ "Designate numbers that are allowed to call through this system and which "
-#~ "user's privileges it will have."
-#~ msgstr ""
-#~ "Указать телефонные номера, которым разрешено осуществлять звонки через эту "
-#~ "систему, а также какими они будут обладать пользовательскими привилегиями."
-
-#~ msgid "Account Status"
-#~ msgstr "Статус учетной записи"
-
-#~ msgid "Account Status Message"
-#~ msgstr "Статус сообщение учетной записи"
-
-#~ msgid "Domain Name/Dynamic Domain Name"
-#~ msgstr "Имя домена/Динамическое имя домена"
-
-#~ msgid "Enable Incoming Calls (See Status, Message below)"
-#~ msgstr "Разрешить входящие вызовы (см. статус, сообщение ниже)"
-
-#~ msgid "Service Control and Connection Status"
-#~ msgstr "Управление сервисом и статус соединения"
diff --git a/applications/luci-app-pbx/po/sk/pbx.po b/applications/luci-app-pbx/po/sk/pbx.po
deleted file mode 100644 (file)
index 7b6d4a5..0000000
+++ /dev/null
@@ -1,484 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"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"
-
-msgid "Advanced Settings"
-msgstr ""
-
-msgid "Available"
-msgstr ""
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr ""
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr ""
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr ""
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr ""
-
-msgid "Enabled"
-msgstr ""
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr ""
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr ""
-
-msgid "General Settings"
-msgstr ""
-
-msgid "Google Accounts"
-msgstr ""
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr ""
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr ""
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr ""
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr ""
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/sv/pbx.po b/applications/luci-app-pbx/po/sv/pbx.po
deleted file mode 100644 (file)
index 400289b..0000000
+++ /dev/null
@@ -1,506 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-04-28 06:11+0200\n"
-"Last-Translator: Umeaboy <kristoffer.grundstrom1983@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"
-
-msgid "Advanced Settings"
-msgstr "Avancerade inställningar"
-
-msgid "Available"
-msgstr "Tillgänglig"
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-"Undvik att använda allt förutom alfa-numeriska karaktärer, mellanslag, komma-"
-"tecken och punkt."
-
-msgid "Away"
-msgstr "Borta"
-
-msgid "Blacklisted Numbers"
-msgstr "Svartlistade nummer"
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr "Kopiera och klistra in ett stort antal nummer här."
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr "Ringer upp nummer som inte passar någon annanstans"
-
-msgid "Do Not Disturb"
-msgstr "Stör ej"
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr "Domän/IP-adress/Dynamisk domän"
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr "Dynamisk lista över svartlistade nummer"
-
-msgid "Email"
-msgstr "E-post"
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr "Aktivera inkommande samtal (Registrera via SIP)"
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr "Aktivera inkommande samtal (se status nedanför)"
-
-msgid "Enable Outgoing Calls"
-msgstr "Aktivera utgående samtal"
-
-msgid "Enabled"
-msgstr "Aktiverat"
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-"Ange telefonnummer som du vill neka samtal från automatiskt. Du borde "
-"förmodligen utesluta landskoden och eventuella inledande nollor, men "
-"experimentera gärna för att vara säker på att du lyckas blockera nummer från "
-"ditt önskade område."
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-"Ange den här IP:n (eller IP:port) i Server/Registrar-inställningarna för SIP-"
-"enheter som du endast kommer att använda LOKALT och aldrig från en "
-"fjärrstyrd anslutning."
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-"Ange det här värdnamnet (eller värdnamn:port) under Server/Registrar "
-"inställningen för SIP-enheten som du kommer att använda från en fjärrstyrd "
-"plats (de kommer att fungera lokalt också)."
-
-msgid "External SIP Port"
-msgstr "Extern SIP-port"
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr "Fullständigt namn"
-
-msgid "General Settings"
-msgstr "Allmänna inställningar"
-
-msgid "Google Accounts"
-msgstr "Google-konton"
-
-msgid "Google Talk Status"
-msgstr "Status för Google Talk"
-
-msgid "Google Talk Status Message"
-msgstr "Statusmeddelande för Google Talk"
-
-msgid "Google Voice/Talk Accounts"
-msgstr "Google Voice/Talk-konton"
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr "Inkommande samtal"
-
-msgid "Insert QoS Rules"
-msgstr "För in QoS-regler"
-
-msgid "Makes Outgoing Calls"
-msgstr "Gör utgående samtal"
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr "NOTERA: Det finns inga lokala användarkonton konfigurerade."
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-"NOTERA: Det finns inga lokala användar-konton aktiverade för utgående samtal."
-
-msgid "No"
-msgstr "Nej"
-
-msgid "Number of Seconds to Ring"
-msgstr "Antal sekunder att ringa"
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr "Utgående samtal"
-
-msgid "PBX Main Page"
-msgstr "Huvudsida för PBX"
-
-msgid "PBX Service Status"
-msgstr "Status för PBX-tjänsten"
-
-msgid "PIN"
-msgstr "PIN-kod"
-
-msgid "Password"
-msgstr "Lösenord"
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr "Port-inställning för SIP-enheter"
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr "QoS-inställningar"
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr "Tar emot inkommande samtal"
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr "Ringer användare som är aktiverade för inkommande samtal"
-
-msgid "SIP Accounts"
-msgstr "SIP-konton"
-
-msgid "SIP Device/Softphone Accounts"
-msgstr "SIP-enhet/Softphone-konton"
-
-msgid "SIP Provider Accounts"
-msgstr "SIP-operatörskonton"
-
-msgid "SIP Realm (needed by some providers)"
-msgstr "SIP-sfär (behövs av vissa operatörer)"
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr "Server-inställning"
-
-msgid "Server Setting for Local SIP Devices"
-msgstr "Server-inställning för lokala SIP-enheter"
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr "Server-inställning för fjärrstyrda SIP-enheter"
-
-msgid "Service Status"
-msgstr "Status för tjänst"
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-"Specificera nummer individuellt här. Tryck på enter-knappen för att lägga "
-"till fler nummer."
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-"Det här valet borde vara inställt på \"Ja\" om du har ett DID (riktigt "
-"telefonnummer) associerat med det här SIP-kontot eller om du vill ta emot "
-"SIP uri-samtal via den här operatören."
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr "Använd det här kontot för att göra utgående samtal."
-
-msgid "User Accounts"
-msgstr "Användar-konton"
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr "Användarnamn"
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr "Använder operatörer för utgående samtal"
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr "Ja"
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-"Du kan specifiera ett riktigt namn som visas i samband med nummret här."
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/templates/pbx.pot b/applications/luci-app-pbx/po/templates/pbx.pot
deleted file mode 100644 (file)
index 86dd2eb..0000000
+++ /dev/null
@@ -1,477 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-msgid "Advanced Settings"
-msgstr ""
-
-msgid "Available"
-msgstr ""
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr ""
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr ""
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr ""
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr ""
-
-msgid "Enabled"
-msgstr ""
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr ""
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr ""
-
-msgid "General Settings"
-msgstr ""
-
-msgid "Google Accounts"
-msgstr ""
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr ""
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr ""
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr ""
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr ""
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/tr/pbx.po b/applications/luci-app-pbx/po/tr/pbx.po
deleted file mode 100644 (file)
index 59af3e8..0000000
+++ /dev/null
@@ -1,484 +0,0 @@
-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"
-
-msgid "Advanced Settings"
-msgstr ""
-
-msgid "Available"
-msgstr ""
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr ""
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr ""
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr ""
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr ""
-
-msgid "Enabled"
-msgstr ""
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr ""
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr ""
-
-msgid "General Settings"
-msgstr ""
-
-msgid "Google Accounts"
-msgstr ""
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr ""
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr ""
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr ""
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr ""
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/uk/pbx.po b/applications/luci-app-pbx/po/uk/pbx.po
deleted file mode 100644 (file)
index d65a784..0000000
+++ /dev/null
@@ -1,501 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-08-13 15:47+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"
-
-msgid "Advanced Settings"
-msgstr "Розширені налаштування"
-
-msgid "Available"
-msgstr "Доступний"
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-"Намагайтеся не використовувати нічого, крім алфавітно-цифрових символів, "
-"пропусків, ком і крапок."
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr "Маршрутизація Викликів"
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr "Виклик через номери"
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-#, fuzzy
-msgid "Do Not Disturb"
-msgstr "Не турбувати"
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-#, fuzzy
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr "Динамічний список небажаних дзвінків"
-
-msgid "Email"
-msgstr "Електронна скринька"
-
-#, fuzzy
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr "Активувати вхідні дзвінки (зареєструватися через SIP)"
-
-#, fuzzy
-msgid "Enable Incoming Calls (set Status below)"
-msgstr "Активувати вхідні дзвінки (Встановити низький статус)"
-
-msgid "Enable Outgoing Calls"
-msgstr "Активувати вихідні виклики"
-
-msgid "Enabled"
-msgstr "Активувати"
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-#, fuzzy
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-"Введіть цей IP (або IP:порт) Сервера/Реєстратор налаштування SIP пристрою ви "
-"будете використовувати тільки локально й ніколи з віддаленого місця."
-
-#, fuzzy
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-"Введіть це хост ім'я (або ім'я хоста:порт) сервер/Реєстратор налаштування "
-"SIP пристрою ви будете використовувати з віддаленого місця розташування "
-"(воно також буде працювати локально)."
-
-msgid "External SIP Port"
-msgstr "Зовнішній порт SIP"
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr "Повне Ім'я"
-
-msgid "General Settings"
-msgstr "Загальні Налаштування"
-
-msgid "Google Accounts"
-msgstr "Облікові записи Google"
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr ""
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr ""
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr "Ні"
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr ""
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr ""
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr "Облікові записи користувачів"
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr "Ім'я користувача"
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr "Так"
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/vi/pbx.po b/applications/luci-app-pbx/po/vi/pbx.po
deleted file mode 100644 (file)
index 59af3e8..0000000
+++ /dev/null
@@ -1,484 +0,0 @@
-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"
-
-msgid "Advanced Settings"
-msgstr ""
-
-msgid "Available"
-msgstr ""
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr ""
-
-msgid "Away"
-msgstr ""
-
-msgid "Blacklisted Numbers"
-msgstr ""
-
-msgid "Call Routing"
-msgstr ""
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr ""
-
-msgid "Copy-paste large lists of numbers here."
-msgstr ""
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr ""
-
-msgid "Do Not Disturb"
-msgstr ""
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr ""
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Email"
-msgstr ""
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr ""
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr ""
-
-msgid "Enable Outgoing Calls"
-msgstr ""
-
-msgid "Enabled"
-msgstr ""
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr ""
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr ""
-
-msgid "General Settings"
-msgstr ""
-
-msgid "Google Accounts"
-msgstr ""
-
-msgid "Google Talk Status"
-msgstr ""
-
-msgid "Google Talk Status Message"
-msgstr ""
-
-msgid "Google Voice/Talk Accounts"
-msgstr ""
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr ""
-
-msgid "Insert QoS Rules"
-msgstr ""
-
-msgid "Makes Outgoing Calls"
-msgstr ""
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr ""
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr ""
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr ""
-
-msgid "No"
-msgstr ""
-
-msgid "Number of Seconds to Ring"
-msgstr ""
-
-msgid "Outbound Proxy"
-msgstr ""
-
-msgid "Outgoing Calls"
-msgstr ""
-
-msgid "PBX Main Page"
-msgstr ""
-
-msgid "PBX Service Status"
-msgstr ""
-
-msgid "PIN"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr ""
-
-msgid "Providers Used for Outgoing Calls"
-msgstr ""
-
-msgid "QoS Settings"
-msgstr ""
-
-msgid "RTP Port Range End"
-msgstr ""
-
-msgid "RTP Port Range Start"
-msgstr ""
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr ""
-
-msgid "Remote Usage"
-msgstr ""
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr ""
-
-msgid "SIP Device/Softphone Accounts"
-msgstr ""
-
-msgid "SIP Provider Accounts"
-msgstr ""
-
-msgid "SIP Realm (needed by some providers)"
-msgstr ""
-
-msgid "SIP Server/Registrar"
-msgstr ""
-
-msgid "SIP Server/Registrar Port"
-msgstr ""
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
diff --git a/applications/luci-app-pbx/po/zh-cn/pbx.po b/applications/luci-app-pbx/po/zh-cn/pbx.po
deleted file mode 100644 (file)
index 45325b9..0000000
+++ /dev/null
@@ -1,495 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-07-15 16:11+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
-"Language-Team: none\n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Advanced Settings"
-msgstr "高级设置"
-
-msgid "Available"
-msgstr "可用"
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr "避免使用除字母,数字,空格,逗号和句号外的其他字符。"
-
-msgid "Away"
-msgstr "外"
-
-msgid "Blacklisted Numbers"
-msgstr "黑名单"
-
-msgid "Call Routing"
-msgstr "呼叫路由"
-
-msgid "Call-back Numbers"
-msgstr "回调数"
-
-msgid "Call-back Provider"
-msgstr "回呼提供者"
-
-msgid "Call-through Numbers"
-msgstr "通过数字呼叫"
-
-msgid "Copy-paste large lists of numbers here."
-msgstr "复制粘贴数字大名单。"
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr "其他地方无法匹配拨号号码"
-
-msgid "Do Not Disturb"
-msgstr "请勿打扰"
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr "域名/ IP地址/动态域名"
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr "动态黑名单号码列表"
-
-msgid "Email"
-msgstr "电子邮件"
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr "允许电话呼入(SIP注册者)"
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr "允许电话呼入(下面设置状态)"
-
-msgid "Enable Outgoing Calls"
-msgstr "允许电话外呼"
-
-msgid "Enabled"
-msgstr "允许"
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-"输入您想自动屏蔽的电话号码。您应该忽略国家代码和任何前导零,但请测试来确保您成"
-"功屏蔽了想要屏蔽的号码。"
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-"在SIP设备注册服务器中输入IP(或IP:端口),仅在本地使用,不可以在远程使用。"
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-
-msgid "External SIP Port"
-msgstr "外部SIP端口"
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr "全名"
-
-msgid "General Settings"
-msgstr "通用设置"
-
-msgid "Google Accounts"
-msgstr "google账号"
-
-msgid "Google Talk Status"
-msgstr "google Talk状态"
-
-msgid "Google Talk Status Message"
-msgstr "google Talk状态消息"
-
-msgid "Google Voice/Talk Accounts"
-msgstr "Google Voice/Talk账号"
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr "呼入电话"
-
-msgid "Insert QoS Rules"
-msgstr "插入QoS规则"
-
-msgid "Makes Outgoing Calls"
-msgstr "安排外呼列表"
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr "注意:没有google或SIP提供者账户配置。"
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr "注意:没有google或SIP提供者账户允许呼入电话。"
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr "注意:没有google或SIP提供者账户允许外呼电话。"
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr "注意:没有本地用户设置。"
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr "注意:没有本地用户允许外呼电话。"
-
-msgid "No"
-msgstr "不"
-
-msgid "Number of Seconds to Ring"
-msgstr "多少秒振铃"
-
-msgid "Outbound Proxy"
-msgstr "外呼代理"
-
-msgid "Outgoing Calls"
-msgstr "外呼电话"
-
-msgid "PBX Main Page"
-msgstr "PBX主页"
-
-msgid "PBX Service Status"
-msgstr "PBX服务状态"
-
-msgid "PIN"
-msgstr "PIN"
-
-msgid "Password"
-msgstr "密码"
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr "SIP设备端口设置"
-
-msgid "Providers Used for Outgoing Calls"
-msgstr "用于外呼电话的提供者"
-
-msgid "QoS Settings"
-msgstr "QoS设置"
-
-msgid "RTP Port Range End"
-msgstr "RTP结束端口"
-
-msgid "RTP Port Range Start"
-msgstr "RTP起始端口"
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr "收到呼入电话"
-
-msgid "Remote Usage"
-msgstr "远程使用"
-
-msgid "Rings users enabled for incoming calls"
-msgstr ""
-
-msgid "SIP Accounts"
-msgstr "SIP账号"
-
-msgid "SIP Device/Softphone Accounts"
-msgstr "SIP 设备/软电话账号"
-
-msgid "SIP Provider Accounts"
-msgstr "SIP提供者账户"
-
-msgid "SIP Realm (needed by some providers)"
-msgstr "SIP Realm(一些供应商需要)"
-
-msgid "SIP Server/Registrar"
-msgstr "SIP注册服务器"
-
-msgid "SIP Server/Registrar Port"
-msgstr "SIP注册服务器端口"
-
-msgid "Server Setting"
-msgstr ""
-
-msgid "Server Setting for Local SIP Devices"
-msgstr ""
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr ""
-
-msgid "Service Status"
-msgstr ""
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr ""
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr ""
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr ""
-
-msgid "User Accounts"
-msgstr ""
-
-msgid "User Agent String"
-msgstr ""
-
-msgid "User Name"
-msgstr ""
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr ""
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr ""
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr ""
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-#~ msgid ""
-#~ "Designate numbers that are allowed to call through this system and which "
-#~ "user's privileges it will have."
-#~ msgstr "设定号码作为用户拥有使用交换机呼叫的权限。"
diff --git a/applications/luci-app-pbx/po/zh-tw/pbx.po b/applications/luci-app-pbx/po/zh-tw/pbx.po
deleted file mode 100644 (file)
index 603b9df..0000000
+++ /dev/null
@@ -1,507 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-16 13:59+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"
-
-msgid "Advanced Settings"
-msgstr "進階設定"
-
-msgid "Available"
-msgstr "可運用"
-
-msgid ""
-"Avoid using anything but alpha-numeric characters, space, comma, and period."
-msgstr "除了字母數字字符,空格,逗號和句號其它一概不用."
-
-msgid "Away"
-msgstr "離線"
-
-msgid "Blacklisted Numbers"
-msgstr "列入黑名單號碼"
-
-msgid "Call Routing"
-msgstr "路由呼叫"
-
-msgid "Call-back Numbers"
-msgstr ""
-
-msgid "Call-back Provider"
-msgstr ""
-
-msgid "Call-through Numbers"
-msgstr "通話接通號碼"
-
-msgid "Copy-paste large lists of numbers here."
-msgstr "號碼大型清單複製貼上此地"
-
-msgid ""
-"Designate numbers that are allowed to call through this system and which "
-"user's privileges they will have."
-msgstr ""
-
-msgid ""
-"Designate numbers to whom the system will hang up and call back, which "
-"provider will be used to call them, and which user's privileges will be "
-"granted to them."
-msgstr ""
-
-msgid "Dials numbers unmatched elsewhere"
-msgstr "撥號它處號碼不符"
-
-msgid "Do Not Disturb"
-msgstr "勿擾中"
-
-msgid "Domain/IP Address/Dynamic Domain"
-msgstr "網域/IP位址/動態網域"
-
-msgid "Dynamic List of Blacklisted Numbers"
-msgstr "黑名單動態列表"
-
-msgid "Email"
-msgstr "郵件信箱"
-
-msgid "Enable Incoming Calls (Register via SIP)"
-msgstr "啟用來話呼叫(透過SIP註冊)"
-
-msgid "Enable Incoming Calls (set Status below)"
-msgstr "啟用來話呼叫(在下面設定狀態)"
-
-msgid "Enable Outgoing Calls"
-msgstr "啟用外撥"
-
-msgid "Enabled"
-msgstr "已啟用"
-
-msgid ""
-"Enter a VoIP provider to use for call-back in the format username@some.host."
-"name, as listed in \"Outgoing Calls\" above. It's easiest to copy and paste "
-"the providers from above. Invalid entries, including providers not enabled "
-"for outgoing calls, will be rejected silently."
-msgstr ""
-
-msgid ""
-"Enter phone numbers that you want to decline calls from automatically. You "
-"should probably omit the country code and any leading zeroes, but please "
-"experiment to make sure you are blocking numbers from your desired area "
-"successfully."
-msgstr ""
-"打入您允許自動通話的號碼. 您或許可以忽略國碼和0字開頭, 但僅供實驗以確保期望區"
-"的號碼被阻斷成功."
-
-msgid ""
-"Enter this IP (or IP:port) in the Server/Registrar setting of SIP devices "
-"you will use ONLY locally and never from a remote location."
-msgstr ""
-"要設定SIP設備在Server/Registrar內打入IP(或IP:埠號)您僅能本地端使用絕不要打入"
-"遠端位置"
-
-msgid ""
-"Enter this hostname (or hostname:port) in the Server/Registrar setting of "
-"SIP devices you will use from a remote location (they will work locally too)."
-msgstr ""
-"要設定SIP設備從遠端使用(在本地端也一樣能執行),在Server/Registrar內打入主機名"
-"稱(或主機名稱:埠號)"
-
-msgid "External SIP Port"
-msgstr "外部SIP埠號"
-
-msgid ""
-"For each provider enabled for incoming calls, here you can restrict which "
-"users to ring on incoming calls. If the list is empty, the system will "
-"indicate that all users enabled for incoming calls will ring. Invalid "
-"usernames will be rejected silently. Also, entering a username here "
-"overrides the user's setting to not receive incoming calls. This way, you "
-"can make certain users ring only for specific providers. Entries can be made "
-"in a space-separated list, and/or one per line by hitting enter after every "
-"one."
-msgstr ""
-
-msgid ""
-"For each user enabled for outgoing calls you can restrict what providers the "
-"user can use for outgoing calls. By default all users can use all providers. "
-"To show up in the list below the user should be allowed to make outgoing "
-"calls in the \"User Accounts\" page. Enter VoIP providers in the format "
-"username@some.host.name, as listed in \"Outgoing Calls\" above. It's easiest "
-"to copy and paste the providers from above. Invalid entries, including "
-"providers not enabled for outgoing calls, will be rejected silently. Entries "
-"can be made in a space-separated list, and/or one per line by hitting enter "
-"after every one."
-msgstr ""
-
-msgid "Full Name"
-msgstr "全名"
-
-msgid "General Settings"
-msgstr "一般設定"
-
-msgid "Google Accounts"
-msgstr "Google帳戶"
-
-msgid "Google Talk Status"
-msgstr "Google Talk狀態"
-
-msgid "Google Talk Status Message"
-msgstr "Google Talk訊息狀態"
-
-msgid "Google Voice/Talk Accounts"
-msgstr "Google 語音/簡訊帳戶"
-
-msgid "Hang-up Delay"
-msgstr ""
-
-msgid ""
-"Here you must configure at least one SIP account, that you will use to "
-"register with this service. Use this account either in an Analog Telephony "
-"Adapter (ATA), or in a SIP software like CSipSimple, Linphone, or Sipdroid "
-"on your smartphone, or Ekiga, Linphone, or X-Lite on your computer. By "
-"default, all SIP accounts will ring simultaneously if a call is made to one "
-"of your VoIP provider accounts or GV numbers."
-msgstr ""
-
-msgid ""
-"How long to wait before hanging up. If the provider you use to dial "
-"automatically forwards to voicemail, you can set this value to a delay that "
-"will allow you to hang up before your call gets forwarded and you get billed "
-"for it."
-msgstr ""
-
-msgid ""
-"If setting Server/Registrar to %s or %s does not work for you, try setting "
-"it to %s or %s and entering this port number in a separate field that "
-"specifies the Server/Registrar port number. Beware that some devices have a "
-"confusing setting that sets the port where SIP requests originate from on "
-"the SIP device itself (the bind port). The port specified on this page is "
-"NOT this bind port but the port this service listens on."
-msgstr ""
-
-msgid ""
-"If you experience jittery or high latency audio during heavy downloads, you "
-"may want to enable QoS. QoS prioritizes traffic to and from your network for "
-"specified ports and IP addresses, resulting in better latency and throughput "
-"for sound in our case. If enabled below, a QoS rule for this service will be "
-"configured by the PBX automatically, but you must visit the QoS "
-"configuration page (Network->QoS) to configure other critical QoS settings "
-"like Download and Upload speed."
-msgstr ""
-
-msgid ""
-"If you have more than one account that can make outgoing calls, you should "
-"enter a list of phone numbers and/or prefixes in the following fields for "
-"each provider listed. Invalid prefixes are removed silently, and only 0-9, "
-"X, Z, N, #, *, and + are valid characters. The letter X matches 0-9, Z "
-"matches 1-9, and N matches 2-9. For example to make calls to Germany through "
-"a provider, you can enter 49. To make calls to North America, you can enter "
-"1NXXNXXXXXX. If one of your providers can make \"local\" calls to an area "
-"code like New York's 646, you can enter 646NXXXXXX for that provider. You "
-"should leave one account with an empty list to make calls with it by "
-"default, if no other provider's prefixes match. The system will "
-"automatically replace an empty list with a message that the provider dials "
-"all numbers not matched by another provider's prefixes. Be as specific as "
-"possible (i.e. 1NXXNXXXXXX is better than 1). Please note all international "
-"dial codes are discarded (e.g. 00, 011, 010, 0011). Entries can be made in a "
-"space-separated list, and/or one per line by hitting enter after every one."
-msgstr ""
-
-msgid "Incoming Calls"
-msgstr "來電呼叫"
-
-msgid "Insert QoS Rules"
-msgstr "插入QoS規則"
-
-msgid "Makes Outgoing Calls"
-msgstr "開啟外撥"
-
-msgid "NOTE: There are no Google or SIP provider accounts configured."
-msgstr "注意:尚缺Google或者SIP提供者帳戶被設置"
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for incoming "
-"calls."
-msgstr "注意:尚缺Google或者SIP供應商帳戶被啟用才能接收來電呼叫"
-
-msgid ""
-"NOTE: There are no Google or SIP provider accounts enabled for outgoing "
-"calls."
-msgstr "注意:尚缺Google或者SIP供應商帳戶被啟用才能外撥."
-
-msgid "NOTE: There are no local user accounts configured."
-msgstr "注意:尚未設置本地端帳戶"
-
-msgid "NOTE: There are no local user accounts enabled for outgoing calls."
-msgstr "注意:啟用本地端帳戶才能外撥"
-
-msgid "No"
-msgstr "不"
-
-msgid "Number of Seconds to Ring"
-msgstr "響鈴秒數"
-
-msgid "Outbound Proxy"
-msgstr "外連代理"
-
-msgid "Outgoing Calls"
-msgstr "去電外撥"
-
-msgid "PBX Main Page"
-msgstr "PBX總機主頁"
-
-msgid "PBX Service Status"
-msgstr "PBX服務狀態"
-
-msgid "PIN"
-msgstr "PIN碼"
-
-msgid "Password"
-msgstr "密碼"
-
-msgid ""
-"Pick a random port number between 6500 and 9500 for the service to listen "
-"on. Do not pick the standard 5060, because it is often subject to brute-"
-"force attacks. When finished, (1) click \"Save and Apply\", and (2) look in "
-"the \"SIP Device/Softphone Accounts\" section for updated Server and Port "
-"settings for your SIP Devices/Softphones."
-msgstr ""
-
-msgid "Port Setting for SIP Devices"
-msgstr "SIP設備的埠號設置"
-
-msgid "Providers Used for Outgoing Calls"
-msgstr "已採用的外撥供應商"
-
-msgid "QoS Settings"
-msgstr "QoS語音品質設置"
-
-msgid "RTP Port Range End"
-msgstr "RTP協定埠域結束"
-
-msgid "RTP Port Range Start"
-msgstr "RTP協定埠域啟始"
-
-msgid ""
-"RTP traffic carries actual voice packets. This is the start of the port "
-"range that will be used for setting up RTP communication. It's usually OK to "
-"leave this at the default value."
-msgstr ""
-
-msgid "Receives Incoming Calls"
-msgstr "接受來電呼叫"
-
-msgid "Remote Usage"
-msgstr "遠端啟用"
-
-msgid "Rings users enabled for incoming calls"
-msgstr "來電呼叫時震鈴通知使用者"
-
-msgid "SIP Accounts"
-msgstr "SIP帳戶"
-
-msgid "SIP Device/Softphone Accounts"
-msgstr "SIP設備/軟體式手機帳戶"
-
-msgid "SIP Provider Accounts"
-msgstr "SIP供應商帳戶"
-
-msgid "SIP Realm (needed by some providers)"
-msgstr "SIP領域(某些供應商需用到)"
-
-msgid "SIP Server/Registrar"
-msgstr "SIP伺服器/登記處"
-
-msgid "SIP Server/Registrar Port"
-msgstr "SIP伺服器/登記埠"
-
-msgid "Server Setting"
-msgstr "伺服器設置"
-
-msgid "Server Setting for Local SIP Devices"
-msgstr "本地SIP設備的伺服器設置"
-
-msgid "Server Setting for Remote SIP Devices"
-msgstr "遠端SIP設備的伺服器設置"
-
-msgid "Service Status"
-msgstr "服務狀態"
-
-msgid ""
-"Set the number of seconds to ring users upon incoming calls before hanging "
-"up or going to voicemail, if the voicemail is installed and enabled."
-msgstr ""
-
-msgid "Space-Separated List of Blacklisted Numbers"
-msgstr "以空格分隔的黑名單號碼列表"
-
-msgid "Specify numbers individually here. Press enter to add more numbers."
-msgstr "在此指定獨立號碼. 按enter 可新增更多號碼"
-
-msgid ""
-"Specify numbers individually here. Press enter to add more numbers. You will "
-"have to experiment with what country and area codes you need to add to the "
-"number."
-msgstr ""
-
-msgid ""
-"The number(s) specified above will be able to dial out with this user's "
-"providers. Invalid usernames, including users not enabled for outgoing "
-"calls, are dropped silently. Please verify that the entry was accepted."
-msgstr ""
-
-msgid ""
-"This configuration page allows you to configure a phone system (PBX) service "
-"which permits making phone calls through multiple Google and SIP (like "
-"Sipgate, SipSorcery, and Betamax) accounts and sharing them among many SIP "
-"devices. Note that Google accounts, SIP accounts, and local user accounts "
-"are configured in the \"Google Accounts\", \"SIP Accounts\", and \"User "
-"Accounts\" sub-sections. You must add at least one User Account to this PBX, "
-"and then configure a SIP device or softphone to use the account, in order to "
-"make and receive calls with your Google/SIP accounts. Configuring multiple "
-"users will allow you to make free calls between all users, and share the "
-"configured Google and SIP accounts. If you have more than one Google and SIP "
-"accounts set up, you should probably configure how calls to and from them "
-"are routed in the \"Call Routing\" page. If you're interested in using your "
-"own PBX from anywhere in the world, then visit the \"Remote Usage\" section "
-"in the \"Advanced Settings\" page."
-msgstr ""
-
-msgid ""
-"This is the name that the VoIP server will use to identify itself when "
-"registering to VoIP (SIP) providers. Some providers require this to a "
-"specific string matching a hardware SIP device."
-msgstr ""
-
-msgid ""
-"This is where you indicate which Google/SIP accounts are used to call what "
-"country/area codes, which users can use what SIP/Google accounts, how "
-"incoming calls are routed, what numbers can get into this PBX with a "
-"password, and what numbers are blacklisted."
-msgstr ""
-
-msgid ""
-"This is where you set up your Google (Talk and Voice) Accounts, in order to "
-"start using them for dialing and receiving calls (voice chat and real phone "
-"calls). Please make at least one voice call using the Google Talk plugin "
-"installable through the GMail interface, and then log out from your account "
-"everywhere. Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
-"SipSorcery, the popular Betamax providers, and any other providers with SIP "
-"settings in order to start using them for dialing and receiving calls (SIP "
-"uri and real phone calls). Click \"Add\" to add as many accounts as you wish."
-msgstr ""
-
-msgid ""
-"This option should be set to \"Yes\" if you have a DID (real telephone "
-"number) associated with this SIP account or want to receive SIP uri calls "
-"through this provider."
-msgstr ""
-
-msgid ""
-"This section contains settings that do not need to be changed under normal "
-"circumstances. In addition, here you can configure your system for use with "
-"remote SIP devices, and resolve call quality issues by enabling the "
-"insertion of QoS rules."
-msgstr ""
-
-msgid ""
-"Use (four to five digit) numeric user name if you are connecting normal "
-"telephones with ATAs to this system (so they can dial user names)."
-msgstr ""
-
-msgid ""
-"Use this account to make outgoing calls as configured in the \"Call Routing"
-"\" section."
-msgstr ""
-
-msgid "Use this account to make outgoing calls."
-msgstr "使用這個帳號外撥."
-
-msgid "User Accounts"
-msgstr "使用者帳號"
-
-msgid "User Agent String"
-msgstr "用戶代理字串"
-
-msgid "User Name"
-msgstr "用戶名稱"
-
-msgid "Uses providers enabled for outgoing calls"
-msgstr "採用供應商啟用以便外撥"
-
-msgid ""
-"When somebody starts voice chat with your GTalk account or calls the GVoice, "
-"number (if you have Google Voice), the call will be forwarded to any users "
-"that are online (registered using a SIP device or softphone) and permitted "
-"to receive the call. If you have Google Voice, you must go to your GVoice "
-"settings and forward calls to Google chat in order to actually receive calls "
-"made to your GVoice number. If you have trouble receiving calls from GVoice, "
-"experiment with the Call Screening option in your GVoice Settings. Finally, "
-"make sure no other client is online with this account (browser in gmail, "
-"mobile/desktop Google Talk App) as it may interfere."
-msgstr ""
-
-msgid ""
-"When your password is saved, it disappears from this field and is not "
-"displayed for your protection. The previously saved password will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-
-msgid "Yes"
-msgstr "是"
-
-msgid ""
-"You can enter your domain name, external IP address, or dynamic domain name "
-"here. The best thing to input is a static IP address. If your IP address is "
-"dynamic and it changes, your configuration will become invalid. Hence, it's "
-"recommended to set up Dynamic DNS in this case. and enter your Dynamic DNS "
-"hostname here. You can configure Dynamic DNS with the luci-app-ddns package."
-msgstr ""
-
-msgid "You can specify a real name to show up in the Caller ID here."
-msgstr "您可以在此指定一個真實名稱以便顯示在來電ID"
-
-msgid ""
-"You can use your SIP devices/softphones with this system from a remote "
-"location as well, as long as your Internet Service Provider gives you a "
-"public IP. You will be able to call other local users for free (e.g. other "
-"Analog Telephone Adapters (ATAs)) and use your VoIP providers to make calls "
-"as if you were local to the PBX. After configuring this tab, go back to "
-"where users are configured and see the new Server and Port setting you need "
-"to configure the remote SIP devices with. Please note that if this PBX is "
-"not running on your router/gateway, you will need to configure port "
-"forwarding (NAT) on your router/gateway. Please forward the ports below (SIP "
-"port and RTP range) to the IP address of the device running this PBX."
-msgstr ""
-"不管多遠,只要能取得ISP提供的公眾合法IP,依然可以使用這個系統的SIP設備/PC電話表"
-"現一樣的好.您將能夠免費呼叫其他本地端用戶(e.g 其它類比電話機(ATAs)和使用您的"
-"VoIP供應商講電話就像您在使用本地的PBX總機電話一樣.在設定這個標籤後, 需回到用"
-"戶設定並且查看新的伺服器和埠設定以便能設定遠端SIP設備.請注意假如PBX總機若不在"
-"您的路由器/GW上執行,您將必須在您的路由器/GW上設定埠轉發(NAT).在PBX主機上請轉"
-"發下列(SIP埠+RTP所採用的範圍埠)埠號址定到跑PBX服務設備上的IP位址."
-
-msgid ""
-"Your PIN disappears when saved for your protection. It will be changed only "
-"when you enter a value different from the saved one. Leaving the PIN empty "
-"is possible, but please beware of the security implications."
-msgstr ""
-"當存檔時為保護起見您的PIN碼將不會顯示. 除非您打入不同於原始存檔的值它才會變"
-"更. 也可以把PIN碼保留空白, 但要提防會有安全的隱憂."
-
-msgid ""
-"Your password disappears when saved for your protection. It will be changed "
-"only when you enter a value different from the saved one."
-msgstr ""
-"當存檔時為保護起見您的密碼將不會顯示. 除非您打入不同於原始存檔的值它才會變更."
-
-#~ msgid ""
-#~ "Designate numbers that are allowed to call through this system and which "
-#~ "user's privileges it will have."
-#~ msgstr "依據系統和戶用的權限允許通話的指定號碼"
diff --git a/applications/luci-app-pbx/root/etc/config/pbx b/applications/luci-app-pbx/root/etc/config/pbx
deleted file mode 100644 (file)
index ca7c166..0000000
+++ /dev/null
@@ -1 +0,0 @@
-config 'main' 'connection_status'
diff --git a/applications/luci-app-pbx/root/etc/config/pbx-advanced b/applications/luci-app-pbx/root/etc/config/pbx-advanced
deleted file mode 100644 (file)
index 39da6f8..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-config 'settings' 'advanced'
-        option 'useragent' 'PBX'
-        option 'ringtime' '30'
-        option 'rtpstart' '19850'
-        option 'rtpend' '19900'
diff --git a/applications/luci-app-pbx/root/etc/config/pbx-calls b/applications/luci-app-pbx/root/etc/config/pbx-calls
deleted file mode 100644 (file)
index 822bd4a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-config 'call_routing' 'outgoing_calls'
-
-config 'call_routing' 'incoming_calls'
-
-config 'call_routing' 'providers_user_can_use'
-
-config 'call_routing' 'blacklisting'
diff --git a/applications/luci-app-pbx/root/etc/config/pbx-google b/applications/luci-app-pbx/root/etc/config/pbx-google
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/applications/luci-app-pbx/root/etc/config/pbx-users b/applications/luci-app-pbx/root/etc/config/pbx-users
deleted file mode 100644 (file)
index a4277b1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-config 'user' 'server'
diff --git a/applications/luci-app-pbx/root/etc/config/pbx-voip b/applications/luci-app-pbx/root/etc/config/pbx-voip
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/applications/luci-app-pbx/root/etc/init.d/pbx-asterisk b/applications/luci-app-pbx/root/etc/init.d/pbx-asterisk
deleted file mode 100755 (executable)
index e05ae11..0000000
+++ /dev/null
@@ -1,837 +0,0 @@
-#!/bin/sh /etc/rc.common
-#
-# Copyright 2011 Iordan Iordanov <iiordanov (AT) gmail.com>
-#
-#    This file is part of luci-pbx.
-#
-#    luci-pbx 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 3 of the License, or
-#    (at your option) any later version.
-#
-#    luci-pbx 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 luci-pbx.  If not, see <http://www.gnu.org/licenses/>.
-
-. /lib/functions.sh
-
-START=60
-
-# Some global variables
-MODULENAME=pbx
-USERAGENT="PBX"
-HANGUPCNTXT=hangup-call-context
-GTALKUNVL=unavailable
-
-ASTUSER=nobody
-ASTGROUP=nogroup
-ASTDIRSRECURSIVE="/var/run/asterisk /var/log/asterisk /var/spool/asterisk"
-ASTDIRS="/usr/lib/asterisk"
-ASTSOUNDSDIR="/usr/lib/asterisk/sounds"
-
-TEMPLATEDIR=/etc/${MODULENAME}-asterisk
-PBXSOUNDSDIR=$TEMPLATEDIR/sounds
-VMTEMPLATEDIR=/etc/${MODULENAME}-voicemail
-VMSOUNDSDIR=$VMTEMPLATEDIR/sounds
-ASTERISKDIR=/etc/asterisk
-WORKDIR=/tmp/$MODULENAME.$$
-MD5SUMSFILE=/tmp/$MODULENAME-sums.$$
-
-TMPL_ASTERISK=$TEMPLATEDIR/asterisk.conf.TEMPLATE
-TMPL_GTALK=$TEMPLATEDIR/gtalk.conf.TEMPLATE
-TMPL_INDICATIONS=$TEMPLATEDIR/indications.conf.TEMPLATE
-TMPL_LOGGER=$TEMPLATEDIR/logger.conf.TEMPLATE
-TMPL_MANAGER=$TEMPLATEDIR/manager.conf.TEMPLATE
-TMPL_MODULES=$TEMPLATEDIR/modules.conf.TEMPLATE
-TMPL_RTP=$TEMPLATEDIR/rtp.conf.TEMPLATE
-
-TMPL_EXTCTHRUCHECKHDR=$TEMPLATEDIR/extensions_disa-check_header.conf.TEMPLATE
-TMPL_EXTCTHRUCHECK=$TEMPLATEDIR/extensions_disa-check.conf.TEMPLATE
-TMPL_EXTCTHRUCHECKFTR=$TEMPLATEDIR/extensions_disa-check_footer.conf.TEMPLATE
-TMPL_EXTCTHRUHDR=$TEMPLATEDIR/extensions_disa_header.conf.TEMPLATE
-TMPL_EXTCTHRU=$TEMPLATEDIR/extensions_disa.conf.TEMPLATE
-TMPL_EXTCTHRUNOPIN=$TEMPLATEDIR/extensions_disa-nopin.conf.TEMPLATE
-
-TMPL_EXTCBACKCHECKHDR=$TEMPLATEDIR/extensions_callback-check_header.conf.TEMPLATE
-TMPL_EXTCBACKCHECK=$TEMPLATEDIR/extensions_callback-check.conf.TEMPLATE
-TMPL_EXTCBACKCHECKFTR=$TEMPLATEDIR/extensions_callback-check_footer.conf.TEMPLATE
-TMPL_EXTCBACKHDR=$TEMPLATEDIR/extensions_callback_header.conf.TEMPLATE
-TMPL_EXTCBACKSIP=$TEMPLATEDIR/extensions_callback_sip.conf.TEMPLATE
-TMPL_EXTCBACKGTALK=$TEMPLATEDIR/extensions_callback_gtalk.conf.TEMPLATE
-
-TMPL_EXTENSIONS=$TEMPLATEDIR/extensions.conf.TEMPLATE
-
-TMPL_EXTVMDISABLED=$TEMPLATEDIR/extensions_voicemail_disabled.conf.TEMPLATE
-TMPL_EXTVMENABLED=$TEMPLATEDIR/extensions_voicemail_enabled.conf.TEMPLATE
-
-TMPL_EXTBLKLIST=$TEMPLATEDIR/extensions_blacklist.conf.TEMPLATE
-TMPL_EXTBLKLISTFTR=$TEMPLATEDIR/extensions_blacklist_footer.conf.TEMPLATE
-TMPL_EXTBLKLISTHDR=$TEMPLATEDIR/extensions_blacklist_header.conf.TEMPLATE
-
-TMPL_EXTDEFAULT=$TEMPLATEDIR/extensions_default.conf.TEMPLATE
-TMPL_EXTDEFAULTUSER=$TEMPLATEDIR/extensions_default_user.conf.TEMPLATE
-
-TMPL_EXTINCNTXTSIP=$TEMPLATEDIR/extensions_incoming_context_sip.conf.TEMPLATE
-TMPL_EXTINCNTXTGTALKHDR=$TEMPLATEDIR/extensions_incoming_context_gtalk_header.conf.TEMPLATE
-TMPL_EXTINCNTXTGTALK=$TEMPLATEDIR/extensions_incoming_context_gtalk.conf.TEMPLATE
-
-TMPL_EXTUSERCNTXT=$TEMPLATEDIR/extensions_user_context.conf.TEMPLATE
-TMPL_EXTUSERCNTXTFTR=$TEMPLATEDIR/extensions_user_context_footer.conf.TEMPLATE
-TMPL_EXTUSERCNTXTHDR=$TEMPLATEDIR/extensions_user_context_header.conf.TEMPLATE
-
-TMPL_EXTOUTHDR=$TEMPLATEDIR/extensions_default_outgoing_header.conf.TEMPLATE
-TMPL_EXTOUTGTALK=$TEMPLATEDIR/extensions_outgoing_gtalk.conf.TEMPLATE
-TMPL_EXTOUTLOCAL=$TEMPLATEDIR/extensions_outgoing_dial_local_user.conf.TEMPLATE
-TMPL_EXTOUTSIP=$TEMPLATEDIR/extensions_outgoing_sip.conf.TEMPLATE
-
-TMPL_JABBER=$TEMPLATEDIR/jabber.conf.TEMPLATE
-TMPL_JABBERUSER=$TEMPLATEDIR/jabber_users.conf.TEMPLATE
-TMPL_SIP=$TEMPLATEDIR/sip.conf.TEMPLATE
-TMPL_SIPPEER=$TEMPLATEDIR/sip_peer.TEMPLATE
-TMPL_SIPREG=$TEMPLATEDIR/sip_registration.TEMPLATE
-TMPL_SIPUSR=$TEMPLATEDIR/sip_user.TEMPLATE
-
-TMPL_MSMTPDEFAULT=$VMTEMPLATEDIR/pbx-msmtprc-defaults.TEMPLATE
-TMPL_MSMTPACCOUNT=$VMTEMPLATEDIR/pbx-msmtprc-account.TEMPLATE
-TMPL_MSMTPAUTH=$VMTEMPLATEDIR/pbx-msmtprc-account-auth.TEMPLATE
-TMPL_MSMTPACCTDFLT=$VMTEMPLATEDIR/pbx-msmtprc-account-default.TEMPLATE
-
-
-INCLUDED_FILES="$WORKDIR/extensions_blacklist.conf $WORKDIR/extensions_callthrough.conf\
-                $WORKDIR/extensions_incoming.conf  $WORKDIR/extensions_incoming_gtalk.conf\
-                $WORKDIR/extensions_user.conf      $WORKDIR/jabber_users.conf\
-                $WORKDIR/sip_peers.conf            $WORKDIR/sip_registrations.conf\
-                $WORKDIR/sip_users.conf            $WORKDIR/extensions_voicemail.conf\
-                $WORKDIR/extensions_default.conf"
-
-
-# In this string, we concatenate all local users enabled to receive calls
-# readily formatted for the Dial command.
-localusers_to_ring=""
-
-# In this string, we keep a list of all users that are enabled for outgoing
-# calls. It is used at the end to create the user contexts.
-localusers_can_dial=""
-
-# In this string, we put together a space-separated list of provider names
-# (alphanumeric, with all non-alpha characters replaced with underscores),
-# which will be used to dial out by default (whose outgoing contexts will
-# be included in users' contexts by default.
-outbound_providers=""
-sip_outbound_providers=""
-gtalk_outbound_providers=""
-
-# Function which escapes non-alpha-numeric characters in a string
-escape_non_alpha() {
-    echo $@ | sed 's/\([^a-zA-Z0-9]\)/\\\1/g'
-}
-
-# Function which replaces non-alpha-numeric characters with an underscore
-sub_underscore_for_non_alpha() {
-    echo $@ | sed 's/[^a-zA-Z0-9]/_/g'
-}
-
-# Copies the template files which we don't edit.
-copy_unedited_templates_over()
-{
-    cp $TMPL_ASTERISK      $WORKDIR/asterisk.conf
-    cp $TMPL_GTALK         $WORKDIR/gtalk.conf
-    cp $TMPL_INDICATIONS   $WORKDIR/indications.conf
-    cp $TMPL_LOGGER        $WORKDIR/logger.conf
-    cp $TMPL_MANAGER       $WORKDIR/manager.conf
-    cp $TMPL_MODULES       $WORKDIR/modules.conf
-    # If this file isn't present at this stage, voicemail is disabled.
-    [ ! -f $WORKDIR/extensions_voicemail.conf ] && \
-      cp $TMPL_EXTVMDISABLED $WORKDIR/extensions_voicemail.conf
-}
-
-# Touches all the included files, to prevent asterisk from refusing to
-# start if a config item is missing and an included config file isn't created.
-create_included_files()
-{
-    touch $INCLUDED_FILES
-}
-
-# Puts together all the extensions.conf related configuration.
-pbx_create_extensions_config()
-{
-    local ringtime
-    config_get ringtime advanced ringtime
-
-    sed "s/|RINGTIME|/$ringtime/" $TMPL_EXTENSIONS > $WORKDIR/extensions.conf
-    mv  $WORKDIR/inext.TMP                           $WORKDIR/extensions_incoming.conf
-    cp  $TMPL_EXTINCNTXTGTALKHDR                     $WORKDIR/extensions_incoming_gtalk.conf
-    cat $WORKDIR/outextgtalk.TMP                  >> $WORKDIR/extensions_incoming_gtalk.conf 2>/dev/null
-    rm -f $WORKDIR/outextgtalk.TMP
-    mv  $WORKDIR/blacklist.TMP                       $WORKDIR/extensions_blacklist.conf
-    mv  $WORKDIR/userext.TMP                         $WORKDIR/extensions_user.conf
-
-    cp  $TMPL_EXTCTHRUHDR                            $WORKDIR/extensions_callthrough.conf
-    cat $WORKDIR/callthrough.TMP                  >> $WORKDIR/extensions_callthrough.conf 2>/dev/null
-    rm -f $WORKDIR/callthrough.TMP
-    cat $TMPL_EXTCTHRUCHECKHDR                    >> $WORKDIR/extensions_callthrough.conf 2>/dev/null
-    cat $WORKDIR/callthroughcheck.TMP             >> $WORKDIR/extensions_callthrough.conf 2>/dev/null
-    rm -f $WORKDIR/callthroughcheck.TMP
-    cat $TMPL_EXTCTHRUCHECKFTR                    >> $WORKDIR/extensions_callthrough.conf 2>/dev/null
-
-    cp  $TMPL_EXTCBACKHDR                            $WORKDIR/extensions_callback.conf
-    cat $WORKDIR/callback.TMP                     >> $WORKDIR/extensions_callback.conf 2>/dev/null
-    rm -f $WORKDIR/callback.TMP
-    cat $TMPL_EXTCBACKCHECKHDR                    >> $WORKDIR/extensions_callback.conf 2>/dev/null
-    cat $WORKDIR/callbackcheck.TMP                >> $WORKDIR/extensions_callback.conf 2>/dev/null
-    rm -f $WORKDIR/callbackcheck.TMP
-    cat $TMPL_EXTCBACKCHECKFTR                    >> $WORKDIR/extensions_callback.conf 2>/dev/null
-
-    rm -f $WORKDIR/outext-*.TMP
-    rm -f $WORKDIR/localext.TMP
-    sed "s/|LOCALUSERS|/$localusers_to_ring/g" $TMPL_EXTDEFAULT \
-                                                   > $WORKDIR/extensions_default.conf
-    cat $WORKDIR/inextuser.TMP                    >> $WORKDIR/extensions_default.conf
-    rm -f $WORKDIR/inextuser.TMP
-}
-
-# Puts together all the sip.conf related configuration.
-pbx_create_sip_config()
-{
-    mv $WORKDIR/sip_regs.TMP    $WORKDIR/sip_registrations.conf
-    mv $WORKDIR/sip_peers.TMP   $WORKDIR/sip_peers.conf
-    mv $WORKDIR/sip_users.TMP   $WORKDIR/sip_users.conf
-}
-
-# Creates the jabber.conf related config
-pbx_create_jabber_config()
-{
-    cp  $TMPL_JABBER        $WORKDIR/jabber.conf
-    mv  $WORKDIR/jabber.TMP $WORKDIR/jabber_users.conf
-}
-
-# Gets rid of any config files from $ASTERISKDIR not found in $WORKDIR.
-clean_up_asterisk_config_dir()
-{
-    for f in $ASTERISKDIR/* ; do
-        basef="`basename $f`"
-        if [ ! -e "$WORKDIR/$basef" ] ; then
-            rm -rf "$f"
-        fi
-    done
-}
-
-# Compares md5sums of the config files in $WORKDIR to those
-# in $ASTERISKDIR, and copies only changed files over to reduce
-# wear on flash in embedded devices.
-compare_configs_and_copy_changed()
-{
-    # First, compute md5sums of the config files in $WORKDIR.
-    cd $WORKDIR/
-    md5sum * > $MD5SUMSFILE
-
-    # Now, check the files in $ASTERISKDIR against the md5sums.
-    cd $ASTERISKDIR/
-    changed_files="`md5sum -c $MD5SUMSFILE 2>/dev/null | fgrep ": FAILED" | awk -F: '{print $1}'`"
-
-    rm -f $MD5SUMSFILE
-
-    [ -z "$changed_files" ] && return
-
-    # Now copy over the changed files.
-    for f in $changed_files ; do
-        cp "$WORKDIR/$f" "$ASTERISKDIR/$f"
-    done
-}
-
-# Calls the functions that create the final config files
-# Calls the function which compares which files have changed
-# Puts the final touches on $ASTERISKDIR
-# Gets rid of $WORKDIR
-pbx_assemble_and_copy_config()
-{
-    mkdir -p $ASTERISKDIR
-
-    copy_unedited_templates_over
-    create_included_files
-    pbx_create_extensions_config
-    pbx_create_sip_config
-    pbx_create_jabber_config
-
-    touch    $WORKDIR/features.conf
-
-    # At this point, $WORKDIR should contain a complete, working config.
-    clean_up_asterisk_config_dir
-
-    compare_configs_and_copy_changed
-
-    [ ! -d $ASTERISKDIR/manager.d ] && mkdir -p $ASTERISKDIR/manager.d/
-
-    # Get rid of the working directory
-    rm -rf $WORKDIR/
-}
-
-# Creates configuration for a user and adds it to the temporary file that holds
-# all users configured so far.
-pbx_add_user()
-{
-    local fullname
-    local defaultuser
-    local rawdefaultuser
-    local secret
-    local ring
-    local can_call
-
-    config_get fullname    $1 fullname
-    fullname=`escape_non_alpha $fullname`
-    config_get rawdefaultuser $1 defaultuser
-    defaultuser=`escape_non_alpha $rawdefaultuser`
-    config_get secret      $1 secret
-    secret=`escape_non_alpha $secret`
-    config_get ring        $1 ring
-    config_get can_call    $1 can_call
-
-    [ -z "$defaultuser" -o -z "$secret" ] && return
-    [ -z "$fullname" ] && fullname="$defaultuser"
-
-    sed "s/|DEFAULTUSER|/$defaultuser/g" $TMPL_SIPUSR > $WORKDIR/sip_user.tmp
-
-    if [ "$can_call" = "yes" ] ; then
-        # Add user to list of all users that are allowed to make calls.
-        localusers_can_dial="$localusers_can_dial $rawdefaultuser"
-        sed -i "s/|CONTEXTNAME|/$defaultuser/g"     $WORKDIR/sip_user.tmp
-    else
-        sed -i "s/|CONTEXTNAME|/$HANGUPCNTXT/g"     $WORKDIR/sip_user.tmp
-    fi
-
-    # Add this user's configuration to the temp file containing all user configs.
-    sed "s/|FULLNAME|/$fullname/" $WORKDIR/sip_user.tmp |\
-             sed "s/|SECRET|/$secret/g"                       >> $WORKDIR/sip_users.TMP
-
-    if [ "$ring" = "yes" ] ; then
-        if [ -z "$localusers_to_ring" ] ; then
-            localusers_to_ring="SIP\/$defaultuser"
-        else
-            localusers_to_ring="$localusers_to_ring\&SIP\/$defaultuser"
-        fi
-    fi
-
-    # Add configuration which allows local users to call each other.
-    sed "s/|DEFAULTUSER|/$defaultuser/g" $TMPL_EXTOUTLOCAL    >> $WORKDIR/localext.TMP
-
-    # Add configuration which puts calls to users through the default
-    # context, so that blacklists and voicemail take effect for this user.
-    sed "s/|DEFAULTUSER|/$defaultuser/g" $TMPL_EXTDEFAULTUSER >> $WORKDIR/inextuser.TMP
-
-    rm -f $WORKDIR/sip_user.tmp
-}
-
-# Creates configuration for a Google account, and adds it to the temporary file that holds
-# all accounts configured so far.
-# Also creates the outgoing extensions which are used in users' outgoing contexts.
-pbx_add_jabber()
-{
-    local username
-    local secret
-    local numprefix
-    local register
-    local make_outgoing_calls
-    local name
-    local users_to_ring
-    local status
-    local statusmessage
-
-    config_get username $1 username
-    username=`escape_non_alpha $username`
-    config_get secret $1 secret
-    secret=`escape_non_alpha $secret`
-    #TODO: Is this really necessary here? Numprefix is retrieved below.
-    config_get numprefix $1 numprefix
-    config_get register $1 register
-    config_get make_outgoing_calls $1 make_outgoing_calls
-    config_get name $1 name
-    config_get status $1 status
-    status=`escape_non_alpha $status`
-    config_get statusmessage $1 statusmessage
-    statusmessage=`escape_non_alpha $statusmessage`
-
-    [ -z "$username" -o -z "$secret" ] && return
-
-    # Construct a jabber entry for this provider.
-    sed     "s/|USERNAME|/$username/g" $TMPL_JABBERUSER |\
-            sed "s/|NAME|/$name/g"                            > $WORKDIR/jabber.tmp
-
-    if [ "$register" = yes ] ; then
-        # If this provider is enabled for incoming calls, we need to set the
-        # status of the user to something other than unavailable in order to receive calls.
-        sed -i "s/|STATUS|/$status/g"                   $WORKDIR/jabber.tmp
-        sed -i "s/|STATUSMESSAGE|/\"$statusmessage\"/g" $WORKDIR/jabber.tmp
-
-        users_to_ring="`uci -q get ${MODULENAME}-calls.incoming_calls.$name`"
-        # If no users have been specified to ring, we ring all users enabled for incoming calls.
-        if [ -z "$users_to_ring" ] ; then
-            users_to_ring=$localusers_to_ring
-        else
-            # Else, we cook up a string formatted for the Dial command
-            # with the specified users (SIP/user1&SIP/user2&...). We do it
-            # with set, shift and a loop in order to be more tolerant of ugly whitespace
-            # messes entered by users.
-            set $users_to_ring
-            users_to_ring="SIP\/$1" && shift
-            for u in $@ ; do u=`escape_non_alpha $u` ; users_to_ring=$users_to_ring\\\&SIP\\\/$u ; done
-        fi
-
-        # Now, we add this account to the gtalk incoming context.
-        sed    "s/|USERNAME|/$username/g" $TMPL_EXTINCNTXTGTALK |\
-                   sed "s/|LOCALUSERS|/$users_to_ring/g"    >> $WORKDIR/outextgtalk.TMP
-    else
-        sed -i "s/|STATUS|/$GTALKUNVL/g"               $WORKDIR/jabber.tmp
-        sed -i "s/|STATUSMESSAGE|/\"\"/g"              $WORKDIR/jabber.tmp
-    fi
-
-    # Add this account's configuration to the temp file containing all account configs.
-    sed "s/|SECRET|/$secret/g" $WORKDIR/jabber.tmp      >> $WORKDIR/jabber.TMP
-
-    # If this provider is enabled for outgoing calls.
-    if [ "$make_outgoing_calls" = "yes" ] ; then
-
-        numprefix="`uci -q get ${MODULENAME}-calls.outgoing_calls.$name`"
-
-        # If no prefixes are specified, then we use "X" which matches any prefix.
-        [ -z "$numprefix" ]  && numprefix="X"
-
-        for p in $numprefix ; do
-            p=`escape_non_alpha $p`
-            sed "s/|NUMPREFIX|/$p/g" $TMPL_EXTOUTGTALK |\
-                            sed "s/|NAME|/$name/g"            >> $WORKDIR/outext-$name.TMP
-        done
-
-        # Add this provider to the list of enabled outbound providers.
-        if [ -z "$outbound_providers" ] ; then
-            outbound_providers="$name"
-        else
-            outbound_providers="$outbound_providers $name"
-        fi
-
-        # Add this provider to the list of enabled gtalk outbound providers.
-        if [ -z "$gtalk_outbound_providers" ] ; then
-            gtalk_outbound_providers="$name"
-        else
-            gtalk_outbound_providers="$gtalk_outbound_providers $name"
-        fi
-    fi
-
-    rm -f $WORKDIR/jabber.tmp
-}
-
-# Creates configuration for a SIP provider account, and adds it to the temporary file that holds
-# all accounts configured so far.
-# Also creates the outgoing extensions which are used in users' outgoing contexts.
-pbx_add_peer()
-{
-    local defaultuser
-    local secret
-    local host
-    local fromdomain
-    local register
-    local numprefix
-    local make_outgoing_calls
-    local name
-    local users_to_ring
-    local port
-    local outboundproxy
-
-    config_get defaultuser $1 defaultuser
-    defaultuser=`escape_non_alpha $defaultuser`
-    config_get secret $1 secret
-    secret=`escape_non_alpha $secret`
-    config_get host $1 host
-    host=`escape_non_alpha $host`
-    config_get port $1 port
-    config_get outbountproxy $1 outboundproxy
-    outbountproxy=`escape_non_alpha $outbountproxy`
-    config_get fromdomain $1 fromdomain
-    fromdomain=`escape_non_alpha $fromdomain`
-    config_get register $1 register
-    config_get numprefix $1 numprefix
-    config_get make_outgoing_calls $1 make_outgoing_calls
-    config_get name $1 name
-
-    [ -z "$defaultuser" -o -z "$secret" -o -z "$host" ] && return
-    [ -z "$fromdomain" ]    && fromdomain=$host
-    [ -n "$port" ]          && port="port=$port"
-    [ -n "$outboundproxy" ] && outboundproxy="outboundproxy=$outboundproxy"
-
-    # Construct a sip peer entry for this provider.
-    sed    "s/|DEFAULTUSER|/$defaultuser/" $TMPL_SIPPEER  >  $WORKDIR/sip_peer.tmp
-    sed -i "s/|NAME|/$name/"                                 $WORKDIR/sip_peer.tmp
-    sed -i "s/|FROMUSER|/$defaultuser/"                      $WORKDIR/sip_peer.tmp
-    sed -i "s/|SECRET|/$secret/"                             $WORKDIR/sip_peer.tmp
-    sed -i "s/|HOST|/$host/"                                 $WORKDIR/sip_peer.tmp
-    sed -i "s/|PORT|/$port/"                                 $WORKDIR/sip_peer.tmp
-    sed -i "s/|OUTBOUNDPROXY|/$outboundproxy/"               $WORKDIR/sip_peer.tmp
-    # Add this account's configuration to the temp file containing all account configs.
-    sed    "s/|FROMDOMAIN|/$host/" $WORKDIR/sip_peer.tmp >>  $WORKDIR/sip_peers.TMP
-
-    # If this provider is enabled for incoming calls.
-    if [ "$register" = "yes" ] ; then
-        # Then we create a registration string for this provider.
-        sed    "s/|DEFAULTUSER|/$defaultuser/g" $TMPL_SIPREG         > $WORKDIR/sip_reg.tmp
-        sed -i "s/|SECRET|/$secret/g"                                  $WORKDIR/sip_reg.tmp
-        sed    "s/|NAME|/$name/g" $WORKDIR/sip_reg.tmp              >> $WORKDIR/sip_regs.TMP
-
-        users_to_ring="`uci -q get ${MODULENAME}-calls.incoming_calls.$name`"
-        # If no users have been specified to ring, we ring all users enabled for incoming calls.
-        if [ -z "$users_to_ring" ] ; then
-            users_to_ring=$localusers_to_ring
-        else
-            # Else, we cook up a string formatted for the Dial command
-            # with the specified users (SIP/user1&SIP/user2&...). We do it
-            # with set, shift and a loop in order to be more tolerant of ugly whitespace
-            # messes entered by users.
-            set $users_to_ring
-            users_to_ring="SIP\/$1" && shift
-            for u in $@ ; do users_to_ring=$users_to_ring\\\&SIP\\\/$u ; done
-        fi
-
-        # And we create an incoming calls context for this provider.
-        sed    "s/|NAME|/$name/g"                          $TMPL_EXTINCNTXTSIP |\
-                    sed "s/|LOCALUSERS|/$users_to_ring/g"       >> $WORKDIR/inext.TMP
-    fi
-
-    # If this provider is enabled for outgoing calls.
-    if [ "$make_outgoing_calls" = "yes" ] ; then
-
-        numprefix="`uci -q get ${MODULENAME}-calls.outgoing_calls.$name`"
-        # If no prefixes are specified, then we use "X" which matches any prefix.
-        [ -z "$numprefix" ]  && numprefix="X"
-        for p in $numprefix ; do
-            p=`escape_non_alpha $p`
-            sed "s/|NUMPREFIX|/$p/g" $TMPL_EXTOUTSIP |\
-                            sed "s/|NAME|/$name/g"              >> $WORKDIR/outext-$name.TMP
-        done
-
-        # Add this provider to the list of enabled outbound providers.
-        if [ -z "$outbound_providers" ] ; then
-            outbound_providers="$name"
-        else
-            outbound_providers="$outbound_providers $name"
-        fi
-
-        # Add this provider to the list of enabled sip outbound providers.
-        if [ -z "$sip_outbound_providers" ] ; then
-            sip_outbound_providers="$name"
-        else
-            sip_outbound_providers="$sip_outbound_providers $name"
-        fi
-    fi
-
-    rm -f $WORKDIR/sip_peer.tmp
-    rm -f $WORKDIR/sip_reg.tmp
-}
-
-# For all local users enabled for outbound calls, creates a context
-# containing the extensions for Google and SIP accounts this user is
-# allowed to use.
-pbx_create_user_contexts()
-{
-    local providers
-
-    for u in $localusers_can_dial ; do
-        u=`escape_non_alpha $u`
-        sed "s/|DEFAULTUSER|/$u/g" $TMPL_EXTUSERCNTXTHDR                >> $WORKDIR/userext.TMP
-        cat $WORKDIR/localext.TMP                                       >> $WORKDIR/userext.TMP
-        providers="`uci -q get ${MODULENAME}-calls.providers_user_can_use.$u`"
-        [ -z "$providers" ] && providers="$outbound_providers"
-
-        # For each provider, cat the contents of outext-$name.TMP into the user's outgoing calls extension
-        for p in $providers ; do
-            [ -f $WORKDIR/outext-$p.TMP ] && cat $WORKDIR/outext-$p.TMP >> $WORKDIR/userext.TMP
-        done
-        cat $TMPL_EXTUSERCNTXTFTR                                       >> $WORKDIR/userext.TMP
-    done
-}
-
-# Creates the blacklist context which hangs up on blacklisted numbers.
-pbx_add_blacklist()
-{
-    local blacklist1
-    local blacklist2
-
-    config_get blacklist1 blacklisting blacklist1
-    config_get blacklist2 blacklisting blacklist2
-
-    # We create the blacklist context no matter whether the blacklist
-    # actually contains entries or not, since the PBX will send calls
-    # to the context for a check against the list anyway.
-    cp $TMPL_EXTBLKLISTHDR                                   $WORKDIR/blacklist.TMP
-    for n in $blacklist1 $blacklist2 ; do
-        n=`escape_non_alpha $n`
-        sed "s/|BLACKLISTITEM|/$n/g" $TMPL_EXTBLKLIST >> $WORKDIR/blacklist.TMP 
-    done
-    cat $TMPL_EXTBLKLISTFTR                               >> $WORKDIR/blacklist.TMP
-}
-
-# Creates the callthrough context which allows specified numbers to get
-# into the PBX and dial out as the configured user.
-pbx_add_callthrough()
-{
-    local callthrough_number_list
-    local defaultuser
-    local pin
-    local enabled
-    local F
-
-    config_get callthrough_number_list $1 callthrough_number_list
-    config_get defaultuser $1 defaultuser
-    defaultuser=`escape_non_alpha $defaultuser`
-    config_get pin $1 pin
-    pin=`escape_non_alpha $pin`
-    config_get enabled $1 enabled
-
-    [ "$enabled" = "no" ]   && return
-    [ "$defaultuser" = "" ] && return
-
-    for callthrough_number in $callthrough_number_list ; do
-        sed "s/|NUMBER|/$callthrough_number/g" $TMPL_EXTCTHRUCHECK >> $WORKDIR/callthroughcheck.TMP
-
-       if [ -n "$pin" ] ; then F=$TMPL_EXTCTHRU ; else F=$TMPL_EXTCTHRUNOPIN ; fi
-        sed "s/|NUMBER|/$callthrough_number/g" $F             |\
-                    sed "s/|DEFAULTUSER|/$defaultuser/"       |\
-                        sed "s/|PIN|/$pin/"                        >> $WORKDIR/callthrough.TMP
-    done
-}
-
-
-# Creates the callback context which allows specified numbers to get
-# a callback into the PBX and dial out as the configured user.
-pbx_add_callback()
-{
-    local callback_number_list
-    local defaultuser
-    local pin
-    local enabled
-    local callback_provider
-    local callback_hangup_delay
-    local FB
-    local FT
-
-    config_get callback_number_list $1 callback_number_list
-    config_get defaultuser $1 defaultuser
-    defaultuser=`escape_non_alpha $defaultuser`
-    config_get pin $1 pin
-    pin=`escape_non_alpha $pin`
-    config_get enabled $1 enabled
-    config_get callback_provider $1 callback_provider
-    callback_provider=`sub_underscore_for_non_alpha $callback_provider`
-    config_get callback_hangup_delay $1 callback_hangup_delay
-
-    [ "$enabled" = "no" ]   && return
-    [ "$defaultuser" = "" ] && return
-
-    # If the provider is a SIP provider, set the file to use to $TMPL_EXTCBACKSIP
-    # otherwise, set it to $TMPL_EXTCBACKGTALK
-    if echo $sip_outbound_providers | grep -q $callback_provider 2>/dev/null
-    then
-        FB=$TMPL_EXTCBACKSIP
-    else
-        FB=$TMPL_EXTCBACKGTALK
-    fi
-
-    for callback_number in $callback_number_list ; do
-        sed "s/|NUMBER|/$callback_number/g" $TMPL_EXTCBACKCHECK    >> $WORKDIR/callbackcheck.TMP
-
-        sed "s/|NUMBER|/$callback_number/g" $FB            |\
-            sed "s/|CALLBACKPROVIDER|/$callback_provider/" |\
-                sed "s/|CALLBACKHUPDELAY|/$callback_hangup_delay/" >> $WORKDIR/callback.TMP
-
-        # Perhaps a bit confusingly, we create "callthrough" configuration for callback
-        # numbers, because we use the same DISA construct as for callthrough.
-        if [ -n "$pin" ] ; then FT=$TMPL_EXTCTHRU ; else FT=$TMPL_EXTCTHRUNOPIN ; fi
-        sed "s/|NUMBER|/$callback_number/g" $FT            |\
-            sed "s/|DEFAULTUSER|/$defaultuser/"            |\
-                sed "s/|PIN|/$pin/"                                >> $WORKDIR/callthrough.TMP
-    done
-}
-
-
-# Creates sip.conf from its template.
-pbx_cook_sip_template()
-{
-    local useragent
-    local externhost
-    local bindport
-
-    config_get useragent advanced useragent
-    useragent=`escape_non_alpha $useragent`
-    config_get externhost advanced externhost
-    config_get bindport advanced bindport
-
-    [ -z "$useragent" ] && useragent="$USERAGENT"
-
-    sed "s/|USERAGENT|/$useragent/g" $TMPL_SIP  > $WORKDIR/sip.conf
-
-    if [ -z "$externhost" ] ; then
-        sed -i "s/externhost=|EXTERNHOST|//g" $WORKDIR/sip.conf
-    else
-        sed -i "s/|EXTERNHOST|/$externhost/g" $WORKDIR/sip.conf
-    fi
-
-    if [ -z "$bindport" ] ; then
-        sed -i "s/bindport=|BINDPORT|//g"     $WORKDIR/sip.conf
-    else
-        sed -i "s/|BINDPORT|/$bindport/g"     $WORKDIR/sip.conf
-    fi
-
-
-}
-
-# Creates rtp.conf from its template.
-pbx_cook_rtp_template()
-{
-    local rtpstart
-    local rtpend
-
-    config_get rtpstart advanced rtpstart
-    config_get rtpend   advanced rtpend
-
-    sed "s/|RTPSTART|/$rtpstart/" $TMPL_RTP |\
-            sed "s/|RTPEND|/$rtpend/"               > $WORKDIR/rtp.conf
-}
-
-# Links any sound files found in $PBXSOUNDSDIR and $VMSOUNDSDIR
-# into $ASTSOUNDSDIR for use by Asterisk. Does not overwrite files.
-pbx_link_sounds()
-{
-    mkdir -p $ASTSOUNDSDIR
-
-    for dir in $PBXSOUNDSDIR $VMSOUNDSDIR ; do
-        if [ -d $dir ] ; then
-            for f in $dir/* ; do
-                ln -s $f $ASTSOUNDSDIR 2>/dev/null
-            done
-        fi
-    done
-}
-
-
-# Makes sure the ownership of specified directories is proper.
-pbx_fix_ownership()
-{
-    chown $ASTUSER:$ASTGROUP    $ASTDIRS
-    chown $ASTUSER:$ASTGROUP -R $ASTDIRSRECURSIVE
-}
-
-
-# Creates voicemail config if installed and enabled.
-pbx_configure_voicemail()
-{
-    local enabled
-    local global_timeout
-    local global_email_addresses
-
-    local smtp_tls
-    local smtp_server
-    local smtp_port
-    local smtp_auth
-    local smtp_user
-    local smtp_password
-
-    config_get enabled global_voicemail enabled
-
-    # First check if voicemail is enabled.
-    [ "$enabled" != "yes" ] && return
-
-    config_get global_timeout         global_voicemail global_timeout
-    #config_get global_email_addresses global_voicemail global_email_addresses
-    config_get smtp_auth              voicemail_smtp   smtp_auth
-    config_get smtp_tls               voicemail_smtp   smtp_tls
-    config_get smtp_server            voicemail_smtp   smtp_server
-    config_get smtp_port              voicemail_smtp   smtp_port
-    config_get smtp_user              voicemail_smtp   smtp_user
-    smtp_user=`escape_non_alpha $smtp_user`
-    config_get smtp_password          voicemail_smtp   smtp_password
-    smtp_password=`escape_non_alpha $smtp_password`
-
-    sed "s/|AUTH|/$smtp_auth/"   $TMPL_MSMTPDEFAULT |\
-             sed "s/|TLS|/$smtp_tls/"               >  $WORKDIR/pbx-msmtprc
-
-    sed "s/|HOST|/$smtp_server/" $TMPL_MSMTPACCOUNT |\
-             sed "s/|PORT|/$smtp_port/"             >> $WORKDIR/pbx-msmtprc
-
-    if [ "$smtp_auth" = "on" ] ; then
-        sed "s/|USER|/$smtp_user/"  $TMPL_MSMTPAUTH |\
-             sed "s/|PASSWORD|/$smtp_password/"     >> $WORKDIR/pbx-msmtprc
-    fi
-
-    cat $TMPL_MSMTPACCTDFLT                         >> $WORKDIR/pbx-msmtprc
-
-    [ ! -f /etc/pbx-msmtprc ] && cp $WORKDIR/pbx-msmtprc /etc/pbx-msmtprc
-    cmp -s  $WORKDIR/pbx-msmtprc /etc/pbx-msmtprc 1>/dev/null \
-                                || mv $WORKDIR/pbx-msmtprc /etc/pbx-msmtprc
-    chmod 600                                              /etc/pbx-msmtprc
-    chown nobody                                           /etc/pbx-msmtprc
-
-    # Copy over the extensions file which has voicemail enabled.
-    cp $TMPL_EXTVMENABLED                $WORKDIR/extensions_voicemail.conf
-
-    # Create the voicemail directory in /tmp
-    mkdir -p     /tmp/voicemail
-    chown nobody /tmp/voicemail
-
-    # Create the recordings directory
-    mkdir -p     /etc/pbx-voicemail/recordings
-    chown nobody /etc/pbx-voicemail/recordings
-
-    # Working around a bug in OpenWRT 12.09-rc1
-    # TODO: REMOVE AS SOON AS POSSIBLE
-    chmod ugo+w /tmp
-}
-
-
-start() {
-    mkdir -p $WORKDIR
-
-    # Create the users.
-    config_load ${MODULENAME}-users
-    config_foreach pbx_add_user local_user
-
-    # Create configuration for each google account.
-    config_unset
-    config_load ${MODULENAME}-google
-    config_foreach pbx_add_jabber gtalk_jabber
-
-    # Create configuration for each voip provider.
-    config_unset
-    config_load ${MODULENAME}-voip
-    config_foreach pbx_add_peer voip_provider
-
-    # Create the user contexts, callthroug/back, and phone blacklist.
-    config_unset
-    config_load ${MODULENAME}-calls
-    pbx_create_user_contexts
-    pbx_add_blacklist
-    config_foreach pbx_add_callthrough callthrough_numbers
-    config_foreach pbx_add_callback callback_numbers
-
-    # Prepare sip.conf using settings from the "advanced" section.
-    config_unset
-    config_load ${MODULENAME}-advanced
-    pbx_cook_sip_template
-    pbx_cook_rtp_template
-
-    # Prepare voicemail config.
-    config_unset
-    config_load ${MODULENAME}-voicemail
-    pbx_configure_voicemail
-
-    # Assemble the configuration, and copy changed files over.
-    config_unset
-    config_load ${MODULENAME}-advanced
-    pbx_assemble_and_copy_config
-
-    # Link sound files
-    pbx_link_sounds
-
-    # Enforce ownership of specified files and directories.
-    pbx_fix_ownership
-}
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/asterisk.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/asterisk.conf.TEMPLATE
deleted file mode 100644 (file)
index ac54396..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-[directories]
-astetcdir => /etc/asterisk
-astmoddir => /usr/lib/asterisk/modules
-astvarlibdir => /usr/lib/asterisk
-astdbdir => /usr/lib/asterisk
-astkeydir => /usr/lib/asterisk
-astdatadir => /usr/lib/asterisk
-astagidir => /usr/lib/asterisk/agi-bin
-astspooldir => /var/spool/asterisk
-astrundir => /var/run/asterisk
-astlogdir => /var/log/asterisk
-
-[options]
-languageprefix = yes
-dumpcore = no
-runuser = nobody
-rungroup = nogroup
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/delayedcallback b/applications/luci-app-pbx/root/etc/pbx-asterisk/delayedcallback
deleted file mode 100755 (executable)
index 903efe9..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-# Check if there are more than one instance of this command
-# with the same command line running at the same time for some
-# reason, then quit. We are checking for the same
-# commandline in order to permit two different callback
-# attempts simultaneously.
-
-if ! grep -q "$@" /dev/shm/delayedcallback.[0-9]* 2>/dev/null
-then
-  echo "$@" > /dev/shm/delayedcallback.$$
-  sleep 25
-  asterisk -r -x "$1 $2 \"$3\" $4 $5 $6"
-  rm /dev/shm/delayedcallback.$$
-#  echo "`date` $@": >> /dev/shm/delayedcallback.log
-#else
-#  echo "`date` ERROR: There appears to be a callback attempt in progress to: $@" >> /dev/shm/delayedcallback.err
-fi
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions.conf.TEMPLATE
deleted file mode 100644 (file)
index c8966ed..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-[general]
-static = yes
-writeprotect = yes
-clearglobalvars = no
-
-[globals]
-RINGTIME => |RINGTIME|
-
-[default]
-
-[context-user-hangup-call-context]
-exten =>   s,1,Hangup()
-exten => _X.,1,Hangup()
-
-[context-catch-all]
-exten   => _[!-~].,1,Dial(SIP/${EXTEN},60,r)
-
-#include extensions_default.conf
-#include extensions_voicemail.conf
-#include extensions_incoming.conf
-#include extensions_incoming_gtalk.conf
-#include extensions_blacklist.conf
-#include extensions_callthrough.conf
-#include extensions_callback.conf
-#include extensions_user.conf
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist.conf.TEMPLATE
deleted file mode 100644 (file)
index 54ee989..0000000
+++ /dev/null
@@ -1 +0,0 @@
-exten => s,n,Gotoif($[ "${CALLERID(NUM)}" = "|BLACKLISTITEM|" ]?context-user-hangup,s,1)
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist_footer.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist_footer.conf.TEMPLATE
deleted file mode 100644 (file)
index da964f2..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-exten => s,n,Goto(${SOURCECONTEXT},${SOURCEEXTEN},doneblacklist)
-
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist_header.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_blacklist_header.conf.TEMPLATE
deleted file mode 100644 (file)
index de0e984..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-
-[blacklist-call-context]
-exten => s,1,Noop()
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check.conf.TEMPLATE
deleted file mode 100644 (file)
index 06b1a4b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-exten => s,n,Gotoif($[ "${CALLERID(NUM)}" =~ ".*|NUMBER|" ]?context-user-callback,|NUMBER|,1)
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check_footer.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check_footer.conf.TEMPLATE
deleted file mode 100644 (file)
index 282fe9e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-exten => s,n,Goto(${SOURCECONTEXT},${SOURCEEXTEN},donecallback)
-
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check_header.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback-check_header.conf.TEMPLATE
deleted file mode 100644 (file)
index be289c4..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-
-[callback-check-call-context]
-exten => s,1,Noop()
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_gtalk.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_gtalk.conf.TEMPLATE
deleted file mode 100644 (file)
index 43eec78..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-exten => |NUMBER|,1,System(/etc/pbx-asterisk/delayedcallback "channel originate Gtalk/gtalk-|CALLBACKPROVIDER|/|NUMBER|@voice.google.com extension |NUMBER|@disa-call-context" &)
-exten => |NUMBER|,n,Wait(|CALLBACKHUPDELAY|)
-exten => |NUMBER|,n,Hangup()
-
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_header.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_header.conf.TEMPLATE
deleted file mode 100644 (file)
index 0b8fb4c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[context-user-callback]
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_sip.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_callback_sip.conf.TEMPLATE
deleted file mode 100644 (file)
index 300e9fa..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-exten => |NUMBER|,1,System(/etc/pbx-asterisk/delayedcallback "channel originate SIP/|NUMBER|@peer-|CALLBACKPROVIDER| extension |NUMBER|@disa-call-context" &)
-exten => |NUMBER|,n,Wait(|CALLBACKHUPDELAY|)
-exten => |NUMBER|,n,Hangup()
-
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_default.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_default.conf.TEMPLATE
deleted file mode 100644 (file)
index 35836e2..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-[default-incoming-call-context]
-exten => s,1,NoOp(${CALLERID})
-exten => s,n,Set(SOURCECONTEXT=default-incoming-call-context)
-exten => s,n,Set(SOURCEEXTEN=s)
-exten => s,n,Goto(blacklist-call-context,s,1)
-exten => s,n(doneblacklist),NoOp()
-exten => s,n,Goto(callback-check-call-context,s,1)
-exten => s,n(donecallback),NoOp()
-exten => s,n,Goto(disa-check-call-context,s,1)
-exten => s,n(donedisacheck),Dial(|LOCALUSERS|,${RINGTIME},r)
-exten => s,n,Goto(context-voicemail,s,1)
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_default_user.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_default_user.conf.TEMPLATE
deleted file mode 100644 (file)
index 1910ff4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-exten => |DEFAULTUSER|,1,Goto(default-incoming-call-context,s,1)
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check.conf.TEMPLATE
deleted file mode 100644 (file)
index ba2379b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-exten => s,n,Gotoif($[ "${CALLERID(NUM)}" =~ ".*|NUMBER|" ]?disa-call-context,|NUMBER|,1)
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check_footer.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check_footer.conf.TEMPLATE
deleted file mode 100644 (file)
index 74056fa..0000000
+++ /dev/null
@@ -1 +0,0 @@
-exten => s,n,Goto(${SOURCECONTEXT},${SOURCEEXTEN},donedisacheck)
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check_header.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-check_header.conf.TEMPLATE
deleted file mode 100644 (file)
index e0d67b8..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-[disa-check-call-context]
-exten => s,1,Noop()
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-nopin.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa-nopin.conf.TEMPLATE
deleted file mode 100644 (file)
index 74e48de..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-exten => |NUMBER|,1,Noop()
-exten => |NUMBER|,n,Set(TIMEOUT(digit)=15)
-exten => |NUMBER|,n,Set(TIMEOUT(response)=40)
-exten => |NUMBER|,n,DISA(no-password,context-user-|DEFAULTUSER|)
-
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa.conf.TEMPLATE
deleted file mode 100644 (file)
index 3dd8fa3..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-exten => |NUMBER|,1,Noop()
-exten => |NUMBER|,n,Set(TIMEOUT(digit)=7)
-exten => |NUMBER|,n,Set(TIMEOUT(response)=21)
-exten => |NUMBER|,n,Authenticate(|PIN|)
-exten => |NUMBER|,n,DISA(no-password,context-user-|DEFAULTUSER|)
-
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa_header.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_disa_header.conf.TEMPLATE
deleted file mode 100644 (file)
index a742271..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[disa-call-context]
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_gtalk.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_gtalk.conf.TEMPLATE
deleted file mode 100644 (file)
index 3f9cf4c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-exten => |USERNAME|,1,NoOp(${CALLERID})
-same => n,Set(CALLERID(name)=${CUT(CALLERID(name),@,1)})
-same => n,GotoIf($["${CALLERID(name):0:2}" != "+1"]?notrim)
-same => n,Set(CALLERID(name)=${CALLERID(name):2})
-same => n(notrim),Set(CALLERID(number)=${CALLERID(name)})
-same => n,Set(SOURCECONTEXT=context-incoming-gtalk)
-same => n,Set(SOURCEEXTEN=|USERNAME|)
-same => n,Goto(blacklist-call-context,s,1)
-same => n(doneblacklist),NoOp()
-same => n,Goto(callback-check-call-context,s,1)
-same => n(donecallback),NoOp()
-same => n,Goto(disa-check-call-context,s,1)
-same => n(donedisacheck),Dial(|LOCALUSERS|,${RINGTIME},D(:w11111111))
-same => n,Goto(context-voicemail,s,1)
-
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_gtalk_header.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_gtalk_header.conf.TEMPLATE
deleted file mode 100644 (file)
index f6e44a5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-[context-incoming-gtalk]
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_sip.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_incoming_context_sip.conf.TEMPLATE
deleted file mode 100644 (file)
index b2c3716..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-[context-incoming-|NAME|]
-exten => s,1,NoOp(${CALLERID})
-exten => s,n,Set(SOURCECONTEXT=context-incoming-|NAME|)
-exten => s,n,Set(SOURCEEXTEN=s)
-exten => s,n,Goto(blacklist-call-context,s,1)
-exten => s,n(doneblacklist),NoOp()
-exten => s,n,Goto(callback-check-call-context,s,1)
-exten => s,n(donecallback),NoOp()
-exten => s,n,Goto(disa-check-call-context,s,1)
-exten => s,n(donedisacheck),Dial(|LOCALUSERS|,${RINGTIME},r)
-exten => s,n,Goto(context-voicemail,s,1)
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_dial_local_user.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_dial_local_user.conf.TEMPLATE
deleted file mode 100644 (file)
index 45e8758..0000000
+++ /dev/null
@@ -1 +0,0 @@
-exten =>     |DEFAULTUSER|,1,Dial(SIP/|DEFAULTUSER|,${RINGTIME},r)
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_gtalk.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_gtalk.conf.TEMPLATE
deleted file mode 100644 (file)
index 259c2ce..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-exten =>      _|NUMPREFIX|,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN}@voice.google.com,60)
-exten =>     _+|NUMPREFIX|,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN:1}@voice.google.com,60)
-exten =>     _|NUMPREFIX|.,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN}@voice.google.com,60)
-exten =>    _+|NUMPREFIX|.,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN:1}@voice.google.com,60)
-exten =>   _00|NUMPREFIX|.,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN:2}@voice.google.com,60)
-exten =>  _011|NUMPREFIX|.,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN:3}@voice.google.com,60)
-exten =>  _010|NUMPREFIX|.,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN:3}@voice.google.com,60)
-exten => _0011|NUMPREFIX|.,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN:4}@voice.google.com,60)
-
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_pattern_gtalk.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_pattern_gtalk.conf.TEMPLATE
deleted file mode 100644 (file)
index 1fa7713..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-exten => |PATTERN|,1,Dial(Gtalk/gtalk-|NAME|/${EXTEN|SYMBOLSTOREMOVE|}@voice.google.com,60)
-
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_pattern_sip.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_pattern_sip.conf.TEMPLATE
deleted file mode 100644 (file)
index 178b6de..0000000
+++ /dev/null
@@ -1 +0,0 @@
-exten => |PATTERN|,1,Dial(SIP/${EXTEN|SYMBOLSTOREMOVE|}@peer-|NAME|,60,r)
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_sip.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_outgoing_sip.conf.TEMPLATE
deleted file mode 100644 (file)
index 9b1d9ad..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-exten =>      _|NUMPREFIX|,1,Dial(SIP/${EXTEN}@peer-|NAME|,60,r)
-exten =>     _+|NUMPREFIX|,1,Dial(SIP/${EXTEN}@peer-|NAME|,60,r)
-exten =>     _|NUMPREFIX|.,1,Dial(SIP/${EXTEN}@peer-|NAME|,60,r)
-exten =>    _+|NUMPREFIX|.,1,Dial(SIP/${EXTEN:1}@peer-|NAME|,60,r)
-exten =>   _00|NUMPREFIX|.,1,Dial(SIP/${EXTEN:2}@peer-|NAME|,60,r)
-exten =>  _011|NUMPREFIX|.,1,Dial(SIP/${EXTEN:3}@peer-|NAME|,60,r)
-exten =>  _010|NUMPREFIX|.,1,Dial(SIP/${EXTEN:3}@peer-|NAME|,60,r)
-exten => _0011|NUMPREFIX|.,1,Dial(SIP/${EXTEN:4}@peer-|NAME|,60,r)
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_user_context_footer.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_user_context_footer.conf.TEMPLATE
deleted file mode 100644 (file)
index a2ba28c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-include => context-voicemail-record-greeting
-include => context-catch-all
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_user_context_header.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_user_context_header.conf.TEMPLATE
deleted file mode 100644 (file)
index 5931eaf..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-
-[context-user-|DEFAULTUSER|]
-
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_voicemail_disabled.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_voicemail_disabled.conf.TEMPLATE
deleted file mode 100644 (file)
index be23c29..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-[context-voicemail-record-greeting]
-
-[context-voicemail]
-exten =>     s,1,Hangup()
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_voicemail_enabled.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/extensions_voicemail_enabled.conf.TEMPLATE
deleted file mode 100644 (file)
index 4edd9cb..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-[context-voicemail-record-greeting]
-exten =>     *789,1,Wait(1)
-exten =>     *789,n,Playback(/etc/pbx-voicemail/recordings/greeting)
-exten =>     *789,n,Wait(1)
-exten =>     *789,n,Playback(beep)
-exten =>     *789,n,Playback(beep)
-exten =>     *789,n,WaitExten(30)
-
-exten =>     t,1,Playback(vm-goodbye)
-exten =>     t,n,Wait(2)
-exten =>     t,n,Hangup()
-
-exten =>     *,1,Playback(beep)
-exten =>     *,n,Playback(beep)
-exten =>     *,n,Record(/tmp/voicemail/greeting:gsm,20,120,k)
-exten =>     *,n,Wait(1)
-exten =>     *,n,Playback(/tmp/voicemail/greeting)
-
-exten =>     h,1,System(/etc/pbx-voicemail/pbx-move-greeting &)
-
-[context-voicemail]
-exten =>     s,1,Wait(2)
-exten =>     s,2,Playback(/etc/pbx-voicemail/recordings/greeting)
-exten =>     s,3,Wait(2)
-exten =>     s,n,Record(/tmp/voicemail/voicemail%d:WAV,20,180,k)
-
-exten =>     h,1,System(/etc/pbx-voicemail/pbx-send-voicemail '${RECORDED_FILE}.WAV' '${CALLERID(all)}' &)
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/gtalk.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/gtalk.conf.TEMPLATE
deleted file mode 100644 (file)
index 4f07a71..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-[general]
-context=context-incoming-gtalk
-allowguest=yes
-allowguests=yes
-bindaddr=0.0.0.0
-
-[guest]
-disallow=all
-allow=ulaw
-context=context-incoming-gtalk
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/indications.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/indications.conf.TEMPLATE
deleted file mode 100644 (file)
index d7088db..0000000
+++ /dev/null
@@ -1,733 +0,0 @@
-; indications.conf
-; Configuration file for location specific tone indications
-; used by the pbx_indications module.
-;
-; NOTE:
-;    When adding countries to this file, please keep them in alphabetical
-;    order according to the 2-character country codes!
-;
-; The [general] category is for certain global variables.
-; All other categories are interpreted as location specific indications
-;
-;
-[general]
-country=us             ; default location
-
-
-; [example]
-; description = string
-;      The full name of your country, in English.
-; alias = iso[,iso]*
-;      List of other countries 2-letter iso codes, which have the same
-;      tone indications.
-; ringcadence = num[,num]*
-;      List of durations the physical bell rings.
-; dial = tonelist
-;      Set of tones to be played when one picks up the hook.
-; busy = tonelist
-;      Set of tones played when the receiving end is busy.
-; congestion = tonelist
-;      Set of tones played when there is some congestion (on the network?)
-; callwaiting = tonelist
-;      Set of tones played when there is a call waiting in the background.
-; dialrecall = tonelist
-;      Not well defined; many phone systems play a recall dial tone after hook
-;      flash.
-; record = tonelist
-;      Set of tones played when call recording is in progress.
-; info = tonelist
-;      Set of tones played with special information messages (e.g., "number is
-;      out of service")
-; 'name' = tonelist
-;      Every other variable will be available as a shortcut for the "PlayList" command
-;      but will not be used automatically by Asterisk.
-;
-;
-; The tonelist itself is defined by a comma-separated sequence of elements.
-; Each element consist of a frequency (f) with an optional duration (in ms)
-; attached to it (f/duration). The frequency component may be a mixture of two
-; frequencies (f1+f2) or a frequency modulated by another frequency (f1*f2).
-; The implicit modulation depth is fixed at 90%, though.
-; If the list element starts with a !, that element is NOT repeated,
-; therefore, only if all elements start with !, the tonelist is time-limited,
-; all others will repeat indefinitely.
-;
-; concisely:
-;   element = [!]freq[+|*freq2][/duration]
-;   tonelist = element[,element]*
-;
-; Please note that SPACES ARE NOT ALLOWED in tone lists!
-;
-
-[at]
-description = Austria
-ringcadence = 1000,5000
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-dial = 420
-busy = 420/400,0/400
-ring = 420/1000,0/5000
-congestion = 420/200,0/200
-callwaiting = 420/40,0/1960
-dialrecall = 420
-; RECORDTONE - not specified
-record = 1400/80,0/14920
-info = 950/330,1450/330,1850/330,0/1000
-stutter = 380+420
-
-[au]
-description = Australia
-; Reference http://www.acif.org.au/__data/page/3303/S002_2001.pdf
-; Normal Ring
-ringcadence = 400,200,400,2000
-; Distinctive Ring 1 - Forwarded Calls
-; 400,400,200,200,400,1400
-; Distinctive Ring 2 - Selective Ring 2 + Operator + Recall
-; 400,400,200,2000
-; Distinctive Ring 3 - Multiple Subscriber Number 1
-; 200,200,400,2200
-; Distinctive Ring 4 - Selective Ring 1 + Centrex
-; 400,2600
-; Distinctive Ring 5 - Selective Ring 3
-; 400,400,200,400,200,1400
-; Distinctive Ring 6 - Multiple Subscriber Number 2
-; 200,400,200,200,400,1600
-; Distinctive Ring 7 - Multiple Subscriber Number 3 + Data Privacy
-; 200,400,200,400,200,1600
-; Tones
-dial = 413+438
-busy = 425/375,0/375
-ring = 413+438/400,0/200,413+438/400,0/2000
-; XXX Congestion: Should reduce by 10 db every other cadence XXX
-congestion = 425/375,0/375,420/375,0/375
-callwaiting = 425/200,0/200,425/200,0/4400
-dialrecall = 413+438
-; Record tone used for Call Intrusion/Recording or Conference
-record = !425/1000,!0/15000,425/360,0/15000
-info = 425/2500,0/500
-; Other Australian Tones
-; The STD "pips" indicate the call is not an untimed local call
-std = !525/100,!0/100,!525/100,!0/100,!525/100,!0/100,!525/100,!0/100,!525/100
-; Facility confirmation tone (eg. Call Forward Activated)
-facility = 425
-; Message Waiting "stutter" dialtone
-stutter = 413+438/100,0/40
-; Ringtone for calls to Telstra mobiles
-ringmobile = 400+450/400,0/200,400+450/400,0/2000
-
-[bg]
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-description = Bulgaria
-ringcadence = 1000,4000
-;
-dial = 425
-busy = 425/500,0/500
-ring = 425/1000,0/4000
-congestion = 425/250,0/250
-callwaiting = 425/150,0/150,425/150,0/4000
-dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
-record = 1400/425,0/15000
-info = 950/330,1400/330,1800/330,0/1000
-stutter = 425/1500,0/100
-
-[br]
-description = Brazil
-ringcadence = 1000,4000
-dial = 425
-busy = 425/250,0/250
-ring = 425/1000,0/4000
-congestion = 425/250,0/250,425/750,0/250
-callwaiting = 425/50,0/1000
-; Dialrecall not used in Brazil standard (using UK standard)
-dialrecall = 350+440
-; Record tone is not used in Brazil, use busy tone
-record = 425/250,0/250
-; Info not used in Brazil standard (using UK standard)
-info = 950/330,1400/330,1800/330
-stutter = 350+440
-
-[be]
-description = Belgium
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-ringcadence = 1000,3000
-dial = 425
-busy = 425/500,0/500
-ring = 425/1000,0/3000
-congestion = 425/167,0/167
-callwaiting = 1400/175,0/175,1400/175,0/3500
-; DIALRECALL - not specified
-dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440"
-; RECORDTONE - not specified
-record = 1400/500,0/15000
-info = 900/330,1400/330,1800/330,0/1000
-stutter = 425/1000,0/250
-
-[ch]
-description = Switzerland
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-ringcadence = 1000,4000
-dial = 425
-busy = 425/500,0/500
-ring = 425/1000,0/4000
-congestion = 425/200,0/200
-callwaiting = 425/200,0/200,425/200,0/4000
-; DIALRECALL - not specified
-dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
-; RECORDTONE - not specified
-record = 1400/80,0/15000
-info = 950/330,1400/330,1800/330,0/1000
-stutter = 425+340/1100,0/1100
-
-[cl]
-description = Chile
-; According to specs from Telefonica CTC Chile
-ringcadence = 1000,3000
-dial = 400
-busy = 400/500,0/500
-ring = 400/1000,0/3000
-congestion = 400/200,0/200
-callwaiting = 400/250,0/8750
-dialrecall = !400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400
-record = 1400/500,0/15000
-info = 950/333,1400/333,1800/333,0/1000
-stutter = !400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400
-
-[cn]
-description = China
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-ringcadence = 1000,4000
-dial = 450
-busy = 450/350,0/350
-ring = 450/1000,0/4000
-congestion = 450/700,0/700
-callwaiting = 450/400,0/4000
-dialrecall = 450
-record = 950/400,0/10000
-info = 450/100,0/100,450/100,0/100,450/100,0/100,450/400,0/400
-; STUTTER - not specified
-stutter = 450+425
-
-[cz]
-description = Czech Republic
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-ringcadence = 1000,4000
-dial = 425/330,0/330,425/660,0/660
-busy = 425/330,0/330
-ring = 425/1000,0/4000
-congestion = 425/165,0/165
-callwaiting = 425/330,0/9000
-; DIALRECALL - not specified
-dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425/330,0/330,425/660,0/660
-; RECORDTONE - not specified
-record = 1400/500,0/14000
-info = 950/330,0/30,1400/330,0/30,1800/330,0/1000
-; STUTTER - not specified
-stutter = 425/450,0/50
-
-[de]
-description = Germany
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-ringcadence = 1000,4000
-dial = 425
-busy = 425/480,0/480
-ring = 425/1000,0/4000
-congestion = 425/240,0/240
-callwaiting = !425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,!0/5000,!425/200,!0/200,!425/200,0
-; DIALRECALL - not specified
-dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
-; RECORDTONE - not specified
-record = 1400/80,0/15000
-info = 950/330,1400/330,1800/330,0/1000
-stutter = 425+400
-
-[dk]
-description = Denmark
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-ringcadence = 1000,4000
-dial = 425
-busy = 425/500,0/500
-ring = 425/1000,0/4000
-congestion = 425/200,0/200
-callwaiting = !425/200,!0/600,!425/200,!0/3000,!425/200,!0/200,!425/200,0
-; DIALRECALL - not specified
-dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
-; RECORDTONE - not specified
-record = 1400/80,0/15000
-info = 950/330,1400/330,1800/330,0/1000
-; STUTTER - not specified
-stutter = 425/450,0/50
-
-[ee]
-description = Estonia
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-ringcadence = 1000,4000
-dial = 425
-busy = 425/300,0/300
-ring = 425/1000,0/4000
-congestion = 425/200,0/200
-; CALLWAIT not in accordance to ITU
-callwaiting = 950/650,0/325,950/325,0/30,1400/1300,0/2600
-; DIALRECALL - not specified
-dialrecall = 425/650,0/25
-; RECORDTONE - not specified
-record = 1400/500,0/15000
-; INFO not in accordance to ITU
-info = 950/650,0/325,950/325,0/30,1400/1300,0/2600
-; STUTTER not specified
-stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
-
-[es]
-description = Spain
-ringcadence = 1500,3000
-dial = 425
-busy = 425/200,0/200
-ring = 425/1500,0/3000
-congestion = 425/200,0/200,425/200,0/200,425/200,0/600
-callwaiting = 425/175,0/175,425/175,0/3500
-dialrecall = !425/200,!0/200,!425/200,!0/200,!425/200,!0/200,425
-record = 1400/500,0/15000
-info = 950/330,0/1000
-dialout = 500
-
-
-[fi]
-description = Finland
-ringcadence = 1000,4000
-dial = 425
-busy = 425/300,0/300
-ring = 425/1000,0/4000
-congestion = 425/200,0/200
-callwaiting = 425/150,0/150,425/150,0/8000
-dialrecall = 425/650,0/25
-record = 1400/500,0/15000
-info = 950/650,0/325,950/325,0/30,1400/1300,0/2600
-stutter = 425/650,0/25
-
-[fr]
-description = France
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-ringcadence = 1500,3500
-; Dialtone can also be 440+330
-dial = 440
-busy = 440/500,0/500
-ring = 440/1500,0/3500
-; CONGESTION - not specified
-congestion = 440/250,0/250
-callwait = 440/300,0/10000
-; DIALRECALL - not specified
-dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
-; RECORDTONE - not specified
-record = 1400/500,0/15000
-info = !950/330,!1400/330,!1800/330
-stutter = !440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,440
-
-[gr]
-description = Greece
-ringcadence = 1000,4000
-dial = 425/200,0/300,425/700,0/800
-busy = 425/300,0/300
-ring = 425/1000,0/4000
-congestion = 425/200,0/200
-callwaiting = 425/150,0/150,425/150,0/8000
-dialrecall = 425/650,0/25
-record = 1400/400,0/15000
-info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
-stutter = 425/650,0/25
-
-[hu]
-description = Hungary
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-ringcadence = 1250,3750
-dial = 425
-busy = 425/300,0/300
-ring = 425/1250,0/3750
-congestion = 425/300,0/300
-callwaiting = 425/40,0/1960
-dialrecall = 425+450
-; RECORDTONE - not specified
-record = 1400/400,0/15000
-info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
-stutter = 350+375+400
-
-[il]
-description = Israel
-ringcadence = 1000,3000
-dial = 414
-busy = 414/500,0/500
-ring = 414/1000,0/3000
-congestion = 414/250,0/250
-callwaiting = 414/100,0/100,414/100,0/100,414/600,0/3000
-dialrecall = !414/100,!0/100,!414/100,!0/100,!414/100,!0/100,414
-record = 1400/500,0/15000
-info = 1000/330,1400/330,1800/330,0/1000
-stutter = !414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,!414/160,!0/160,414
-
-
-[in]
-description = India
-ringcadence = 400,200,400,2000
-dial = 400*25
-busy = 400/750,0/750
-ring = 400*25/400,0/200,400*25/400,0/2000
-congestion = 400/250,0/250
-callwaiting = 400/200,0/100,400/200,0/7500
-dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
-record = 1400/500,0/15000
-info = !950/330,!1400/330,!1800/330,0/1000
-stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
-
-[it]
-description = Italy
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-ringcadence = 1000,4000
-dial = 425/200,0/200,425/600,0/1000
-busy = 425/500,0/500
-ring = 425/1000,0/4000
-congestion = 425/200,0/200
-callwaiting = 425/400,0/100,425/250,0/100,425/150,0/14000
-dialrecall = 470/400,425/400
-record = 1400/400,0/15000
-info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
-stutter = 470/400,425/400
-
-[lt]
-description = Lithuania
-ringcadence = 1000,4000
-dial = 425
-busy = 425/350,0/350
-ring = 425/1000,0/4000
-congestion = 425/200,0/200
-callwaiting = 425/150,0/150,425/150,0/4000
-; DIALRECALL - not specified
-dialrecall = 425/500,0/50
-; RECORDTONE - not specified
-record = 1400/500,0/15000
-info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
-; STUTTER - not specified
-stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
-
-[jp]
-description = Japan
-ringcadence = 1000,2000
-dial = 400
-busy = 400/500,0/500
-ring = 400+15/1000,0/2000
-congestion = 400/500,0/500
-callwaiting = 400+16/500,0/8000
-dialrecall = !400/200,!0/200,!400/200,!0/200,!400/200,!0/200,400
-record = 1400/500,0/15000
-info = !950/330,!1400/330,!1800/330,0
-stutter = !400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,!400/100,!0/100,400
-
-[mx]
-description = Mexico
-ringcadence = 2000,4000
-dial = 425
-busy = 425/250,0/250
-ring = 425/1000,0/4000
-congestion = 425/250,0/250
-callwaiting = 425/200,0/600,425/200,0/10000
-dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
-record = 1400/500,0/15000
-info = 950/330,0/30,1400/330,0/30,1800/330,0/1000
-stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
-
-[my]
-description = Malaysia
-ringcadence = 2000,4000
-dial = 425
-busy = 425/500,0/500
-ring = 425/400,0/200
-congestion = 425/500,0/500
-
-[nl]
-description = Netherlands
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-ringcadence = 1000,4000
-; Most of these 425's can also be 450's
-dial = 425
-busy = 425/500,0/500
-ring = 425/1000,0/4000
-congestion = 425/250,0/250
-callwaiting = 425/500,0/9500
-; DIALRECALL - not specified
-dialrecall = 425/500,0/50
-; RECORDTONE - not specified
-record = 1400/500,0/15000
-info = 950/330,1400/330,1800/330,0/1000
-stutter = 425/500,0/50
-
-[no]
-description = Norway
-ringcadence = 1000,4000
-dial = 425
-busy = 425/500,0/500
-ring = 425/1000,0/4000
-congestion = 425/200,0/200
-callwaiting = 425/200,0/600,425/200,0/10000
-dialrecall = 470/400,425/400
-record = 1400/400,0/15000
-info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,0
-stutter = 470/400,425/400
-
-[nz]
-description = New Zealand
-;NOTE - the ITU has different tonesets for NZ, but according to some residents there,
-;      this is, indeed, the correct way to do it.
-ringcadence = 400,200,400,2000
-dial = 400
-busy = 400/250,0/250
-ring = 400+450/400,0/200,400+450/400,0/2000
-congestion = 400/375,0/375
-callwaiting = !400/200,!0/3000,!400/200,!0/3000,!400/200,!0/3000,!400/200
-dialrecall = !400/100!0/100,!400/100,!0/100,!400/100,!0/100,400
-record = 1400/425,0/15000
-info = 400/750,0/100,400/750,0/100,400/750,0/100,400/750,0/400
-stutter = !400/100!0/100,!400/100,!0/100,!400/100,!0/100,!400/100!0/100,!400/100,!0/100,!400/100,!0/100,400
-unobtainable = 400/75,0/100,400/75,0/100,400/75,0/100,400/75,0/400
-
-[ph]
-
-; reference http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-
-description = Philippines
-ringcadence = 1000,4000
-dial = 425
-busy = 480+620/500,0/500
-ring = 425+480/1000,0/4000
-congestion = 480+620/250,0/250
-callwaiting = 440/300,0/10000
-; DIALRECALL - not specified
-dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
-; RECORDTONE - not specified
-record = 1400/500,0/15000
-; INFO - not specified
-info = !950/330,!1400/330,!1800/330,0
-; STUTTER - not specified
-stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
-
-
-[pl]
-description = Poland
-ringcadence = 1000,4000
-dial = 425
-busy = 425/500,0/500
-ring = 425/1000,0/4000
-congestion = 425/500,0/500
-callwaiting = 425/150,0/150,425/150,0/4000
-; DIALRECALL - not specified
-dialrecall = 425/500,0/50
-; RECORDTONE - not specified
-record = 1400/500,0/15000
-; 950/1400/1800 3x0.33 on 1.0 off  repeated 3 times 
-info = !950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000,!950/330,!1400/330,!1800/330,!0/1000
-; STUTTER - not specified
-stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
-
-[pt]
-description = Portugal
-ringcadence = 1000,5000
-dial = 425
-busy = 425/500,0/500
-ring = 425/1000,0/5000
-congestion = 425/200,0/200
-callwaiting = 440/300,0/10000
-dialrecall = 425/1000,0/200
-record = 1400/500,0/15000
-info = 950/330,1400/330,1800/330,0/1000
-stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
-
-[ru]
-; References:
-;      http://www.minsvyaz.ru/site.shtml?id=1806
-;      http://www.aboutphone.info/lib/gost/45-223-2001.html
-description = Russian Federation / ex Soviet Union
-ringcadence = 1000,4000
-dial = 425
-busy = 425/350,0/350
-ring = 425/1000,0/4000
-congestion = 425/175,0/175
-callwaiting = 425/200,0/5000
-record = 1400/400,0/15000
-info = 950/330,1400/330,1800/330,0/1000
-dialrecall = 425/400,0/40
-stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
-
-[se]
-description = Sweden
-ringcadence = 1000,5000
-dial = 425
-busy = 425/250,0/250
-ring = 425/1000,0/5000
-congestion = 425/250,0/750
-callwaiting = 425/200,0/500,425/200,0/9100
-dialrecall = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
-record = 1400/500,0/15000
-info = !950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,!0/2024,!950/332,!0/24,!1400/332,!0/24,!1800/332,0
-stutter = !425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,!425/100,!0/100,425
-; stutter = 425/320,0/20        ; Real swedish standard, not used for now
-
-[sg]
-description = Singapore
-; Singapore
-; Reference: http://www.ida.gov.sg/idaweb/doc/download/I397/ida_ts_pstn1_i4r2.pdf 
-; Frequency specs are:   425 Hz +/- 20Hz; 24 Hz +/- 2Hz; modulation depth 100%; SIT +/- 50Hz
-ringcadence = 400,200,400,2000
-dial        = 425
-ring        = 425*24/400,0/200,425*24/400,0/2000     ; modulation should be 100%, not 90%
-busy        = 425/750,0/750
-congestion  = 425/250,0/250
-callwaiting = 425*24/300,0/200,425*24/300,0/3200
-stutter     = !425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,!425/200,!0/200,!425/600,!0/200,425
-info        = 950/330,1400/330,1800/330,0/1000       ; not currently in use acc. to reference
-dialrecall  = 425*24/500,0/500,425/500,0/2500        ; unspecified in IDA reference, use repeating Holding Tone A,B
-record      = 1400/500,0/15000                       ; unspecified in IDA reference, use 0.5s tone every 15s
-; additionally defined in reference
-nutone      = 425/2500,0/500
-intrusion   = 425/250,0/2000
-warning     = 425/624,0/4376                         ; end of period tone, warning
-acceptance  = 425/125,0/125
-holdinga    = !425*24/500,!0/500                     ; followed by holdingb
-holdingb    = !425/500,!0/2500
-
-[th]
-description = Thailand
-ringcadence = 1000,4000
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-dial = 400*50
-busy = 400/500,0/500
-ring = 420/1000,0/5000
-congestion = 400/300,0/300
-callwaiting = 1000/400,10000/400,1000/400
-; DIALRECALL - not specified - use special dial tone instead.
-dialrecall = 400*50/400,0/100,400*50/400,0/100
-; RECORDTONE - not specified
-record = 1400/500,0/15000
-; INFO - specified as an announcement - use special information tones instead
-info = 950/330,1400/330,1800/330
-; STUTTER - not specified
-stutter = !400/200,!0/200,!400/600,!0/200,!400/200,!0/200,!400/600,!0/200,!400/200,!0/200,!400/600,!0/200,!400/200,!0/200,!400/600,!0/200,400
-
-[uk]
-description = United Kingdom
-ringcadence = 400,200,400,2000
-; These are the official tones taken from BT SIN350. The actual tones
-; used by BT include some volume differences so sound slightly different
-; from Asterisk-generated ones.
-dial = 350+440
-; Special dial is the intermittent dial tone heard when, for example,
-; you have a divert active on the line
-specialdial = 350+440/750,440/750
-; Busy is also called "Engaged"
-busy = 400/375,0/375
-; "Congestion" is the Beep-bip engaged tone
-congestion = 400/400,0/350,400/225,0/525
-; "Special Congestion" is not used by BT very often if at all
-specialcongestion = 400/200,1004/300
-unobtainable = 400
-ring = 400+450/400,0/200,400+450/400,0/2000
-callwaiting = 400/100,0/4000
-; BT seem to use "Special Call Waiting" rather than just "Call Waiting" tones
-specialcallwaiting = 400/250,0/250,400/250,0/250,400/250,0/5000
-; "Pips" used by BT on payphones. (Sounds wrong, but this is what BT claim it
-; is and I've not used a payphone for years)
-creditexpired = 400/125,0/125
-; These two are used to confirm/reject service requests on exchanges that
-; don't do voice announcements.
-confirm = 1400
-switching = 400/200,0/400,400/2000,0/400
-; This is the three rising tones Doo-dah-dee "Special Information Tone",
-; usually followed by the BT woman saying an appropriate message.
-info = 950/330,0/15,1400/330,0/15,1800/330,0/1000
-; Not listed in SIN350
-record = 1400/500,0/60000
-stutter = 350+440/750,440/750
-
-[us]
-description = United States / North America
-ringcadence = 2000,4000
-dial = 350+440
-busy = 480+620/500,0/500
-ring = 440+480/2000,0/4000
-congestion = 480+620/250,0/250
-callwaiting = 440/300,0/10000
-dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
-record = 1400/500,0/15000
-info = !950/330,!1400/330,!1800/330,0
-stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
-
-[us-old]
-description = United States Circa 1950/ North America
-ringcadence = 2000,4000
-dial = 600*120
-busy = 500*100/500,0/500
-ring = 420*40/2000,0/4000
-congestion = 500*100/250,0/250
-callwaiting = 440/300,0/10000
-dialrecall = !600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,600*120
-record = 1400/500,0/15000
-info = !950/330,!1400/330,!1800/330,0
-stutter = !600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,!600*120/100,!0/100,600*120
-
-[tw]
-description = Taiwan
-; http://nemesis.lonestar.org/reference/telecom/signaling/dialtone.html
-; http://nemesis.lonestar.org/reference/telecom/signaling/busy.html
-; http://www.iproducts.com.tw/ee/kylink/06ky-1000a.htm
-; http://www.pbx-manufacturer.com/ky120dx.htm
-; http://www.nettwerked.net/tones.txt
-; http://www.cisco.com/univercd/cc/td/doc/product/tel_pswt/vco_prod/taiw_sup/taiw2.htm
-;
-; busy tone 480+620Hz 0.5 sec. on ,0.5 sec. off
-; reorder tone 480+620Hz 0.25 sec. on,0.25 sec. off
-; ringing tone 440+480Hz 1 sec. on ,2 sec. off
-;
-ringcadence = 1000,4000
-dial = 350+440
-busy = 480+620/500,0/500
-ring = 440+480/1000,0/2000
-congestion = 480+620/250,0/250
-callwaiting = 350+440/250,0/250,350+440/250,0/3250
-dialrecall = 300/1500,0/500
-record = 1400/500,0/15000
-info = !950/330,!1400/330,!1800/330,0
-stutter = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
-
-[ve]
-; Tone definition source for ve found on 
-; Reference: http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
-description = Venezuela / South America
-ringcadence = 1000,4000
-dial = 425
-busy = 425/500,0/500
-ring = 425/1000,0/4000
-congestion = 425/250,0/250
-callwaiting = 400+450/300,0/6000
-dialrecall = 425
-record = 1400/500,0/15000
-info = !950/330,!1440/330,!1800/330,0/1000
-
-
-[za]
-description = South Africa
-; http://www.cisco.com/univercd/cc/td/doc/product/tel_pswt/vco_prod/safr_sup/saf02.htm
-; (definitions for other countries can also be found there)
-; Note, though, that South Africa uses two switch types in their network --
-; Alcatel switches -- mainly in the Western Cape, and Siemens elsewhere.
-; The former use 383+417 in dial, ringback etc.  The latter use 400*33
-; I've provided both, uncomment the ones you prefer
-ringcadence = 400,200,400,2000
-; dial/ring/callwaiting for the Siemens switches:
-dial = 400*33
-ring = 400*33/400,0/200,400*33/400,0/2000
-callwaiting = 400*33/250,0/250,400*33/250,0/250,400*33/250,0/250,400*33/250,0/250
-; dial/ring/callwaiting for the Alcatel switches:
-; dial = 383+417
-; ring = 383+417/400,0/200,383+417/400,0/2000
-; callwaiting = 383+417/250,0/250,383+417/250,0/250,383+417/250,0/250,383+417/250,0/250
-congestion = 400/250,0/250
-busy = 400/500,0/500
-dialrecall = 350+440
-; XXX Not sure about the RECORDTONE
-record = 1400/500,0/10000
-info = 950/330,1400/330,1800/330,0/330
-stutter = !400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,!400*33/100,!0/100,400*33
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/jabber.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/jabber.conf.TEMPLATE
deleted file mode 100644 (file)
index cf71e1f..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-[general]
-autoregister=yes
-
-#include jabber_users.conf
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/jabber_users.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/jabber_users.conf.TEMPLATE
deleted file mode 100644 (file)
index 3ee2463..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-[gtalk-|NAME|]
-type=client
-serverhost=talk.google.com
-username=|USERNAME|/Talk
-secret=|SECRET|
-timeout=150
-status=|STATUS|
-statusmessage=|STATUSMESSAGE|
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/logger.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/logger.conf.TEMPLATE
deleted file mode 100644 (file)
index e573250..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-[general]
-queue_log = no
-event_log = no
-
-[logfiles]
-console => notice,warning,error
-messages => error
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/manager.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/manager.conf.TEMPLATE
deleted file mode 100644 (file)
index 2ac2f00..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-[general]
-enabled = no
-
-port = 5038
-bindaddr = 0.0.0.0
-
-
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/modules.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/modules.conf.TEMPLATE
deleted file mode 100644 (file)
index 93c7433..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-[modules]
-autoload=no
-load => res_jabber.so ; Used for Gtalk
-load => res_clioriginate.so ; originate calls from commandline
-load => res_rtp_asterisk.so ; rtp "engine" is now a loadable module in asterisk 1.8
-load => pbx_config.so ; Text Extension Configuration Requires N/A
-load => func_callerid.so ; Gets or sets Caller*ID data on the channel. - Requires ?
-load => func_channel.so
-load => func_logic.so ; Logic functions (if, etc.)
-load => func_strings.so ; string manipulation functions
-load => cdr_manager.so ; Asterisk Call Manager CDR Backend - Requires N/A
-load => chan_local.so ; Show status of local channels- Requires N/A
-load => chan_gtalk.so ; Use gtalk
-load => chan_sip.so ; Session Initiation Protocol (SIP) - Requires res_features.so
-load => codec_alaw.so ; A-law Coder/Decoder - Requires N/A
-load => codec_a_mu.so ; A-law and Mulaw direct Coder/Decoder - Requires N/A
-load => codec_gsm.so ; GSM/PCM16 (signed linear) Codec Translat - Requires N/A
-load => codec_ulaw.so ; Mu-law Coder/Decoder - Requires N/A
-load => format_gsm.so ; Raw GSM data - Requires N/A
-load => format_pcm.so ; Raw uLaw 8khz Audio support (PCM) - Requires N/A
-load => format_wav_gsm.so
-load => app_dial.so ; Dialing Application - Requires res_features.so, res_musiconhold.so
-load => app_parkandannounce.so ; Call Parking and Announce Application - Requires res_features.so
-load => app_playback.so ; Sound File Playback Application - Requires N/A
-load => app_record.so ; Sound File Record Application - Requires N/A
-load => app_system.so ; Execute a system command - Requires N/A
-load => app_disa.so ; Direct Inward System Access
-load => app_authenticate.so ; Authenticate via pin
-load => app_senddtmf.so ; Ability to send DTMF tones on the line.
-load => func_cut.so ; To manipulate strings
-load => func_timeout.so ; Used for DISA timeouts
-
-[global]
-chan_modem.so=no
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/rtp.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/rtp.conf.TEMPLATE
deleted file mode 100644 (file)
index 10d577d..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-[general]
-rtpstart=|RTPSTART|
-rtpend=|RTPEND|
-rtpchecksums=no
-dtmftimeout=3000
-rtcpinterval = 2000
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/sip.conf.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/sip.conf.TEMPLATE
deleted file mode 100644 (file)
index 8f3b112..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-[general]
-transport=udp
-context=default-incoming-call-context
-allowoverlap=yes
-allowtransfer=yes
-realm=asterisk
-bindaddr=0.0.0.0
-srvlookup=yes
-maxexpiry=600
-minexpiry=60
-defaultexpiry=300
-qualifyfreq=55
-disallow=all
-allow=ulaw
-allow=alaw
-dtmfmode = inband
-alwaysauthreject = yes
-t1min=100
-timert1=500
-timerb=16000
-rtptimeout=600
-rtpkeepalive=30
-useragent=|USERAGENT|
-localnet=192.168.0.0/16
-localnet=10.0.0.0/8
-localnet=172.16.0.0/12
-nat=yes
-directmedia=no
-sipdebug=no
-bindport=|BINDPORT|
-externhost=|EXTERNHOST|
-externrefresh=60
-
-#include sip_registrations.conf
-
-[authentication]
-
-#include sip_peers.conf
-#include sip_users.conf
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_peer.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_peer.TEMPLATE
deleted file mode 100644 (file)
index 30abaad..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-
-[peer-|NAME|]
-type          = peer
-defaultuser   = |DEFAULTUSER|
-fromuser      = |FROMUSER|
-secret        = |SECRET|
-host          = |HOST|
-fromdomain    = |FROMDOMAIN|
-context       = context-incoming-|NAME|
-insecure      = port,invite
-qualify       = 2000
-|PORT|
-|OUTBOUNDPROXY|
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_registration.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_registration.TEMPLATE
deleted file mode 100644 (file)
index e139d43..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-register => |DEFAULTUSER|:|SECRET|@peer-|NAME|
-
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_user.TEMPLATE b/applications/luci-app-pbx/root/etc/pbx-asterisk/sip_user.TEMPLATE
deleted file mode 100644 (file)
index 61a8b0b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-
-[|DEFAULTUSER|]
-fullname     = |FULLNAME|
-defaultuser  = |DEFAULTUSER|
-secret       = |SECRET|
-hassip       = yes
-hasvoicemail = no
-host         = dynamic
-type         = friend
-context      = context-user-|CONTEXTNAME|
-qualify      = no
\ No newline at end of file
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-alreadyon.gsm b/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-alreadyon.gsm
deleted file mode 100644 (file)
index 83fe27e..0000000
Binary files a/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-alreadyon.gsm and /dev/null differ
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-incorrect.gsm b/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-incorrect.gsm
deleted file mode 100644 (file)
index 27d934b..0000000
Binary files a/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-incorrect.gsm and /dev/null differ
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-pass.gsm b/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-pass.gsm
deleted file mode 100644 (file)
index f95637b..0000000
Binary files a/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/agent-pass.gsm and /dev/null differ
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/auth-incorrect.gsm b/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/auth-incorrect.gsm
deleted file mode 100644 (file)
index 12fec25..0000000
Binary files a/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/auth-incorrect.gsm and /dev/null differ
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/auth-thankyou.gsm b/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/auth-thankyou.gsm
deleted file mode 100644 (file)
index 93f936d..0000000
Binary files a/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/auth-thankyou.gsm and /dev/null differ
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/beep.gsm b/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/beep.gsm
deleted file mode 100644 (file)
index d38eda9..0000000
Binary files a/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/beep.gsm and /dev/null differ
diff --git a/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/vm-goodbye.gsm b/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/vm-goodbye.gsm
deleted file mode 100644 (file)
index 735b281..0000000
Binary files a/applications/luci-app-pbx/root/etc/pbx-asterisk/sounds/vm-goodbye.gsm and /dev/null differ
index f1d49688a653c8c0e8ce24c30bd0a77854966e58..c2a0be557d01aa2427ea180456038fdbf7e692a1 100644 (file)
@@ -1,22 +1,22 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: polipo\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-08-15 17:51+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2012-08-15 17:51+0300\n"
+"PO-Revision-Date: 2018-01-24 14:59+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "Advanced Settings"
-msgstr "РаÑ\81Ñ\88иÑ\80енные настройки"
+msgstr "Ð\94ополниÑ\82елÑ\8cные настройки"
 
 msgid "Allowed clients"
 msgstr "Разрешённые клиенты"
@@ -28,43 +28,41 @@ msgid ""
 "Basic HTTP authentication supported. Provide username and password in "
 "username:password format."
 msgstr ""
-"Ð\9fоддеÑ\80живаеÑ\82Ñ\81Ñ\8f Ð±Ð°Ð·Ð¾Ð²ая HTTP-аутентификация. Введите имя пользователя и "
-"пароль в формате имя:пароль."
+"Ð\9fоддеÑ\80живаеÑ\82Ñ\81Ñ\8f Ð¾Ð±Ñ\8bÑ\87ная HTTP-аутентификация. Введите имя пользователя и "
+"пароль в формате 'имя:пароль'."
 
 msgid "Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка config Ñ\84айла"
 
 msgid "DNS and Query Settings"
-msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойки DNS"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка DNS Ð¸ Ð·Ð°Ð¿Ñ\80оÑ\81ов"
 
 msgid "DNS server address"
-msgstr "Адрес DNS-сервера"
+msgstr "Адрес DNS сервера"
 
 msgid "Delete cache files time"
 msgstr "Время удаления кэш-файлов"
 
 msgid "Disk cache location"
-msgstr "Местоположение кэша"
+msgstr "Местоположение<br />кэша на диске"
 
 msgid "Do not query IPv6"
 msgstr "Не запрашивать IPv6"
 
 msgid "Enable if cache (proxy) is shared by multiple users."
-msgstr ""
-"Включите, если вы хотите, чтобы кэш (прокси) был общим для нескольких "
-"пользователей."
+msgstr "Включить, чтобы кэш (прокси) был общим для нескольких пользователей."
 
 msgid "First PMM segment size (in bytes)"
-msgstr "Размер первого PMM-сегмента (в байтах)"
+msgstr "Размер первого<br />PMM-сегмента (в байтах)"
 
 msgid "General Settings"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
 
 msgid "How much RAM should Polipo use for its cache."
-msgstr "Ð\9aолиÑ\87еÑ\81Ñ\82во RAM, Ð¾Ñ\82веденное Ð´Ð»Ñ\8f ÐºÐµша."
+msgstr "РазмеÑ\80 Ð¾Ð¿ÐµÑ\80аÑ\82ивной Ð¿Ð°Ð¼Ñ\8fÑ\82и (RAM), Ð¾Ñ\82веденной Ð´Ð»Ñ\8f ÐºÑ\8dша."
 
 msgid "In RAM cache size (in bytes)"
-msgstr "Размер кэша в RAM (в байтах)"
+msgstr "Размер кэша<br />в RAM (в байтах)"
 
 msgid "Listen address"
 msgstr "Адрес для входящих соединений"
@@ -77,15 +75,15 @@ msgid ""
 "devices is recommended, because the cache can grow considerably. Leave it "
 "empty to disable on-disk cache."
 msgstr ""
-"Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f, Ð³Ð´Ðµ Polipo Ñ\85Ñ\80аниÑ\82 ÐºÑ\8dÑ\88\84айлÑ\8b. Ð ÐµÐºÐ¾Ð¼ÐµÐ½Ð´Ñ\83еÑ\82Ñ\81Ñ\8f Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð²Ð½ÐµÑ\88нее "
-"хранилище, так как размер кэша может увеличиваться. Оставьте пустым, чтобы "
-"оÑ\82клÑ\8eÑ\87иÑ\82Ñ\8c Ñ\85Ñ\80анение ÐºÑ\8dÑ\88а на диске."
+"Ð\9fапка Ð³Ð´Ðµ Polipo Ñ\85Ñ\80аниÑ\82 ÐºÑ\8dÑ\88\84айлÑ\8b. Ð ÐµÐºÐ¾Ð¼ÐµÐ½Ð´Ñ\83еÑ\82Ñ\81Ñ\8f Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð²Ð½ÐµÑ\88ние "
+"накопители, так как кэш может значительно увеличиваться. Оставьте это поле "
+"пÑ\83Ñ\81Ñ\82Ñ\8bм, Ñ\87Ñ\82обÑ\8b Ð¾Ñ\82клÑ\8eÑ\87иÑ\82Ñ\8c ÐºÑ\8dÑ\88 на диске."
 
 msgid "Log file location"
-msgstr "Местоположение файла журнала"
+msgstr "Местоположение<br />файла журнала"
 
 msgid "Log to syslog"
-msgstr "Ð\97апиÑ\81Ñ\8bваÑ\82Ñ\8c Ñ\81ообÑ\89ениÑ\8f Ð² Ñ\81иÑ\81Ñ\82емнÑ\8bй журнал"
+msgstr "Ð\97апиÑ\81Ñ\8c Ð² журнал"
 
 msgid "Logging and RAM"
 msgstr "Журналирование и RAM"
@@ -94,10 +92,10 @@ msgid "Never use system DNS resolver"
 msgstr "Не использовать системный DNS-клиент"
 
 msgid "On-Disk Cache"
-msgstr "Ð\9aÑ\8dÑ\88иÑ\80ование Ð½Ð° Ð´Ð¸Ñ\81ке"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка ÐºÑ\8dÑ\88иÑ\80ованиÑ\8f"
 
 msgid "PMM segments size (in bytes)"
-msgstr "Размер PMM-сегментов (в байтах)"
+msgstr "Размер PMM-сегментов<br />(в байтах)"
 
 msgid "Parent Proxy"
 msgstr "Родительский прокси"
@@ -109,7 +107,7 @@ msgid ""
 "Parent proxy address (in host:port format), to which Polipo will forward the "
 "requests."
 msgstr ""
-"Адрес родительского прокси (в формате хост:порт), на который Polipo будет "
+"Адрес родительского прокси (в формате 'хост:порт'), на который Polipo будет "
 "перенаправлять запросы."
 
 msgid "Parent proxy authentication"
@@ -122,7 +120,7 @@ msgid "Polipo Status"
 msgstr "Состояние Polipo"
 
 msgid "Polipo is a small and fast caching web proxy."
-msgstr "Polipo - Ð½ÐµÐ±Ð¾Ð»Ñ\8cÑ\88ой веб-прокси, использующий кэширование."
+msgstr "Polipo - Ð¼Ð¸Ð½Ð¸Ð°Ñ\82Ñ\8eÑ\80нÑ\8bй Ð¸ Ð±Ñ\8bÑ\81Ñ\82Ñ\80Ñ\8bй веб-прокси, использующий кэширование."
 
 msgid "Poor Man's Multiplexing"
 msgstr "Poor Man's Multiplexing"
@@ -134,15 +132,15 @@ msgid ""
 "PMM enabled."
 msgstr ""
 "Poor Man's Multiplexing (PMM) - это техника, которая позволяет запрашивать "
-"данные из нескольких источников. Таким образом, время отклика по HTTP-"
-"протоколу сокращается. ПРИМЕЧАНИЕ: некоторые сайты могут не работать с "
+"данные из нескольких источников.<br />Таким образом, время отклика по HTTP-"
+"протоколу сокращается.<br />ВНИМАНИЕ: некоторые сайты могут не работать с "
 "включенным PMM."
 
 msgid "Port on which Polipo will listen"
-msgstr "Порт, на котором Polipo будет ожидать входящие соединения"
+msgstr "Порт, на котором Polipo будет ожидать входящие соединения."
 
 msgid "Proxy"
-msgstr "Ð\9fрокси"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿рокси"
 
 msgid "Query DNS by hostname"
 msgstr "Запрашивать DNS, используя имя хоста"
@@ -157,7 +155,7 @@ msgstr ""
 "хостов"
 
 msgid "Query DNS for IPv6"
-msgstr "Запрашивать DNS для IPv6"
+msgstr "Запрашивать DNS<br />для IPv6"
 
 msgid "Query IPv4 and IPv6, prefer IPv4"
 msgstr "Запрашивать IPv4 и IPv6, предпочитать IPv4"
@@ -172,8 +170,8 @@ msgid ""
 "Set the DNS server address to use, if you want Polipo to use different DNS "
 "server than the host system."
 msgstr ""
-"УÑ\81Ñ\82ановиÑ\82е Ð°Ð´Ñ\80еÑ\81 DNS-Ñ\81еÑ\80веÑ\80а Ð´Ð»Ñ\8f Polipo Ð² Ñ\81лÑ\83Ñ\87ае, ÐµÑ\81ли Ð¾Ð½ Ð¾Ñ\82лиÑ\87аеÑ\82Ñ\81Ñ\8f Ð¾Ñ\82 "
-"системного."
+"Ð\97адайÑ\82е Ð°Ð´Ñ\80еÑ\81 DNS Ñ\81еÑ\80веÑ\80а, ÐµÑ\81ли Ð²Ñ\8b Ñ\85оÑ\82иÑ\82е Ñ\87Ñ\82обÑ\8b Polipo Ð¸Ñ\81полÑ\8cзовал DNS-"
+"Ñ\81еÑ\80веÑ\80 Ð¾Ñ\82лиÑ\87нÑ\8bй Ð¾Ñ\82 Ñ\81иÑ\81Ñ\82емного."
 
 msgid "Shared cache"
 msgstr "Общий кэш"
@@ -186,7 +184,7 @@ msgstr ""
 "будет равен двум обычным."
 
 msgid "Size to which cached files should be truncated"
-msgstr "Размер, до которого будут сокращены файлы кэша"
+msgstr "Размер, до которого будут сокращены файлы кэша."
 
 msgid "Status"
 msgstr "Состояние"
@@ -198,29 +196,29 @@ msgid ""
 "The interface on which Polipo will listen. To listen on all interfaces use "
 "0.0.0.0 or :: (IPv6)."
 msgstr ""
-"Интерфейс, на котором Polipo будет ожидать входящие соединения. Чтобы "
+"Интерфейс, на котором Polipo будет ожидать входящие соединения.<br />Чтобы "
 "ожидать на всех интерфейсах, используйте 0.0.0.0 или :: (IPv6)."
 
 msgid "Time after which cached files will be deleted"
-msgstr "Ð\98нÑ\82еÑ\80вал, Ð¿Ð¾Ñ\81ле ÐºÐ¾Ñ\82оÑ\80ого Ñ\84айлÑ\8b ÐºÑ\8dÑ\88а Ð±Ñ\83дÑ\83Ñ\82 Ñ\83даленÑ\8b"
+msgstr "Ð\92Ñ\80емÑ\8f Ð¿Ð¾ Ð¸Ñ\81Ñ\82еÑ\87ении ÐºÐ¾Ñ\82оÑ\80ого, Ñ\84айлÑ\8b ÐºÑ\8dÑ\88а Ð±Ñ\83дÑ\83Ñ\82 Ñ\83даленÑ\8b."
 
 msgid "Time after which cached files will be truncated"
-msgstr "Ð\98нÑ\82еÑ\80вал, Ð¿Ð¾Ñ\81ле ÐºÐ¾Ñ\82оÑ\80ого Ñ\84айлÑ\8b ÐºÑ\8dÑ\88а Ð±Ñ\83дÑ\83Ñ\82 Ñ\81окÑ\80аÑ\89енÑ\8b"
+msgstr "Ð\92Ñ\80емÑ\8f Ð¿Ð¾ Ð¸Ñ\81Ñ\82еÑ\87ении ÐºÐ¾Ñ\82оÑ\80ого, Ñ\84айлÑ\8b ÐºÑ\8dÑ\88а Ð±Ñ\83дÑ\83Ñ\82 Ñ\81окÑ\80аÑ\89енÑ\8b."
 
 msgid "To enable PMM, PMM segment size must be set to some positive value."
 msgstr "Чтобы включить PMM, размер PMM сегмента должен быть установлен."
 
 msgid "Truncate cache files size (in bytes)"
-msgstr "Сократить размер файлов кэша (в байтах)"
+msgstr "Сократить размер<br />файлов кэша (в байтах)"
 
 msgid "Truncate cache files time"
-msgstr "Время сокращения файлов кэша"
+msgstr "Время сокращения<br />файлов кэша"
 
 msgid ""
 "Use of external storage device is recommended, because the log file is "
 "written frequently and can grow considerably."
 msgstr ""
-"РекомендÑ\83еÑ\82Ñ\81Ñ\8f Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð²Ð½ÐµÑ\88нее Ñ\85Ñ\80анилиÑ\89е, так как журнал часто "
+"РекомендÑ\83еÑ\82Ñ\81Ñ\8f Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð²Ð½ÐµÑ\88ний Ð½Ð°ÐºÐ¾Ð¿Ð¸Ñ\82елÑ\8c, так как журнал часто "
 "обновляется и может значительно увеличиваться в размере."
 
 msgid ""
@@ -229,9 +227,9 @@ msgid ""
 "(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))"
 msgstr ""
 "Если адрес для входящих соединений установлен в 0.0.0.0 или :: (IPv6), вам "
-"необÑ\85одимо Ð¿ÐµÑ\80еÑ\87иÑ\81лиÑ\82Ñ\8c ÐºÐ»Ð¸ÐµÐ½Ñ\82ов, ÐºÐ¾Ñ\82оÑ\80Ñ\8bм Ñ\80азÑ\80еÑ\88ено Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87аÑ\82Ñ\8cÑ\81Ñ\8f. Ð\92 Ñ\82аком "
-"случае формат - это IP-адрес или адрес подсети (192.168.1.123, "
-"192.168.1.0/24, 2001:660:116::/48 (IPv6))"
+"необÑ\85одимо Ð¿ÐµÑ\80еÑ\87иÑ\81лиÑ\82Ñ\8c ÐºÐ»Ð¸ÐµÐ½Ñ\82ов, ÐºÐ¾Ñ\82оÑ\80Ñ\8bм Ñ\80азÑ\80еÑ\88ено Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87аÑ\82Ñ\8cÑ\81Ñ\8f. Ð\9fеÑ\80еÑ\87иÑ\81лиÑ\82Ñ\8c "
+"в таком виде: IP-адрес или адрес подсети (192.168.1.123, 192.168.1.0/24, "
+"2001:660:116::/48 (IPv6))."
 
 msgid "enable"
-msgstr "включить"
+msgstr "Ð\92ключить"
diff --git a/applications/luci-app-privoxy/po/ru/privoxy.po b/applications/luci-app-privoxy/po/ru/privoxy.po
new file mode 100644 (file)
index 0000000..e189471
--- /dev/null
@@ -0,0 +1,513 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: privoxy\n"
+"POT-Creation-Date: 2017-12-14 16:00+0300\n"
+"PO-Revision-Date: 2018-01-18 22:37+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"
+
+msgid ""
+"A URL to be displayed in the error page that users will see if access to an "
+"untrusted page is denied."
+msgstr ""
+"URL-адрес, отображаемый на странице ошибки, который пользователи будут "
+"видеть, если доступ к ненадежной странице запрещен."
+
+msgid ""
+"A URL to documentation about the local Privoxy setup, configuration or "
+"policies."
+msgstr ""
+"URL-адрес к документации о локальной настройке, конфигурации или политиках "
+"Privoxy."
+
+msgid "A directory where Privoxy can create temporary files."
+msgstr "Папка в которой Privoxy может создавать временные файлы."
+
+msgid "Access Control"
+msgstr "Контроль доступа"
+
+msgid "Actions that are applied to all sites and maybe overruled later on."
+msgstr ""
+"Действия, которые применяются ко всем сайтам и могут быть отменены позже."
+
+msgid "An alternative directory where the templates are loaded from."
+msgstr "Альтернативная папка, из которой загружаются шаблоны."
+
+msgid "An email address to reach the Privoxy administrator."
+msgstr "Адрес электронной почты, чтобы связаться с администратором Privoxy."
+
+msgid ""
+"Assumed server-side keep-alive timeout (in seconds) if not specified by the "
+"server."
+msgstr ""
+"Взятый на стороне сервера keep-alive тайм-аут (в секундах), если не указан "
+"сервер."
+
+msgid "Boot delay"
+msgstr "Задержка загрузки"
+
+msgid "CGI user interface"
+msgstr "Пользовательский интерфейс CGI."
+
+msgid "Common Log Format"
+msgstr "Типичный формат системного журнала."
+
+msgid ""
+"Configure here the routing of HTTP requests through a chain of multiple "
+"proxies. Note that parent proxies can severely decrease your privacy level. "
+"Also specified here are SOCKS proxies."
+msgstr ""
+"Страница настройки маршрутизации HTTP-запросов через цепочку из нескольких "
+"прокси-серверов. Обратите внимание, что родительские прокси могут "
+"значительно снизить уровень конфиденциальности. Здесь же настройка SOCKS "
+"прокси."
+
+msgid "Debug GIF de-animation"
+msgstr "Отладка GIF де-анимации."
+
+msgid "Debug force feature"
+msgstr "Отладка функции назначения."
+
+msgid "Debug redirects"
+msgstr "Отладка перенаправлений."
+
+msgid "Debug regular expression filters"
+msgstr "Отладка фильтров регулярных выражений."
+
+msgid "Delay (in seconds) during system boot before Privoxy start"
+msgstr "Задержка (в секундах) во время загрузки системы до запуска Privoxy."
+
+msgid "Directory does not exist!"
+msgstr "Папка не существует!"
+
+msgid "Disabled == Transparent Proxy Mode"
+msgstr "Отключен == Прозрачный Режим Прокси-Сервера."
+
+msgid "Documentation"
+msgstr "Информация"
+
+msgid "During delay ifup-events are not monitored !"
+msgstr "Во время задержки ifup-события не отслеживаются!"
+
+msgid "Enable proxy authentication forwarding"
+msgstr "Включить проверку подлинности прокси-сервера переадресации."
+
+msgid ""
+"Enable/Disable autostart of Privoxy on system startup and interface events"
+msgstr ""
+"Включить / Выключить, автозапуск Privoxy при старте системы и событиях "
+"интерфейса."
+
+msgid "Enable/Disable filtering when Privoxy starts."
+msgstr "Включить / Выключить фильтрацию при запуске Privoxy."
+
+msgid "Enabled"
+msgstr "Включено"
+
+msgid ""
+"Enabling this option is NOT recommended if there is no parent proxy that "
+"requires authentication!"
+msgstr ""
+"Включение этой опции не рекомендуется, если отсутствует родительский прокси, "
+"который требует аутентификации!"
+
+msgid "File '%s' not found inside Configuration Directory"
+msgstr "Файл '%S' не найден в папке с config файлами"
+
+msgid "File not found or empty"
+msgstr "Файл не найден или пустой"
+
+msgid "Files and Directories"
+msgstr "Файлы и папки"
+
+msgid "For help use link at the relevant option"
+msgstr "Для помощи используйте ссылку по соответствующей опции."
+
+msgid "Forwarding"
+msgstr "Маршрутизация"
+
+msgid ""
+"If enabled, Privoxy hides the 'go there anyway' link. The user obviously "
+"should not be able to bypass any blocks."
+msgstr ""
+"Если включено, Privoxy скрывает 'идти туда в любом случае'. Пользователь не "
+"сможет обойти блокировку."
+
+msgid ""
+"If you intend to operate Privoxy for more users than just yourself, it might "
+"be a good idea to let them know how to reach you, what you block and why you "
+"do that, your policies, etc."
+msgstr ""
+"Если вы используете Privoxy, вы сможете сообщить большому количеству "
+"пользователей, как связаться с вами, что вы блокируете и почему вы это "
+"делаете, ваши политики и т.д."
+
+msgid "Invalid email address"
+msgstr "Неверный email адрес"
+
+msgid "It is NOT recommended for the casual user."
+msgstr "Нельзя использовать случайному пользователю."
+
+msgid "Location of the Privoxy User Manual."
+msgstr "Расположение руководства пользователя Privoxy."
+
+msgid "Log File Viewer"
+msgstr "Просмотр системного журнала"
+
+msgid "Log all data read from the network"
+msgstr "Записывать в системный журнал все данные, считываемые сетью."
+
+msgid "Log all data written to the network"
+msgstr "Записывать в системный журнал все данные, отправленные в сеть."
+
+msgid "Log the applying actions"
+msgstr "Записывать в системный журнал все действия."
+
+msgid ""
+"Log the destination for each request Privoxy let through. See also 'Debug "
+"1024'."
+msgstr ""
+"Записывать в системный журнал места назначения для каждого запроса, который "
+"передает Privoxy. См. также 'Debug 1024'."
+
+msgid ""
+"Log the destination for requests Privoxy didn't let through, and the reason "
+"why."
+msgstr "Записывать в системный журнал неудачные попытки Privoxy и их причины."
+
+msgid "Logging"
+msgstr "Настройка журнала"
+
+msgid "Main actions file"
+msgstr "Дефолтные действия."
+
+msgid "Mandatory Input: No Data given!"
+msgstr "Обязательный ввод: не указаны данные!"
+
+msgid "Mandatory Input: No Directory given!"
+msgstr "Обязательный ввод: не указана папка!"
+
+msgid "Mandatory Input: No File given!"
+msgstr "Обязательный ввод: не указан файл!"
+
+msgid "Mandatory Input: No Port given!"
+msgstr "Обязательный ввод: Не указан порт!"
+
+msgid "Mandatory Input: No files given!"
+msgstr "Обязательный ввод: не указаны файлы!"
+
+msgid "Mandatory Input: No valid IPv4 address or host given!"
+msgstr "Обязательный ввод: Не указан действительный IPv4 адрес или хост!"
+
+msgid "Mandatory Input: No valid IPv6 address given!"
+msgstr "Обязательный ввод: Не указан действительный IPv6 адрес!"
+
+msgid "Mandatory Input: No valid Port given!"
+msgstr "Обязательный ввод: Не указан действительный порт!"
+
+msgid "Maximum number of client connections that will be served."
+msgstr "Максимальное число обслуживаемых клиентских подключений."
+
+msgid "Maximum size (in KB) of the buffer for content filtering."
+msgstr "Максимальный размер буфера для фильтрации содержимого (в KB)."
+
+msgid "Miscellaneous"
+msgstr "Дополнительно"
+
+msgid "NOT installed"
+msgstr "Не установлена"
+
+msgid "No trailing '/', please."
+msgstr "Не используйте символ '/'."
+
+msgid "Non-fatal errors - *we highly recommended enabling this*"
+msgstr ""
+"Отсутствуют неустранимые ошибки - *мы настоятельно рекомендуем включить эту "
+"функцию*."
+
+msgid ""
+"Number of seconds after which a socket times out if no data is received."
+msgstr ""
+"Количество секунд по истечении которых, время сокета истекает, если данные "
+"не получены."
+
+msgid ""
+"Number of seconds after which an open connection will no longer be reused."
+msgstr ""
+"Количество секунд по истечении которых, соединение не будет использоваться "
+"повторно."
+
+msgid ""
+"Only when using 'external filters', Privoxy has to create temporary files."
+msgstr ""
+"Только когда используются 'сторонние фильтры', Privoxy должен создавать "
+"временные файлы."
+
+msgid "Please install current version !"
+msgstr "Установите текущую версию !"
+
+msgid "Please press [Read] button"
+msgstr "Нажмите кнопку [Читать / Перечитывать системный журнал]"
+
+msgid "Please read Privoxy manual for details!"
+msgstr "Ознакомьтесь с руководством Privoxy!"
+
+msgid "Please update to the current version!"
+msgstr "Обновите до текущей версии!"
+
+msgid "Privoxy WEB proxy"
+msgstr "Privoxy WEB proxy"
+
+msgid ""
+"Privoxy can (and normally does) use a number of other files for additional "
+"configuration, help and logging. This section of the configuration file "
+"tells Privoxy where to find those other files."
+msgstr ""
+"Страница настройки расположения вспомогательных файлов Privoxy. Privoxy - "
+"использует ряд других файлов для дополнительной настройки, оказания помощи и "
+"ведения системного журнала. "
+
+msgid ""
+"Privoxy is a non-caching web proxy with advanced filtering capabilities for "
+"enhancing privacy, modifying web page data and HTTP headers, controlling "
+"access, and removing ads and other obnoxious Internet junk."
+msgstr ""
+"Privoxy - это свободный веб-прокси с расширенными возможностями фильтрации "
+"интернет-контента для защиты конфиденциальности (приватности) пользователей "
+"сети Интернет. Изменения содержания веб-страниц, управления cookies, "
+"ограничения доступа к некоторым сайтам и удаления рекламы, баннеров, "
+"всплывающих окон, а также любого другого нежелательного контента («интернет-"
+"мусора»)."
+
+msgid "Read / Reread log file"
+msgstr "Читать / Перечитывать системный журнал"
+
+msgid "Show I/O status"
+msgstr "Показать статус ввода-вывода."
+
+msgid "Show each connection status"
+msgstr "Показать состояние каждого соединения."
+
+msgid "Show header parsing"
+msgstr "Показать анализ заголовка."
+
+msgid "Software package '%s' is not installed."
+msgstr "Программный пакет '%s' не установлен."
+
+msgid "Software package '%s' is outdated."
+msgstr "Программный пакет '%s' устарел."
+
+msgid "Start"
+msgstr "Старт"
+
+msgid "Start / Stop"
+msgstr "Старт / Стоп"
+
+msgid "Start/Stop Privoxy WEB Proxy"
+msgstr "Запуск и остановка Privoxy WEB proxy."
+
+msgid "Startup banner and warnings."
+msgstr "Баннер запуска и предупреждения."
+
+msgid "Syntax:"
+msgstr "Синтаксис:"
+
+msgid "Syntax: Client header names delimited by spaces."
+msgstr "Синтаксис: имя заголовка клиента, разделенное пробелами."
+
+msgid "Syntax: target_pattern http_parent[:port]"
+msgstr "Синтаксис: target_pattern http_parent[:port]"
+
+msgid "Syntax: target_pattern socks_proxy[:port] http_parent[:port]"
+msgstr "Синтаксис: target_pattern socks_proxy[:port] http_parent[:port]"
+
+msgid "System"
+msgstr "Система"
+
+msgid ""
+"The actions file(s) to use. Multiple actionsfile lines are permitted, and "
+"are in fact recommended!"
+msgstr ""
+"Файл (или файлы) действий для использования. Желательно использовать "
+"несколько строк 'Action Files'."
+
+msgid ""
+"The address and TCP port on which Privoxy will listen for client requests."
+msgstr "Адрес и TCP-порт Privoxy для входящих запросов клиентов."
+
+msgid ""
+"The compression level that is passed to the zlib library when compressing "
+"buffered content."
+msgstr ""
+"Уровень сжатия, который передается в библиотеку zlib при сжатии содержимого "
+"буфера."
+
+msgid ""
+"The directory where all logging takes place (i.e. where the logfile is "
+"located)."
+msgstr "Папка в которой находится системный журнал (т.е. его файл)."
+
+msgid "The directory where the other configuration files are located."
+msgstr "Папка, в которой находятся другие config файлы."
+
+msgid ""
+"The filter files contain content modification rules that use regular "
+"expressions."
+msgstr ""
+"Файлы фильтров содержат правила изменения содержимого, использующие "
+"регулярные выражения."
+
+msgid "The hostname shown on the CGI pages."
+msgstr "Имя хоста, показанное на страницах CGI."
+
+msgid "The log file to use. File name, relative to log directory."
+msgstr ""
+"Используемый файл системного журнала. Имя файла относительно папки системных "
+"журналов."
+
+msgid "The order in which client headers are sorted before forwarding them."
+msgstr "Порядок сортировки заголовков клиентов перед их пересылкой."
+
+msgid ""
+"The status code Privoxy returns for pages blocked with +handle-as-empty-"
+"document."
+msgstr ""
+"Код статуса заблокированных Privoxy страниц с пометкой +handle-as-empty-"
+"document."
+
+msgid ""
+"The trust mechanism is an experimental feature for building white-lists and "
+"should be used with care."
+msgstr ""
+"Механизм доверия, является экспериментальной функцией для построения Белых "
+"списков и должен использоваться с осторожностью."
+
+msgid ""
+"The value of this option only matters if the experimental trust mechanism "
+"has been activated."
+msgstr ""
+"Этот параметр будет задействован, только если активирован экспериментальный "
+"механизм доверия."
+
+msgid ""
+"This option is only there for debugging purposes. It will drastically reduce "
+"performance."
+msgstr ""
+"Этот режим доступен только для отладки. Он существенно снизит "
+"производительность."
+
+msgid ""
+"This option will be removed in future releases as it has been obsoleted by "
+"the more general header taggers."
+msgstr ""
+"Этот параметр будет удален в будущих выпусках, поскольку он устарел "
+"благодаря введению основных меток заголовков."
+
+msgid ""
+"This tab controls the security-relevant aspects of Privoxy's configuration."
+msgstr "Страница контролирует безопасность, важные аспекты настройки Privoxy."
+
+msgid ""
+"Through which SOCKS proxy (and optionally to which parent HTTP proxy) "
+"specific requests should be routed."
+msgstr ""
+"Через какой SOCKS прокси (как вариант, с каким из родительских http-прокси) "
+"конкретные запросы должны быть направлены."
+
+msgid "To which parent HTTP proxy specific requests should be routed."
+msgstr ""
+"На какой родительский прокси HTTP должны быть направлены определенные "
+"запросы."
+
+msgid "User customizations"
+msgstr "Пользовательские действия."
+
+msgid "Value is not a number"
+msgstr "Значение не является числом"
+
+msgid "Value not between 0 and 300"
+msgstr "Значение не между 0 и 300"
+
+msgid "Value not between 0 and 9"
+msgstr "Значение не от 0 до 9"
+
+msgid "Value not between 1 and 4096"
+msgstr "Значения не от 1 до 4096"
+
+msgid "Value not greater 0 or empty"
+msgstr "Значение не больше 0 или пустое"
+
+msgid "Value range 1 to 4096, no entry defaults to 4096"
+msgstr "Диапазон значений от 1 до 4096, значение по умолчанию 4096."
+
+msgid "Version"
+msgstr "Версия"
+
+msgid "Version Information"
+msgstr "Информация о версии"
+
+msgid "Whether intercepted requests should be treated as valid."
+msgstr "Следует ли рассматривать перехваченные запросы как действительные."
+
+msgid ""
+"Whether or not Privoxy recognizes special HTTP headers to change toggle "
+"state."
+msgstr ""
+"Распознает ли Privoxy специальные заголовки HTTP для изменения состояния "
+"переключения."
+
+msgid "Whether or not buffered content is compressed before delivery."
+msgstr "Сжатие буферизованного содержимого перед доставкой."
+
+msgid ""
+"Whether or not outgoing connections that have been kept alive should be "
+"shared between different incoming connections."
+msgstr ""
+"Должны ли исходящие соединения, сохраненные в действующих, совместно "
+"использоваться различными входящими соединениями."
+
+msgid "Whether or not pipelined requests should be served."
+msgstr "Могут или нет подаваться pipelined запросы."
+
+msgid "Whether or not proxy authentication through Privoxy should work."
+msgstr "Должена ли работать прокси-аутентификация через Privoxy."
+
+msgid "Whether or not the web-based actions file editor may be used."
+msgstr "Может ли использоваться редактор файлов веб-действий."
+
+msgid "Whether or not the web-based toggle feature may be used."
+msgstr "Может ли использоваться веб-функция переключения."
+
+msgid "Whether requests to Privoxy's CGI pages can be blocked or redirected."
+msgstr ""
+"Могут ли запросы на CGI-страницы Privoxy быть заблокированы или "
+"перенаправлены."
+
+msgid ""
+"Whether the CGI interface should stay compatible with broken HTTP clients."
+msgstr ""
+"Должен ли CGI интерфейс оставаться совместимым со сломанными http-клиентами."
+
+msgid "Whether to run only one server thread."
+msgstr "Должен ли выполняться только один серверный поток."
+
+msgid "Who can access what."
+msgstr "Кто имеет доступ."
+
+msgid "installed"
+msgstr "установлено"
+
+msgid "or higher"
+msgstr "или выше"
+
+msgid "required"
+msgstr "требовать"
index 811cbf1e0166da933a8c3c077550295e40424063..7c96a6f8b7b9b90ae3a7b36d0fb1f552e681f2b3 100644 (file)
@@ -1,37 +1,37 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: qos\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-25 22:10+0100\n"
-"PO-Revision-Date: 2012-08-15 12:02+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2012-08-15 12:02+0300\n"
+"PO-Revision-Date: 2018-01-18 22:40+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "Calculate overhead"
-msgstr "Ð\9fодÑ\81Ñ\87иÑ\82Ñ\8bваÑ\82Ñ\8c Ð½Ð°ÐºÐ»Ð°Ð´Ð½Ñ\8bе Ñ\80аÑ\81Ñ\85одÑ\8b"
+msgstr "Ð\9fодÑ\81Ñ\87иÑ\82Ñ\8bваÑ\82Ñ\8c Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ðµ<br />пÑ\80евÑ\8bÑ\88ение Ñ\82Ñ\80аÑ\84ика"
 
 msgid "Classification Rules"
 msgstr "Правила классификации"
 
 msgid "Classification group"
-msgstr "Классификация"
+msgstr "Классификация групп"
 
 msgid "Comment"
-msgstr ""
+msgstr "Комментарий"
 
 msgid "Destination host"
 msgstr "Хост назначения"
 
 msgid "Download speed (kbit/s)"
-msgstr "СкоÑ\80оÑ\81Ñ\82Ñ\8c Ð·Ð°Ð³Ñ\80Ñ\83зки (кбит/с)"
+msgstr "СкоÑ\80оÑ\81Ñ\82Ñ\8c Ð¿Ð¾Ð»Ñ\83Ñ\87ениÑ\8f<br />даннÑ\8bÑ\85 (кбит/с)"
 
 msgid "Enable"
 msgstr "Включить"
@@ -61,17 +61,18 @@ msgid "Source host"
 msgstr "Хост источника"
 
 msgid "Target"
-msgstr "ЦелÑ\8c"
+msgstr "Ð\9dазнаÑ\87ение"
 
 msgid "Upload speed (kbit/s)"
-msgstr "Скорость отдачи (кбит/с)"
+msgstr "Cкорость передачи<br />данных (кбит/с)"
 
 msgid ""
 "With <abbr title=\"Quality of Service\">QoS</abbr> you can prioritize "
 "network traffic selected by addresses, ports or services."
 msgstr ""
-"Используя <abbr title=\"Quality of Service\">QoS</abbr>, вы можете "
-"приоритезаровать сетевой трафик по адресам, портам и сервисам."
+"Используя <abbr title=\"Качество обслуживания\">QoS</abbr>, вы можете  "
+"уделять первостепенное внимание сетевому трафику по адресам, портам и "
+"сервисам."
 
 msgid "all"
 msgstr "все"
@@ -86,19 +87,7 @@ msgid "low"
 msgstr "низкий"
 
 msgid "normal"
-msgstr "обÑ\8bÑ\87нÑ\8bй"
+msgstr "ноÑ\80малÑ\8cно"
 
 msgid "priority"
 msgstr "приоритетный"
-
-#~ msgid "Service"
-#~ msgstr "Служба"
-
-#~ msgid "Downlink"
-#~ msgstr "Нисходящий канал"
-
-#~ msgid "Internet Connection"
-#~ msgstr "Интернет-соединение"
-
-#~ msgid "Uplink"
-#~ msgstr "Восходящий канал"
index 45fe60cc80f182a480816d1a9d1ccbffd4093906..2b526a31d7e93d2725b76ef2b23b35b2baf8f4c4 100644 (file)
@@ -2,12 +2,23 @@
        <div class="errorbox"><%=pcdata(msg)%></div>
 <%- end end -%>
 
-<%-+cbi/apply_xhr-%>
-
 <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 firstmap and applymap then cbi_apply_xhr(self.config, parsechain, redirect) end -%>
+       <%- if firstmap and (applymap or confirmmap) then -%>
+               <%+cbi/apply_widget%>
+               <% cbi_apply_widget() %>
+               <div class="alert-message" id="cbi_apply_status" style="display:none"></div>
+               <script type="text/javascript">
+                       document.addEventListener("DOMContentLoaded", function() {
+                               <% if confirmmap then -%>
+                                       uci_confirm(true, Date.now() + <%=confirmmap%> * 1000);
+                               <%- else -%>
+                                       uci_apply(true);
+                               <%- end %>
+                       });
+               </script>
+       <%- end -%>
 
        <% if self.tabbed then %>
                <ul class="cbi-tabmenu map">
diff --git a/applications/luci-app-radicale/po/ru/radicale.po b/applications/luci-app-radicale/po/ru/radicale.po
new file mode 100644 (file)
index 0000000..2eaebba
--- /dev/null
@@ -0,0 +1,451 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: radicale\n"
+"POT-Creation-Date: 2018-01-08 23:00+0300\n"
+"PO-Revision-Date: 2018-01-24 14:59+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"
+
+msgid ""
+"'AUTO' selects the highest protocol version that client and server support."
+msgstr ""
+"'АВТО' выбирает самую высокую версию протокола, которую поддерживают клиент "
+"и сервер."
+
+msgid ""
+"'Hostname:Port' or 'IPv4:Port' or '[IPv6]:Port' Radicale should listen on"
+msgstr ""
+"Задайте 'Имя_хоста:порт' или 'IPv4-адрес:порт' или 'IPv6-адрес:порт' - адрес "
+"и порт для входящих соединений сервера Radicale."
+
+msgid "AUTO"
+msgstr "АВТО"
+
+msgid "Access-Control-Allow-Headers"
+msgstr "Доступ-Контроль<br />-Разрешить-Заголовки"
+
+msgid "Access-Control-Allow-Methods"
+msgstr "Доступ-Контроль<br />-Разрешить-Методы"
+
+msgid "Access-Control-Allow-Origin"
+msgstr "Доступ-Контроль<br />-Разрешить-Источник"
+
+msgid "Access-Control-Expose-Headers"
+msgstr "Доступ-Контроль<br />-Подвергать-Заголовки"
+
+msgid "Additional HTTP headers"
+msgstr "Дополнительные заголовки HTTP"
+
+msgid "Address:Port"
+msgstr "Адрес:Порт"
+
+msgid "Authentication"
+msgstr "Аутентификация"
+
+msgid ""
+"Authentication login is matched against the 'user' key, and collection's "
+"path is matched against the 'collection' key."
+msgstr ""
+"Имя входа для проверки подлинности сопоставляется с ключом 'пользователь', и "
+"пути коллекции сопоставляется с ключом 'коллекция'."
+
+msgid "Authentication method"
+msgstr "Метод аутентификации"
+
+msgid "Authentication method to allow access to Radicale server."
+msgstr "Методы аутентификации для разрешения доступа к серверу Radicale."
+
+msgid "Auto-start"
+msgstr "Авто-старт"
+
+msgid "Boot delay"
+msgstr "Задержка загрузки"
+
+msgid "CalDAV/CardDAV"
+msgstr "CalDAV/CardDAV"
+
+msgid ""
+"Calendars and address books are available for both local and remote access, "
+"possibly limited through authentication policies."
+msgstr ""
+"Календари и адресные книги доступны как для локального, так и для удаленного "
+"доступа, возможно ограниченного с помощью политик проверки подлинности."
+
+msgid "Certificate file"
+msgstr "Файл сертификата"
+
+msgid ""
+"Change here the encoding Radicale will use instead of 'UTF-8' for responses "
+"to the client and/or to store data inside collections."
+msgstr ""
+"Выбранный здесь стандарт кодирования текстов, будет использоваться вместо "
+"'UTF-8' для ответов клиенту и/или для хранения данных внутри коллекций."
+
+msgid "Ciphers"
+msgstr "Алгоритмы шифрования"
+
+msgid "Console Log level"
+msgstr "Запись событий консоли"
+
+msgid "Control the access to data collections."
+msgstr "Управляйте доступом к сбору данных коллекций."
+
+msgid "Critical"
+msgstr "Критическая ситуация"
+
+msgid ""
+"Cross-origin resource sharing (CORS) is a mechanism that allows restricted "
+"resources (e.g. fonts, JavaScript, etc.) on a web page to be requested from "
+"another domain outside the domain from which the resource originated."
+msgstr ""
+"Cross-Origin Resource Sharing (CORS) - это механизм совместного "
+"использования ресурсов между разными источниками, позволяющий использовать "
+"ограниченные ресурсы (например, шрифты, JavaScript и т.д.) на веб-странице, "
+"запрашиваемой из другого домена, за пределами домена, из которого был создан "
+"ресурс."
+
+msgid "Custom"
+msgstr "Пользовательский"
+
+msgid "Database"
+msgstr "База данных"
+
+msgid "Debug"
+msgstr "Отладка"
+
+msgid "Delay (in seconds) during system boot before Radicale start"
+msgstr ""
+"Задержка (в секундах) во время загрузки системы перед стартом Radicale."
+
+msgid "Directory"
+msgstr "Папка"
+
+msgid "Directory not exists/found !"
+msgstr "Папка не существует / не найдена !"
+
+msgid "Directory required !"
+msgstr "Папка требуется !"
+
+msgid "Directory where the rotating log-files are stored"
+msgstr "Папка в которой хранятся перезаписываемые файлы системного журнала."
+
+msgid "During delay ifup-events are not monitored !"
+msgstr "Во время задержки ifup-события не отслеживаются!"
+
+msgid "Enable HTTPS"
+msgstr "Включить HTTPS"
+
+msgid ""
+"Enable/Disable auto-start of Radicale on system start-up and interface events"
+msgstr ""
+"Автоматический запуск Radicale сервера при загрузке прошивки устройства."
+
+msgid "Encoding"
+msgstr "Кодировка"
+
+msgid "Encoding for responding requests."
+msgstr "Кодировка для ответов на запросы."
+
+msgid "Encoding for storing local collections."
+msgstr "Кодировка для хранения локальных данных коллекций."
+
+msgid "Encryption method"
+msgstr "Метод шифрования"
+
+msgid "Error"
+msgstr "Ошибка"
+
+msgid "File '%s' not found !"
+msgstr "Файл '%s' не найден !"
+
+msgid "File Log level"
+msgstr "Записи о файлах"
+
+msgid "File not found !"
+msgstr "Файл не найден !"
+
+msgid "File-system"
+msgstr "Файловая система"
+
+msgid ""
+"For example, for the 'user' key, '.+' means 'authenticated user' and '.*' "
+"means 'anybody' (including anonymous users)."
+msgstr ""
+"Например для ключа 'пользователь', '+' означает 'аутентифицированный "
+"пользователь' и '.*' означает 'кто угодно' (включая анонимных пользователей)."
+
+msgid "Full access for Owner only"
+msgstr "Полный доступ только для владельца"
+
+msgid "Full access for authenticated Users"
+msgstr "Полный доступ для авторизованных пользователей"
+
+msgid "Full access for everybody (including anonymous)"
+msgstr "Полный доступ для всех (включая анонимных)"
+
+msgid "Full path and file name of certificate"
+msgstr "Полный путь и имя файла сертификата"
+
+msgid "Full path and file name of private key"
+msgstr "Полный путь и имя файла Приватного ключа"
+
+msgid "Info"
+msgstr "Информация"
+
+msgid "Keep in mind to use the correct hashing algorithm !"
+msgstr "Используйте только правильный алгоритм хэширования!"
+
+msgid "Leading or ending slashes are trimmed from collection's path."
+msgstr "Начальные или конечные '/' - удаляются при указании пути."
+
+msgid "Log-backup Count"
+msgstr "Количество резервных<br />копий журнала"
+
+msgid "Log-file Viewer"
+msgstr "Показ файла системного журнала"
+
+msgid "Log-file directory"
+msgstr "Папка файла журналов"
+
+msgid "Log-file size"
+msgstr "Размер файла журнала"
+
+msgid "Logging"
+msgstr "Настройка журнала"
+
+msgid "Logon message"
+msgstr "Сообщение входа в систему"
+
+msgid "Maximum size of each rotation log-file."
+msgstr "Максимальный размер каждой перезаписи файла журнала."
+
+msgid "Message displayed in the client when a password is needed."
+msgstr "Отображаемое сообщение клиенту, когда требуется пароль."
+
+msgid "NOT installed"
+msgstr "Не установлена"
+
+msgid "None"
+msgstr "Ничего"
+
+msgid "Number of backup files of log to create."
+msgstr "Количество резервных копий журнала."
+
+msgid "OPTIONAL: See python's ssl module for available ciphers"
+msgstr ""
+"Необязательно: используйте SSL python модуль для применения доступных "
+"алгоритмов шифрования."
+
+msgid "One or more missing/invalid fields on tab"
+msgstr "Одно или несколько отсутствующих/недопустимых полей на странице."
+
+msgid "Owner allow write, authenticated users allow read"
+msgstr ""
+"Владелец разрешает запись, прошедшие проверку пользователи разрешают чтение"
+
+msgid "Path/File required !"
+msgstr "Путь/файл требуется!"
+
+msgid ""
+"Place here the 'user:password' pairs for your users which should have access "
+"to Radicale."
+msgstr ""
+"Разместите здесь пары 'логин:пароль' для ваших пользователей, которые должны "
+"иметь доступ к Radicale."
+
+msgid "Please install current version !"
+msgstr "Установите текущую версию !"
+
+msgid "Please press [Reload] button below to reread the file."
+msgstr "Нажмите кнопку [Перезагрузить], чтобы перечитать файл."
+
+msgid "Please update to current version !"
+msgstr "Обновите текущую версию!"
+
+msgid "Port numbers below 1024 (Privileged ports) are not supported"
+msgstr "Номера портов менее 1024 (привилегированные порты) не поддерживаются."
+
+msgid "Private key file"
+msgstr "Файл Приватного ключа"
+
+msgid "Radicale CalDAV/CardDAV Server"
+msgstr "Radicale CalDAV/CardDAV сервер"
+
+msgid "Radicale uses '/etc/radicale/rights' as regexp-based file."
+msgstr ""
+"Radicale использует '/etc/radicale/rights' в качестве файла на основе "
+"регулярного выражения (RegExp)."
+
+msgid "Radicale uses '/etc/radicale/users' as htpasswd file."
+msgstr "Radicale использует '/etc/radicale/users' как htpasswd файл."
+
+msgid "Read only!"
+msgstr "Только для чтения!"
+
+msgid "RegExp file"
+msgstr "Файл регулярного выражения (RegExp)"
+
+msgid "Reload"
+msgstr "Перезагрузить"
+
+msgid "Response Encoding"
+msgstr "Кодировка ответов"
+
+msgid "Rights"
+msgstr "Права"
+
+msgid "Rights are based on a regexp-based file"
+msgstr "Права основаны на файле, основанном на регулярных выражениях"
+
+msgid "Rights backend"
+msgstr "Права доступа"
+
+msgid "SHA-1"
+msgstr "SHA-1"
+
+msgid "SSL Protocol"
+msgstr "SSL протокол"
+
+msgid "Save"
+msgstr "Сохранить"
+
+msgid "Section names are only used for naming the rule."
+msgstr "Имена строк используются только для переименования правила."
+
+msgid "Server"
+msgstr "Сервер"
+
+msgid "Setting this parameter to '0' will disable rotation of log-file."
+msgstr ""
+"Установка этого параметра в значение '0' приведет к отключению перезаписи "
+"файла журнала."
+
+msgid "Software package '%s' is not installed."
+msgstr "Программный пакет '%s' не установлен."
+
+msgid "Software package '%s' is outdated."
+msgstr "Программный пакет '%s' устарел."
+
+msgid "Software update required"
+msgstr "Требуется обновление программного обеспечения."
+
+msgid "Start"
+msgstr "Старт"
+
+msgid "Start / Stop"
+msgstr "Старт / Стоп"
+
+msgid "Start/Stop Radicale server"
+msgstr "Запуск и остановка сервера Radicale."
+
+msgid "Storage"
+msgstr "Хранилище"
+
+msgid "Storage Encoding"
+msgstr "Кодировка хранилища"
+
+msgid "Storage backend"
+msgstr "Сервер хранения"
+
+msgid "Syslog Log level"
+msgstr "Запись системных событий в журнал"
+
+msgid "System"
+msgstr "Система"
+
+msgid ""
+"The Radicale Project is a complete CalDAV (calendar) and CardDAV (contact) "
+"server solution."
+msgstr ""
+"Radicale - это сервер, объединяющий в себе CalDAV (календарь) и CardDAV "
+"(контакты)."
+
+msgid ""
+"They can be viewed and edited by calendar and contact clients on mobile "
+"phones or computers."
+msgstr ""
+"Их можно просматривать и редактировать по календарю и связываться с "
+"клиентами на мобильных телефонах или компьютерах."
+
+msgid "To edit the file follow this link!"
+msgstr "Чтобы отредактировать файл, следуйте по этой ссылке!"
+
+msgid "To view latest log file follow this link!"
+msgstr "Для просмотра последних записей в журнале, следуйте по этой ссылке!"
+
+msgid "Value is not a number"
+msgstr "Значение не является числом"
+
+msgid "Value is not an Integer >= 0 !"
+msgstr "Значение не является целым числом > = 0!"
+
+msgid "Value not between 0 and 300"
+msgstr "Значение не между 0 и 300"
+
+msgid "Value required ! Integer >= 0 !"
+msgstr "Требуемое значение ! Целое число >= 0 !"
+
+msgid "Version"
+msgstr "Версия"
+
+msgid "Version Information"
+msgstr "Информация о версии"
+
+msgid ""
+"WARNING: Only 'File-system' is documented and tested by Radicale development"
+msgstr ""
+"ВНИМАНИЕ: только 'Файловая система' документирована и протестирована "
+"сообществом Radicale."
+
+msgid "Warning"
+msgstr "Внимание"
+
+msgid ""
+"You can also get groups from the user regex in the collection with {0}, {1}, "
+"etc."
+msgstr ""
+"Можно также получить группы из пользовательского regex вместе с {0}, {1} и т."
+"д."
+
+msgid ""
+"You can use Python's ConfigParser interpolation values %(login)s and "
+"%(path)s."
+msgstr ""
+"Вы можете использовать ConfigParser интерполяции Python значений %(логин)ы и "
+"%(путь)и."
+
+msgid "crypt"
+msgstr "crypt"
+
+msgid "custom"
+msgstr "пользовательский"
+
+msgid "htpasswd file"
+msgstr "htpasswd файл"
+
+msgid "installed"
+msgstr "установлено"
+
+msgid "no valid path given!"
+msgstr "не указан допустимый путь!"
+
+msgid "or higher"
+msgstr "или выше"
+
+msgid "plain"
+msgstr "простой"
+
+msgid "required"
+msgstr "требовать"
+
+msgid "salted SHA-1"
+msgstr "salted SHA-1"
diff --git a/applications/luci-app-radvd/Makefile b/applications/luci-app-radvd/Makefile
deleted file mode 100644 (file)
index 2142056..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# Copyright (C) 2008-2016 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 Radvd
-LUCI_DEPENDS:=+radvd @BROKEN
-
-include ../../luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-radvd/luasrc/controller/radvd.lua b/applications/luci-app-radvd/luasrc/controller/radvd.lua
deleted file mode 100644 (file)
index 9c08f4c..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
--- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
--- Licensed to the public under the Apache License 2.0.
-
-module("luci.controller.radvd", package.seeall)
-
-function index()
-       if not nixio.fs.access("/etc/config/radvd") then
-               return
-       end
-
-       entry({"admin", "network", "radvd"}, cbi("radvd"), _("Radvd"), 61)
-       entry({"admin", "network", "radvd", "interface"}, cbi("radvd/interface"), nil).leaf = true
-       entry({"admin", "network", "radvd", "prefix"}, cbi("radvd/prefix"), nil).leaf = true
-       entry({"admin", "network", "radvd", "route"}, cbi("radvd/route"), nil).leaf = true
-       entry({"admin", "network", "radvd", "rdnss"}, cbi("radvd/rdnss"), nil).leaf = true
-       entry({"admin", "network", "radvd", "dnssl"}, cbi("radvd/dnssl"), nil).leaf = true
-end
diff --git a/applications/luci-app-radvd/luasrc/model/cbi/radvd.lua b/applications/luci-app-radvd/luasrc/model/cbi/radvd.lua
deleted file mode 100644 (file)
index 755dcb4..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
--- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("radvd", translate("Radvd"),
-       translate("Radvd is a router advertisement daemon for IPv6. " ..
-               "It listens to router solicitations and sends router advertisements " ..
-               "as described in RFC 4861."))
-
-local nm = require "luci.model.network".init(m.uci)
-local ut = require "luci.util"
-
-
---
--- Interfaces
---
-
-s = m:section(TypedSection, "interface", translate("Interfaces"))
-s.template = "cbi/tblsection"
-s.extedit  = luci.dispatcher.build_url("admin/network/radvd/interface/%s")
-s.anonymous = true
-s.addremove = true
-
-function s.create(...)
-       local id = TypedSection.create(...)
-       luci.http.redirect(s.extedit % id)
-end
-
-function s.remove(self, section)
-       if m.uci:get("radvd", section) == "interface" then
-               local iface = m.uci:get("radvd", section, "interface")
-               if iface then
-                       m.uci:delete_all("radvd", "prefix",
-                               function(s) return s.interface == iface end)
-
-                       m.uci:delete_all("radvd", "route",
-                               function(s) return s.interface == iface end)
-
-                       m.uci:delete_all("radvd", "rdnss",
-                               function(s) return s.interface == iface end)
-               end
-       end
-
-       return TypedSection.remove(self, section)
-end
-
-o = s:option(Flag, "ignore", translate("Enable"))
-o.rmempty = false
-o.width   = "30px"
-function o.cfgvalue(...)
-       local v = Flag.cfgvalue(...)
-       return v == "1" and "0" or "1"
-end
-function o.write(self, section, value)
-       Flag.write(self, section, value == "1" and "0" or "1")
-end
-
-o = s:option(DummyValue, "interface", translate("Interface"))
-o.template = "cbi/network_netinfo"
-o.width    = "10%"
-
-o = s:option(DummyValue, "UnicastOnly", translate("Multicast"))
-function o.cfgvalue(self, section)
-       local v  = Value.cfgvalue(self, section)
-       local v2 = m.uci:get("radvd", section, "client")
-       return (v == "1" or (v2 and #v2 > 0)) and translate("no") or translate("yes")
-end
-
-o = s:option(DummyValue, "AdvSendAdvert", translate("Advertising"))
-function o.cfgvalue(...)
-       local v = Value.cfgvalue(...)
-       return v == "1" and translate("yes") or translate("no")
-end
-
-o = s:option(DummyValue, "MaxRtrAdvInterval", translate("Max. interval"))
-function o.cfgvalue(...)
-       local v = Value.cfgvalue(...) or "600"
-       return v .. "s"
-end
-
-o = s:option(DummyValue, "AdvHomeAgentFlag", translate("Mobile IPv6"))
-function o.cfgvalue(...)
-       local v = Value.cfgvalue(...)
-       return v == "1" and translate("yes") or translate("no")
-end
-
-o = s:option(DummyValue, "AdvDefaultPreference", translate("Preference"))
-function o.cfgvalue(...)
-       local v = Value.cfgvalue(...) or "medium"
-       return translate(v)
-end
-
-
---
--- Prefixes
---
-
-s2 = m:section(TypedSection, "prefix", translate("Prefixes"))
-s2.template = "cbi/tblsection"
-s2.extedit  = luci.dispatcher.build_url("admin/network/radvd/prefix/%s")
-s2.addremove = true
-s2.anonymous = true
-
-function s2.create(...)
-       local id = TypedSection.create(...)
-       luci.http.redirect(s2.extedit % id)
-end
-
-
-o = s2:option(Flag, "ignore", translate("Enable"))
-o.rmempty = false
-o.width   = "30px"
-function o.cfgvalue(...)
-       local v = Flag.cfgvalue(...)
-       return v == "1" and "0" or "1"
-end
-function o.write(self, section, value)
-       Flag.write(self, section, value == "1" and "0" or "1")
-end
-
-o = s2:option(DummyValue, "interface", translate("Interface"))
-o.template = "cbi/network_netinfo"
-o.width    = "10%"
-
-pfx = s2:option(DummyValue, "prefix", translate("Prefix"))
-pfx.width = "60%"
-function pfx.cfgvalue(self, section)
-       local v = m.uci:get_list("radvd", section, self.option)
-       local l = { }
-
-       if not v or #v == 0 or (#v == 1 and #v[1] == 0) then
-               local net = nm:get_network(m.uci:get("radvd", section, "interface"))
-               if net then
-                       local ifc = nm:get_interface(net:ifname())
-                       if ifc then
-                               local adr
-                               for _, adr in ipairs(ifc:ip6addrs()) do
-                                       if not adr:is6linklocal() then
-                                               v = adr:string()
-                                               break
-                                       end
-                               end
-                       end
-               end
-       end
-
-       for v in ut.imatch(v) do
-               v = luci.ip.IPv6(v)
-               if v then
-                       l[#l+1] = v:string()
-               end
-       end
-
-       if #l == 0 then
-               l[1] = "?"
-       end
-
-       return table.concat(l, ", ")
-end
-
-o = s2:option(DummyValue, "AdvAutonomous", translate("Autonomous"))
-function o.cfgvalue(...)
-       local v = Value.cfgvalue(...)
-       return v == "1" and translate("yes") or translate("no")
-end
-
-o = s2:option(DummyValue, "AdvOnLink", translate("On-link"))
-function o.cfgvalue(...)
-       local v = Value.cfgvalue(...)
-       return v == "1" and translate("yes") or translate("no")
-end
-
-o = s2:option(DummyValue, "AdvValidLifetime", translate("Validity time"))
-function o.cfgvalue(...)
-       local v = Value.cfgvalue(...) or "86400"
-       return translate(v)
-end
-
-
---
--- Routes
---
-
-s3 = m:section(TypedSection, "route", translate("Routes"))
-s3.template = "cbi/tblsection"
-s3.extedit  = luci.dispatcher.build_url("admin/network/radvd/route/%s")
-s3.addremove = true
-s3.anonymous = true
-
-function s3.create(...)
-       local id = TypedSection.create(...)
-       luci.http.redirect(s3.extedit % id)
-end
-
-
-o = s3:option(Flag, "ignore", translate("Enable"))
-o.rmempty = false
-o.width   = "30px"
-function o.cfgvalue(...)
-       local v = Flag.cfgvalue(...)
-       return v == "1" and "0" or "1"
-end
-function o.write(self, section, value)
-       Flag.write(self, section, value == "1" and "0" or "1")
-end
-
-o = s3:option(DummyValue, "interface", translate("Interface"))
-o.template = "cbi/network_netinfo"
-o.width    = "10%"
-
-o = s3:option(DummyValue, "prefix", translate("Prefix"))
-o.width = "60%"
-o.cfgvalue = pfx.cfgvalue
-
-o = s3:option(DummyValue, "AdvRouteLifetime", translate("Lifetime"))
-function o.cfgvalue(self, section)
-       local v = Value.cfgvalue(self, section) or "1800"
-       return translate(v)
-end
-
-o = s3:option(DummyValue, "AdvRoutePreference", translate("Preference"))
-function o.cfgvalue(self, section)
-       local v = Value.cfgvalue(self, section) or "medium"
-       return translate(v)
-end
-
-
---
--- RDNSS
---
-
-s4 = m:section(TypedSection, "rdnss", translate("RDNSS"))
-s4.template = "cbi/tblsection"
-s4.extedit  = luci.dispatcher.build_url("admin/network/radvd/rdnss/%s")
-s4.addremove = true
-s4.anonymous = true
-
-function s4.create(...)
-       local id = TypedSection.create(...)
-       luci.http.redirect(s4.extedit % id)
-end
-
-
-o = s4:option(Flag, "ignore", translate("Enable"))
-o.rmempty = false
-o.width   = "30px"
-function o.cfgvalue(...)
-       local v = Flag.cfgvalue(...)
-       return v == "1" and "0" or "1"
-end
-function o.write(self, section, value)
-       Flag.write(self, section, value == "1" and "0" or "1")
-end
-
-o = s4:option(DummyValue, "interface", translate("Interface"))
-o.template = "cbi/network_netinfo"
-o.width    = "10%"
-
-o = s4:option(DummyValue, "addr", translate("Address"))
-o.width = "60%"
-o.cfgvalue = pfx.cfgvalue
-
-o = s4:option(DummyValue, "AdvRDNSSLifetime", translate("Lifetime"))
-function o.cfgvalue(self, section)
-       local v = Value.cfgvalue(self, section) or "1200"
-       return translate(v)
-end
-
-
---
--- DNSSL
---
-
-s5 = m:section(TypedSection, "dnssl", translate("DNSSL"))
-s5.template = "cbi/tblsection"
-s5.extedit  = luci.dispatcher.build_url("admin/network/radvd/dnssl/%s")
-s5.addremove = true
-s5.anonymous = true
-
-function s5.create(...)
-       local id = TypedSection.create(...)
-       luci.http.redirect(s5.extedit % id)
-end
-
-
-o = s5:option(Flag, "ignore", translate("Enable"))
-o.rmempty = false
-o.width   = "30px"
-function o.cfgvalue(...)
-       local v = Flag.cfgvalue(...)
-       return v == "1" and "0" or "1"
-end
-function o.write(self, section, value)
-       Flag.write(self, section, value == "1" and "0" or "1")
-end
-
-o = s5:option(DummyValue, "interface", translate("Interface"))
-o.template = "cbi/network_netinfo"
-o.width    = "10%"
-
-o = s5:option(DummyValue, "suffix", translate("Suffix"))
-o.width = "60%"
-function o.cfgvalue(self, section)
-       local v = m.uci:get_list("radvd", section, "suffix")
-       local l = { }
-
-       for v in ut.imatch(v) do
-               l[#l+1] = v
-       end
-
-       if #l == 0 then
-               l[1] = "?"
-       end
-
-       return table.concat(l, ", ")
-end
-
-o = s5:option(DummyValue, "AdvDNSSLLifetime", translate("Lifetime"))
-function o.cfgvalue(self, section)
-       local v = Value.cfgvalue(self, section) or "1200"
-       return translate(v)
-end
-
-
-return m
diff --git a/applications/luci-app-radvd/luasrc/model/cbi/radvd/dnssl.lua b/applications/luci-app-radvd/luasrc/model/cbi/radvd/dnssl.lua
deleted file mode 100644 (file)
index d331c25..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
--- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
--- Licensed to the public under the Apache License 2.0.
-
-local sid = arg[1]
-local utl = require "luci.util"
-
-m = Map("radvd", translatef("Radvd - DNSSL"),
-       translate("Radvd is a router advertisement daemon for IPv6. " ..
-               "It listens to router solicitations and sends router advertisements " ..
-               "as described in RFC 4861."))
-
-m.redirect = luci.dispatcher.build_url("admin/network/radvd")
-
-if m.uci:get("radvd", sid) ~= "dnssl" then
-       luci.http.redirect(m.redirect)
-       return
-end
-
-
-s = m:section(NamedSection, sid, "interface", translate("DNSSL Configuration"))
-s.addremove = false
-
-
---
--- General
---
-
-o = s:option(Flag, "ignore", translate("Enable"))
-o.rmempty = false
-
-function o.cfgvalue(...)
-       local v = Flag.cfgvalue(...)
-       return v == "1" and "0" or "1"
-end
-
-function o.write(self, section, value)
-       Flag.write(self, section, value == "1" and "0" or "1")
-end
-
-
-o = s:option(Value, "interface", translate("Interface"),
-       translate("Specifies the logical interface name this section belongs to"))
-
-o.template = "cbi/network_netlist"
-o.nocreate = true
-o.optional = false
-
-function o.formvalue(...)
-       return Value.formvalue(...) or "-"
-end
-
-function o.validate(self, value)
-       if value == "-" then
-               return nil, translate("Interface required")
-       end
-       return value
-end
-
-function o.write(self, section, value)
-       m.uci:set("radvd", section, "ignore", 0)
-       m.uci:set("radvd", section, "interface", value)
-end
-
-
-o = s:option(DynamicList, "suffix", translate("Suffix"),
-       translate("Advertised Domain Suffixes"))
-
-o.optional    = false
-o.rmempty     = false
-o.datatype    = "hostname"
-function o.cfgvalue(self, section)
-       local l = { }
-       local v = m.uci:get_list("radvd", section, "suffix")
-       for v in utl.imatch(v) do
-               l[#l+1] = v
-       end
-       return l
-end
-
-
-o = s:option(Value, "AdvDNSSLLifetime", translate("Lifetime"),
-       translate("Specifies the maximum duration how long the DNSSL entries are used for name resolution."))
-
-o.datatype = 'or(uinteger,"infinity")'
-o.placeholder = 1200
-
-
-return m
diff --git a/applications/luci-app-radvd/luasrc/model/cbi/radvd/interface.lua b/applications/luci-app-radvd/luasrc/model/cbi/radvd/interface.lua
deleted file mode 100644 (file)
index e5d0322..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
--- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
--- Licensed to the public under the Apache License 2.0.
-
-local sid = arg[1]
-local utl = require "luci.util"
-
-m = Map("radvd", translatef("Radvd - Interface %q", "?"),
-       translate("Radvd is a router advertisement daemon for IPv6. " ..
-               "It listens to router solicitations and sends router advertisements " ..
-               "as described in RFC 4861."))
-
-m.redirect = luci.dispatcher.build_url("admin/network/radvd")
-
-if m.uci:get("radvd", sid) ~= "interface" then
-       luci.http.redirect(m.redirect)
-       return
-end
-
-m.uci:foreach("radvd", "interface",
-       function(s)
-               if s['.name'] == sid and s.interface then
-                       m.title = translatef("Radvd - Interface %q", s.interface)
-                       return false
-               end
-       end)
-
-
-s = m:section(NamedSection, sid, "interface", translate("Interface Configuration"))
-s.addremove = false
-
-s:tab("general", translate("General"))
-s:tab("timing",  translate("Timing"))
-s:tab("mobile",  translate("Mobile IPv6"))
-
-
---
--- General
---
-
-o = s:taboption("general", Flag, "ignore", translate("Enable"))
-o.rmempty = false
-
-function o.cfgvalue(...)
-       local v = Flag.cfgvalue(...)
-       return v == "1" and "0" or "1"
-end
-
-function o.write(self, section, value)
-       Flag.write(self, section, value == "1" and "0" or "1")
-end
-
-
-o = s:taboption("general", Value, "interface", translate("Interface"),
-       translate("Specifies the logical interface name this section belongs to"))
-
-o.template = "cbi/network_netlist"
-o.nocreate = true
-o.optional = false
-
-function o.formvalue(...)
-       return Value.formvalue(...) or "-"
-end
-
-function o.validate(self, value)
-       if value == "-" then
-               return nil, translate("Interface required")
-       end
-       return value
-end
-
-function o.write(self, section, value)
-       m.uci:set("radvd", section, "ignore", 0)
-       m.uci:set("radvd", section, "interface", value)
-end
-
-
-o = s:taboption("general", DynamicList, "client", translate("Clients"),
-       translate("Restrict communication to specified clients, leave empty to use multicast"))
-
-o.rmempty     = true
-o.datatype    = "ip6addr"
-o.placeholder = "any"
-function o.cfgvalue(...)
-       local v = Value.cfgvalue(...)
-       local l = { }
-       for v in utl.imatch(v) do
-               l[#l+1] = v
-       end
-       return l
-end
-
-
-o = s:taboption("general", Flag, "AdvSendAdvert", translate("Enable advertisements"),
-       translate("Enables router advertisements and solicitations"))
-
-o.rmempty = false
-function o.write(self, section, value)
-       if value == "1" then
-               m.uci:set("radvd", section, "ignore", 0)
-               m.uci:set("radvd", section, "IgnoreIfMissing", 1)
-       end
-
-       m.uci:set("radvd", section, "AdvSendAdvert", value)
-end
-
-
-o = s:taboption("general", Flag, "UnicastOnly", translate("Unicast only"),
-       translate("Indicates that the underlying link is not broadcast capable, prevents unsolicited advertisements from being sent"))
-
-o:depends("AdvSendAdvert", "1")
-
-
-o = s:taboption("general", Flag, "AdvManagedFlag", translate("Managed flag"),
-       translate("Enables the additional stateful administered autoconfiguration protocol (RFC2462)"))
-
-o:depends("AdvSendAdvert", "1")
-
-
-o = s:taboption("general", Flag, "AdvOtherConfigFlag", translate("Configuration flag"),
-       translate("Enables the autoconfiguration of additional, non address information (RFC2462)"))
-
-o:depends("AdvSendAdvert", "1")
-
-
-o = s:taboption("general", Flag, "AdvSourceLLAddress", translate("Source link-layer address"),
-       translate("Includes the link-layer address of the outgoing interface in the RA"))
-
-o.rmempty = false
-o.default = "1"
-o:depends("AdvSendAdvert", "1")
-
-
-o = s:taboption("general", Value, "AdvLinkMTU", translate("Link MTU"),
-       translate("Advertises the given link MTU in the RA if specified. 0 disables MTU advertisements"))
-
-o.datatype = "uinteger"
-o.placeholder = 0
-o:depends("AdvSendAdvert", "1")
-
-
-o = s:taboption("general", Value, "AdvCurHopLimit", translate("Current hop limit"),
-       translate("Advertises the default Hop Count value for outgoing unicast packets in the RA. 0 disables hopcount advertisements"))
-
-o.datatype = "uinteger"
-o.optional = false
-o.placeholder = 64
-o:depends("AdvSendAdvert", "1")
-
-
-o = s:taboption("general", ListValue, "AdvDefaultPreference", translate("Default preference"),
-       translate("Advertises the default router preference"))
-
-o.optional = false
-o.default = "medium"
-o:value("low",    translate("low"))
-o:value("medium", translate("medium"))
-o:value("high",   translate("high"))
-o:depends("AdvSendAdvert", "1")
-
-
---
--- Timing
---
-
-o = s:taboption("timing", Value, "MinRtrAdvInterval", translate("Minimum advertisement interval"),
-       translate("The minimum time allowed between sending unsolicited multicast router advertisements from the interface, in seconds"))
-
-o.datatype = "uinteger"
-o.optional = false
-o.placeholder = 198
-o:depends("AdvSendAdvert", "1")
-
-
-o = s:taboption("timing", Value, "MaxRtrAdvInterval", translate("Maximum advertisement interval"),
-       translate("The maximum time allowed between sending unsolicited multicast router advertisements from the interface, in seconds"))
-
-o.datatype = "uinteger"
-o.optional = false
-o.placeholder = 600
-o:depends("AdvSendAdvert", "1")
-
-
-o = s:taboption("timing", Value, "MinDelayBetweenRAs", translate("Minimum advertisement delay"),
-       translate("The minimum time allowed between sending multicast router advertisements from the interface, in seconds"))
-
-o.datatype = "uinteger"
-o.optional = false
-o.placeholder = 3
-o:depends("AdvSendAdvert", "1")
-
-
-o = s:taboption("timing", Value, "AdvReachableTime", translate("Reachable time"),
-       translate("Advertises assumed reachability time in milliseconds of neighbours in the RA if specified. 0 disables reachability advertisements"))
-
-o.datatype = "uinteger"
-o.optional = false
-o.placeholder = 0
-o:depends("AdvSendAdvert", "1")
-
-
-o = s:taboption("timing", Value, "AdvRetransTimer", translate("Retransmit timer"),
-       translate("Advertises wait time in milliseconds between Neighbor Solicitation messages in the RA if specified. 0 disables retransmit advertisements"))
-
-o.datatype = "uinteger"
-o.optional = false
-o.placeholder = 0
-o:depends("AdvSendAdvert", "1")
-
-
-o = s:taboption("timing", Value, "AdvDefaultLifetime", translate("Default lifetime"),
-       translate("Advertises the lifetime of the default router in seconds. 0 indicates that the node is no default router"))
-
-o.datatype = "uinteger"
-o.optional = false
-o.placeholder = 1800
-o:depends("AdvSendAdvert", "1")
-
-
---
--- Mobile
---
-
-o = s:taboption("mobile", Flag, "AdvHomeAgentFlag", translate("Advertise Home Agent flag"),
-       translate("Advertises Mobile IPv6 Home Agent capability (RFC3775)"))
-
-o:depends("AdvSendAdvert", "1")
-
-
-o = s:taboption("mobile", Flag, "AdvIntervalOpt", translate("Mobile IPv6 interval option"),
-       translate("Include Mobile IPv6 Advertisement Interval option to RA"))
-
-o:depends({AdvHomeAgentFlag = "1", AdvSendAdvert = "1"})
-
-
-o = s:taboption("mobile", Flag, "AdvHomeAgentInfo", translate("Home Agent information"),
-       translate("Include Home Agent Information in the RA"))
-
-o:depends({AdvHomeAgentFlag = "1", AdvSendAdvert = "1"})
-
-
-o = s:taboption("mobile", Flag, "AdvMobRtrSupportFlag", translate("Mobile IPv6 router registration"),
-       translate("Advertises Mobile Router registration capability (NEMO Basic)"))
-
-o:depends({AdvHomeAgentInfo = "1", AdvSendAdvert = "1"})
-
-
-o = s:taboption("mobile", Value, "HomeAgentLifetime", translate("Home Agent lifetime"),
-       translate("Advertises the time in seconds the router is offering Mobile IPv6 Home Agent services"))
-
-o.datatype = "uinteger"
-o.optional = false
-o.placeholder = 1800
-o:depends({AdvHomeAgentInfo = "1", AdvSendAdvert = "1"})
-
-
-o = s:taboption("mobile", Value, "HomeAgentPreference", translate("Home Agent preference"),
-       translate("The preference for the Home Agent sending this RA"))
-
-o.datatype = "uinteger"
-o.optional = false
-o.placeholder = 0
-o:depends({AdvHomeAgentInfo = "1", AdvSendAdvert = "1"})
-
-
-return m
diff --git a/applications/luci-app-radvd/luasrc/model/cbi/radvd/prefix.lua b/applications/luci-app-radvd/luasrc/model/cbi/radvd/prefix.lua
deleted file mode 100644 (file)
index a2b4285..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
--- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
--- Licensed to the public under the Apache License 2.0.
-
-local sid = arg[1]
-local utl = require "luci.util"
-
-m = Map("radvd", translatef("Radvd - Prefix"),
-       translate("Radvd is a router advertisement daemon for IPv6. " ..
-               "It listens to router solicitations and sends router advertisements " ..
-               "as described in RFC 4861."))
-
-m.redirect = luci.dispatcher.build_url("admin/network/radvd")
-
-if m.uci:get("radvd", sid) ~= "prefix" then
-       luci.http.redirect(m.redirect)
-       return
-end
-
-
-s = m:section(NamedSection, sid, "interface", translate("Prefix Configuration"))
-s.addremove = false
-
-s:tab("general", translate("General"))
-s:tab("advanced",  translate("Advanced"))
-
-
---
--- General
---
-
-o = s:taboption("general", Flag, "ignore", translate("Enable"))
-o.rmempty = false
-
-function o.cfgvalue(...)
-       local v = Flag.cfgvalue(...)
-       return v == "1" and "0" or "1"
-end
-
-function o.write(self, section, value)
-       Flag.write(self, section, value == "1" and "0" or "1")
-end
-
-
-o = s:taboption("general", Value, "interface", translate("Interface"),
-       translate("Specifies the logical interface name this section belongs to"))
-
-o.template = "cbi/network_netlist"
-o.nocreate = true
-o.optional = false
-
-function o.formvalue(...)
-       return Value.formvalue(...) or "-"
-end
-
-function o.validate(self, value)
-       if value == "-" then
-               return nil, translate("Interface required")
-       end
-       return value
-end
-
-function o.write(self, section, value)
-       m.uci:set("radvd", section, "ignore", 0)
-       m.uci:set("radvd", section, "interface", value)
-end
-
-
-o = s:taboption("general", DynamicList, "prefix", translate("Prefixes"),
-       translate("Advertised IPv6 prefixes. If empty, the current interface prefix is used"))
-
-o.optional    = true
-o.datatype    = "ip6addr"
-o.placeholder = translate("default")
-function o.cfgvalue(self, section)
-       local l = { }
-       local v = m.uci:get_list("radvd", section, "prefix")
-       for v in utl.imatch(v) do
-               l[#l+1] = v
-       end
-       return l
-end
-
-
-o = s:taboption("general", Flag, "AdvOnLink", translate("On-link determination"),
-       translate("Indicates that this prefix can be used for on-link determination (RFC4861)"))
-
-o.rmempty = false
-o.default = "1"
-
-
-o = s:taboption("general", Flag, "AdvAutonomous", translate("Autonomous"),
-       translate("Indicates that this prefix can be used for autonomous address configuration (RFC4862)"))
-
-o.rmempty = false
-o.default = "1"
-
-
---
--- Advanced
---
-
-o = s:taboption("advanced", Flag, "AdvRouterAddr", translate("Advertise router address"),
-       translate("Indicates that the address of interface is sent instead of network prefix, as is required by Mobile IPv6"))
-
-
-o = s:taboption("advanced", Value, "AdvValidLifetime", translate("Valid lifetime"),
-       translate("Advertises the length of time in seconds that the prefix is valid for the purpose of on-link determination."))
-
-o.datatype = 'or(uinteger,"infinity")'
-o.placeholder = 86400
-
-
-o = s:taboption("advanced", Value, "AdvPreferredLifetime", translate("Preferred lifetime"),
-       translate("Advertises the length of time in seconds that addresses generated from the prefix via stateless address autoconfiguration remain preferred."))
-
-o.datatype = 'or(uinteger,"infinity")'
-o.placeholder = 14400
-
-
-o = s:taboption("advanced", Value, "Base6to4Interface", translate("6to4 interface"),
-       translate("Specifies a logical interface name to derive a 6to4 prefix from. The interfaces public IPv4 address is combined with 2002::/3 and the value of the prefix option"))
-
-o.template = "cbi/network_netlist"
-o.nocreate = true
-o.unspecified = true
-
-
-return m
diff --git a/applications/luci-app-radvd/luasrc/model/cbi/radvd/rdnss.lua b/applications/luci-app-radvd/luasrc/model/cbi/radvd/rdnss.lua
deleted file mode 100644 (file)
index d6588ac..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
--- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
--- Licensed to the public under the Apache License 2.0.
-
-local sid = arg[1]
-local utl = require "luci.util"
-
-m = Map("radvd", translatef("Radvd - RDNSS"),
-       translate("Radvd is a router advertisement daemon for IPv6. " ..
-               "It listens to router solicitations and sends router advertisements " ..
-               "as described in RFC 4861."))
-
-m.redirect = luci.dispatcher.build_url("admin/network/radvd")
-
-if m.uci:get("radvd", sid) ~= "rdnss" then
-       luci.http.redirect(m.redirect)
-       return
-end
-
-
-s = m:section(NamedSection, sid, "interface", translate("RDNSS Configuration"))
-s.addremove = false
-
-
---
--- General
---
-
-o = s:option(Flag, "ignore", translate("Enable"))
-o.rmempty = false
-
-function o.cfgvalue(...)
-       local v = Flag.cfgvalue(...)
-       return v == "1" and "0" or "1"
-end
-
-function o.write(self, section, value)
-       Flag.write(self, section, value == "1" and "0" or "1")
-end
-
-
-o = s:option(Value, "interface", translate("Interface"),
-       translate("Specifies the logical interface name this section belongs to"))
-
-o.template = "cbi/network_netlist"
-o.nocreate = true
-o.optional = false
-
-function o.formvalue(...)
-       return Value.formvalue(...) or "-"
-end
-
-function o.validate(self, value)
-       if value == "-" then
-               return nil, translate("Interface required")
-       end
-       return value
-end
-
-function o.write(self, section, value)
-       m.uci:set("radvd", section, "ignore", 0)
-       m.uci:set("radvd", section, "interface", value)
-end
-
-
-o = s:option(DynamicList, "addr", translate("Addresses"),
-       translate("Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface is used"))
-
-o.optional    = false
-o.rmempty     = true
-o.datatype    = "ip6addr"
-o.placeholder = translate("default")
-function o.cfgvalue(self, section)
-       local l = { }
-       local v = m.uci:get_list("radvd", section, "addr")
-       for v in utl.imatch(v) do
-               l[#l+1] = v
-       end
-       return l
-end
-
-
-o = s:option(Value, "AdvRDNSSLifetime", translate("Lifetime"),
-       translate("Specifies the maximum duration how long the RDNSS entries are used for name resolution."))
-
-o.datatype = 'or(uinteger,"infinity")'
-o.placeholder = 1200
-
-
-return m
diff --git a/applications/luci-app-radvd/luasrc/model/cbi/radvd/route.lua b/applications/luci-app-radvd/luasrc/model/cbi/radvd/route.lua
deleted file mode 100644 (file)
index 1aac27a..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
--- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
--- Licensed to the public under the Apache License 2.0.
-
-local sid = arg[1]
-local utl = require "luci.util"
-
-m = Map("radvd", translatef("Radvd - Route"),
-       translate("Radvd is a router advertisement daemon for IPv6. " ..
-               "It listens to router solicitations and sends router advertisements " ..
-               "as described in RFC 4861."))
-
-m.redirect = luci.dispatcher.build_url("admin/network/radvd")
-
-if m.uci:get("radvd", sid) ~= "route" then
-       luci.http.redirect(m.redirect)
-       return
-end
-
-
-s = m:section(NamedSection, sid, "interface", translate("Route Configuration"))
-s.addremove = false
-
-
---
--- General
---
-
-o = s:option(Flag, "ignore", translate("Enable"))
-o.rmempty = false
-
-function o.cfgvalue(...)
-       local v = Flag.cfgvalue(...)
-       return v == "1" and "0" or "1"
-end
-
-function o.write(self, section, value)
-       Flag.write(self, section, value == "1" and "0" or "1")
-end
-
-
-o = s:option(Value, "interface", translate("Interface"),
-       translate("Specifies the logical interface name this section belongs to"))
-
-o.template = "cbi/network_netlist"
-o.nocreate = true
-o.optional = false
-
-function o.formvalue(...)
-       return Value.formvalue(...) or "-"
-end
-
-function o.validate(self, value)
-       if value == "-" then
-               return nil, translate("Interface required")
-       end
-       return value
-end
-
-function o.write(self, section, value)
-       m.uci:set("radvd", section, "ignore", 0)
-       m.uci:set("radvd", section, "interface", value)
-end
-
-
-o = s:option(DynamicList, "prefix", translate("Prefixes"),
-       translate("Advertised IPv6 prefixes"))
-
-o.rmempty     = false
-o.datatype    = "ip6addr"
-o.placeholder = translate("default")
-function o.cfgvalue(self, section)
-       local l = { }
-       local v = m.uci:get_list("radvd", section, "prefix")
-       for v in utl.imatch(v) do
-               l[#l+1] = v
-       end
-       return l
-end
-
-
-o = s:option(Value, "AdvRouteLifetime", translate("Lifetime"),
-       translate("Specifies the lifetime associated with the route in seconds."))
-
-o.datatype = 'or(uinteger,"infinity")'
-o.placeholder = 1800
-
-
-o = s:option(ListValue, "AdvRoutePreference", translate("Preference"),
-       translate("Specifies the preference associated with the default router"))
-
-o.default = "medium"
-o:value("low",    translate("low"))
-o:value("medium", translate("medium"))
-o:value("high",   translate("high"))
-
-
-return m
diff --git a/applications/luci-app-radvd/po/ca/radvd.po b/applications/luci-app-radvd/po/ca/radvd.po
deleted file mode 100644 (file)
index a9a317d..0000000
+++ /dev/null
@@ -1,382 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-06-02 21:41+0200\n"
-"Last-Translator: Alex <alexhenrie24@gmail.com>\n"
-"Language-Team: German\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"
-
-msgid "6to4 interface"
-msgstr "Interfície 6to4"
-
-msgid "Address"
-msgstr "Adreça"
-
-msgid "Addresses"
-msgstr "Adreces"
-
-msgid "Advanced"
-msgstr "Avançat"
-
-msgid "Advertise Home Agent flag"
-msgstr ""
-
-msgid "Advertise router address"
-msgstr ""
-
-msgid "Advertised Domain Suffixes"
-msgstr "Sufixos de domini publicats"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-
-msgid "Advertised IPv6 prefixes"
-msgstr "Prefixos IPv6 publicats"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr "Publicació"
-
-msgid "Autonomous"
-msgstr "Autònom"
-
-msgid "Clients"
-msgstr "Clients"
-
-msgid "Configuration flag"
-msgstr ""
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "Configuració DNSSL"
-
-msgid "Default lifetime"
-msgstr ""
-
-msgid "Default preference"
-msgstr "Preferència per defecte"
-
-msgid "Enable"
-msgstr "Habilita"
-
-msgid "Enable advertisements"
-msgstr "Habilita la publicitat"
-
-msgid "Enables router advertisements and solicitations"
-msgstr ""
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr "General"
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-"Indica que la enllaç subjacent no és capaç de la difusió, prevén que les "
-"publicitats no sol·licitats es enviïn"
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr "Interfície"
-
-msgid "Interface Configuration"
-msgstr "Configuració d'interfície"
-
-msgid "Interface required"
-msgstr "Interfície requerida"
-
-msgid "Interfaces"
-msgstr "Interfícies"
-
-msgid "Lifetime"
-msgstr ""
-
-msgid "Link MTU"
-msgstr ""
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr ""
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr "IPv6 mòbil"
-
-msgid "Mobile IPv6 interval option"
-msgstr "Opció d'interval d'IPv6 mòbil"
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr "Difusió selectiva"
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr "Prefix"
-
-msgid "Prefix Configuration"
-msgstr "Configuració de prefix"
-
-msgid "Prefixes"
-msgstr "Prefixos"
-
-msgid "RDNSS"
-msgstr "RDNSS"
-
-msgid "RDNSS Configuration"
-msgstr "Configuració RDNSS"
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - Interfície %q"
-
-msgid "Radvd - Prefix"
-msgstr "Radvd - Prefix"
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr "Radvd - Ruta"
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-"El Radvd és un dimoni de publicitat d'encaminador per IPv6. Escolta per "
-"sol·licituds i envia publicitats d'encaminador com descrit en RFC 4861."
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-"Restringeix la comunicació a clients especificats, deixeu en blanc per "
-"utilitzar la difusió selectiva"
-
-msgid "Retransmit timer"
-msgstr "Temporitzador de retransmissió"
-
-msgid "Route Configuration"
-msgstr "Configuració de ruta"
-
-msgid "Routes"
-msgstr "Rutes"
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr "Sufix"
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-"El temps màxim permès entre enviar publicitats d'encaminador de difusió "
-"selectiva no sol·licitats des de la interfície, en segons"
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-"El temps mínim permès entre enviar publicitats d'encaminador de difusió "
-"selectiva des de la interfície, en segons"
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-"El temps mínim permès entre enviar publicitats d'encaminador de difusió "
-"selectiva no sol·licitats des de la interfície, en segons"
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr "Sincronització"
-
-msgid "Unicast only"
-msgstr "Només unidifusió"
-
-msgid "Valid lifetime"
-msgstr "Durada de vida vàlida"
-
-msgid "Validity time"
-msgstr ""
-
-msgid "default"
-msgstr "per defecte"
-
-msgid "high"
-msgstr "alt"
-
-msgid "low"
-msgstr "baix"
-
-msgid "medium"
-msgstr "mitjà"
-
-msgid "no"
-msgstr "no"
-
-msgid "yes"
-msgstr "sí"
diff --git a/applications/luci-app-radvd/po/cs/radvd.po b/applications/luci-app-radvd/po/cs/radvd.po
deleted file mode 100644 (file)
index ab4e4af..0000000
+++ /dev/null
@@ -1,389 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-08-04 19:04+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"
-
-msgid "6to4 interface"
-msgstr "6to4 rozhraní"
-
-msgid "Address"
-msgstr "Adresa"
-
-msgid "Addresses"
-msgstr "Adresy"
-
-msgid "Advanced"
-msgstr "Pokročilé"
-
-msgid "Advertise Home Agent flag"
-msgstr ""
-
-msgid "Advertise router address"
-msgstr "Oznamovat adresu routeru"
-
-msgid "Advertised Domain Suffixes"
-msgstr "Oznamované doménové přípony"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-"Oznamované IPv6 RDNSS. Pokud prázdné, bude použita stávající IPv6 adresa "
-"rozhraní."
-
-msgid "Advertised IPv6 prefixes"
-msgstr "Oznamované IPv6 prefixy"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-"Oznamované IPv6 prefixy. Pokud prázdné, bude použit stávající prefix na "
-"rozhraní."
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-"Oznamovaná doba za kterou by sousední stroje měly být dosažitelné. 0 znamená "
-"neoznamovat."
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-"Oznamovaný výchozí počet hopů pro odchozí unicast pakety. 0 vypne oznamování "
-"počtu hopů."
-
-msgid "Advertises the default router preference"
-msgstr "Oznamovaný preferovaný router."
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr "Oznamovat MTU linky. 0 vypne oznamování MTU."
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-"Oznamovaný počet sekund po kterých adresa generovaná z prefixu bezestavové "
-"konfigurace zůstává preferovaná."
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-"Oznamovaný počet sekund po kterou je prefix validní pro potřeby zjištění "
-"stavu on-link/off-link."
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-"Oznamovaný počet sekund k vypršení platnosti preference routeru. 0 zančí že "
-"není žádný router preferován."
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-"Oznamovaný počet sekund k vypršení nabízení služeb Mobile IPv6 Home Agenta"
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-"Oznamovaný počet milisekund mezi Neighbor Solicitation zprávamy. 0 vypne "
-"oznamování."
-
-msgid "Advertising"
-msgstr ""
-
-msgid "Autonomous"
-msgstr "Autonomní"
-
-msgid "Clients"
-msgstr "Klienti"
-
-msgid "Configuration flag"
-msgstr "Konfigurační volba"
-
-msgid "Current hop limit"
-msgstr "Aktuální limit počtu hopů"
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "Konfigurace DNSSL"
-
-msgid "Default lifetime"
-msgstr "Výchozí časový limit"
-
-msgid "Default preference"
-msgstr "Výchozí preference"
-
-msgid "Enable"
-msgstr "Povolit"
-
-msgid "Enable advertisements"
-msgstr "Povolit oznamování"
-
-msgid "Enables router advertisements and solicitations"
-msgstr "Povolí oznamování routeru a hledání sousedů"
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-"Povolí přídavný stavový administrovaný autokonfigurační protokol (RFC2462)"
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr "Povolí autokonfiguraci přídavného, neadresních informací (RFC2462)"
-
-msgid "General"
-msgstr "Obecné"
-
-msgid "Home Agent information"
-msgstr "Informace Home Agenta"
-
-msgid "Home Agent lifetime"
-msgstr "Časový limit Home Agenta"
-
-msgid "Home Agent preference"
-msgstr "Preferovaný Home Agent"
-
-msgid "Include Home Agent Information in the RA"
-msgstr "Zahrnout informace o Home Agentovi v oznámeních"
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr "Rozhraní"
-
-msgid "Interface Configuration"
-msgstr "Konfigurace rozhraní"
-
-msgid "Interface required"
-msgstr "Rozhraní vyžadováno"
-
-msgid "Interfaces"
-msgstr "Rozhraní"
-
-msgid "Lifetime"
-msgstr ""
-
-msgid "Link MTU"
-msgstr ""
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr "Max. interval"
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr ""
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr "Multicast"
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr "Prefix"
-
-msgid "Prefix Configuration"
-msgstr "Nastavení prefixu"
-
-msgid "Prefixes"
-msgstr "Prefixy"
-
-msgid "RDNSS"
-msgstr "RDNSS"
-
-msgid "RDNSS Configuration"
-msgstr "Konfigurace RDNSS"
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - rozhraní %q"
-
-msgid "Radvd - Prefix"
-msgstr "Radvd - Prefix"
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr "Radvd - Route"
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr "Dostupný čas"
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr ""
-
-msgid "Routes"
-msgstr "Trasy"
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr "Suffix"
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr "Načasování"
-
-msgid "Unicast only"
-msgstr "Pouze unicast"
-
-msgid "Valid lifetime"
-msgstr ""
-
-msgid "Validity time"
-msgstr "Doba platnosti"
-
-msgid "default"
-msgstr "výchozí"
-
-msgid "high"
-msgstr "vysoká"
-
-msgid "low"
-msgstr "nízká"
-
-msgid "medium"
-msgstr "střední"
-
-msgid "no"
-msgstr "ne"
-
-# ano
-msgid "yes"
-msgstr "ano"
diff --git a/applications/luci-app-radvd/po/de/radvd.po b/applications/luci-app-radvd/po/de/radvd.po
deleted file mode 100644 (file)
index a294619..0000000
+++ /dev/null
@@ -1,483 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-04-15 16:46+0200\n"
-"Last-Translator: Jo-Philipp <jow@openwrt.org>\n"
-"Language-Team: German\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.4\n"
-
-msgid "6to4 interface"
-msgstr "6to4-Schnittstelle"
-
-msgid "Address"
-msgstr "Adresse"
-
-msgid "Addresses"
-msgstr "Adressen"
-
-msgid "Advanced"
-msgstr "Erweitert"
-
-msgid "Advertise Home Agent flag"
-msgstr "Home-Agent Funktionalität ankündigen"
-
-msgid "Advertise router address"
-msgstr "Router-Adresse ankündigen"
-
-msgid "Advertised Domain Suffixes"
-msgstr "Angekündigte Domain-Suffixes"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-"Angekündigte rekursive IPv6 DNS Server. Wenn leer wird die aktuelle IPv6-"
-"Adresse der Schnittstelle verwendet"
-
-msgid "Advertised IPv6 prefixes"
-msgstr "Angekündigte IPv6-Prefixe"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-"Angekündigte IPv6-Subnetze in CIDR-Notation. Wenn leer wird das aktuelle "
-"IPv6-Prefix der Schnittstelle verwendet"
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr "Kündigt \"Mobile IPv6 Home Agent\"-Fähigkeit an (RFC3775)"
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr "Kündigt \"Mobile Router Registration\"-Fähigkeit an (NEMO Basic)"
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-"Kündigt die angenommene Erreichbarkeit von Nachbarn als Zeitspanne in "
-"Millisekunden an, sofern gegeben. Der Wert \"0\" deaktiviert "
-"Erreichbarkeitsankündigungen"
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-"Kündigt den Standard Hop-Count-Wert für ausgehende Unicast-Pakete an. Der "
-"Wert \"0\" deaktiviert Hop-Count-Ankündigungen"
-
-msgid "Advertises the default router preference"
-msgstr "Kündigt das Vorhandensein des Default-Routers an"
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-"Kündigt die gegebene Verbindungs-MTU an wenn gegeben. Der Wert \"0\" "
-"deaktiviert MTU-Ankündigungen"
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-"Kündigt den Zeitraum an, in dem die vom angekündigtem Prefix generierte "
-"Adresse bevorzugt bleibt, als Zeitspanne in Sekunden."
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-"Kündigt den Zeitraum in Sekunden an, in dem der Prefix für On-Link-"
-"Ermittlung gültig ist."
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-"Kündigt die Gültigskeitsdauer des Defaultrouters in Sekunden an. Der Wert \"0"
-"\" impliziert dass dieser Knoten kein Default-Router ist"
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-"Kündigt die Zeitspanne in Sekunden an, in der der Router \"Mobile IPv6 Home "
-"Agent\"-Dienste anbietet"
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-"Kündigt die vorgegebene Wartezeit zwischen wiederholt versendeten Neighbor-"
-"Solicitation-Nachrichten als Zeitspanne in Millisekunden an, wenn gegeben. "
-"Der Wert \"0\" deaktiviert die Ankündigung der Wartezeit"
-
-msgid "Advertising"
-msgstr "Ankündigend"
-
-msgid "Autonomous"
-msgstr "Autonom"
-
-msgid "Clients"
-msgstr "Clienten"
-
-msgid "Configuration flag"
-msgstr "Konfigurations-Bit"
-
-msgid "Current hop limit"
-msgstr "Aktuelles Hop-Limit"
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "DNSSL-Konfiguration"
-
-msgid "Default lifetime"
-msgstr "Standard-Gültigkeitszeitraum"
-
-msgid "Default preference"
-msgstr "Standard-Priorität"
-
-msgid "Enable"
-msgstr "Aktivieren"
-
-msgid "Enable advertisements"
-msgstr "Ankündigungen aktivieren"
-
-msgid "Enables router advertisements and solicitations"
-msgstr "Aktiviert Router-Ankündigungen und Solicitations"
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-"Aktiviert das zusätzliche \"Stateful Administered Autoconfiguration Protocol"
-"\" (RFC2462)"
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-"Aktiviert die Auto-Konfiguration von zusätzlichen, Nicht-Adress-"
-"Eigenschaften (RFC2462)"
-
-msgid "General"
-msgstr "Allgemein"
-
-msgid "Home Agent information"
-msgstr "Home-Agent-Information"
-
-msgid "Home Agent lifetime"
-msgstr "Home-Agent-Gültigkeitsdauer"
-
-msgid "Home Agent preference"
-msgstr "Home-Agent-Priorität"
-
-msgid "Include Home Agent Information in the RA"
-msgstr "Home-Agent-Informationen in die RA-Nachricht einfügen"
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr "Mobile-IPv6-Ankündigungsintervall in die RA-Nachricht einfügen"
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-"Link-Layer-Adresse der ausgehenden Schnittstelle in die RA-Nachricht einfügen"
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-"Zeigt an, dass die Adresse der Schnittstelle statt einem Netzwerk-Prefix "
-"gesendet wird - benötigt für Mobile IPv6"
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-"Zeigt an, dass die zugrundeliegende Verbindung keinen Broadcast-Verkehr "
-"beherrscht, verhindert das Senden unaufgeforderter Ankündigungsnachrichten"
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-"Zeigt an, dass das angekündigte Prefix für autonome Adress-Konfiguration "
-"genutzt werden kann (RFC4862)"
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-"Zeigt an, dass das Prefix für On-Link-Ermittlungen genutzt werden kann "
-"(RFC4861)"
-
-msgid "Interface"
-msgstr "Schnittstelle"
-
-msgid "Interface Configuration"
-msgstr "Schnittstellenkonfiguration"
-
-msgid "Interface required"
-msgstr "Schnittstelle benötigt"
-
-msgid "Interfaces"
-msgstr "Schnittstellen"
-
-msgid "Lifetime"
-msgstr "Gültigkeitsdauer"
-
-msgid "Link MTU"
-msgstr "Verbindungs-MTU"
-
-msgid "Managed flag"
-msgstr "Managed-Bit"
-
-msgid "Max. interval"
-msgstr "Max. Intervall"
-
-msgid "Maximum advertisement interval"
-msgstr "Maximales Ankündigungsintervall"
-
-msgid "Minimum advertisement delay"
-msgstr "Minimale Ankündigungsverzögerung"
-
-msgid "Minimum advertisement interval"
-msgstr "Minimales Ankündigungsintervall"
-
-msgid "Mobile IPv6"
-msgstr "Mobile IPv6"
-
-msgid "Mobile IPv6 interval option"
-msgstr "Mobile-IPv6-Intervall-Option"
-
-msgid "Mobile IPv6 router registration"
-msgstr "Mobile-IPv6-Router-Registrierung"
-
-msgid "Multicast"
-msgstr "Multicast"
-
-msgid "On-link"
-msgstr "On-Link"
-
-msgid "On-link determination"
-msgstr "On-Link-Ermittlung"
-
-msgid "Preference"
-msgstr "Priorität"
-
-msgid "Preferred lifetime"
-msgstr "Bevorzugte Gültigkeitsdauer"
-
-msgid "Prefix"
-msgstr "Prefix"
-
-msgid "Prefix Configuration"
-msgstr "Prefix-Konfiguration"
-
-msgid "Prefixes"
-msgstr "Prefixes"
-
-msgid "RDNSS"
-msgstr "RDNSS"
-
-msgid "RDNSS Configuration"
-msgstr "RDNSS-Konfiguration"
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - Schnittstelle %q"
-
-msgid "Radvd - Prefix"
-msgstr "Radvd - Prefix"
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr "Radvd - Route"
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-"Radvd ist ein Router-Advertisement-Dienst für IPv6. Er hört auf Router-"
-"Solicitations und sendet Ankündigungen wie in RFC 4861 spezifiziert."
-
-msgid "Reachable time"
-msgstr "Erreichbarkeitsdauer"
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-"Kommunikation auf angegebene Clients beschränken, leer lassen um Multicast "
-"zu nutzen"
-
-msgid "Retransmit timer"
-msgstr "Taktung von Neu-Übertragungen"
-
-msgid "Route Configuration"
-msgstr "Routen-Konfiguration"
-
-msgid "Routes"
-msgstr "Routen"
-
-msgid "Source link-layer address"
-msgstr "Quell-Link-Layer-Adresse"
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-"Spezifiziert eine Schnittstelle, von welcher das 6to4-Prefix abgeleitet "
-"wird. Die öffentliche IPv4-Adresse der Schnittstelle wird dazu mit dem "
-"Subnetz 2002::/3 und dem Wert der Prefix-Option kombiniert"
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr "Bestimmt die Gültigkeitsdauer dieser Route."
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr "Bestimmt die Schnittstelle, zu welcher diese Sektion gehört"
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-"Bestimmt die maximale Dauer, für welche die DNSSL-Einträge gültig zur "
-"Namensauflösung sind."
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-"Bestimmt die maximale Dauer, für welche die RDNSS-Einträge gültig zur "
-"Namensauflösung sind."
-
-msgid "Specifies the preference associated with the default router"
-msgstr "Bestimmt die mit diesem Router assoziierte Priorität"
-
-msgid "Suffix"
-msgstr "Suffix"
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-"Die maximal erlaubte Wartezeit zwischen dem Versand aufeinanderfolgender, "
-"unaufgeforderter Mutlicast-Router-Ankündigungen auf dieser Schnittstelle als "
-"Zeitspanne in Sekunden"
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-"Die minimal erlaubte Wartezeit zwischen dem Versand aufeinanderfolgender "
-"Router-Ankündigungen auf dieser Schnittstelle als Zeitspanne in Sekunden"
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-"Die minimal erlaubte Wartezeit zwischen dem Versand aufeinanderfolgender, "
-"unaufgeforderter Mutlicast-Router-Ankündigungen auf dieser Schnittstelle als "
-"Zeitspanne in Sekunden"
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr "Die Priorität des ankündigendem \"IPv6 Home Agent\""
-
-msgid "Timing"
-msgstr "Taktung"
-
-msgid "Unicast only"
-msgstr "Nur Unicast"
-
-msgid "Valid lifetime"
-msgstr "Gültigkeitsdauer"
-
-msgid "Validity time"
-msgstr "Gültigkeitsdauer"
-
-msgid "default"
-msgstr "Standard"
-
-msgid "high"
-msgstr "hoch"
-
-msgid "low"
-msgstr "niedrig"
-
-msgid "medium"
-msgstr "mittel"
-
-msgid "no"
-msgstr "nein"
-
-msgid "yes"
-msgstr "ja"
-
-#~ msgid "Advertised IPv6 prefix"
-#~ msgstr "Angekündigtes IPv6-Prefix"
-
-#~ msgid ""
-#~ "Advertised IPv6 prefix. If empty, the current interface prefix is used"
-#~ msgstr ""
-#~ "Angekündigtes IPv6-Subnetz in CIDR-Notation. Wenn leer wird das aktuelle "
-#~ "IPv6-Prefix der Schnittstelle verwendet"
-
-#~ msgid ""
-#~ "Advertises the length of time in seconds that addresses generated from "
-#~ "the prefix via stateless address autoconfiguration remain preferred. Use "
-#~ "0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Kündigt den Zeitraum an, in dem die vom angekündigtem Prefix generierte "
-#~ "Adresse bevorzugt bleibt, als Zeitspanne in Sekunden. Der Wert \"0\" "
-#~ "spezifiziert eine unbegrenzte Gültigkeitsspanne"
-
-#~ msgid ""
-#~ "Advertises the length of time in seconds that the prefix is valid for the "
-#~ "purpose of on-link determination. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Kündigt den Zeitraum in Sekunden an, in dem der Prefix für On-Link-"
-#~ "Ermittlung gültig ist. Der Wert \"0\" spezifiziert eine unbegrenzte "
-#~ "Gültigkeitsspanne"
-
-#~ msgid ""
-#~ "Indicates whether that RDNSS continues to be available to hosts even if "
-#~ "they moved to a different subnet"
-#~ msgstr ""
-#~ "Zeigt an, ob dieser rekursive DNS Server von anderen Subnetzen aus "
-#~ "verfügbar bleibt"
-
-#~ msgid "Open"
-#~ msgstr "Offen"
-
-#~ msgid ""
-#~ "Specifies the lifetime associated with the route in seconds. Use 0 to "
-#~ "specify an infinite lifetime"
-#~ msgstr ""
-#~ "Bestimmt die Gültigkeitsdauer dieser Route. Der Wert \"0\" spezifiziert "
-#~ "einen unbegrenzten Zeitraum"
-
-#~ msgid ""
-#~ "Specifies the maximum duration how long the DNSSL entries are used for "
-#~ "name resolution. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Bestimmt die maximale Dauer, für welche die DNSSL-Einträge gültig zur "
-#~ "Namensauflösung sind. Der Wert \"0\" spezifiziert einen unbegrenzten "
-#~ "Zeitraum"
-
-#~ msgid ""
-#~ "Specifies the maximum duration how long the RDNSS entries are used for "
-#~ "name resolution. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Bestimmt die maximale Dauer, für welche die RDNSS-Einträge gültig zur "
-#~ "Namensauflösung sind. Der Wert \"0\" spezifiziert einen unbegrenzten "
-#~ "Zeitraum"
diff --git a/applications/luci-app-radvd/po/el/radvd.po b/applications/luci-app-radvd/po/el/radvd.po
deleted file mode 100644 (file)
index 00763c9..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-03-18 15:31+0200\n"
-"Last-Translator: Vasilis <acinonyx@openwrt.gr>\n"
-"Language-Team: German\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"
-
-msgid "6to4 interface"
-msgstr "Διεπαφή 6to4"
-
-msgid "Address"
-msgstr "Διεύθυνση"
-
-msgid "Addresses"
-msgstr "Διευθύνσεις"
-
-msgid "Advanced"
-msgstr ""
-
-msgid "Advertise Home Agent flag"
-msgstr ""
-
-msgid "Advertise router address"
-msgstr ""
-
-msgid "Advertised Domain Suffixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-
-msgid "Advertised IPv6 prefixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr ""
-
-msgid "Autonomous"
-msgstr ""
-
-msgid "Clients"
-msgstr "Πελάτες"
-
-msgid "Configuration flag"
-msgstr ""
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr ""
-
-msgid "Default lifetime"
-msgstr ""
-
-msgid "Default preference"
-msgstr ""
-
-msgid "Enable"
-msgstr "Ενεργοποίηση"
-
-msgid "Enable advertisements"
-msgstr ""
-
-msgid "Enables router advertisements and solicitations"
-msgstr ""
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr ""
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr "Διεπαφή"
-
-msgid "Interface Configuration"
-msgstr ""
-
-msgid "Interface required"
-msgstr ""
-
-msgid "Interfaces"
-msgstr "Διεπαφές"
-
-msgid "Lifetime"
-msgstr ""
-
-msgid "Link MTU"
-msgstr ""
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr ""
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr ""
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr ""
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr ""
-
-msgid "Prefix Configuration"
-msgstr ""
-
-msgid "Prefixes"
-msgstr ""
-
-msgid "RDNSS"
-msgstr "RDNSS"
-
-msgid "RDNSS Configuration"
-msgstr ""
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - Διεπαφή %q"
-
-msgid "Radvd - Prefix"
-msgstr ""
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr "Radvd - Διαδρομή"
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr ""
-
-msgid "Routes"
-msgstr "Διαδρομές"
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr ""
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr ""
-
-msgid "Unicast only"
-msgstr ""
-
-msgid "Valid lifetime"
-msgstr ""
-
-msgid "Validity time"
-msgstr ""
-
-msgid "default"
-msgstr ""
-
-msgid "high"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "no"
-msgstr "όχι"
-
-msgid "yes"
-msgstr "ναι"
diff --git a/applications/luci-app-radvd/po/en/radvd.po b/applications/luci-app-radvd/po/en/radvd.po
deleted file mode 100644 (file)
index 63f8fa0..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2010-11-21 04:06+0100\n"
-"Last-Translator:  <jow@openwrt.org>\n"
-"Language-Team: German\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"
-
-msgid "6to4 interface"
-msgstr ""
-
-msgid "Address"
-msgstr ""
-
-msgid "Addresses"
-msgstr ""
-
-msgid "Advanced"
-msgstr ""
-
-msgid "Advertise Home Agent flag"
-msgstr ""
-
-msgid "Advertise router address"
-msgstr ""
-
-msgid "Advertised Domain Suffixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-
-msgid "Advertised IPv6 prefixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr ""
-
-msgid "Autonomous"
-msgstr ""
-
-msgid "Clients"
-msgstr ""
-
-msgid "Configuration flag"
-msgstr ""
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr ""
-
-msgid "DNSSL Configuration"
-msgstr ""
-
-msgid "Default lifetime"
-msgstr ""
-
-msgid "Default preference"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Enable advertisements"
-msgstr ""
-
-msgid "Enables router advertisements and solicitations"
-msgstr ""
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr ""
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Interface Configuration"
-msgstr ""
-
-msgid "Interface required"
-msgstr ""
-
-msgid "Interfaces"
-msgstr ""
-
-msgid "Lifetime"
-msgstr ""
-
-msgid "Link MTU"
-msgstr ""
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr ""
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr ""
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr ""
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr ""
-
-msgid "Prefix Configuration"
-msgstr ""
-
-msgid "Prefixes"
-msgstr ""
-
-msgid "RDNSS"
-msgstr ""
-
-msgid "RDNSS Configuration"
-msgstr ""
-
-msgid "Radvd"
-msgstr ""
-
-msgid "Radvd - DNSSL"
-msgstr ""
-
-msgid "Radvd - Interface %q"
-msgstr ""
-
-msgid "Radvd - Prefix"
-msgstr ""
-
-msgid "Radvd - RDNSS"
-msgstr ""
-
-msgid "Radvd - Route"
-msgstr ""
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr ""
-
-msgid "Routes"
-msgstr ""
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr ""
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr ""
-
-msgid "Unicast only"
-msgstr ""
-
-msgid "Valid lifetime"
-msgstr ""
-
-msgid "Validity time"
-msgstr ""
-
-msgid "default"
-msgstr ""
-
-msgid "high"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "no"
-msgstr ""
-
-msgid "yes"
-msgstr ""
diff --git a/applications/luci-app-radvd/po/es/radvd.po b/applications/luci-app-radvd/po/es/radvd.po
deleted file mode 100644 (file)
index 8656192..0000000
+++ /dev/null
@@ -1,412 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-08-26 17:12+0200\n"
-"Last-Translator: José Vicente <josevteg@gmail.com>\n"
-"Language-Team: German\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: Pootle 2.0.6\n"
-
-msgid "6to4 interface"
-msgstr "Interfaz 6a4"
-
-msgid "Address"
-msgstr "Dirección"
-
-msgid "Addresses"
-msgstr "Direcciones"
-
-msgid "Advanced"
-msgstr "Avanzado"
-
-msgid "Advertise Home Agent flag"
-msgstr "Publicar marca de agente personal"
-
-msgid "Advertise router address"
-msgstr "Publicar dirección del router"
-
-msgid "Advertised Domain Suffixes"
-msgstr "Publicar sufijos de dominio"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-"RDNSS IPv6 publicado. Dejar en blanco para usar la dirección IPv6 de la "
-"interfaz"
-
-msgid "Advertised IPv6 prefixes"
-msgstr "Prefijo IPv6 publicado"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-"Prefijos IPv6 publicados. Dejar en blanco para usar el propio del interfaz"
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr "Publica aptitudes móviles IPv6 del Home Agent (RFC3775)"
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr "Publica las aptitudes de registro del router móvil"
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-"Publica el alcance asumido en milisegundos de los vecinos en la RA si se "
-"especifica. 0 para desactivar"
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-"Publica la cuenta de saltos para paquetes salientes en el RA. Desactivar con "
-"0"
-
-msgid "Advertises the default router preference"
-msgstr "Publica la preferencia de router por defecto"
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr "Publica el MTU del enlace en la RA si se especifica. Desactivar con 0"
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-"Publica el tiempo de vida en segundos que se prefieren las direcciones "
-"generadas desde el prefijo vía una dirección de autoconfiguración sin estado."
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-"Publica el tiempo en segundos que el prefijo es válido para determinar que "
-"el enlace está activo."
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-"Publica tiempo de vida del router por defecto en segundos. 0 si el router no "
-"lo es"
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-"Publica tiempo en segundos que router ofrece servicios de Home Agent para "
-"IPv6 móvil"
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-"Publicar el tiempo de espera en milisegundos entre mensajes de solicitud de "
-"vecinos en la RA. Desactivar con 0"
-
-msgid "Advertising"
-msgstr "Publicación"
-
-msgid "Autonomous"
-msgstr "Autónomo"
-
-msgid "Clients"
-msgstr "Clientes"
-
-msgid "Configuration flag"
-msgstr "Marca de configuración"
-
-msgid "Current hop limit"
-msgstr "Límite de saltos actual"
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "Configuración DNSSL"
-
-msgid "Default lifetime"
-msgstr "Vida por defecto"
-
-msgid "Default preference"
-msgstr "Preferencia por defecto"
-
-msgid "Enable"
-msgstr "Activar"
-
-msgid "Enable advertisements"
-msgstr "Activar publicaciones"
-
-msgid "Enables router advertisements and solicitations"
-msgstr "Activar publicaciones y solicitudes de router"
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr "Activa el protocolo adicional de autoconfiguración de estado (RFC2462)"
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-"Activa la configuración de información adicional que no sea de dirección "
-"(RFC2462)"
-
-msgid "General"
-msgstr "General"
-
-msgid "Home Agent information"
-msgstr "Información del \"Home Agent\""
-
-msgid "Home Agent lifetime"
-msgstr "Vida del \"Home Agent\""
-
-msgid "Home Agent preference"
-msgstr "Preferencia del \"Home Agent\""
-
-msgid "Include Home Agent Information in the RA"
-msgstr "Incluir información del \"Home Agent\" en el RA"
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr "Incluir la opción de publicación móvil IPv6 a RA"
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-"Incluye la dirección de capa de enlace para el interfaz saliente en la RA"
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-"Se enviará la dirección del interfaz en vez del prefijo de red tal y como se "
-"requiere par IPv6 móvil"
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-"El enlace inferior no puede hacer redifusión, no se pueden enviar "
-"publicaciones no solicitadas"
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-"Este prefijo se puede usar como una dirección autónoma de configuración "
-"(RFC4862)"
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-"Este prefijo se puede usar para determinación de enlace activado (RFC4861)"
-
-msgid "Interface"
-msgstr "Interfaz"
-
-msgid "Interface Configuration"
-msgstr "Configuración de la interfaz"
-
-msgid "Interface required"
-msgstr "Se necesita una interfaz"
-
-msgid "Interfaces"
-msgstr "Interfaces"
-
-msgid "Lifetime"
-msgstr "Vida"
-
-msgid "Link MTU"
-msgstr "MTU del enlace"
-
-msgid "Managed flag"
-msgstr "Marca de gestionado"
-
-msgid "Max. interval"
-msgstr "Intervalo máximo"
-
-msgid "Maximum advertisement interval"
-msgstr "Intervalo máximo de publicación"
-
-msgid "Minimum advertisement delay"
-msgstr "Retraso mínimo de publicación"
-
-msgid "Minimum advertisement interval"
-msgstr "Intervalo mínimo de publicación"
-
-msgid "Mobile IPv6"
-msgstr "IPv6 móvil"
-
-msgid "Mobile IPv6 interval option"
-msgstr "Opción de intervalo móvil IPv6"
-
-msgid "Mobile IPv6 router registration"
-msgstr "Registro de router móvil IPv6"
-
-msgid "Multicast"
-msgstr "Multidifusión"
-
-msgid "On-link"
-msgstr "Enlace activado (On-link)"
-
-msgid "On-link determination"
-msgstr "Determinar enlace activado"
-
-msgid "Preference"
-msgstr "Preferencia"
-
-msgid "Preferred lifetime"
-msgstr "Duración de vida preferida"
-
-msgid "Prefix"
-msgstr "Prefijo"
-
-msgid "Prefix Configuration"
-msgstr "Configuración del prefijo"
-
-msgid "Prefixes"
-msgstr "Prefijos"
-
-msgid "RDNSS"
-msgstr "RDNSS"
-
-msgid "RDNSS Configuration"
-msgstr "Configuración RDNSS"
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - Interfaz %q"
-
-msgid "Radvd - Prefix"
-msgstr "Radvd - Prefijo"
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr "Radvd - Ruta"
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-"Radvd es un demonio de publicación de enrutado de para IPv6. Atiende "
-"solicitudes de ruta y envía anuncios de ruta como se describe en RFC4861."
-
-msgid "Reachable time"
-msgstr "Tiempo alcanzable"
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-"Restringir comunicaciones a estos clientes, dejar en blanco para "
-"multidifusión"
-
-msgid "Retransmit timer"
-msgstr "Retraso de retransmisión"
-
-msgid "Route Configuration"
-msgstr "Configuración de rutas"
-
-msgid "Routes"
-msgstr "Rutas"
-
-msgid "Source link-layer address"
-msgstr "Dirección origen de enlace de red"
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-"Nombre lógicos del interfaz del que derivar un prefijo 6to4. La dirección "
-"IPv4 pública del interfaz se combina con 2002::/3 y el valor de la opción "
-"\"prefijo\""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr "Tiempo de vida asociado a la ruta en segundos."
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr "Nombre del interfaz lógico al que pertenece esta sección"
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-"Máximo tiempo que las entradas DNSSL se usan para resolución de nombres."
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-"Máximo tiempo que las entradas RDNSS se usan para resolución de nombres."
-
-msgid "Specifies the preference associated with the default router"
-msgstr "Preferencia asociada con el router por defecto"
-
-msgid "Suffix"
-msgstr "Sufijo"
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-"Máximo tiempo en segundos entre envíos de publicaciones multidifusión desde "
-"el interfaz"
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-"Mínimo tiempo en segundos entre envíos de publicaciones multidifusión desde "
-"el interfaz"
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-"Mínimo tiempo en segundos entre envíos de publicaciones multidifusión no "
-"solicitadas desde el interfaz"
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr "Preferencia que el Home Agent enviará a esta RA"
-
-msgid "Timing"
-msgstr "Temporización"
-
-msgid "Unicast only"
-msgstr "Solo unidifusión"
-
-msgid "Valid lifetime"
-msgstr "Tiempo de vida válido"
-
-msgid "Validity time"
-msgstr "Tiempo de validez"
-
-msgid "default"
-msgstr "por defecto"
-
-msgid "high"
-msgstr "alto"
-
-msgid "low"
-msgstr "bajo"
-
-msgid "medium"
-msgstr "medio"
-
-msgid "no"
-msgstr "no"
-
-msgid "yes"
-msgstr "sí"
diff --git a/applications/luci-app-radvd/po/fr/radvd.po b/applications/luci-app-radvd/po/fr/radvd.po
deleted file mode 100644 (file)
index b26e6e0..0000000
+++ /dev/null
@@ -1,472 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-11-23 22:32+0200\n"
-"Last-Translator: fredb <fblistes+luci@free.fr>\n"
-"Language-Team: German\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"
-
-msgid "6to4 interface"
-msgstr "Interface 6to4"
-
-msgid "Address"
-msgstr "Adresse"
-
-msgid "Addresses"
-msgstr "Adresses"
-
-msgid "Advanced"
-msgstr "Avancé"
-
-msgid "Advertise Home Agent flag"
-msgstr "Drapeau de publication de l'agent Personnel (Home Agent)"
-
-msgid "Advertise router address"
-msgstr "Publier l'adresse du routeur"
-
-msgid "Advertised Domain Suffixes"
-msgstr "Suffixes de domaines publiés"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-"IPv6 RDNSS publié. S'il est vide, l'adresse IPv6 courante de l'interface est "
-"utilisée"
-
-msgid "Advertised IPv6 prefixes"
-msgstr "Préfixes IPv6 publiés"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-"Préfixes IPv6 publiés. Si c'est vide, le préfixe actuel de l'interface est "
-"utilisé"
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr "Publie la capacité Home Agent d'IPv6 Mobile (RFC 3775)"
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr "Publie la capacité d'enregistrement d'un Routeur Mobile (NEMO basique)"
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-"Publie le temps d'accès présumé en milli-secondes des voisins dans le RA "
-"s'il est spécifié. 0 désactive les publications d'accessibilité"
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-"Publie le nombre de sauts par défaut pour les paquets unicast sortants dans "
-"le RA. 0 désactive les publications de nombre de sauts"
-
-msgid "Advertises the default router preference"
-msgstr "Publie la préférence du routeur par défaut"
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-"Publie la valeur donnée de MTU dans les messages RA. 0 désactive la "
-"publication du MTU"
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-"Publie la durée du routeur par défaut, en secondes. 0 indique que le nœud "
-"n'est pas un routeur par défaut"
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-"Publie la durée en secondes pendant laquelle le routeur offre les services "
-"IPv6 Mobile d'agent personnel (Home Agent)"
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-"Publie le temps d'attente en millisecondes entre deux messages de "
-"sollicitation de voisinage dans le RA. 0 indique de ne pas retransmettre les "
-"publications"
-
-msgid "Advertising"
-msgstr "Publication"
-
-msgid "Autonomous"
-msgstr "Autonome"
-
-msgid "Clients"
-msgstr "Clients"
-
-msgid "Configuration flag"
-msgstr "Drapeau de configuration"
-
-msgid "Current hop limit"
-msgstr "Limite de sauts actuelle"
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "Configuration DNSSL"
-
-msgid "Default lifetime"
-msgstr "Durée de vie par défaut"
-
-msgid "Default preference"
-msgstr "Préférence par défaut"
-
-msgid "Enable"
-msgstr "Activer"
-
-msgid "Enable advertisements"
-msgstr "Activer les publications"
-
-msgid "Enables router advertisements and solicitations"
-msgstr "Activer les publications et sollicitations du routeur"
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-"Active le protocole d'auto-configuration administrée à états supplémentaire "
-"(RFC 2462)"
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-"Active l'auto-configuration d'informations autres que l'adresse "
-"supplémentaires (RFC 2462)"
-
-msgid "General"
-msgstr "Général"
-
-msgid "Home Agent information"
-msgstr "Informations de l'agent personnel (Home Agent)"
-
-msgid "Home Agent lifetime"
-msgstr "Durée de vie de l'agent personnel (Home Agent)"
-
-msgid "Home Agent preference"
-msgstr "Préférence de l'agent personnel (Home Agent)"
-
-msgid "Include Home Agent Information in the RA"
-msgstr "Inclure les informations de l'agent personnel (Home Agent) dans le RA"
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-"Inclure l'option de l'intervalle de publication de Mobile IPv6 dans le RA"
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr "Inclure l'adresse de niveau lien de l'interface sortante dans le RA"
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-"Indique que l'adresse de l'interface est envoyée à la place du préfixe "
-"réseau, comme demandé par la norme IPv6 Mobile"
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-"Indique que le lien sous-jacent ne peut faire de publication « broadcast », "
-"pour éviter l'envoi de publications non sollicitées"
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-"Indique que ce préfixe peut être utilisé pour la configuration autonome des "
-"adresses (RFC 4862)"
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-"Indique que ce préfixe peut être utilisé pour la détermination des adresses "
-"liées-au-support (On-Link, RFC 4861)"
-
-msgid "Interface"
-msgstr "Interface"
-
-msgid "Interface Configuration"
-msgstr "Configuration de l'interface"
-
-msgid "Interface required"
-msgstr "Interface nécessaire"
-
-msgid "Interfaces"
-msgstr "Interfaces"
-
-msgid "Lifetime"
-msgstr "Durée de vie"
-
-msgid "Link MTU"
-msgstr "MTU du lien"
-
-msgid "Managed flag"
-msgstr "Indicateur de gestion"
-
-msgid "Max. interval"
-msgstr "Intervalle Max"
-
-msgid "Maximum advertisement interval"
-msgstr "Intervalle maximum de publication"
-
-msgid "Minimum advertisement delay"
-msgstr "Délai de publication minimum"
-
-msgid "Minimum advertisement interval"
-msgstr "Intervalle minimum de publication"
-
-msgid "Mobile IPv6"
-msgstr "IPv6 Mobile"
-
-msgid "Mobile IPv6 interval option"
-msgstr "Option d'intervalle pour l'IPv6 Mobile"
-
-msgid "Mobile IPv6 router registration"
-msgstr "Enregistrement du routeur pour IPv6 Mobile"
-
-msgid "Multicast"
-msgstr "Multicast"
-
-msgid "On-link"
-msgstr "lié-au-support (On-link)"
-
-msgid "On-link determination"
-msgstr "Détermination de la liaison-au-support (On-link)"
-
-msgid "Preference"
-msgstr "Préférence"
-
-msgid "Preferred lifetime"
-msgstr "Durée de vie préférée"
-
-msgid "Prefix"
-msgstr "Préfixe"
-
-msgid "Prefix Configuration"
-msgstr "Configuration du préfixe"
-
-msgid "Prefixes"
-msgstr "Préfixes"
-
-msgid "RDNSS"
-msgstr "RDNSS"
-
-msgid "RDNSS Configuration"
-msgstr "Configuration RDNSS"
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - Interface %q"
-
-msgid "Radvd - Prefix"
-msgstr "Radvd - Préfixe"
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr "Radvd - Routage"
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-"Radvd est un démon de publication de routage pour IPv6. Il écoute des "
-"sollicitations de routage (Router Sollicitation) et envoie des publications "
-"de routage (Router Advertisement) comme décrit dans la RFC 4861."
-
-msgid "Reachable time"
-msgstr "temps d'accès"
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-"Restreint la communication aux clients spécifiés, laissez vide pour utiliser "
-"le multicast"
-
-msgid "Retransmit timer"
-msgstr "Délai de retransmission"
-
-msgid "Route Configuration"
-msgstr "Configuration du routage"
-
-msgid "Routes"
-msgstr "Routes"
-
-msgid "Source link-layer address"
-msgstr "Adresse-source de niveau lien"
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-"Décrit le nom d'une interface logique de laquelle le préfixe 6to4 sera "
-"déduit. Les adresses IPv4 des interfaces publiques sont combinées avec "
-"2002::/3 et la valeur de l'option de préfixe"
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-"Indique le nom de l'interface logique auquelle cette section est rattachée"
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr "Indique la préférence associée au routeur par défaut"
-
-msgid "Suffix"
-msgstr "Suffixe"
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-"Temps maximum autorisé entre deux émissions de publications multicast non "
-"sollicitées du routeur depuis cette interface, en secondes"
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-"Temps minimum autorisé entre deux émissions de publications multicast du "
-"routeur depuis cette interface, en secondes"
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-"Temps minimum autorisé entre deux émissions de publications multicast non "
-"sollicitées du routeur depuis cette interface, en secondes"
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr "Préférence pour l'agent personnel (Home Agent) envoyant ce RA"
-
-msgid "Timing"
-msgstr "Délai"
-
-msgid "Unicast only"
-msgstr "Unicast seulement"
-
-msgid "Valid lifetime"
-msgstr "Durée de la validité"
-
-msgid "Validity time"
-msgstr "Durée de validité"
-
-msgid "default"
-msgstr "Défaut"
-
-msgid "high"
-msgstr "haut"
-
-msgid "low"
-msgstr "bas"
-
-msgid "medium"
-msgstr "moyen"
-
-msgid "no"
-msgstr "non"
-
-msgid "yes"
-msgstr "oui"
-
-#~ msgid "Advertised IPv6 prefix"
-#~ msgstr "Préfixe IPv6 publié"
-
-#~ msgid ""
-#~ "Advertised IPv6 prefix. If empty, the current interface prefix is used"
-#~ msgstr ""
-#~ "Préfixe IPv6 publié. S'il est vide, le préfixe actuel de l'interface est "
-#~ "utilisé"
-
-#~ msgid ""
-#~ "Advertises the length of time in seconds that addresses generated from "
-#~ "the prefix via stateless address autoconfiguration remain preferred. Use "
-#~ "0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Publie la durée en secondes pendant laquelle les adresses générées depuis "
-#~ "le préfixe via l'auto-configuration sans état restent préférées. 0 "
-#~ "indique une durée infinie"
-
-#~ msgid ""
-#~ "Advertises the length of time in seconds that the prefix is valid for the "
-#~ "purpose of on-link determination. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Publie la durée en secondes pendant laquelle le préfixe est valable pour "
-#~ "le choix des adresses liées-au-support (on-link). 0 indique une durée "
-#~ "infinie"
-
-#~ msgid ""
-#~ "Indicates whether that RDNSS continues to be available to hosts even if "
-#~ "they moved to a different subnet"
-#~ msgstr ""
-#~ "Indique si le RDNSS contine d'être disponible aux hôtes même s'ils ont "
-#~ "migré sur un sous-réseau différent"
-
-#~ msgid "Open"
-#~ msgstr "Ouvert"
-
-#~ msgid ""
-#~ "Specifies the lifetime associated with the route in seconds. Use 0 to "
-#~ "specify an infinite lifetime"
-#~ msgstr ""
-#~ "Précise la durée de vie d'une route, en secondes. Utiliser 0 pour une "
-#~ "durée de vie infinie"
-
-#~ msgid ""
-#~ "Specifies the maximum duration how long the DNSSL entries are used for "
-#~ "name resolution. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Indique la durée maximum d'utilisation des entrées DNSSL pour la "
-#~ "résolution de nom. Utiliser 0 pour une durée infinie"
-
-#~ msgid ""
-#~ "Specifies the maximum duration how long the RDNSS entries are used for "
-#~ "name resolution. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Indique la durée maximum d'utilisation des entrées RDNSS pour la "
-#~ "résolution de nom. Utiliser 0 pour une durée infinie"
diff --git a/applications/luci-app-radvd/po/he/radvd.po b/applications/luci-app-radvd/po/he/radvd.po
deleted file mode 100644 (file)
index 63ec168..0000000
+++ /dev/null
@@ -1,367 +0,0 @@
-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"
-
-msgid "6to4 interface"
-msgstr ""
-
-msgid "Address"
-msgstr ""
-
-msgid "Addresses"
-msgstr ""
-
-msgid "Advanced"
-msgstr ""
-
-msgid "Advertise Home Agent flag"
-msgstr ""
-
-msgid "Advertise router address"
-msgstr ""
-
-msgid "Advertised Domain Suffixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-
-msgid "Advertised IPv6 prefixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr ""
-
-msgid "Autonomous"
-msgstr ""
-
-msgid "Clients"
-msgstr ""
-
-msgid "Configuration flag"
-msgstr ""
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr ""
-
-msgid "DNSSL Configuration"
-msgstr ""
-
-msgid "Default lifetime"
-msgstr ""
-
-msgid "Default preference"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Enable advertisements"
-msgstr ""
-
-msgid "Enables router advertisements and solicitations"
-msgstr ""
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr ""
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Interface Configuration"
-msgstr ""
-
-msgid "Interface required"
-msgstr ""
-
-msgid "Interfaces"
-msgstr ""
-
-msgid "Lifetime"
-msgstr ""
-
-msgid "Link MTU"
-msgstr ""
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr ""
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr ""
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr ""
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr ""
-
-msgid "Prefix Configuration"
-msgstr ""
-
-msgid "Prefixes"
-msgstr ""
-
-msgid "RDNSS"
-msgstr ""
-
-msgid "RDNSS Configuration"
-msgstr ""
-
-msgid "Radvd"
-msgstr ""
-
-msgid "Radvd - DNSSL"
-msgstr ""
-
-msgid "Radvd - Interface %q"
-msgstr ""
-
-msgid "Radvd - Prefix"
-msgstr ""
-
-msgid "Radvd - RDNSS"
-msgstr ""
-
-msgid "Radvd - Route"
-msgstr ""
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr ""
-
-msgid "Routes"
-msgstr ""
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr ""
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr ""
-
-msgid "Unicast only"
-msgstr ""
-
-msgid "Valid lifetime"
-msgstr ""
-
-msgid "Validity time"
-msgstr ""
-
-msgid "default"
-msgstr ""
-
-msgid "high"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "no"
-msgstr ""
-
-msgid "yes"
-msgstr ""
diff --git a/applications/luci-app-radvd/po/hu/radvd.po b/applications/luci-app-radvd/po/hu/radvd.po
deleted file mode 100644 (file)
index 90aa4ba..0000000
+++ /dev/null
@@ -1,372 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-01-31 12:14+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"
-
-msgid "6to4 interface"
-msgstr "6to4 interfész"
-
-msgid "Address"
-msgstr "Cím"
-
-msgid "Addresses"
-msgstr "Címek"
-
-msgid "Advanced"
-msgstr "Fejlett"
-
-msgid "Advertise Home Agent flag"
-msgstr "Otthoni Ügynök jelző közzététele"
-
-msgid "Advertise router address"
-msgstr "Útválasztó cím közzététele"
-
-msgid "Advertised Domain Suffixes"
-msgstr "Közzétett domain utótagok"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-
-msgid "Advertised IPv6 prefixes"
-msgstr "Közzétett IPv6 előtagok"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-"Közzétett IPv6 előtagok. Ha üres, a jelenlegi interfész előtag lesz "
-"használva."
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr ""
-
-msgid "Autonomous"
-msgstr ""
-
-msgid "Clients"
-msgstr ""
-
-msgid "Configuration flag"
-msgstr ""
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "DNSSL konfiguráció"
-
-msgid "Default lifetime"
-msgstr "Alapértelemezett élettartam"
-
-msgid "Default preference"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Enable advertisements"
-msgstr ""
-
-msgid "Enables router advertisements and solicitations"
-msgstr ""
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr ""
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Interface Configuration"
-msgstr ""
-
-msgid "Interface required"
-msgstr ""
-
-msgid "Interfaces"
-msgstr "Interfészek"
-
-msgid "Lifetime"
-msgstr "Élettartam"
-
-msgid "Link MTU"
-msgstr "Kapcsolat MTU"
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr ""
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr ""
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr ""
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr ""
-
-msgid "Prefix Configuration"
-msgstr ""
-
-msgid "Prefixes"
-msgstr ""
-
-msgid "RDNSS"
-msgstr "RDNSS"
-
-msgid "RDNSS Configuration"
-msgstr "RDNSS beállítások"
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - %q interfész"
-
-msgid "Radvd - Prefix"
-msgstr "Radvd - Előtag"
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr "Radvd - Útvonal"
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr "Útvonal beállítás"
-
-msgid "Routes"
-msgstr "Útvonalak"
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr ""
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr "Időzítés"
-
-msgid "Unicast only"
-msgstr ""
-
-msgid "Valid lifetime"
-msgstr ""
-
-msgid "Validity time"
-msgstr ""
-
-msgid "default"
-msgstr "alípértelmezett"
-
-msgid "high"
-msgstr "magas"
-
-msgid "low"
-msgstr "alacsony"
-
-msgid "medium"
-msgstr "közepes"
-
-msgid "no"
-msgstr "nem"
-
-msgid "yes"
-msgstr "igen"
diff --git a/applications/luci-app-radvd/po/it/radvd.po b/applications/luci-app-radvd/po/it/radvd.po
deleted file mode 100644 (file)
index cda09b7..0000000
+++ /dev/null
@@ -1,374 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-02-10 19:21+0200\n"
-"Last-Translator: Francesco <3gasas@gmail.com>\n"
-"Language-Team: German\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"
-
-msgid "6to4 interface"
-msgstr "Interfaccia 6to4"
-
-msgid "Address"
-msgstr "Indirizzo"
-
-msgid "Addresses"
-msgstr "Indirizzi"
-
-msgid "Advanced"
-msgstr "Avanzato"
-
-msgid "Advertise Home Agent flag"
-msgstr "Advertise Home Agent flag"
-
-msgid "Advertise router address"
-msgstr "Annuncia indirizzo router"
-
-msgid "Advertised Domain Suffixes"
-msgstr "Annuncia Suffissi Dominio"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-"Annuncia RDNSS IPv6. Se vuoto, l'indirizzo IPv6 attuale dell'interfaccia "
-"verrà usato"
-
-msgid "Advertised IPv6 prefixes"
-msgstr "Prefissi IPv6 Annunciati"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-"Prefissi IPv6 Annunciati. Se vuoto, il prefisso dell'interfaccia attuale "
-"verrà usato"
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr "Annuncia la capacità dell'Agente Home IPv6 Mobile (RFC3775)"
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr ""
-
-msgid "Autonomous"
-msgstr ""
-
-msgid "Clients"
-msgstr ""
-
-msgid "Configuration flag"
-msgstr ""
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr ""
-
-msgid "DNSSL Configuration"
-msgstr ""
-
-msgid "Default lifetime"
-msgstr ""
-
-msgid "Default preference"
-msgstr ""
-
-msgid "Enable"
-msgstr "Abilita"
-
-msgid "Enable advertisements"
-msgstr ""
-
-msgid "Enables router advertisements and solicitations"
-msgstr ""
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr ""
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Interface Configuration"
-msgstr ""
-
-msgid "Interface required"
-msgstr ""
-
-msgid "Interfaces"
-msgstr ""
-
-msgid "Lifetime"
-msgstr ""
-
-msgid "Link MTU"
-msgstr ""
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr ""
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr ""
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr ""
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr ""
-
-msgid "Prefix Configuration"
-msgstr ""
-
-msgid "Prefixes"
-msgstr ""
-
-msgid "RDNSS"
-msgstr ""
-
-msgid "RDNSS Configuration"
-msgstr ""
-
-msgid "Radvd"
-msgstr ""
-
-msgid "Radvd - DNSSL"
-msgstr ""
-
-msgid "Radvd - Interface %q"
-msgstr ""
-
-msgid "Radvd - Prefix"
-msgstr ""
-
-msgid "Radvd - RDNSS"
-msgstr ""
-
-msgid "Radvd - Route"
-msgstr ""
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr ""
-
-msgid "Routes"
-msgstr ""
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr ""
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr ""
-
-msgid "Unicast only"
-msgstr ""
-
-msgid "Valid lifetime"
-msgstr ""
-
-msgid "Validity time"
-msgstr ""
-
-msgid "default"
-msgstr ""
-
-msgid "high"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "no"
-msgstr ""
-
-msgid "yes"
-msgstr ""
diff --git a/applications/luci-app-radvd/po/ja/radvd.po b/applications/luci-app-radvd/po/ja/radvd.po
deleted file mode 100644 (file)
index 35cde34..0000000
+++ /dev/null
@@ -1,378 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-04-16 09:35+0200\n"
-"Last-Translator: Kentaro <kentaro.matsuyama@gmail.com>\n"
-"Language-Team: German\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"
-
-msgid "6to4 interface"
-msgstr "6to4 インターフェース"
-
-msgid "Address"
-msgstr "アドレス"
-
-msgid "Addresses"
-msgstr "アドレス"
-
-msgid "Advanced"
-msgstr "詳細設定"
-
-msgid "Advertise Home Agent flag"
-msgstr "ホームエージェントフラグの広告"
-
-msgid "Advertise router address"
-msgstr "ルーターアドレスの広告"
-
-msgid "Advertised Domain Suffixes"
-msgstr "広告するドメインサフィックスを設定します。"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-"広告するIPv6 RDNSSを設定します。未設定の場合、現在のインターフェースのIPv6 ア"
-"ドレスに設定します。"
-
-msgid "Advertised IPv6 prefixes"
-msgstr "広告するIPv6 プレフィクスを設定します"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-"広告するIPv6 プレフィクスを設定します。未設定の場合、現在のインターフェースの"
-"プレフィクスに設定します。"
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr "モバイルIPv6 ホームエージェント機能の広告を行います。 (RFC3775)"
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr "広告"
-
-msgid "Autonomous"
-msgstr "Autonomous"
-
-msgid "Clients"
-msgstr "クライアント"
-
-msgid "Configuration flag"
-msgstr "Configuration フラグ"
-
-msgid "Current hop limit"
-msgstr "現在のホップ数制限"
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "DNSSL 設定"
-
-msgid "Default lifetime"
-msgstr "標準有効時間"
-
-msgid "Default preference"
-msgstr "標準優先度設定"
-
-msgid "Enable"
-msgstr "有効"
-
-msgid "Enable advertisements"
-msgstr "広告を有効にする"
-
-msgid "Enables router advertisements and solicitations"
-msgstr "ルータ広告および要請を有効にする"
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr "基本設定"
-
-msgid "Home Agent information"
-msgstr "ホームエージェント 情報"
-
-msgid "Home Agent lifetime"
-msgstr "ホームエージェント 有効時間"
-
-msgid "Home Agent preference"
-msgstr "ホームエージェント 優先度"
-
-msgid "Include Home Agent Information in the RA"
-msgstr "ルータ広告 (RA) にホームエージェント情報を含める"
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr "インターフェース"
-
-msgid "Interface Configuration"
-msgstr "インターフェース設定"
-
-msgid "Interface required"
-msgstr ""
-
-msgid "Interfaces"
-msgstr "インターフェース"
-
-msgid "Lifetime"
-msgstr "有効時間"
-
-msgid "Link MTU"
-msgstr "リンクMTU"
-
-msgid "Managed flag"
-msgstr "Managed フラグ"
-
-msgid "Max. interval"
-msgstr ""
-
-msgid "Maximum advertisement interval"
-msgstr "ルータ要請最大送信間隔"
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr "ルータ要請最低送信間隔"
-
-msgid "Mobile IPv6"
-msgstr "モバイル IPv6"
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr "モバイル IPv6 ルータ登録"
-
-msgid "Multicast"
-msgstr "マルチキャスト"
-
-msgid "On-link"
-msgstr "On-link"
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr "優先度"
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr "プレフィクス"
-
-msgid "Prefix Configuration"
-msgstr "プレフィクス設定"
-
-msgid "Prefixes"
-msgstr "プレフィクス"
-
-msgid "RDNSS"
-msgstr "RDNSS"
-
-msgid "RDNSS Configuration"
-msgstr "RDNSS 設定"
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - インターフェース %q"
-
-msgid "Radvd - Prefix"
-msgstr "Radvd - プレフィクス"
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr "Radvd - 経路"
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-"Radvdは、IPv6用のルータ広告デーモンです。RadvdはRFC 4861に規定されている、"
-"ルータ要請の受信と、ルータ広告の送信を行います。"
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-"設定されたクライアントに対してのみ通信を行います。設定しない場合、マルチキャ"
-"ストを行います。"
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr "経路設定"
-
-msgid "Routes"
-msgstr "経路"
-
-msgid "Source link-layer address"
-msgstr "送信元リンク層アドレス"
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr "このセクションで使用する論理インターフェース名を設定してください。"
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr "サフィックス"
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr "タイミング設定"
-
-msgid "Unicast only"
-msgstr "ユニキャストのみ"
-
-msgid "Valid lifetime"
-msgstr "有効時間の設定"
-
-msgid "Validity time"
-msgstr "有効時間"
-
-msgid "default"
-msgstr "default"
-
-msgid "high"
-msgstr "高"
-
-msgid "low"
-msgstr "低"
-
-msgid "medium"
-msgstr "中"
-
-msgid "no"
-msgstr "いいえ"
-
-msgid "yes"
-msgstr "はい"
diff --git a/applications/luci-app-radvd/po/ms/radvd.po b/applications/luci-app-radvd/po/ms/radvd.po
deleted file mode 100644 (file)
index 63f8fa0..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2010-11-21 04:06+0100\n"
-"Last-Translator:  <jow@openwrt.org>\n"
-"Language-Team: German\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"
-
-msgid "6to4 interface"
-msgstr ""
-
-msgid "Address"
-msgstr ""
-
-msgid "Addresses"
-msgstr ""
-
-msgid "Advanced"
-msgstr ""
-
-msgid "Advertise Home Agent flag"
-msgstr ""
-
-msgid "Advertise router address"
-msgstr ""
-
-msgid "Advertised Domain Suffixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-
-msgid "Advertised IPv6 prefixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr ""
-
-msgid "Autonomous"
-msgstr ""
-
-msgid "Clients"
-msgstr ""
-
-msgid "Configuration flag"
-msgstr ""
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr ""
-
-msgid "DNSSL Configuration"
-msgstr ""
-
-msgid "Default lifetime"
-msgstr ""
-
-msgid "Default preference"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Enable advertisements"
-msgstr ""
-
-msgid "Enables router advertisements and solicitations"
-msgstr ""
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr ""
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Interface Configuration"
-msgstr ""
-
-msgid "Interface required"
-msgstr ""
-
-msgid "Interfaces"
-msgstr ""
-
-msgid "Lifetime"
-msgstr ""
-
-msgid "Link MTU"
-msgstr ""
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr ""
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr ""
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr ""
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr ""
-
-msgid "Prefix Configuration"
-msgstr ""
-
-msgid "Prefixes"
-msgstr ""
-
-msgid "RDNSS"
-msgstr ""
-
-msgid "RDNSS Configuration"
-msgstr ""
-
-msgid "Radvd"
-msgstr ""
-
-msgid "Radvd - DNSSL"
-msgstr ""
-
-msgid "Radvd - Interface %q"
-msgstr ""
-
-msgid "Radvd - Prefix"
-msgstr ""
-
-msgid "Radvd - RDNSS"
-msgstr ""
-
-msgid "Radvd - Route"
-msgstr ""
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr ""
-
-msgid "Routes"
-msgstr ""
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr ""
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr ""
-
-msgid "Unicast only"
-msgstr ""
-
-msgid "Valid lifetime"
-msgstr ""
-
-msgid "Validity time"
-msgstr ""
-
-msgid "default"
-msgstr ""
-
-msgid "high"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "no"
-msgstr ""
-
-msgid "yes"
-msgstr ""
diff --git a/applications/luci-app-radvd/po/no/radvd.po b/applications/luci-app-radvd/po/no/radvd.po
deleted file mode 100644 (file)
index 1c43442..0000000
+++ /dev/null
@@ -1,435 +0,0 @@
-msgid ""
-msgstr ""
-"Last-Translator: Lars Hardy <lars.hardy@gmail.com>\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-msgid "6to4 interface"
-msgstr "6til4 grensesnitt"
-
-msgid "Address"
-msgstr "Adresse"
-
-msgid "Addresses"
-msgstr "Adresser"
-
-msgid "Advanced"
-msgstr "Avansert"
-
-msgid "Advertise Home Agent flag"
-msgstr "Annonser Home Agent flagg"
-
-msgid "Advertise router address"
-msgstr "Annonser ruteradressen"
-
-msgid "Advertised Domain Suffixes"
-msgstr "Annonserte Domenesuffikser"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-"Annonsert IPv6 RDNSS. Hvis tom, brukes den gjeldende IPv6-adressen til "
-"grensesnittet"
-
-msgid "Advertised IPv6 prefixes"
-msgstr "Annonserte IPv6 prefikser"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-"Annonserte IPv6 prefikser. Hvis tom, brukes gjeldende grensesnitt prefiks"
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr "Annonserer Mobile IPv6 Home Agent muligheter (RFC3775)"
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr "Annonserer Mobile Router registration muligheter (NEMO Basic)"
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-"Annonserer antatt tilgjengelighet i millisekunder for naboer i RA. 0 "
-"deaktiverer annonsenering av tilgjengelighet"
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-"Annonserer standard Hop Count verdien for utgående unicast pakker i RA. 0 "
-"deaktierer annonsering av hopcount"
-
-msgid "Advertises the default router preference"
-msgstr "Annonserer standard ruter preferanse"
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr "Annonserer angitt link MTU i RA. 0 deaktiverer annonsereing av MTU"
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-"Annonserer levetiden for standard ruter i sekunder. 0 indikerer at noden "
-"ikke er standard ruter"
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-"Annonserer tiden i sekunder der ruteren tilbyr Mobile IPv6 Home Agent "
-"tjenester"
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-"Annonserer ventetiden i millisekunder mellom Neighbor Solicitation meldinger "
-"i RA. 0 deaktiverer omsendte annonseringer"
-
-msgid "Advertising"
-msgstr "Annonsering"
-
-msgid "Autonomous"
-msgstr "Selvstendig"
-
-msgid "Clients"
-msgstr "Klienter"
-
-msgid "Configuration flag"
-msgstr "Konfigurasjon flagg"
-
-msgid "Current hop limit"
-msgstr "Nåværende hop grense"
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "DNSSL Konfigurasjon"
-
-msgid "Default lifetime"
-msgstr "Standard levetid"
-
-msgid "Default preference"
-msgstr "Standard prepreferanse"
-
-msgid "Enable"
-msgstr "Aktiver"
-
-msgid "Enable advertisements"
-msgstr "Aktiver annonsering"
-
-msgid "Enables router advertisements and solicitations"
-msgstr "Aktiverer ruter annonsering og anmodning"
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-"Aktiverer den ekstra 'stateful' administrerte autokonfigurasjon protokoll "
-"(RFC2462)"
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-"Aktiverer autokonfigurasjon for annen ikke adresse informasjon (RFC2462)"
-
-msgid "General"
-msgstr "Generell"
-
-msgid "Home Agent information"
-msgstr "Home Agen informasjon"
-
-msgid "Home Agent lifetime"
-msgstr "Home Agent levetid"
-
-msgid "Home Agent preference"
-msgstr "Home Agent preferanse"
-
-msgid "Include Home Agent Information in the RA"
-msgstr "Inkluder Home Agent informasjon i RA"
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr "Inkluder Mobile IPv6 annonserings intervall alternativer til RA"
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr "Inkluder utgående grensesnitts link-layer adresse til RA"
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-"Indikerer at grensesnittets adresse er sendt istedet for nettverks "
-"prefikset, noe som er nødvendig for Mobile IPv6"
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-"Indikerer at underliggende link ikke er broadcast kapabel, dette forhindrer "
-"spontane annonsering"
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-"Indikerer at dette prefikset kan bli brukt for autonom adresse konfigurasjon "
-"(RFC4862)"
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-"Indikerer at dette prefikset kan bli brukt for on-link bestemmelse (RFC4861)"
-
-msgid "Interface"
-msgstr "Grensesnitt"
-
-msgid "Interface Configuration"
-msgstr "Grensesnitt Konfigurasjon"
-
-msgid "Interface required"
-msgstr "Grenesnitt er nødvendig"
-
-msgid "Interfaces"
-msgstr "Grensesnitt"
-
-msgid "Lifetime"
-msgstr "Levetid"
-
-msgid "Link MTU"
-msgstr "Link MTU"
-
-msgid "Managed flag"
-msgstr "Managed flagg"
-
-msgid "Max. interval"
-msgstr "Maks. intervall"
-
-msgid "Maximum advertisement interval"
-msgstr "Maksimum annonsering intervall"
-
-msgid "Minimum advertisement delay"
-msgstr "Minimum annonsering forsinkelse"
-
-msgid "Minimum advertisement interval"
-msgstr "Minimum annonsering intervall"
-
-msgid "Mobile IPv6"
-msgstr "Mobile IPv6"
-
-msgid "Mobile IPv6 interval option"
-msgstr "Mobile IPv6 intervall alternativer"
-
-msgid "Mobile IPv6 router registration"
-msgstr "Mobile IPv6 ruter registrering"
-
-msgid "Multicast"
-msgstr "Multicast"
-
-msgid "On-link"
-msgstr "On-link"
-
-msgid "On-link determination"
-msgstr "On-link bestemmelse"
-
-msgid "Preference"
-msgstr "Preferanse"
-
-msgid "Preferred lifetime"
-msgstr "Foretrukket levetid"
-
-msgid "Prefix"
-msgstr "Prefiks"
-
-msgid "Prefix Configuration"
-msgstr "Prefiks Konfigurasjon"
-
-msgid "Prefixes"
-msgstr "Prefikser"
-
-msgid "RDNSS"
-msgstr "RDNSS"
-
-msgid "RDNSS Configuration"
-msgstr "RDNSS Konfigurasjon"
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - Grensesnitt %q"
-
-msgid "Radvd - Prefix"
-msgstr "Radvd - Prefiks"
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr "Radvd - Rute"
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-"Radvd er en ruter annonserings tjeneste for IPv6. Den lytter etter ruter "
-"anmodninger og sender ruter annonsering som beskrevet i RFC 4861"
-
-msgid "Reachable time"
-msgstr "Tilgjengelighet tid"
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-"Begrens kommunikasjonen til klienter spesifisert her, la stå tomt for å "
-"bruke multicast"
-
-msgid "Retransmit timer"
-msgstr "Omsendelse tidsmåler"
-
-msgid "Route Configuration"
-msgstr "Rute Konfigurasjon"
-
-msgid "Routes"
-msgstr "Ruter"
-
-msgid "Source link-layer address"
-msgstr "Kilde link-lag adresse"
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-"Angir et logisk grensenittsnavn å hente 6til4 prefiks fra. Grensesnittets "
-"offentlige IPv4 adresse er kombinert med 2002::/3 og verdien av prefiks "
-"alternativet"
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr "Angir det logiske grensesnittsnavnet som denne seksjonen tilhører"
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr "Angir preferanse knyttet til standard ruteren"
-
-msgid "Suffix"
-msgstr "Suffiks"
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-"Maksimal tillatt tid mellom sending av spontane multicast annonseringer fra "
-"grensesnittet, i sekunder"
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-"Minimum tillatt tid mellom sending av multicast annonseringer fra "
-"grensesnittet, i sekunder"
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-"Minimum tillatt tid mellom sending av spontane multicast annonseringer fra "
-"grensesnittet, i sekunder"
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr "Referansen til Home Agenten som sender denne RA"
-
-msgid "Timing"
-msgstr "Timing"
-
-msgid "Unicast only"
-msgstr "Kun Unikast"
-
-msgid "Valid lifetime"
-msgstr "Gyldig levetid"
-
-msgid "Validity time"
-msgstr "Gyldighetsperiode"
-
-msgid "default"
-msgstr "standard"
-
-msgid "high"
-msgstr "høy"
-
-msgid "low"
-msgstr "lav"
-
-msgid "medium"
-msgstr "medium"
-
-msgid "no"
-msgstr "nei"
-
-msgid "yes"
-msgstr "ja"
-
-#~ msgid ""
-#~ "Advertises the length of time in seconds that addresses generated from "
-#~ "the prefix via stateless address autoconfiguration remain preferred. Use "
-#~ "0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Annonserer tiden i sekunder hvor adresser generert ut fra prefikset via "
-#~ "tilstandsløs autokonfigurasjon er foretrukket. Bruk 0 for ubegrenset "
-#~ "levetid"
-
-#~ msgid ""
-#~ "Advertises the length of time in seconds that the prefix is valid for the "
-#~ "purpose of on-link determination. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Annonserer tiden i sekunder hvor prefikset er gyldig, hvor formålet er on-"
-#~ "link fastsettelse. Bruk 0 for ubegrenset levetid."
-
-#~ msgid ""
-#~ "Specifies the lifetime associated with the route in seconds. Use 0 to "
-#~ "specify an infinite lifetime"
-#~ msgstr ""
-#~ "Angir levetiden tilknyttet ruten i sekunder. Bruk 0 for ubegrenset levetid"
-
-#~ msgid ""
-#~ "Specifies the maximum duration how long the DNSSL entries are used for "
-#~ "name resolution. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Angir den maksimale varighet av DNSSL navne oppslag. Bruk 0 for "
-#~ "ubegrenset levetid"
-
-#~ msgid ""
-#~ "Specifies the maximum duration how long the RDNSS entries are used for "
-#~ "name resolution. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Angir den maksimale varighet av RDNSS navne oppslag. Bruk 0 for "
-#~ "ubegrenset levetid"
diff --git a/applications/luci-app-radvd/po/pl/radvd.po b/applications/luci-app-radvd/po/pl/radvd.po
deleted file mode 100644 (file)
index a080c97..0000000
+++ /dev/null
@@ -1,377 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-05 04:35+0200\n"
-"Last-Translator: piosl <sleczek.piotr@gmail.com>\n"
-"Language-Team: German\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"
-
-# Na polskiej Wikipedii jest artykuł "6to4", więc chyba ok.
-msgid "6to4 interface"
-msgstr "Interfejs 6to4"
-
-msgid "Address"
-msgstr "Adres"
-
-msgid "Addresses"
-msgstr "Adresy"
-
-msgid "Advanced"
-msgstr "Zaawansowane"
-
-msgid "Advertise Home Agent flag"
-msgstr ""
-
-msgid "Advertise router address"
-msgstr "Rozgłaszaj adres routera"
-
-msgid "Advertised Domain Suffixes"
-msgstr "Rozgłaszana Domena Rozszerzenia"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-"Rozgłaszane IPv6 RDNSS. Jeżeli jest puste, używany jest aktualny adres IPv6 "
-"interfejsu"
-
-msgid "Advertised IPv6 prefixes"
-msgstr "Rozgłaszany prefixy IPv6 "
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-"Rozgłaszany prefixy IPv6. Jeżeli jest puste, używany jest aktualny prefix "
-"interfejsu"
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr "Rozgłaszanie"
-
-msgid "Autonomous"
-msgstr "Autonomiczny"
-
-msgid "Clients"
-msgstr "Klienci"
-
-msgid "Configuration flag"
-msgstr ""
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "Konfiguracja DNSSL"
-
-msgid "Default lifetime"
-msgstr "Domyślna żywotność"
-
-msgid "Default preference"
-msgstr "preferencje domyślne"
-
-msgid "Enable"
-msgstr "umożliwiać"
-
-msgid "Enable advertisements"
-msgstr ""
-
-msgid "Enables router advertisements and solicitations"
-msgstr ""
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr "Ogólny"
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr "Interfejs"
-
-msgid "Interface Configuration"
-msgstr "Konfiguracja interfejsu"
-
-msgid "Interface required"
-msgstr "wymagany interfejs"
-
-msgid "Interfaces"
-msgstr "Interfejs"
-
-msgid "Lifetime"
-msgstr "Dożywotni"
-
-msgid "Link MTU"
-msgstr ""
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr "Max. Przedział"
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr ""
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr ""
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr "preferencje"
-
-msgid "Preferred lifetime"
-msgstr "preferowana żywotność"
-
-msgid "Prefix"
-msgstr ""
-
-msgid "Prefix Configuration"
-msgstr ""
-
-msgid "Prefixes"
-msgstr ""
-
-msgid "RDNSS"
-msgstr "RDNSS"
-
-msgid "RDNSS Configuration"
-msgstr "Konfiguracja RDNSS"
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - interfejs %q"
-
-msgid "Radvd - Prefix"
-msgstr ""
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr ""
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr ""
-
-msgid "Routes"
-msgstr ""
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr ""
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-#, fuzzy
-msgid "Timing"
-msgstr "Timing"
-
-msgid "Unicast only"
-msgstr "Tylko unicast"
-
-msgid "Valid lifetime"
-msgstr "ważne dożywotnio"
-
-msgid "Validity time"
-msgstr "czas ważności"
-
-msgid "default"
-msgstr "domyślne"
-
-msgid "high"
-msgstr "wysoki"
-
-msgid "low"
-msgstr "niski"
-
-msgid "medium"
-msgstr "średni"
-
-msgid "no"
-msgstr "nie"
-
-msgid "yes"
-msgstr "tak"
diff --git a/applications/luci-app-radvd/po/pt-br/radvd.po b/applications/luci-app-radvd/po/pt-br/radvd.po
deleted file mode 100644 (file)
index 62c63bb..0000000
+++ /dev/null
@@ -1,469 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-10-17 23:13+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
-"Language-Team: German\n"
-"Language: pt_BR\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
-
-msgid "6to4 interface"
-msgstr "Interface 6to4"
-
-msgid "Address"
-msgstr "Endereço"
-
-msgid "Addresses"
-msgstr "Endereços"
-
-msgid "Advanced"
-msgstr "Avançado"
-
-msgid "Advertise Home Agent flag"
-msgstr "Anuncie a opção de Agente Local"
-
-msgid "Advertise router address"
-msgstr "Anuncie o endereço do roteador"
-
-msgid "Advertised Domain Suffixes"
-msgstr "Anuncie o Sufixo do Domínio"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-"Anuncia IPv6 RDNSS. Se vazio, o endereço IPv6 atual da interface será usado"
-
-msgid "Advertised IPv6 prefixes"
-msgstr "Anuncie os prefixos IPv6"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-"Anuncie os prefixos IPv6. Se vazio, o prefixo da interface atual será usado"
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr "Anuncia a capacidade de Agente Local para IPv6 Móvel (RFC3775)"
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr "Anuncia a capacidade de registro de Roteador Móvel (NEMO Básico)"
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-"Se especificado, anuncia no RA o tempo assumido de alcance dos vizinhos, em "
-"milissegundos. Especifique 0 para desabilita este anuncio"
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-"Anuncia no RA o valor padrão para a contagem de saltos nos pacotes unicast "
-"saindo da rede. Especifique 0 para desabilita este anuncio"
-
-msgid "Advertises the default router preference"
-msgstr "Anuncia a preferência do roteador padrão"
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-"Anuncia no RA o MTU da conexão. Especifique 0 para desabilita este anuncio"
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-"Divulga a duração do tempo em segundos que endereços gerados a partir do "
-"prefixo através apátridas endereço autoconfiguração permanecem preferido."
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-"Divulga a duração do tempo em segundos que o prefixo é válido para o "
-"propósito de sobre-link determinado."
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-"Anuncia o período de tempo, em segundos, da validade do roteador padrão. "
-"Especifique 0 para período infinito"
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-"Anuncia o período de tempo, em segundos, que o roteador está oferecendo o "
-"serviço de Agente Local para IPv6 Móvel"
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-"Anuncia o tempo de espera, em milissegundos, entre mensagens de Solicitação "
-"de Vizinhos no RA. Especifique 0 para desabilitar a retransmissão do anúncio"
-
-msgid "Advertising"
-msgstr "Anúncio"
-
-msgid "Autonomous"
-msgstr "Autônomo"
-
-msgid "Clients"
-msgstr "Clientes"
-
-msgid "Configuration flag"
-msgstr "Marcação de configuração"
-
-msgid "Current hop limit"
-msgstr "Limite de saltos atual"
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "Configuração DNSSL"
-
-msgid "Default lifetime"
-msgstr "Validade padrão"
-
-msgid "Default preference"
-msgstr "Preferências padrão"
-
-msgid "Enable"
-msgstr "Habilita"
-
-msgid "Enable advertisements"
-msgstr "Habilita anúncios"
-
-msgid "Enables router advertisements and solicitations"
-msgstr "Habilita as solicitações e os anúncios do roteador"
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-"Habilita o protoloco de autoconfiguração administrada com estado (RFC2462)"
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-"Habilita a autoconfiguração de informação adicional, não endereço (RFC2462)"
-
-msgid "General"
-msgstr "Geral"
-
-msgid "Home Agent information"
-msgstr "Informação do Agente Local"
-
-msgid "Home Agent lifetime"
-msgstr "Validade do Agente Local"
-
-msgid "Home Agent preference"
-msgstr "Preferências do Agente Local"
-
-msgid "Include Home Agent Information in the RA"
-msgstr "Inclui Informação do Agente Local no RA"
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr "Inclui a opção de Intervalo de Anúncio de IPv6 Móvel no RA"
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr "Inclui o endereço da camada de rede da interface de saída no RA"
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-"Indica que o endereço da interface é enviado ao invés do prefixo de rede, "
-"como é necessário para IPv6 Móvel"
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-"Indica que a conexão abaixo não é capaz de utilizar broadcast. Isto inibe o "
-"envio de anúncios não solicitados"
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-"Indica que este prefixo pode ser usado para configuração autônoma de "
-"endereços (RFC4862)"
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-"Indica que este prefixo pode ser usado para a determinação da presença no "
-"enlace local (RFC4861)"
-
-msgid "Interface"
-msgstr "Interface"
-
-msgid "Interface Configuration"
-msgstr "Configuração da Interface"
-
-msgid "Interface required"
-msgstr "Requer uma interface"
-
-msgid "Interfaces"
-msgstr "Interfaces"
-
-msgid "Lifetime"
-msgstr "Validade"
-
-msgid "Link MTU"
-msgstr "MTU da conexão"
-
-msgid "Managed flag"
-msgstr "Marcação de gerenciado"
-
-msgid "Max. interval"
-msgstr "Intervalo Máximo"
-
-msgid "Maximum advertisement interval"
-msgstr "Intervalo máximo de anúncio"
-
-msgid "Minimum advertisement delay"
-msgstr "Atraso mínimo de anúncio"
-
-msgid "Minimum advertisement interval"
-msgstr "Intervalo mínimo de anúncio"
-
-msgid "Mobile IPv6"
-msgstr "IPv6 Móvel"
-
-msgid "Mobile IPv6 interval option"
-msgstr "Opçao de intervalo de IPv6 móvel"
-
-msgid "Mobile IPv6 router registration"
-msgstr "Registro de roteador IPv6 móvel"
-
-msgid "Multicast"
-msgstr "Multicast"
-
-msgid "On-link"
-msgstr "Presença no enlace local"
-
-msgid "On-link determination"
-msgstr "Determinação da presença no enlace local"
-
-msgid "Preference"
-msgstr "Preferência"
-
-msgid "Preferred lifetime"
-msgstr "Validade preferida"
-
-msgid "Prefix"
-msgstr "Prefixo"
-
-msgid "Prefix Configuration"
-msgstr "Configuração do Prefixo"
-
-msgid "Prefixes"
-msgstr "Prefixos"
-
-msgid "RDNSS"
-msgstr "RDNSS"
-
-msgid "RDNSS Configuration"
-msgstr "Configuração do RDNSS"
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - Interface %q"
-
-msgid "Radvd - Prefix"
-msgstr "advd - Prefixo"
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr "Radvd - Rota"
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-"Radvd é um programa de anúncio de rotas para IPv6. Ele escuta por "
-"solicitações de rota e envia anúncios de roteador (RA) como descrito em RFC "
-"4861."
-
-msgid "Reachable time"
-msgstr "Tempo de alcance"
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-"Restringe a comnuicação para clientes específicos. Deixe vazio para usar "
-"multicast"
-
-msgid "Retransmit timer"
-msgstr "Cronômetro de retransmissão"
-
-msgid "Route Configuration"
-msgstr "Configuração da Rota"
-
-msgid "Routes"
-msgstr "Rotas"
-
-msgid "Source link-layer address"
-msgstr "Endereço de origem da camada de enlace"
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-"Especifica o nome da interface lógica da qual será derivada o prefixo 6to4. "
-"O endereço IPv4 público da interface é combinado com 2002::/3 e o valor da "
-"opção de prefixo"
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr "Especifica o tempo de vida associado com o trajecto em segundos."
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr "Especifica o nome da interface lógica que esta seção pertence"
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-"Especifica a duração máxima de quanto tempo as entradas DNSSL são usados ​​"
-"para resolução de nomes."
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-"Especifica a duração máxima de quanto tempo as entradas RDNSS são usados ​​"
-"para resolução de nomes."
-
-msgid "Specifies the preference associated with the default router"
-msgstr "Especifica as preferências associadas com o roteador padrão"
-
-msgid "Suffix"
-msgstr "Sufixo"
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-"O tempo máximo, em segundos, permitido entre o envio de RAs não solicitados "
-"a partir desta interface"
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-"O tempo mínimo, em segundos, permitido entre o envio de RAs a partir desta "
-"interface"
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-"O tempo mínimo, em segundos, permitido entre o envio de RAs não solicitados "
-"a partir desta interface"
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr "As preferencias para o Agente Local enviando este RA"
-
-msgid "Timing"
-msgstr "Cronometragem"
-
-msgid "Unicast only"
-msgstr "Somente Unicast"
-
-msgid "Valid lifetime"
-msgstr "Duração da validade"
-
-msgid "Validity time"
-msgstr "Tempo de validade"
-
-msgid "default"
-msgstr "padrão"
-
-msgid "high"
-msgstr "alto"
-
-msgid "low"
-msgstr "baixo"
-
-msgid "medium"
-msgstr "médio"
-
-msgid "no"
-msgstr "não"
-
-msgid "yes"
-msgstr "sim"
-
-#~ msgid "Advertised IPv6 prefix"
-#~ msgstr "Anuncie o prefixo IPv6"
-
-#~ msgid ""
-#~ "Advertised IPv6 prefix. If empty, the current interface prefix is used"
-#~ msgstr ""
-#~ "Anuncie o prefixo IPv6. Se vazio, o prefixo da interface atual será usado"
-
-#~ msgid ""
-#~ "Advertises the length of time in seconds that addresses generated from "
-#~ "the prefix via stateless address autoconfiguration remain preferred. Use "
-#~ "0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Anuncia o período de tempo, em segundos, que endereços gerados a partir "
-#~ "do prefixo através da autoconfiguração de endereço sem estado terão "
-#~ "preferência. Especifique 0 para período infinito"
-
-#~ msgid ""
-#~ "Advertises the length of time in seconds that the prefix is valid for the "
-#~ "purpose of on-link determination. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Anuncia o período de tempo, em segundos, que o prefixo é valido para o "
-#~ "propósito de determinação da presença no enlace local. Especifique 0 para "
-#~ "período infinito"
-
-#~ msgid ""
-#~ "Indicates whether that RDNSS continues to be available to hosts even if "
-#~ "they moved to a different subnet"
-#~ msgstr ""
-#~ "Indica se o RDNSS continuará a estar disponível mesmo se o cliente for "
-#~ "movido para uma subrede diferente"
-
-#~ msgid "Open"
-#~ msgstr "Abrir"
-
-#~ msgid ""
-#~ "Specifies the lifetime associated with the route in seconds. Use 0 to "
-#~ "specify an infinite lifetime"
-#~ msgstr "Especifica a validade da rota em segundos. Utilize 0 para infinita"
-
-#~ msgid ""
-#~ "Specifies the maximum duration how long the DNSSL entries are used for "
-#~ "name resolution. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Especifica a validade da entrada DNSSL para a resolução de nomes. Utilize "
-#~ "0 para duração infinita"
-
-#~ msgid ""
-#~ "Specifies the maximum duration how long the RDNSS entries are used for "
-#~ "name resolution. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Especifica a validade da entrada RDNS para a resolução de nomes. Utilize "
-#~ "0 para duração infinita"
diff --git a/applications/luci-app-radvd/po/pt/radvd.po b/applications/luci-app-radvd/po/pt/radvd.po
deleted file mode 100644 (file)
index 63f8fa0..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2010-11-21 04:06+0100\n"
-"Last-Translator:  <jow@openwrt.org>\n"
-"Language-Team: German\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"
-
-msgid "6to4 interface"
-msgstr ""
-
-msgid "Address"
-msgstr ""
-
-msgid "Addresses"
-msgstr ""
-
-msgid "Advanced"
-msgstr ""
-
-msgid "Advertise Home Agent flag"
-msgstr ""
-
-msgid "Advertise router address"
-msgstr ""
-
-msgid "Advertised Domain Suffixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-
-msgid "Advertised IPv6 prefixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr ""
-
-msgid "Autonomous"
-msgstr ""
-
-msgid "Clients"
-msgstr ""
-
-msgid "Configuration flag"
-msgstr ""
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr ""
-
-msgid "DNSSL Configuration"
-msgstr ""
-
-msgid "Default lifetime"
-msgstr ""
-
-msgid "Default preference"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Enable advertisements"
-msgstr ""
-
-msgid "Enables router advertisements and solicitations"
-msgstr ""
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr ""
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Interface Configuration"
-msgstr ""
-
-msgid "Interface required"
-msgstr ""
-
-msgid "Interfaces"
-msgstr ""
-
-msgid "Lifetime"
-msgstr ""
-
-msgid "Link MTU"
-msgstr ""
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr ""
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr ""
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr ""
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr ""
-
-msgid "Prefix Configuration"
-msgstr ""
-
-msgid "Prefixes"
-msgstr ""
-
-msgid "RDNSS"
-msgstr ""
-
-msgid "RDNSS Configuration"
-msgstr ""
-
-msgid "Radvd"
-msgstr ""
-
-msgid "Radvd - DNSSL"
-msgstr ""
-
-msgid "Radvd - Interface %q"
-msgstr ""
-
-msgid "Radvd - Prefix"
-msgstr ""
-
-msgid "Radvd - RDNSS"
-msgstr ""
-
-msgid "Radvd - Route"
-msgstr ""
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr ""
-
-msgid "Routes"
-msgstr ""
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr ""
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr ""
-
-msgid "Unicast only"
-msgstr ""
-
-msgid "Valid lifetime"
-msgstr ""
-
-msgid "Validity time"
-msgstr ""
-
-msgid "default"
-msgstr ""
-
-msgid "high"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "no"
-msgstr ""
-
-msgid "yes"
-msgstr ""
diff --git a/applications/luci-app-radvd/po/ro/radvd.po b/applications/luci-app-radvd/po/ro/radvd.po
deleted file mode 100644 (file)
index 77e3d9e..0000000
+++ /dev/null
@@ -1,384 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-10-07 16:12+0200\n"
-"Last-Translator: Daniel <daniel.petre@pitesti.rcs-rds.ro>\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.4\n"
-
-msgid "6to4 interface"
-msgstr "Interfata 6la4"
-
-msgid "Address"
-msgstr "Adresa"
-
-msgid "Addresses"
-msgstr "Adrese"
-
-msgid "Advanced"
-msgstr "Avansat"
-
-msgid "Advertise Home Agent flag"
-msgstr "Anunta semaforul \"Home Agent\""
-
-msgid "Advertise router address"
-msgstr "Anunta adresa routerului"
-
-msgid "Advertised Domain Suffixes"
-msgstr "Sufixe anuntate de domeniu"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-"Server RDNSS IPv6 anuntat. Daca e lasat gol, atunci adresa IPv6 a interfetei "
-"este folosita"
-
-msgid "Advertised IPv6 prefixes"
-msgstr "Prefixe IPv6 anuntate"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-"Prefixe IPv6 anuntate. Daca e neconfigurat atunci prefixul de pe interfata "
-"curenta este folosit"
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr "Anunta capabilitatea de \"Home Agent\" IPv6 mobil (RFC3775)"
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr "Anunta capacitatea de inregistrare \"Mobile Router\""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr "Anunta preferinta routerului implicit"
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr "Anunta"
-
-msgid "Autonomous"
-msgstr "Autonom"
-
-msgid "Clients"
-msgstr "Clienti"
-
-msgid "Configuration flag"
-msgstr "Semafor de configurare"
-
-msgid "Current hop limit"
-msgstr "Limita hop-ului curent"
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "Configurarea DNSSL"
-
-msgid "Default lifetime"
-msgstr "Durata implicita"
-
-msgid "Default preference"
-msgstr "Preferinta implicita"
-
-msgid "Enable"
-msgstr "Activeaza"
-
-msgid "Enable advertisements"
-msgstr "Activeaza anunturile"
-
-msgid "Enables router advertisements and solicitations"
-msgstr "Activeaza anunturile si solicitarile routerului"
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr ""
-
-msgid "Home Agent information"
-msgstr "Informatia despre \"Home Agent\""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr "Preferinta \"Home Agent\""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr "Interfata"
-
-msgid "Interface Configuration"
-msgstr "Configurarea interfetei"
-
-msgid "Interface required"
-msgstr "Interfata necesara"
-
-msgid "Interfaces"
-msgstr "Interfete"
-
-msgid "Lifetime"
-msgstr "Durata de viata"
-
-msgid "Link MTU"
-msgstr "MTU pe legatura"
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr "Interval maxim"
-
-msgid "Maximum advertisement interval"
-msgstr "Intervalul maxim de anuntare"
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr "IPv6 mobil"
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr "Multicast"
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr "Preferinta"
-
-msgid "Preferred lifetime"
-msgstr "Durata de viata preferata"
-
-msgid "Prefix"
-msgstr "Prefix"
-
-msgid "Prefix Configuration"
-msgstr "Configurarea prefixului"
-
-msgid "Prefixes"
-msgstr "Prefixe"
-
-msgid "RDNSS"
-msgstr "RDNSS"
-
-msgid "RDNSS Configuration"
-msgstr ""
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr ""
-
-msgid "Radvd - Interface %q"
-msgstr ""
-
-msgid "Radvd - Prefix"
-msgstr ""
-
-msgid "Radvd - RDNSS"
-msgstr ""
-
-msgid "Radvd - Route"
-msgstr ""
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr "Configurarea rutelor"
-
-msgid "Routes"
-msgstr "Rute"
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr "Sufix"
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr ""
-
-msgid "Unicast only"
-msgstr "Doar unicast"
-
-msgid "Valid lifetime"
-msgstr ""
-
-msgid "Validity time"
-msgstr ""
-
-msgid "default"
-msgstr ""
-
-msgid "high"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "no"
-msgstr "nu"
-
-msgid "yes"
-msgstr "da"
-
-#~ msgid "Advertised IPv6 prefix"
-#~ msgstr "Prefixul IPv6 anuntat"
-
-#~ msgid ""
-#~ "Advertised IPv6 prefix. If empty, the current interface prefix is used"
-#~ msgstr ""
-#~ "Prefixul IPv6 anuntat. Daca e lasat gol atunci prefixul de pe interfata "
-#~ "curenta este folosit"
diff --git a/applications/luci-app-radvd/po/ru/radvd.po b/applications/luci-app-radvd/po/ru/radvd.po
deleted file mode 100644 (file)
index 37cc942..0000000
+++ /dev/null
@@ -1,473 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: LuCI: radvd\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2012-08-16 11:37+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\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"
-"X-Poedit-SourceCharset: UTF-8\n"
-
-msgid "6to4 interface"
-msgstr "Интерфейс 6to4"
-
-msgid "Address"
-msgstr "Адрес"
-
-msgid "Addresses"
-msgstr "Адреса"
-
-msgid "Advanced"
-msgstr "Расширенные"
-
-msgid "Advertise Home Agent flag"
-msgstr "Извещать индикатор домашнего агента"
-
-msgid "Advertise router address"
-msgstr "Извещать адрес маршрутизатора"
-
-msgid "Advertised Domain Suffixes"
-msgstr "Извещаемые суффиксы домена"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-"Извещаемый IPv6 RDNSS. Если значение не задано, то будет использован текущий "
-"IPv6-адрес интерфейса."
-
-msgid "Advertised IPv6 prefixes"
-msgstr "Извещаемые IPv6-префиксы"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-"Извещаемые IPv6-префиксы. Если значение не задано, то будет использован "
-"текущий префикс интерфейса."
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr "Извещает возможности домашнего агента мобильного IPv6 (RFC3775)"
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-"Извещает возможности регистрации мобильного маршрутизатора (NEMO Basic)"
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-"Извещает предполагаемое время доступа к соседним узлам (мс). При значении 0 "
-"извещение не происходит."
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-"Извещает значение числа переходов по умолчанию для исходящих одноадресных "
-"пакетов. При значении 0 извещение не происходит."
-
-msgid "Advertises the default router preference"
-msgstr "Извещает параметры предпочтения маршрутизатора по умолчанию"
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-"Извещает указанный максимальный размер пакета (MTU) в сообщении RA. 0 "
-"выключает данную функцию"
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-"Извещает период (сек.), в течение которого адреса, созданные из префикса с "
-"помощью SLAAC, остаются предпочтительными."
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-"Извещает период (сек.), в течение которого префикс является действительным "
-"для определения включения соединения."
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-"Извещает период действия (сек.) маршрутизатора по умолчанию. 0 указывает на "
-"то, что узел не является маршрутизатором по умолчанию."
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-"Извещает период (сек.) предоставления служб домашнего агента мобильного IPv6"
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-"Извещает время ожидания (мс) между сообщениями Neighbor Solicitation, если "
-"RA включен. 0 отключает передачу извещений"
-
-msgid "Advertising"
-msgstr "Извещение"
-
-msgid "Autonomous"
-msgstr "Автономный"
-
-msgid "Clients"
-msgstr "Клиенты"
-
-msgid "Configuration flag"
-msgstr "Конфигурационный флаг"
-
-msgid "Current hop limit"
-msgstr "Текущее ограничение кол-ва прыжков"
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "Конфигурация DNSSL"
-
-msgid "Default lifetime"
-msgstr "Срок действия по умолчанию"
-
-msgid "Default preference"
-msgstr "Приоритет по умолчанию"
-
-msgid "Enable"
-msgstr "Включить"
-
-msgid "Enable advertisements"
-msgstr "Включить извещения"
-
-msgid "Enables router advertisements and solicitations"
-msgstr "Включает извещения и запросы маршрутизатора"
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr "Включает дополнительный протокол автоконфигурации (RFC2462)"
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr "Включает автоконфигурацию дополнительной информации (RFC2462)"
-
-msgid "General"
-msgstr "Общие"
-
-msgid "Home Agent information"
-msgstr "Информация о домашнем агенте"
-
-msgid "Home Agent lifetime"
-msgstr "Срок действия домашнего агента"
-
-msgid "Home Agent preference"
-msgstr "Приоритет домашнего агента"
-
-msgid "Include Home Agent Information in the RA"
-msgstr "Включить информацию о домашнем агенте в сообщения RA"
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr "Включить интервал извещения мобильного IPv6 в сообщения RA"
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr "Включает адрес канального уровня исходящего интерфейса в сообщения RA"
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-"Указывает, что адрес интерфейса отправляется вместо префикса сети, как это "
-"требуется в мобильном IPv6"
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-"Указывает, что соединение не является широковещательным, и блокирует отсылку "
-"незапрошенных извещений"
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-"Указывае, что данный префикс может быть использован для автономной настройки "
-"адреса (RFC4862)"
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-"Указывает, что данный префикс может быть использован для определения "
-"включения соединения (RFC4861)"
-
-msgid "Interface"
-msgstr "Интерфейс"
-
-msgid "Interface Configuration"
-msgstr "Конфигурация интерфейса"
-
-msgid "Interface required"
-msgstr "Требуется интерфейс"
-
-msgid "Interfaces"
-msgstr "Интерфейсы"
-
-msgid "Lifetime"
-msgstr "Срок действия"
-
-msgid "Link MTU"
-msgstr "Максимальный размер пакета (MTU)"
-
-msgid "Managed flag"
-msgstr "Управляемый флаг"
-
-msgid "Max. interval"
-msgstr "Макс. интервал"
-
-msgid "Maximum advertisement interval"
-msgstr "Максимальный интервал извещения"
-
-msgid "Minimum advertisement delay"
-msgstr "Минимальная задержка извещения"
-
-msgid "Minimum advertisement interval"
-msgstr "Минимальный интервал извещения"
-
-msgid "Mobile IPv6"
-msgstr "Мобильный IPv6"
-
-msgid "Mobile IPv6 interval option"
-msgstr "Параметры интервала мобильного IPv6"
-
-msgid "Mobile IPv6 router registration"
-msgstr "Регистрация мобильного IPv6 маршрутизатора"
-
-msgid "Multicast"
-msgstr "Групповая рассылка"
-
-#, fuzzy
-msgid "On-link"
-msgstr "Соединение"
-
-msgid "On-link determination"
-msgstr "Определение включения соединения"
-
-msgid "Preference"
-msgstr "Приоритет"
-
-msgid "Preferred lifetime"
-msgstr "Предпочитаемый срок действия"
-
-msgid "Prefix"
-msgstr "Префикс"
-
-msgid "Prefix Configuration"
-msgstr "Конфигурация префикса"
-
-msgid "Prefixes"
-msgstr "Префиксы"
-
-msgid "RDNSS"
-msgstr "RDNSS"
-
-msgid "RDNSS Configuration"
-msgstr "Конфигурация RDNSS"
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - Интерфейс %q"
-
-msgid "Radvd - Prefix"
-msgstr "Radvd - Префикс"
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr "Radvd - Маршрут"
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-"Radvd - это служба извещений маршрутизатора для IPv6. Она слушает запросы "
-"(Router Solicitations) и отсылает извещения (Router Advertisements), как "
-"описано в RFC 4861."
-
-msgid "Reachable time"
-msgstr "Период доступности"
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-"Связываться только с указанными клиентами. Оставьте пустым, чтобы "
-"использовать групповую рассылку"
-
-msgid "Retransmit timer"
-msgstr "Таймер ретрансляции"
-
-msgid "Route Configuration"
-msgstr "Настройка маршрута"
-
-msgid "Routes"
-msgstr "Маршруты"
-
-msgid "Source link-layer address"
-msgstr "Адрес источника (канальный уровень)"
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-"Устанавливает имя логического интерфейса для получения префикса 6to4. "
-"Публичный IPv4-адрес интерфейса комбинитуется с 2002::/3 и значением префикса"
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr "Указывает период жизни, связанный с маршрутом (сек.)"
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-"Устанавливает имя логического интерфейса, которому принадлежит данная секция"
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-"Указывает максимальную длительность использования записей DNSSL для "
-"разрешения имён."
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-"Указывает максимальную длительность использования записей RDNSS для "
-"разрешения имён."
-
-msgid "Specifies the preference associated with the default router"
-msgstr "Указывает приоритет, связанный с маршрутизатором по умолчанию"
-
-msgid "Suffix"
-msgstr "Суффикс"
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-"Максимальный интервал времени между отсылкой групповых незапрашиваемых "
-"извещений маршрутизатора (сек.)"
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-"Минимальный интервал времени между отсылкой групповых извещений "
-"маршрутизатора с интерфейса (сек.)"
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-"Минимальный интервал времени между отсылкой групповых незапрашиваемых "
-"извещений маршрутизатора (сек.)"
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr "Предпочтение домашнего агента, отсылающего данное извещение RA"
-
-msgid "Timing"
-msgstr "Интервалы"
-
-msgid "Unicast only"
-msgstr "Только одноадресная передача"
-
-msgid "Valid lifetime"
-msgstr "Срок действия"
-
-msgid "Validity time"
-msgstr "Период действия"
-
-msgid "default"
-msgstr "по умолчанию"
-
-msgid "high"
-msgstr "высокий"
-
-msgid "low"
-msgstr "низкий"
-
-msgid "medium"
-msgstr "средний"
-
-msgid "no"
-msgstr "нет"
-
-msgid "yes"
-msgstr "да"
-
-#~ msgid "Advertised IPv6 prefix"
-#~ msgstr "Извещаемый IPv6 префикс"
-
-#~ msgid ""
-#~ "Advertised IPv6 prefix. If empty, the current interface prefix is used"
-#~ msgstr ""
-#~ "Извещаемый IPv6 префикс. Если значение не задано, то будет использован "
-#~ "текущий префикс интерфейса."
-
-#~ msgid ""
-#~ "Advertises the length of time in seconds that addresses generated from "
-#~ "the prefix via stateless address autoconfiguration remain preferred. Use "
-#~ "0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Извещает время в секундах, в течение которого адреса сгенерированные "
-#~ "автоматически из префикса остаются предпочтительными. 0 устанавливает "
-#~ "неограниченное время."
-
-#~ msgid ""
-#~ "Advertises the length of time in seconds that the prefix is valid for the "
-#~ "purpose of on-link determination. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Извещает время в секундах, в течение которого используется префикс для "
-#~ "определения включения соединения. 0 устанавливает неограниченное время."
-
-#~ msgid ""
-#~ "Indicates whether that RDNSS continues to be available to hosts even if "
-#~ "they moved to a different subnet"
-#~ msgstr ""
-#~ "Указывает остается ли RDNSS доступным для хостов даже в случае их "
-#~ "перемещения в другую подсеть"
-
-#~ msgid ""
-#~ "Specifies the lifetime associated with the route in seconds. Use 0 to "
-#~ "specify an infinite lifetime"
-#~ msgstr ""
-#~ "Устанавливает срок действия, связанный с маршрутом (секунды). Используйте "
-#~ "0 для установки бесконечного срока действия."
-
-#~ msgid ""
-#~ "Specifies the maximum duration how long the DNSSL entries are used for "
-#~ "name resolution. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Устанавливает максимальный срок действия DNSSL элементов для разрешения "
-#~ "имен.Используйте 0 для установки бесконечного срока действия"
-
-#~ msgid ""
-#~ "Specifies the maximum duration how long the RDNSS entries are used for "
-#~ "name resolution. Use 0 to specify an infinite lifetime"
-#~ msgstr ""
-#~ "Устанавливает максимальный срок действия DNSSL элементов для разрешения "
-#~ "имен.Используйте 0 для установки бесконечного срока действия"
diff --git a/applications/luci-app-radvd/po/sk/radvd.po b/applications/luci-app-radvd/po/sk/radvd.po
deleted file mode 100644 (file)
index 9bd26fa..0000000
+++ /dev/null
@@ -1,367 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"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"
-
-msgid "6to4 interface"
-msgstr ""
-
-msgid "Address"
-msgstr ""
-
-msgid "Addresses"
-msgstr ""
-
-msgid "Advanced"
-msgstr ""
-
-msgid "Advertise Home Agent flag"
-msgstr ""
-
-msgid "Advertise router address"
-msgstr ""
-
-msgid "Advertised Domain Suffixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-
-msgid "Advertised IPv6 prefixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr ""
-
-msgid "Autonomous"
-msgstr ""
-
-msgid "Clients"
-msgstr ""
-
-msgid "Configuration flag"
-msgstr ""
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr ""
-
-msgid "DNSSL Configuration"
-msgstr ""
-
-msgid "Default lifetime"
-msgstr ""
-
-msgid "Default preference"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Enable advertisements"
-msgstr ""
-
-msgid "Enables router advertisements and solicitations"
-msgstr ""
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr ""
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Interface Configuration"
-msgstr ""
-
-msgid "Interface required"
-msgstr ""
-
-msgid "Interfaces"
-msgstr ""
-
-msgid "Lifetime"
-msgstr ""
-
-msgid "Link MTU"
-msgstr ""
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr ""
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr ""
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr ""
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr ""
-
-msgid "Prefix Configuration"
-msgstr ""
-
-msgid "Prefixes"
-msgstr ""
-
-msgid "RDNSS"
-msgstr ""
-
-msgid "RDNSS Configuration"
-msgstr ""
-
-msgid "Radvd"
-msgstr ""
-
-msgid "Radvd - DNSSL"
-msgstr ""
-
-msgid "Radvd - Interface %q"
-msgstr ""
-
-msgid "Radvd - Prefix"
-msgstr ""
-
-msgid "Radvd - RDNSS"
-msgstr ""
-
-msgid "Radvd - Route"
-msgstr ""
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr ""
-
-msgid "Routes"
-msgstr ""
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr ""
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr ""
-
-msgid "Unicast only"
-msgstr ""
-
-msgid "Valid lifetime"
-msgstr ""
-
-msgid "Validity time"
-msgstr ""
-
-msgid "default"
-msgstr ""
-
-msgid "high"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "no"
-msgstr ""
-
-msgid "yes"
-msgstr ""
diff --git a/applications/luci-app-radvd/po/sv/radvd.po b/applications/luci-app-radvd/po/sv/radvd.po
deleted file mode 100644 (file)
index b2a8899..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: sv\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "6to4 interface"
-msgstr ""
-
-msgid "Address"
-msgstr "Adress"
-
-msgid "Addresses"
-msgstr "Adresser"
-
-msgid "Advanced"
-msgstr "Avancerat"
-
-msgid "Advertise Home Agent flag"
-msgstr ""
-
-msgid "Advertise router address"
-msgstr "Annonsera router-adress"
-
-msgid "Advertised Domain Suffixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-
-msgid "Advertised IPv6 prefixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr "Annonsering"
-
-msgid "Autonomous"
-msgstr ""
-
-msgid "Clients"
-msgstr "Klienter"
-
-msgid "Configuration flag"
-msgstr "Konfigurationsflagga"
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "Konfiguration av DNSSL"
-
-msgid "Default lifetime"
-msgstr ""
-
-msgid "Default preference"
-msgstr ""
-
-msgid "Enable"
-msgstr "Aktivera"
-
-msgid "Enable advertisements"
-msgstr "Aktivera annonser"
-
-msgid "Enables router advertisements and solicitations"
-msgstr "Aktivera router-annonser och hemställande"
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr "Generella"
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr "Gränssnitt"
-
-msgid "Interface Configuration"
-msgstr "Konfiguration av gränssnitt"
-
-msgid "Interface required"
-msgstr "Gränssnitt krävs"
-
-msgid "Interfaces"
-msgstr "Gränsnitt"
-
-msgid "Lifetime"
-msgstr "Livstid"
-
-msgid "Link MTU"
-msgstr "Länka MTU"
-
-msgid "Managed flag"
-msgstr "Hanterad flagga"
-
-msgid "Max. interval"
-msgstr "Maximalt intervall"
-
-msgid "Maximum advertisement interval"
-msgstr "Maximalt intervall för annonsering"
-
-msgid "Minimum advertisement delay"
-msgstr "Minsta fördröjning av annonsering"
-
-msgid "Minimum advertisement interval"
-msgstr "Minsta intervall för annonsering"
-
-msgid "Mobile IPv6"
-msgstr "Mobilt IPv6"
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr ""
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr "Prefix"
-
-msgid "Prefix Configuration"
-msgstr "Konfiguration av prefix"
-
-msgid "Prefixes"
-msgstr "Prefix"
-
-msgid "RDNSS"
-msgstr "RDNSS"
-
-msgid "RDNSS Configuration"
-msgstr "Konfiguration av RDNSS"
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - Gränssnitt %q"
-
-msgid "Radvd - Prefix"
-msgstr "Radvd - Prefix"
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr "Radvd - Route"
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-"Begränsa kommunikation till specificerade klienter, lämna tom för att "
-"använda multicast"
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr "Konfiguration för rutt"
-
-msgid "Routes"
-msgstr "Rutter"
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr "Tillägg"
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr ""
-
-msgid "Unicast only"
-msgstr "Endast Unicast"
-
-msgid "Valid lifetime"
-msgstr "Giltig livstid"
-
-msgid "Validity time"
-msgstr "Tid för giltighet"
-
-msgid "default"
-msgstr "standard"
-
-msgid "high"
-msgstr "hög"
-
-msgid "low"
-msgstr "låg"
-
-msgid "medium"
-msgstr "mellan"
-
-msgid "no"
-msgstr "nej"
-
-msgid "yes"
-msgstr "ja"
diff --git a/applications/luci-app-radvd/po/templates/radvd.pot b/applications/luci-app-radvd/po/templates/radvd.pot
deleted file mode 100644 (file)
index ff9eb54..0000000
+++ /dev/null
@@ -1,360 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-msgid "6to4 interface"
-msgstr ""
-
-msgid "Address"
-msgstr ""
-
-msgid "Addresses"
-msgstr ""
-
-msgid "Advanced"
-msgstr ""
-
-msgid "Advertise Home Agent flag"
-msgstr ""
-
-msgid "Advertise router address"
-msgstr ""
-
-msgid "Advertised Domain Suffixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-
-msgid "Advertised IPv6 prefixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr ""
-
-msgid "Autonomous"
-msgstr ""
-
-msgid "Clients"
-msgstr ""
-
-msgid "Configuration flag"
-msgstr ""
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr ""
-
-msgid "DNSSL Configuration"
-msgstr ""
-
-msgid "Default lifetime"
-msgstr ""
-
-msgid "Default preference"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Enable advertisements"
-msgstr ""
-
-msgid "Enables router advertisements and solicitations"
-msgstr ""
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr ""
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Interface Configuration"
-msgstr ""
-
-msgid "Interface required"
-msgstr ""
-
-msgid "Interfaces"
-msgstr ""
-
-msgid "Lifetime"
-msgstr ""
-
-msgid "Link MTU"
-msgstr ""
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr ""
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr ""
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr ""
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr ""
-
-msgid "Prefix Configuration"
-msgstr ""
-
-msgid "Prefixes"
-msgstr ""
-
-msgid "RDNSS"
-msgstr ""
-
-msgid "RDNSS Configuration"
-msgstr ""
-
-msgid "Radvd"
-msgstr ""
-
-msgid "Radvd - DNSSL"
-msgstr ""
-
-msgid "Radvd - Interface %q"
-msgstr ""
-
-msgid "Radvd - Prefix"
-msgstr ""
-
-msgid "Radvd - RDNSS"
-msgstr ""
-
-msgid "Radvd - Route"
-msgstr ""
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr ""
-
-msgid "Routes"
-msgstr ""
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr ""
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr ""
-
-msgid "Unicast only"
-msgstr ""
-
-msgid "Valid lifetime"
-msgstr ""
-
-msgid "Validity time"
-msgstr ""
-
-msgid "default"
-msgstr ""
-
-msgid "high"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "no"
-msgstr ""
-
-msgid "yes"
-msgstr ""
diff --git a/applications/luci-app-radvd/po/tr/radvd.po b/applications/luci-app-radvd/po/tr/radvd.po
deleted file mode 100644 (file)
index 8b8ed8f..0000000
+++ /dev/null
@@ -1,367 +0,0 @@
-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"
-
-msgid "6to4 interface"
-msgstr ""
-
-msgid "Address"
-msgstr ""
-
-msgid "Addresses"
-msgstr ""
-
-msgid "Advanced"
-msgstr ""
-
-msgid "Advertise Home Agent flag"
-msgstr ""
-
-msgid "Advertise router address"
-msgstr ""
-
-msgid "Advertised Domain Suffixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-
-msgid "Advertised IPv6 prefixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr ""
-
-msgid "Autonomous"
-msgstr ""
-
-msgid "Clients"
-msgstr ""
-
-msgid "Configuration flag"
-msgstr ""
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr ""
-
-msgid "DNSSL Configuration"
-msgstr ""
-
-msgid "Default lifetime"
-msgstr ""
-
-msgid "Default preference"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Enable advertisements"
-msgstr ""
-
-msgid "Enables router advertisements and solicitations"
-msgstr ""
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr ""
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Interface Configuration"
-msgstr ""
-
-msgid "Interface required"
-msgstr ""
-
-msgid "Interfaces"
-msgstr ""
-
-msgid "Lifetime"
-msgstr ""
-
-msgid "Link MTU"
-msgstr ""
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr ""
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr ""
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr ""
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr ""
-
-msgid "Prefix Configuration"
-msgstr ""
-
-msgid "Prefixes"
-msgstr ""
-
-msgid "RDNSS"
-msgstr ""
-
-msgid "RDNSS Configuration"
-msgstr ""
-
-msgid "Radvd"
-msgstr ""
-
-msgid "Radvd - DNSSL"
-msgstr ""
-
-msgid "Radvd - Interface %q"
-msgstr ""
-
-msgid "Radvd - Prefix"
-msgstr ""
-
-msgid "Radvd - RDNSS"
-msgstr ""
-
-msgid "Radvd - Route"
-msgstr ""
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr ""
-
-msgid "Routes"
-msgstr ""
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr ""
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr ""
-
-msgid "Unicast only"
-msgstr ""
-
-msgid "Valid lifetime"
-msgstr ""
-
-msgid "Validity time"
-msgstr ""
-
-msgid "default"
-msgstr ""
-
-msgid "high"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "no"
-msgstr ""
-
-msgid "yes"
-msgstr ""
diff --git a/applications/luci-app-radvd/po/uk/radvd.po b/applications/luci-app-radvd/po/uk/radvd.po
deleted file mode 100644 (file)
index 648035d..0000000
+++ /dev/null
@@ -1,381 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-05-26 19:17+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"
-
-msgid "6to4 interface"
-msgstr "Інтерфейс 6to4"
-
-msgid "Address"
-msgstr "Адреса"
-
-msgid "Addresses"
-msgstr "Адреси"
-
-msgid "Advanced"
-msgstr "Додатково"
-
-msgid "Advertise Home Agent flag"
-msgstr "Оголошувати позначку Home Agent"
-
-msgid "Advertise router address"
-msgstr "Оголошувати адресу роутера"
-
-msgid "Advertised Domain Suffixes"
-msgstr "Оголошувані суфікси домену"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-"Оголошуваний IPv6 RDNSS. Якщо не задано, використовується поточна "
-"IPv6-адреса інтерфейсу."
-
-msgid "Advertised IPv6 prefixes"
-msgstr "Оголошувані IPv6-префікси"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-"Оголошувані IPv6-префікси. Якщо не задано, використовується поточний префікс "
-"інтерфейсу"
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr "Оголошує можливості Home Agent мобільного IPv6 (RFC3775)"
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr "Оголошує можливості реєстрації мобільного маршрутизатора (NEMO Basic)"
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-"Оголошує передбачуваний час досяжності (у мілісекундах) сусідніх вузлів. "
-"Значення 0 відключає оголошення."
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-"Оголошує типове значення лічильника HOP-ів для вихідних unicast-пакетів. "
-"Значення 0 відключає оголошення."
-
-msgid "Advertises the default router preference"
-msgstr "Оголошує типові настройки маршрутизатора"
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-"Оголошує певний максимальний розмір пакета (якщо він вказаний). Значення 0 "
-"відключає оголошення."
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr "Оголошення"
-
-msgid "Autonomous"
-msgstr "Автономний"
-
-msgid "Clients"
-msgstr "Клієнти"
-
-msgid "Configuration flag"
-msgstr ""
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr ""
-
-msgid "DNSSL Configuration"
-msgstr ""
-
-msgid "Default lifetime"
-msgstr ""
-
-msgid "Default preference"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Enable advertisements"
-msgstr ""
-
-msgid "Enables router advertisements and solicitations"
-msgstr ""
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr ""
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Interface Configuration"
-msgstr ""
-
-msgid "Interface required"
-msgstr ""
-
-msgid "Interfaces"
-msgstr ""
-
-msgid "Lifetime"
-msgstr ""
-
-msgid "Link MTU"
-msgstr ""
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr ""
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr ""
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr ""
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr ""
-
-msgid "Prefix Configuration"
-msgstr ""
-
-msgid "Prefixes"
-msgstr ""
-
-msgid "RDNSS"
-msgstr ""
-
-msgid "RDNSS Configuration"
-msgstr ""
-
-msgid "Radvd"
-msgstr ""
-
-msgid "Radvd - DNSSL"
-msgstr ""
-
-msgid "Radvd - Interface %q"
-msgstr ""
-
-msgid "Radvd - Prefix"
-msgstr ""
-
-msgid "Radvd - RDNSS"
-msgstr ""
-
-msgid "Radvd - Route"
-msgstr ""
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr ""
-
-msgid "Routes"
-msgstr ""
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr ""
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr ""
-
-msgid "Unicast only"
-msgstr ""
-
-msgid "Valid lifetime"
-msgstr ""
-
-msgid "Validity time"
-msgstr ""
-
-msgid "default"
-msgstr ""
-
-msgid "high"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "no"
-msgstr ""
-
-msgid "yes"
-msgstr ""
diff --git a/applications/luci-app-radvd/po/vi/radvd.po b/applications/luci-app-radvd/po/vi/radvd.po
deleted file mode 100644 (file)
index 63f8fa0..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2010-11-21 04:06+0100\n"
-"Last-Translator:  <jow@openwrt.org>\n"
-"Language-Team: German\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"
-
-msgid "6to4 interface"
-msgstr ""
-
-msgid "Address"
-msgstr ""
-
-msgid "Addresses"
-msgstr ""
-
-msgid "Advanced"
-msgstr ""
-
-msgid "Advertise Home Agent flag"
-msgstr ""
-
-msgid "Advertise router address"
-msgstr ""
-
-msgid "Advertised Domain Suffixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr ""
-
-msgid "Advertised IPv6 prefixes"
-msgstr ""
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr ""
-
-msgid "Advertises the default router preference"
-msgstr ""
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr ""
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr ""
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr ""
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
-
-msgid "Advertising"
-msgstr ""
-
-msgid "Autonomous"
-msgstr ""
-
-msgid "Clients"
-msgstr ""
-
-msgid "Configuration flag"
-msgstr ""
-
-msgid "Current hop limit"
-msgstr ""
-
-msgid "DNSSL"
-msgstr ""
-
-msgid "DNSSL Configuration"
-msgstr ""
-
-msgid "Default lifetime"
-msgstr ""
-
-msgid "Default preference"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Enable advertisements"
-msgstr ""
-
-msgid "Enables router advertisements and solicitations"
-msgstr ""
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr ""
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr ""
-
-msgid "General"
-msgstr ""
-
-msgid "Home Agent information"
-msgstr ""
-
-msgid "Home Agent lifetime"
-msgstr ""
-
-msgid "Home Agent preference"
-msgstr ""
-
-msgid "Include Home Agent Information in the RA"
-msgstr ""
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr ""
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr ""
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Interface Configuration"
-msgstr ""
-
-msgid "Interface required"
-msgstr ""
-
-msgid "Interfaces"
-msgstr ""
-
-msgid "Lifetime"
-msgstr ""
-
-msgid "Link MTU"
-msgstr ""
-
-msgid "Managed flag"
-msgstr ""
-
-msgid "Max. interval"
-msgstr ""
-
-msgid "Maximum advertisement interval"
-msgstr ""
-
-msgid "Minimum advertisement delay"
-msgstr ""
-
-msgid "Minimum advertisement interval"
-msgstr ""
-
-msgid "Mobile IPv6"
-msgstr ""
-
-msgid "Mobile IPv6 interval option"
-msgstr ""
-
-msgid "Mobile IPv6 router registration"
-msgstr ""
-
-msgid "Multicast"
-msgstr ""
-
-msgid "On-link"
-msgstr ""
-
-msgid "On-link determination"
-msgstr ""
-
-msgid "Preference"
-msgstr ""
-
-msgid "Preferred lifetime"
-msgstr ""
-
-msgid "Prefix"
-msgstr ""
-
-msgid "Prefix Configuration"
-msgstr ""
-
-msgid "Prefixes"
-msgstr ""
-
-msgid "RDNSS"
-msgstr ""
-
-msgid "RDNSS Configuration"
-msgstr ""
-
-msgid "Radvd"
-msgstr ""
-
-msgid "Radvd - DNSSL"
-msgstr ""
-
-msgid "Radvd - Interface %q"
-msgstr ""
-
-msgid "Radvd - Prefix"
-msgstr ""
-
-msgid "Radvd - RDNSS"
-msgstr ""
-
-msgid "Radvd - Route"
-msgstr ""
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-
-msgid "Reachable time"
-msgstr ""
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
-
-msgid "Retransmit timer"
-msgstr ""
-
-msgid "Route Configuration"
-msgstr ""
-
-msgid "Routes"
-msgstr ""
-
-msgid "Source link-layer address"
-msgstr ""
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr ""
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr ""
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr ""
-
-msgid "Specifies the preference associated with the default router"
-msgstr ""
-
-msgid "Suffix"
-msgstr ""
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr ""
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr ""
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr ""
-
-msgid "Timing"
-msgstr ""
-
-msgid "Unicast only"
-msgstr ""
-
-msgid "Valid lifetime"
-msgstr ""
-
-msgid "Validity time"
-msgstr ""
-
-msgid "default"
-msgstr ""
-
-msgid "high"
-msgstr ""
-
-msgid "low"
-msgstr ""
-
-msgid "medium"
-msgstr ""
-
-msgid "no"
-msgstr ""
-
-msgid "yes"
-msgstr ""
diff --git a/applications/luci-app-radvd/po/zh-cn/radvd.po b/applications/luci-app-radvd/po/zh-cn/radvd.po
deleted file mode 100644 (file)
index 9cb3a31..0000000
+++ /dev/null
@@ -1,399 +0,0 @@
-#
-# Yangfl <mmyangfl@gmail.com>, 2017.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-10-29 15:24+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"
-
-msgid "6to4 interface"
-msgstr "6to4 接口"
-
-msgid "Address"
-msgstr "地址"
-
-msgid "Addresses"
-msgstr "地址"
-
-msgid "Advanced"
-msgstr "进阶选项"
-
-msgid "Advertise Home Agent flag"
-msgstr "宣告本地代理标识"
-
-msgid "Advertise router address"
-msgstr "宣告路由地址"
-
-msgid "Advertised Domain Suffixes"
-msgstr "宣告的域后缀"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr "宣告的 IPv6 RDNSS 地址。若为空,则为当前 IPv6 地址"
-
-msgid "Advertised IPv6 prefixes"
-msgstr "宣告的 IPv6 前缀群"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr "宣告的 IPv6 前缀群。若为空,将使用当前接口的前缀"
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr "宣告移动 IPv6 本地代理功能(RFC3775)"
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr "宣告移动路由器注册功能(NEMO 基本)"
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr "在 RA 中宣告估算的邻居可达时间(毫秒)。0 禁用可达性宣告"
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr "在 RA 中宣告外发单播数据包的默认跳数值。0 禁用跳数宣告"
-
-msgid "Advertises the default router preference"
-msgstr "宣告默认路由设置"
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr "在 RA 中宣告给定的链路 MTU。0 禁用 MTU 宣告"
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-"宣告时间长度(秒),对通过无状态地址自动配置从前缀生成的地址,维持为首选地"
-"址。"
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr "宣告前缀对 on-link 决定有效的时间长度(秒)。"
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr "宣告默认路由器的生存时间(秒)。0 代表结点没有默认路由"
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr "宣告路由器提供移动 IPv6 本地代理服务的时间(秒)"
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr "宣告 RA 中邻居请求消息间的等待时间(毫秒)。0 禁用宣告重传"
-
-msgid "Advertising"
-msgstr "宣告"
-
-msgid "Autonomous"
-msgstr "自治的"
-
-msgid "Clients"
-msgstr "客户端"
-
-msgid "Configuration flag"
-msgstr "设置标识"
-
-msgid "Current hop limit"
-msgstr "当前跳数限制"
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "DNSSL 设置"
-
-msgid "Default lifetime"
-msgstr "默认生存时限"
-
-msgid "Default preference"
-msgstr "默认优先级"
-
-msgid "Enable"
-msgstr "启用"
-
-msgid "Enable advertisements"
-msgstr "启用宣告"
-
-msgid "Enables router advertisements and solicitations"
-msgstr "激活路由宣告和请求"
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr "使能附加的基于状态管理的自动配置协议(RFC2462)"
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr "启用自动配置,不包括地址信息(RFC2462)"
-
-msgid "General"
-msgstr "概况"
-
-msgid "Home Agent information"
-msgstr "本地代理信息"
-
-msgid "Home Agent lifetime"
-msgstr "本地代理有效期"
-
-msgid "Home Agent preference"
-msgstr "本地代理优先权"
-
-msgid "Include Home Agent Information in the RA"
-msgstr "路由器公告报文中包含本地代理信息"
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr "路由器公告报文中包含移动 IPv6 宣告间隔设置"
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr "路由器公告报文中包含出接口的链路层地址"
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr "表明使用接口的地址发送而非网络前缀,移动 IPv6 需要"
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr "表明潜在的链路并不具有宣告能力,避免主动触发的宣告报文发出"
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr "表明此前缀能够用于匿名地址配置(RFC4862)"
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr "表明此前缀能够用于 on-link 决定(RFC481)"
-
-msgid "Interface"
-msgstr "接口"
-
-msgid "Interface Configuration"
-msgstr "接口设置"
-
-msgid "Interface required"
-msgstr "接口必要项"
-
-msgid "Interfaces"
-msgstr "接口"
-
-msgid "Lifetime"
-msgstr "有效期"
-
-msgid "Link MTU"
-msgstr "连接 MTU"
-
-msgid "Managed flag"
-msgstr "M 标识"
-
-msgid "Max. interval"
-msgstr "最大间隔"
-
-msgid "Maximum advertisement interval"
-msgstr "最大宣告间隔"
-
-msgid "Minimum advertisement delay"
-msgstr "最小宣告延时"
-
-msgid "Minimum advertisement interval"
-msgstr "最小宣告间隔"
-
-msgid "Mobile IPv6"
-msgstr "移动 IPv6"
-
-msgid "Mobile IPv6 interval option"
-msgstr "移动 IPv6 间隔选项"
-
-msgid "Mobile IPv6 router registration"
-msgstr "移动 IPv6 路由注册"
-
-msgid "Multicast"
-msgstr "组播传输"
-
-msgid "On-link"
-msgstr "已连接的"
-
-msgid "On-link determination"
-msgstr "已连接的目标"
-
-msgid "Preference"
-msgstr "首选项"
-
-msgid "Preferred lifetime"
-msgstr "期望的生存时间"
-
-msgid "Prefix"
-msgstr "前缀"
-
-msgid "Prefix Configuration"
-msgstr "前缀设置"
-
-msgid "Prefixes"
-msgstr "前缀群"
-
-msgid "RDNSS"
-msgstr "邻居发现服务器"
-
-msgid "RDNSS Configuration"
-msgstr "邻居发现服务器设置"
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - 接口 %q"
-
-msgid "Radvd - Prefix"
-msgstr "Radvd - 前缀"
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr "Radvd - 路由"
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-"Radvd 是一个 IPv6 路由公告软件,按照 RFC4861 监听路由请求和发送路由公告。"
-
-msgid "Reachable time"
-msgstr "可达延时"
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr "限制特定会话,留空则使用组播"
-
-msgid "Retransmit timer"
-msgstr "中继转发计时器"
-
-msgid "Route Configuration"
-msgstr "路由设置"
-
-msgid "Routes"
-msgstr "路由"
-
-msgid "Source link-layer address"
-msgstr "源链路层地址"
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-"指定从其导出 6to4 前缀的逻辑接口名称。接口的公共 IPv4 地址将与 2002::/3 及前"
-"缀选项的值相结合"
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr "设定路由关联的生存时间(秒)"
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr "说明这个物理接口连接到哪个网络"
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr "设定 DNSSL 表项名称解析的最长时间间隔"
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr "设定 RDNSS 表项名称解析的最长时间间隔"
-
-msgid "Specifies the preference associated with the default router"
-msgstr "设定关联的默认路由的配置"
-
-msgid "Suffix"
-msgstr "后缀"
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr "允许接口发送组播路由宣告报文的最大时间间隔(秒)"
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr "允许接口发送组播路由宣告报文的最小时间间隔(秒)"
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr "允许接口发送主动触发组播路由宣告报文的最小时间间隔(秒)"
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr "发送此 RA 的本地代理的首选项"
-
-msgid "Timing"
-msgstr "计时"
-
-msgid "Unicast only"
-msgstr "单播"
-
-msgid "Valid lifetime"
-msgstr "有效的生存时间"
-
-msgid "Validity time"
-msgstr "有效期"
-
-msgid "default"
-msgstr "默认"
-
-msgid "high"
-msgstr "高"
-
-msgid "low"
-msgstr "低"
-
-msgid "medium"
-msgstr "中"
-
-msgid "no"
-msgstr "否"
-
-msgid "yes"
-msgstr "是"
-
-#~ msgid "Advertised IPv6 prefix"
-#~ msgstr "IPV6广播前缀"
-
-#~ msgid ""
-#~ "Advertised IPv6 prefix. If empty, the current interface prefix is used"
-#~ msgstr "IPV6广播前缀。若为空,则当前接口前缀已被使用。"
-
-#~ msgid "Open"
-#~ msgstr "打开"
-
-#~ msgid ""
-#~ "Specifies the maximum duration how long the DNSSL entries are used for "
-#~ "name resolution. Use 0 to specify an infinite lifetime"
-#~ msgstr "指定DNSSL解析域名的最长时间,0则为无限长"
-
-#~ msgid ""
-#~ "Specifies the maximum duration how long the RDNSS entries are used for "
-#~ "name resolution. Use 0 to specify an infinite lifetime"
-#~ msgstr "指定RDNSS解析域名的最长时间,0则为无限长"
diff --git a/applications/luci-app-radvd/po/zh-tw/radvd.po b/applications/luci-app-radvd/po/zh-tw/radvd.po
deleted file mode 100644 (file)
index 6de8309..0000000
+++ /dev/null
@@ -1,399 +0,0 @@
-#
-# Yangfl <mmyangfl@gmail.com>, 2017.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-10-29 15: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"
-
-msgid "6to4 interface"
-msgstr "6to4 介面"
-
-msgid "Address"
-msgstr "位址"
-
-msgid "Addresses"
-msgstr "位址"
-
-msgid "Advanced"
-msgstr "進階選項"
-
-msgid "Advertise Home Agent flag"
-msgstr "宣告本地代理標識"
-
-msgid "Advertise router address"
-msgstr "宣告路由位址"
-
-msgid "Advertised Domain Suffixes"
-msgstr "宣告的域字尾"
-
-msgid ""
-"Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
-"is used"
-msgstr "宣告的 IPv6 RDNSS 位址。若為空,則為當前 IPv6 位址"
-
-msgid "Advertised IPv6 prefixes"
-msgstr "宣告的 IPv6 字首群"
-
-msgid ""
-"Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr "宣告的 IPv6 字首群。若為空,將使用當前介面的字首"
-
-msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr "宣告移動 IPv6 本地代理功能(RFC3775)"
-
-msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr "宣告移動路由器註冊功能(NEMO 基本)"
-
-msgid ""
-"Advertises assumed reachability time in milliseconds of neighbours in the RA "
-"if specified. 0 disables reachability advertisements"
-msgstr "在 RA 中宣告估算的鄰居可達時間(毫秒)。0 禁用可達性宣告"
-
-msgid ""
-"Advertises the default Hop Count value for outgoing unicast packets in the "
-"RA. 0 disables hopcount advertisements"
-msgstr "在 RA 中宣告外發單播資料包的預設跳數值。0 禁用跳數宣告"
-
-msgid "Advertises the default router preference"
-msgstr "宣告預設路由設定"
-
-msgid ""
-"Advertises the given link MTU in the RA if specified. 0 disables MTU "
-"advertisements"
-msgstr "在 RA 中宣告給定的鏈路 MTU。0 禁用 MTU 宣告"
-
-msgid ""
-"Advertises the length of time in seconds that addresses generated from the "
-"prefix via stateless address autoconfiguration remain preferred."
-msgstr ""
-"宣告時間長度(秒),對通過無狀態位址自動配置從字首生成的位址,維持為首選地"
-"址。"
-
-msgid ""
-"Advertises the length of time in seconds that the prefix is valid for the "
-"purpose of on-link determination."
-msgstr "宣告字首對 on-link 決定有效的時間長度(秒)。"
-
-msgid ""
-"Advertises the lifetime of the default router in seconds. 0 indicates that "
-"the node is no default router"
-msgstr "宣告預設路由器的生存時間(秒)。0 代表結點沒有預設路由"
-
-msgid ""
-"Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
-"services"
-msgstr "宣告路由器提供移動 IPv6 本地代理服務的時間(秒)"
-
-msgid ""
-"Advertises wait time in milliseconds between Neighbor Solicitation messages "
-"in the RA if specified. 0 disables retransmit advertisements"
-msgstr "宣告 RA 中鄰居請求訊息間的等待時間(毫秒)。0 禁用宣告重傳"
-
-msgid "Advertising"
-msgstr "宣告"
-
-msgid "Autonomous"
-msgstr "自治的"
-
-msgid "Clients"
-msgstr "客戶端"
-
-msgid "Configuration flag"
-msgstr "設定標識"
-
-msgid "Current hop limit"
-msgstr "當前跳數限制"
-
-msgid "DNSSL"
-msgstr "DNSSL"
-
-msgid "DNSSL Configuration"
-msgstr "DNSSL 設定"
-
-msgid "Default lifetime"
-msgstr "預設生存時限"
-
-msgid "Default preference"
-msgstr "預設優先順序"
-
-msgid "Enable"
-msgstr "啟用"
-
-msgid "Enable advertisements"
-msgstr "啟用宣告"
-
-msgid "Enables router advertisements and solicitations"
-msgstr "啟用路由宣告和請求"
-
-msgid ""
-"Enables the additional stateful administered autoconfiguration protocol "
-"(RFC2462)"
-msgstr "使能附加的基於狀態管理的自動配置協議(RFC2462)"
-
-msgid ""
-"Enables the autoconfiguration of additional, non address information "
-"(RFC2462)"
-msgstr "啟用自動配置,不包括位址資訊(RFC2462)"
-
-msgid "General"
-msgstr "概況"
-
-msgid "Home Agent information"
-msgstr "本地代理資訊"
-
-msgid "Home Agent lifetime"
-msgstr "本地代理有效期"
-
-msgid "Home Agent preference"
-msgstr "本地代理優先權"
-
-msgid "Include Home Agent Information in the RA"
-msgstr "路由器公告報文中包含本地代理資訊"
-
-msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr "路由器公告報文中包含移動 IPv6 宣告間隔設定"
-
-msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr "路由器公告報文中包含出介面的鏈路層位址"
-
-msgid ""
-"Indicates that the address of interface is sent instead of network prefix, "
-"as is required by Mobile IPv6"
-msgstr "表明使用介面的位址傳送而非網路字首,移動 IPv6 需要"
-
-msgid ""
-"Indicates that the underlying link is not broadcast capable, prevents "
-"unsolicited advertisements from being sent"
-msgstr "表明潛在的鏈路並不具有宣告能力,避免主動觸發的宣告報文發出"
-
-msgid ""
-"Indicates that this prefix can be used for autonomous address configuration "
-"(RFC4862)"
-msgstr "表明此字首能夠用於匿名位址配置(RFC4862)"
-
-msgid ""
-"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr "表明此字首能夠用於 on-link 決定(RFC481)"
-
-msgid "Interface"
-msgstr "介面"
-
-msgid "Interface Configuration"
-msgstr "介面設定"
-
-msgid "Interface required"
-msgstr "介面必要項"
-
-msgid "Interfaces"
-msgstr "介面"
-
-msgid "Lifetime"
-msgstr "有效期"
-
-msgid "Link MTU"
-msgstr "連線 MTU"
-
-msgid "Managed flag"
-msgstr "M 標識"
-
-msgid "Max. interval"
-msgstr "最大間隔"
-
-msgid "Maximum advertisement interval"
-msgstr "最大宣告間隔"
-
-msgid "Minimum advertisement delay"
-msgstr "最小宣告延時"
-
-msgid "Minimum advertisement interval"
-msgstr "最小宣告間隔"
-
-msgid "Mobile IPv6"
-msgstr "移動 IPv6"
-
-msgid "Mobile IPv6 interval option"
-msgstr "移動 IPv6 間隔選項"
-
-msgid "Mobile IPv6 router registration"
-msgstr "移動 IPv6 路由註冊"
-
-msgid "Multicast"
-msgstr "組播傳輸"
-
-msgid "On-link"
-msgstr "已連線的"
-
-msgid "On-link determination"
-msgstr "已連線的目標"
-
-msgid "Preference"
-msgstr "首選項"
-
-msgid "Preferred lifetime"
-msgstr "期望的生存時間"
-
-msgid "Prefix"
-msgstr "字首"
-
-msgid "Prefix Configuration"
-msgstr "字首設定"
-
-msgid "Prefixes"
-msgstr "字首群"
-
-msgid "RDNSS"
-msgstr "鄰居發現伺服器"
-
-msgid "RDNSS Configuration"
-msgstr "鄰居發現伺服器設定"
-
-msgid "Radvd"
-msgstr "Radvd"
-
-msgid "Radvd - DNSSL"
-msgstr "Radvd - DNSSL"
-
-msgid "Radvd - Interface %q"
-msgstr "Radvd - 介面 %q"
-
-msgid "Radvd - Prefix"
-msgstr "Radvd - 字首"
-
-msgid "Radvd - RDNSS"
-msgstr "Radvd - RDNSS"
-
-msgid "Radvd - Route"
-msgstr "Radvd - 路由"
-
-msgid ""
-"Radvd is a router advertisement daemon for IPv6. It listens to router "
-"solicitations and sends router advertisements as described in RFC 4861."
-msgstr ""
-"Radvd 是一個 IPv6 路由公告軟體,按照 RFC4861 監聽路由請求和傳送路由公告。"
-
-msgid "Reachable time"
-msgstr "可達延時"
-
-msgid ""
-"Restrict communication to specified clients, leave empty to use multicast"
-msgstr "限制特定會話,留空則使用組播"
-
-msgid "Retransmit timer"
-msgstr "中繼轉發計時器"
-
-msgid "Route Configuration"
-msgstr "路由設定"
-
-msgid "Routes"
-msgstr "路由"
-
-msgid "Source link-layer address"
-msgstr "源鏈路層位址"
-
-msgid ""
-"Specifies a logical interface name to derive a 6to4 prefix from. The "
-"interfaces public IPv4 address is combined with 2002::/3 and the value of "
-"the prefix option"
-msgstr ""
-"指定從其匯出 6to4 字首的邏輯介面名稱。介面的公共 IPv4 位址將與 2002::/3 及前"
-"綴選項的值相結合"
-
-msgid "Specifies the lifetime associated with the route in seconds."
-msgstr "設定路由關聯的生存時間(秒)"
-
-msgid "Specifies the logical interface name this section belongs to"
-msgstr "說明這個物理介面連線到哪個網路"
-
-msgid ""
-"Specifies the maximum duration how long the DNSSL entries are used for name "
-"resolution."
-msgstr "設定 DNSSL 表項名稱解析的最長時間間隔"
-
-msgid ""
-"Specifies the maximum duration how long the RDNSS entries are used for name "
-"resolution."
-msgstr "設定 RDNSS 表項名稱解析的最長時間間隔"
-
-msgid "Specifies the preference associated with the default router"
-msgstr "設定關聯的預設路由的配置"
-
-msgid "Suffix"
-msgstr "字尾"
-
-msgid ""
-"The maximum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr "允許介面傳送組播路由宣告報文的最大時間間隔(秒)"
-
-msgid ""
-"The minimum time allowed between sending multicast router advertisements "
-"from the interface, in seconds"
-msgstr "允許介面傳送組播路由宣告報文的最小時間間隔(秒)"
-
-msgid ""
-"The minimum time allowed between sending unsolicited multicast router "
-"advertisements from the interface, in seconds"
-msgstr "允許介面傳送主動觸發組播路由宣告報文的最小時間間隔(秒)"
-
-msgid "The preference for the Home Agent sending this RA"
-msgstr "傳送此 RA 的本地代理的首選項"
-
-msgid "Timing"
-msgstr "計時"
-
-msgid "Unicast only"
-msgstr "單播"
-
-msgid "Valid lifetime"
-msgstr "有效的生存時間"
-
-msgid "Validity time"
-msgstr "有效期"
-
-msgid "default"
-msgstr "預設"
-
-msgid "high"
-msgstr "高"
-
-msgid "low"
-msgstr "低"
-
-msgid "medium"
-msgstr "中"
-
-msgid "no"
-msgstr "否"
-
-msgid "yes"
-msgstr "是"
-
-#~ msgid "Advertised IPv6 prefix"
-#~ msgstr "IPV6廣播字首"
-
-#~ msgid ""
-#~ "Advertised IPv6 prefix. If empty, the current interface prefix is used"
-#~ msgstr "IPV6廣播字首。若為空,則當前介面字首已被使用。"
-
-#~ msgid "Open"
-#~ msgstr "開啟"
-
-#~ msgid ""
-#~ "Specifies the maximum duration how long the DNSSL entries are used for "
-#~ "name resolution. Use 0 to specify an infinite lifetime"
-#~ msgstr "指定DNSSL解析域名的最長時間,0則為無限長"
-
-#~ msgid ""
-#~ "Specifies the maximum duration how long the RDNSS entries are used for "
-#~ "name resolution. Use 0 to specify an infinite lifetime"
-#~ msgstr "指定RDNSS解析域名的最長時間,0則為無限長"
diff --git a/applications/luci-app-radvd/root/etc/uci-defaults/40_luci-radvd b/applications/luci-app-radvd/root/etc/uci-defaults/40_luci-radvd
deleted file mode 100755 (executable)
index c1f3b75..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-uci -q batch <<-EOF >/dev/null
-       delete ucitrack.@radvd[-1]
-       add ucitrack radvd
-       set ucitrack.@radvd[-1].init=radvd
-       commit ucitrack
-EOF
-
-rm -f /tmp/luci-indexcache
-exit 0
index 534770f5f1da066475d8da78bebc6d738580d18d..224063eb152957cd9d7501366811f9dbe5fcfbb7 100644 (file)
@@ -1,32 +1,33 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: samba\n"
-"Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-08-15 13:48+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"PO-Revision-Date: 2018-01-19 15:28+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "Allow guests"
 msgstr "Разрешить гостевой вход"
 
 msgid "Allow system users to reach their home directories via network shares"
 msgstr ""
-"Разрешить пользователям получать доступ к их домашним директориям через сеть"
+"Разрешить пользователям получать доступ к их домашним папкам, через "
+"локальную сеть."
 
 msgid "Allowed users"
-msgstr "Разрешённые пользователи"
+msgstr "Разрешенные пользователи"
 
 msgid "Browseable"
-msgstr ""
+msgstr "Виден в списке доступных ресурсов"
 
 msgid "Create mask"
 msgstr "Создать маску"
@@ -35,22 +36,22 @@ msgid "Description"
 msgstr "Описание"
 
 msgid "Directory mask"
-msgstr "Ð\9cаÑ\81ка Ð´Ð¸Ñ\80екÑ\82оÑ\80ии"
+msgstr "Ð\9cаÑ\81ка Ð¿Ð°Ð¿Ð¾Ðº"
 
 msgid "Edit Template"
-msgstr "РедакÑ\82иÑ\80оваÑ\82Ñ\8c Ñ\88аблон"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ñ\88аблона"
 
 msgid "Edit the template that is used for generating the samba configuration."
-msgstr "РедакÑ\82иÑ\80оваÑ\82Ñ\8c Ñ\88аблон, Ð¸Ñ\81полÑ\8cзÑ\83емÑ\8bй Ð´Ð»Ñ\8f Ð³ÐµÐ½ÐµÑ\80аÑ\86ии ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии samba."
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка config<br />Ñ\84айла samba"
 
 msgid "General Settings"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
 
 msgid "Hostname"
 msgstr "Имя хоста"
 
 msgid "Mask for new directories"
-msgstr "Ð\9cаÑ\81ка Ð´Ð»Ñ\8f Ð½Ð¾Ð²Ñ\8bÑ\85 Ð´Ð¸Ñ\80екÑ\82оÑ\80ий"
+msgstr "Ð\9cаÑ\81ка Ð´Ð»Ñ\8f Ð½Ð¾Ð²Ñ\8bÑ\85 Ð¿Ð°Ð¿Ð¾Ðº"
 
 msgid "Mask for new files"
 msgstr "Маска для новых файлов"
@@ -68,15 +69,17 @@ msgid ""
 "Please add directories to share. Each directory refers to a folder on a "
 "mounted device."
 msgstr ""
+"Добавьте папки для совместного доступа. Каждая папка - соответствует разделу "
+"на подключенном устройстве."
 
 msgid "Read-only"
 msgstr "Только для чтения"
 
 msgid "Share home-directories"
-msgstr "СовмеÑ\81Ñ\82но Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð´Ð¾Ð¼Ð°Ñ\88ние Ð´Ð¸Ñ\80екÑ\82оÑ\80ии"
+msgstr "СовмеÑ\81Ñ\82но Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ð´Ð¾Ð¼Ð°Ñ\88ние Ð¿Ð°Ð¿Ðºи"
 
 msgid "Shared Directories"
-msgstr "СовмеÑ\81Ñ\82но Ð¸Ñ\81полÑ\8cзÑ\83емÑ\8bе Ð´Ð¸Ñ\80екÑ\82оÑ\80ии"
+msgstr "СовмеÑ\81Ñ\82но Ð¸Ñ\81полÑ\8cзÑ\83емÑ\8bе Ð¿Ð°Ð¿Ðºи"
 
 msgid ""
 "This is the content of the file '/etc/samba/smb.conf.template' from which "
@@ -85,9 +88,9 @@ msgid ""
 "Settings' tab."
 msgstr ""
 "Это содержимое файла '/etc/samba/smb.conf.template', из которого "
-"генерируется конфигурация samba. Значения, заключённые в символы \"|\", не "
-"должны быть изменены. Они будут автоматически заменены на значения из "
-"вкладки 'Ð\9eбÑ\89ие настройки'."
+"генерируется config файл - samba.<br />Значения, заключенные в символы "
+"('|'), не должны быть изменены.<br />Они будут автоматически заменены на "
+"знаÑ\87ениÑ\8f Ñ\81о Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b 'Ð\9eÑ\81новнÑ\8bе настройки'."
 
 msgid "Workgroup"
 msgstr "Рабочая группа"
index 22f3106d031caac34f34404d6dd8c1560d4b68e7..195a31f2fd6476c0399e077e93c9cbccde7d8cf2 100644 (file)
@@ -34,8 +34,6 @@ if stype == "ss_server" then
        o.datatype = "ipaddr"
        o.placeholder = "0.0.0.0"
        ss.values_ipaddr(o)
-       o = s:taboption("general", Value, "manager_address", translate("Manager address"))
-       o.datatype = "hostport"
 else
        ss.options_client(s, "general")
        if stype == "ss_tunnel" then
@@ -43,10 +41,6 @@ else
                        translate("Tunnel address"),
                        translate("The address ss-tunnel will forward traffic to"))
                o.datatype = "hostport"
-       elseif stype == "ss_redir" then
-               o = s:taboption("advanced", Flag, "disable_sni",
-                       translate("Disable SNI"),
-                       translate("Disable parsing HTTP/HTTPS payload to find then resolve hostname at remote server"))
        end
 end
 
index 7ba6b40c5309b7a236880e6aefed31f75f81a2fa..af1a75b6f2f760f836e621a9d8738b3202f2ce72 100644 (file)
@@ -42,7 +42,8 @@ function values_serverlist(o)
                local server = sdata["server"]
                local server_port = sdata["server_port"]
                if server and server_port then
-                       local desc = "%s - %s:%s" % {sname, sdata["server"], sdata["server_port"]}
+                       local disabled = ucival_to_bool(sdata[".disabled"]) and " - disabled" or ""
+                       local desc = "%s - %s:%s%s" % {sname, server, server_port, disabled}
                        o:value(sname, desc)
                end
        end)
@@ -121,6 +122,7 @@ function options_common(s, tab)
        s:taboption(tab, Flag, "verbose", translate("Verbose"))
        s:taboption(tab, Flag, "ipv6_first", translate("IPv6 First"), translate("Prefer IPv6 addresses when resolving names"))
        s:taboption(tab, Flag, "fast_open", translate("Enable TCP Fast Open"))
+       s:taboption(tab, Flag, "no_delay", translate("Enable TCP_NODELAY"))
        s:taboption(tab, Flag, "reuse_port", translate("Enable SO_REUSEPORT"))
 end
 
@@ -137,14 +139,11 @@ function cfgvalue_overview(sdata)
                cfgvalue_overview_(sdata, lines, names_options_common)
                cfgvalue_overview_(sdata, lines, {
                        "bind_address",
-                       "manager_address",
                })
        elseif stype == "ss_local" or stype == "ss_redir" or stype == "ss_tunnel" then
                cfgvalue_overview_(sdata, lines, names_options_client)
                if stype == "ss_tunnel" then
                        cfgvalue_overview_(sdata, lines, {"tunnel_address"})
-               elseif stype == "ss_redir" then
-                       cfgvalue_overview_(sdata, lines, {"disable_sni"})
                end
                cfgvalue_overview_(sdata, lines, names_options_common)
        else
@@ -224,6 +223,7 @@ names_options_common = {
        "verbose",
        "ipv6_first",
        "fast_open",
+       "no_delay",
        "reuse_port",
        "mode",
        "mtu",
diff --git a/applications/luci-app-shairplay/po/ru/shairplay.po b/applications/luci-app-shairplay/po/ru/shairplay.po
new file mode 100644 (file)
index 0000000..037e90b
--- /dev/null
@@ -0,0 +1,56 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: shairplay\n"
+"POT-Creation-Date: 2017-12-06 11:15+0300\n"
+"PO-Revision-Date: 2018-01-14 11:43+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"
+
+msgid "AO Device ID"
+msgstr "AO ID устройства"
+
+msgid "AO Device Name"
+msgstr "AO имя устройства"
+
+msgid "AO Driver"
+msgstr "AO драйвер"
+
+msgid "Airport Name"
+msgstr "Имя Air-порта"
+
+msgid "Default"
+msgstr "По умолчанию"
+
+msgid "Enabled"
+msgstr "Включено"
+
+msgid "HW Address"
+msgstr "HW адрес"
+
+msgid "Password"
+msgstr "Пароль"
+
+msgid "Port"
+msgstr "Порт"
+
+msgid "Respawn"
+msgstr "Перерождение"
+
+msgid "Shairplay"
+msgstr "Shairplay"
+
+msgid ""
+"Shairplay is a simple AirPlay server implementation, here you can configure "
+"the settings."
+msgstr ""
+"Shairplay является простой реализацией сервера AirPlay, здесь вы можете его "
+"настроить."
diff --git a/applications/luci-app-shairport/Makefile b/applications/luci-app-shairport/Makefile
deleted file mode 100644 (file)
index f174ef4..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# 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 Shairport
-LUCI_DEPENDS:=+shairport
-
-include ../../luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-shairport/luasrc/controller/shairport.lua b/applications/luci-app-shairport/luasrc/controller/shairport.lua
deleted file mode 100644 (file)
index b31b64e..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
--- Copyright 2014 Álvaro Fernández Rojas <noltari@gmail.com>
--- Licensed to the public under the Apache License 2.0.
-
-module("luci.controller.shairport", package.seeall)
-
-function index()
-       if not nixio.fs.access("/etc/config/shairport") then
-               return
-       end
-
-       local page = entry({"admin", "services", "shairport"}, cbi("shairport"), _("Shairport"))
-       page.dependent = true
-
-end
diff --git a/applications/luci-app-shairport/luasrc/model/cbi/shairport.lua b/applications/luci-app-shairport/luasrc/model/cbi/shairport.lua
deleted file mode 100644 (file)
index d3c2a25..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
--- Copyright 2014 Álvaro Fernández Rojas <noltari@gmail.com>
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("shairport", "Shairport", translate("Shairport is a simple AirPlay server implementation, here you can configure the settings."))
-
-s = m:section(TypedSection, "shairport", "")
-s.addremove = true
-s.anonymous = false
-
-enable=s:option(Flag, "disabled", translate("Enabled"))
-enable.enabled="0"
-enable.disabled="1"
-enable.default = "1"
-enable.rmempty = false
-respawn=s:option(Flag, "respawn", translate("Respawn"))
-respawn.default = false
-
-bname = s:option(Value, "bname", translate("Airport Name"))
-bname.rmempty = true
-
-pw = s:option(Value, "password", translate("Password"))
-pw.rmempty = true
-pw.password = true
-
-port=s:option(Value, "port", translate("Port"))
-port.rmempty = true
-port.datatype = "port"
-
-buffer=s:option(Value, "buffer", translate("Buffer fill"))
-buffer.rmempty = true
-buffer.datatype = "uinteger"
-
-log_file=s:option(Value, "log_file", translate("Log file"))
-log_file.rmempty = true
---log_file.datatype = "file"
-
-err_file=s:option(Value, "err_file", translate("Error file"))
-err_file.rmempty = true
---err_file.datatype = "file"
-
-meta_dir=s:option(Value, "meta_dir", translate("Metadata directory"))
-meta_dir.rmempty = true
-meta_dir.datatype = "directory"
-
-cmd_start=s:option(Value, "cmd_start", translate("Command when playback begins"))
-cmd_start.rmempty = true
-
-cmd_stop=s:option(Value, "cmd_stop", translate("Command when playback ends"))
-cmd_stop.rmempty = true
-
-cmd_wait=s:option(Flag, "cmd_wait", translate("Block while the commands run"))
-cmd_wait.default = false
-
-mdns=s:option(ListValue, "mdns", translate("mDNS"))
-mdns.rmempty = true
-mdns:value("", translate("Default"))
-mdns:value("avahi")
-mdns:value("dns_sd")
-mdns:value("external_avahi")
-mdns:value("external_dns_sd")
-mdns:value("tinysvcmdns")
-
-audio_output=s:option(ListValue, "audio_output", translate("Audio output"))
-audio_output.rmempty = true
-audio_output:value("", translate("Default"))
-audio_output:value("alsa")
-audio_output:value("ao")
-audio_output:value("dummy")
-audio_output:value("pulse")
-audio_output:value("pipe")
-
--- alsa output --
-output_dev=s:option(Value, "output_dev", translate("Output device"))
-output_dev.rmempty = true
-output_dev:depends("audio_output", "alsa")
-
-mixer_dev=s:option(Value, "mixer_dev", translate("Mixer device"))
-mixer_dev.rmempty = true
-mixer_dev:depends("audio_output", "alsa")
-
-mixer_type=s:option(ListValue, "mixer_type", translate("Mixer type"))
-mixer_type.rmempty = true
-mixer_type:value("", translate("Default"))
-mixer_type:value("software")
-mixer_type:value("hardware")
-mixer_type:depends("audio_output", "alsa")
-
-mixer_control=s:option(Value, "mixer_control", translate("Mixer control"))
-mixer_control.rmempty = true
-mixer_control:depends("audio_output", "alsa")
-
-mixer_index = s:option(ListValue, "mixer_index", translate("Mixer index"))
-mixer_index.rmempty = true
-mixer_index:depends("audio_output", "alsa")
-mixer_index:value("", translate("Default"))
-local pats = io.popen("find /proc/asound/ -type d -name 'card*' | sort")
-if pats then
-       local l
-       while true do
-               l = pats:read("*l")
-               if not l then break end
-
-               l = string.gsub(l, "/proc/asound/card", "")
-               if l then
-                       mixer_index:value(l)
-               end
-       end
-       pats:close()
-end
-
--- ao output --
-ao_driver=s:option(Value, "ao_driver", translate("AO driver"))
-ao_driver.rmempty = true
-ao_driver:depends("audio_output", "ao")
-
-ao_name=s:option(Value, "ao_name", translate("AO name"))
-ao_name.rmempty = true
-ao_name:depends("audio_output", "ao")
-
-ao_id = s:option(ListValue, "ao_id", translate("AO id"))
-ao_id.rmempty = true
-ao_id:depends("audio_output", "ao")
-ao_id:value("", translate("Default"))
-local pats = io.popen("find /proc/asound/ -type d -name 'card*' | sort")
-if pats then
-       local l
-       while true do
-               l = pats:read("*l")
-               if not l then break end
-
-               l = string.gsub(l, "/proc/asound/card", "")
-               if l then
-                       ao_id:value(l)
-               end
-       end
-       pats:close()
-end
-
-ao_options=s:option(Value, "ao_options", translate("AO options"))
-ao_options.rmempty = true
-ao_options:depends("audio_output", "ao")
-
--- pipe output --
-output_fifo=s:option(Value, "output_fifo", translate("Output FIFO"))
-output_fifo.rmempty = true
-output_fifo:depends("audio_output", "pipe")
-
--- pulse output --
-pulse_server=s:option(Value, "pulse_server", translate("Pulse server"))
-pulse_server.rmempty = true
-pulse_server:depends("audio_output", "pulse")
-
-pulse_sink=s:option(Value, "pulse_sink", translate("Pulse sink"))
-pulse_sink.rmempty = true
-pulse_sink:depends("audio_output", "pulse")
-
-pulse_appname=s:option(Value, "pulse_appname", translate("Pulse application name"))
-pulse_appname.rmempty = true
-pulse_appname:depends("audio_output", "pulse")
-
-return m
diff --git a/applications/luci-app-shairport/root/etc/uci-defaults/40_luci-shairport b/applications/luci-app-shairport/root/etc/uci-defaults/40_luci-shairport
deleted file mode 100644 (file)
index be9412b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# needed for "Save and Apply" to restart shairport
-uci -q batch <<-EOF >/dev/null
-       delete ucitrack.@shairport[-1]
-       add ucitrack shairport
-       set ucitrack.@shairport[-1].init="shairport"
-       commit ucitrack
-EOF
-
-rm -f /tmp/luci-indexcache
-exit 0
index d7be6850ba5bf8520af7165cd167d62f52889650..31055f1207b83faba7791398095a84c68274265a 100644 (file)
@@ -7,9 +7,10 @@ PKG_LICENSE:=GPL-3.0+
 PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
 
 LUCI_TITLE:=Simple Adblock Web UI
-LUCI_DEPENDS:=+simple-adblock
+LUCI_DESCRIPTION:=Provides Web UI for simple-adblock service.
+LUCI_DEPENDS:=+luci +simple-adblock
 LUCI_PKGARCH:=all
-PKG_RELEASE:=2
+PKG_RELEASE:=5
 
 include ../../luci.mk
 
index 214f298292b0938851b4c7ce9981ca546bedd177..22672124fc9856c75dd590a1133b162d297dcc5f 100644 (file)
@@ -2,19 +2,11 @@ m = Map("simple-adblock", translate("Simple AdBlock Settings"))
 s = m:section(NamedSection, "config", "simple-adblock")
 
 -- General options
-e = s:option(Flag, "enabled", translate("Enable/start service"))
+e = s:option(Flag, "enabled", translate("Start Simple Adblock service"))
 e.rmempty  = false
-
-function e.cfgvalue(self, section)
-       return self.map:get(section, "enabled") == "1" and luci.sys.init.enabled("simple-adblock") and self.enabled or self.disabled
-end
-
 function e.write(self, section, value)
-       if value == "1" then
-               luci.sys.call("/etc/init.d/simple-adblock enable >/dev/null")
-               luci.sys.call("/etc/init.d/simple-adblock start >/dev/null")
-       else
-               luci.sys.call("/etc/init.d/simple-adblock stop >/dev/null")
+       if value ~= "1" then
+               luci.sys.init.stop("simple-adblock")
        end
        return Flag.write(self, section, value)
 end
@@ -32,15 +24,14 @@ o3:value("1", translate("Force Router DNS server to all local devices"))
 o3.rmempty = false
 o3.default = 1
 
-
 local sysfs_path = "/sys/class/leds/"
 local leds = {}
 if nixio.fs.access(sysfs_path) then
        leds = nixio.util.consume((nixio.fs.dir(sysfs_path)))
 end
 if #leds ~= 0 then
-       o3 = s:option(Value, "led", translate("LED to indicate status"), translate("Pick the LED not already used in ")
-               .. [[<a href="]] .. luci.dispatcher.build_url("admin/system/leds") .. [[">]]
+       o3 = s:option(Value, "led", translate("LED to indicate status"), translate("Pick the LED not already used in")
+               .. [[ <a href="]] .. luci.dispatcher.build_url("admin/system/leds") .. [[">]]
                .. translate("System LED Configuration") .. [[</a>]])
        o3.rmempty = true
        o3:value("", translate("none"))
@@ -49,7 +40,6 @@ if #leds ~= 0 then
        end
 end
 
-
 s2 = m:section(NamedSection, "config", "simple-adblock")
 -- Whitelisted Domains
 d1 = s2:option(DynamicList, "whitelist_domain", translate("Whitelisted Domains"), translate("Individual domains to be whitelisted"))
index 7926595b6e7da50407862846e465d5a33e92214a..6c98eb6cea3e127938800567db641add1c135b81 100644 (file)
@@ -24,9 +24,6 @@ msgstr "hosts ブラックリストのURL"
 msgid "Controls system log and console output verbosity"
 msgstr "システム ログとコンソール出力の冗長性を設定します。"
 
-msgid "Enable/start service"
-msgstr "サービスの有効化/開始"
-
 msgid "Force Router DNS"
 msgstr "ルーターDNSの強制"
 
@@ -54,7 +51,7 @@ msgid "Output Verbosity Setting"
 msgstr "出力詳細度の設定"
 
 msgid "Pick the LED not already used in"
-msgstr "右の設定で既に使用されていないLEDを選択します:"
+msgstr "右の設定で既に使用されていないLEDを選択します"
 
 msgid "Simple AdBlock"
 msgstr "Simple AdBlock"
@@ -65,6 +62,9 @@ msgstr "Simple AdBlock 設定"
 msgid "Some output"
 msgstr "軽量出力"
 
+msgid "Start Simple Adblock service"
+msgstr ""
+
 msgid "Suppress output"
 msgstr "出力の抑制"
 
@@ -91,3 +91,6 @@ msgstr "ホワイトリスト ドメイン"
 
 msgid "none"
 msgstr "なし"
+
+#~ msgid "Enable/start service"
+#~ msgstr "サービスの有効化/開始"
index 6dbbf8b8447ce785ffc9c84200e8241528847eb4..d298e94902b982839585f5ab48148d23c9792b59 100644 (file)
@@ -15,9 +15,6 @@ msgstr ""
 "Controla o sistema de registro e o detalhamento das mensagens de saída do "
 "console"
 
-msgid "Enable/start service"
-msgstr "Habilitar/Iniciar o serviço"
-
 msgid "Force Router DNS"
 msgstr "Forçar o DNS do Roteador"
 
@@ -58,6 +55,9 @@ msgstr "Configuração do Simple AdBlock"
 msgid "Some output"
 msgstr "Pouco detalhado"
 
+msgid "Start Simple Adblock service"
+msgstr ""
+
 msgid "Suppress output"
 msgstr "Suprimir"
 
@@ -84,3 +84,6 @@ msgstr "Domínios para a Lista Branca"
 
 msgid "none"
 msgstr "Nenhum"
+
+#~ msgid "Enable/start service"
+#~ msgstr "Habilitar/Iniciar o serviço"
index 6dbbf8b8447ce785ffc9c84200e8241528847eb4..d298e94902b982839585f5ab48148d23c9792b59 100644 (file)
@@ -15,9 +15,6 @@ msgstr ""
 "Controla o sistema de registro e o detalhamento das mensagens de saída do "
 "console"
 
-msgid "Enable/start service"
-msgstr "Habilitar/Iniciar o serviço"
-
 msgid "Force Router DNS"
 msgstr "Forçar o DNS do Roteador"
 
@@ -58,6 +55,9 @@ msgstr "Configuração do Simple AdBlock"
 msgid "Some output"
 msgstr "Pouco detalhado"
 
+msgid "Start Simple Adblock service"
+msgstr ""
+
 msgid "Suppress output"
 msgstr "Suprimir"
 
@@ -84,3 +84,6 @@ msgstr "Domínios para a Lista Branca"
 
 msgid "none"
 msgstr "Nenhum"
+
+#~ msgid "Enable/start service"
+#~ msgstr "Habilitar/Iniciar o serviço"
diff --git a/applications/luci-app-simple-adblock/po/ru/simple-adblock.po b/applications/luci-app-simple-adblock/po/ru/simple-adblock.po
new file mode 100644 (file)
index 0000000..01e07dd
--- /dev/null
@@ -0,0 +1,97 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: simple-adblock\n"
+"POT-Creation-Date: 2017-12-07 14:00+0300\n"
+"PO-Revision-Date: 2018-01-22 13:18+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"
+
+msgid "Blacklisted Domain URLs"
+msgstr "URL ссылки Черных<br />списков доменов"
+
+msgid "Blacklisted Domains"
+msgstr "Черный список доменов"
+
+msgid "Blacklisted Hosts URLs"
+msgstr "URL ссылки Черных<br />списков хостов"
+
+msgid "Controls system log and console output verbosity"
+msgstr "Детальная настройка записи событий в системный журнал."
+
+msgid "Force Router DNS"
+msgstr "Назначить DNS роутера"
+
+msgid "Force Router DNS server to all local devices"
+msgstr "Назначить DNS роутера всем локальным устройствам"
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+"Назначить DNS роутера всем локальным устройствам, методом DNS Hijacking."
+
+msgid "Individual domains to be blacklisted"
+msgstr "Домены добавленные пользователем в Черный список."
+
+msgid "Individual domains to be whitelisted"
+msgstr "Домены добавленные пользователем в Белый список."
+
+msgid "LED to indicate status"
+msgstr "LED индикация состояния"
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr ""
+"Разрешить локальным устройствам использовать собственные DNS, если они "
+"прописаны в настройках сети устройства"
+
+msgid "Output Verbosity Setting"
+msgstr "Настройка журнала"
+
+msgid "Pick the LED not already used in"
+msgstr "Выберите LED не используется на странице"
+
+msgid "Simple AdBlock"
+msgstr "Simple AdBlock"
+
+msgid "Simple AdBlock Settings"
+msgstr "Simple AdBlock настройки"
+
+msgid "Some output"
+msgstr "Частичная запись"
+
+msgid "Start Simple Adblock service"
+msgstr "Запуск сервиса Simple Adblock"
+
+msgid "Suppress output"
+msgstr "Запретить запись"
+
+msgid "System LED Configuration"
+msgstr "'Настройка LED индикации' системы."
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr "URL ссылки Черных списков доменов."
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr "URL ссылки Белых списков доменов."
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr "URL ссылки Черных списков хостов."
+
+msgid "Verbose output"
+msgstr "Подробная запись"
+
+msgid "Whitelisted Domain URLs"
+msgstr "URL ссылки Белых списков доменов"
+
+msgid "Whitelisted Domains"
+msgstr "Белый список доменов"
+
+msgid "none"
+msgstr "ничего"
index e95f95f02b66c11b2a939618246b77cfb90184df..33408e1839159f1899b03e18bff3214d1f1e0032 100644 (file)
@@ -13,9 +13,6 @@ msgstr "Svartlistade värdadresser"
 msgid "Controls system log and console output verbosity"
 msgstr "Kontrollerar systemloggar och detaljnivån för konsoll-utmatningen"
 
-msgid "Enable/start service"
-msgstr "Aktivera/starta tjänsten"
-
 msgid "Force Router DNS"
 msgstr ""
 
@@ -52,6 +49,9 @@ msgstr "Inställningar för Simple AdBlock"
 msgid "Some output"
 msgstr "Viss utmatning"
 
+msgid "Start Simple Adblock service"
+msgstr ""
+
 msgid "Suppress output"
 msgstr "Förträng utmatning"
 
@@ -78,3 +78,6 @@ msgstr "Vitlistade domäner"
 
 msgid "none"
 msgstr "ingen"
+
+#~ msgid "Enable/start service"
+#~ msgstr "Aktivera/starta tjänsten"
index 4cfff964a30c80a141a3f647086ecb9b262ae48e..1a71cae624ce148d3338a699bf2f3f25f59f4109 100644 (file)
@@ -13,9 +13,6 @@ msgstr ""
 msgid "Controls system log and console output verbosity"
 msgstr ""
 
-msgid "Enable/start service"
-msgstr ""
-
 msgid "Force Router DNS"
 msgstr ""
 
@@ -52,6 +49,9 @@ msgstr ""
 msgid "Some output"
 msgstr ""
 
+msgid "Start Simple Adblock service"
+msgstr ""
+
 msgid "Suppress output"
 msgstr ""
 
index 13b8edce6da06fd915743e59fd68dc1d3caa7c24..af7a3a3c0185f23ad3578f188686f406437f7165 100644 (file)
@@ -2,13 +2,14 @@ module("luci.controller.splash.splash", package.seeall)
 
 local uci = luci.model.uci.cursor()
 local util = require "luci.util"
+local ipc = require "luci.ip"
 
 function index()
        entry({"admin", "services", "splash"}, cbi("splash/splash"), _("Client-Splash"), 90)
        entry({"admin", "services", "splash", "splashtext" }, form("splash/splashtext"), _("Splashtext"), 10)
 
        local e
-       
+
        e = node("splash")
        e.target = call("action_dispatch")
 
@@ -24,30 +25,35 @@ function index()
 end
 
 function ip_to_mac(ip)
-       local ipc = require "luci.ip"
        local i, n
-
-       for i, n in ipairs(ipc.neighbors()) do
-               if n.mac and n.dest and n.dest:equal(ip) then
-                       return n.mac
-               end
+       for i, n in ipairs(ipc.neighbors({ dest = ip })) do
+               local mac = ipc.checkmac(n.mac)
+               if mac then return mac end
        end
 end
 
 function action_dispatch()
        local uci = luci.model.uci.cursor_state()
-       local mac = ip_to_mac(luci.http.getenv("REMOTE_ADDR")) or ""
+       local mac = ip_to_mac(luci.http.getenv("REMOTE_ADDR"))
        local access = false
 
-       uci:foreach("luci_splash", "lease", function(s)
-               if s.mac and s.mac:lower() == mac then access = true end
-       end)
+       if mac then
+               uci:foreach("luci_splash", "lease", function(s)
+                       if ipc.checkmac(s.mac) == mac then
+                               access = true
+                               return false
+                       end
+               end)
 
-       uci:foreach("luci_splash", "whitelist", function(s)
-               if s.mac and s.mac:lower() == mac then access = true end
-       end)
+               uci:foreach("luci_splash", "whitelist", function(s)
+                       if ipc.checkmac(s.mac) == mac then
+                               access = true
+                               return false
+                       end
+               end)
+       end
 
-       if #mac > 0 and access then
+       if access then
                luci.http.redirect(luci.dispatcher.build_url())
        else
                luci.http.redirect(luci.dispatcher.build_url("splash", "splash"))
@@ -56,33 +62,39 @@ end
 
 function blacklist()
        leased_macs = { }
-       uci:foreach("luci_splash", "blacklist",
-               function(s) leased_macs[s.mac:lower()] = true
+       uci:foreach("luci_splash", "blacklist", function(s)
+               local m = ipc.checkmac(s.mac)
+               if m then leased_macs[m] = true end
        end)
        return leased_macs
 end
 
 function action_activate()
        local ipc = require "luci.ip"
-       local mac = ip_to_mac(luci.http.getenv("REMOTE_ADDR") or "127.0.0.1") or ""
+       local mac = ip_to_mac(luci.http.getenv("REMOTE_ADDR") or "127.0.0.1")
        local uci_state = require "luci.model.uci".cursor_state()
        local blacklisted = false
        if mac and luci.http.formvalue("accept") then
-               uci:foreach("luci_splash", "blacklist",
-                       function(s) if s.mac and s.mac:lower() == mac then blacklisted = true end
+               uci:foreach("luci_splash", "blacklist", function(s)
+                       if ipc.checkmac(s.mac) == mac then
+                               blacklisted = true
+                               return false
+                       end
                end)
-               if blacklisted then     
+
+               if blacklisted then
                        luci.http.redirect(luci.dispatcher.build_url("splash" ,"blocked"))
                else
+                       local id = tostring(mac):gsub(':', ''):lower()
                        local redirect_url = uci:get("luci_splash", "general", "redirect_url")
                        if not redirect_url then
-                               redirect_url = uci_state:get("luci_splash_locations", mac:gsub(':', ''):lower(), "location")
+                               redirect_url = uci_state:get("luci_splash_locations", id, "location")
                        end
                        if not redirect_url then
                                redirect_url = luci.model.uci.cursor():get("freifunk", "community", "homepage") or 'http://www.freifunk.net'
                        end
-                       remove_redirect(mac:gsub(':', ''):lower())
-                       os.execute("luci-splash lease "..mac.." >/dev/null 2>&1")
+                       remove_redirect(id)
+                       os.execute("luci-splash lease "..tostring(mac).." >/dev/null 2>&1")
                        luci.http.redirect(redirect_url)
                end
        else
@@ -94,13 +106,14 @@ function action_status_admin()
        local uci = luci.model.uci.cursor_state()
        local macs = luci.http.formvaluetable("save")
 
-       local changes = { 
+       local changes = {
                whitelist = { },
                blacklist = { },
                lease     = { },
                remove    = { }
        }
 
+       local key, _
        for key, _ in pairs(macs) do
                local policy = luci.http.formvalue("policy.%s" % key)
                local mac    = luci.http.protocol.urldecode(key)
@@ -116,22 +129,22 @@ function action_status_admin()
 
        if #changes.whitelist > 0 then
                os.execute("luci-splash whitelist %s >/dev/null"
-                       % table.concat(changes.whitelist))
+                       % util.shellquote(table.concat(changes.whitelist)))
        end
 
        if #changes.blacklist > 0 then
                os.execute("luci-splash blacklist %s >/dev/null"
-                       % table.concat(changes.blacklist))
+                       % util.shellquote(table.concat(changes.blacklist)))
        end
 
        if #changes.lease > 0 then
                os.execute("luci-splash lease %s >/dev/null"
-                       % table.concat(changes.lease))
+                       % util.shellquote(table.concat(changes.lease)))
        end
 
        if #changes.remove > 0 then
                os.execute("luci-splash remove %s >/dev/null"
-                       % table.concat(changes.remove))
+                       % util.shellquote(table.concat(changes.remove)))
        end
 
        luci.template.render("admin_status/splash", { is_admin = true })
@@ -141,17 +154,17 @@ function action_status_public()
        luci.template.render("admin_status/splash", { is_admin = false })
 end
 
-function remove_redirect(mac)
-       local mac = mac:lower()
-       mac = mac:gsub(":", "")
+function remove_redirect(id)
        local uci = require "luci.model.uci".cursor_state()
        local redirects = uci:get_all("luci_splash_locations")
        --uci:load("luci_splash_locations")
        uci:revert("luci_splash_locations")
+
        -- For all redirects
+       local k, v
        for k, v in pairs(redirects) do
                if v[".type"] == "redirect" then
-                       if v[".name"] ~= mac then
+                       if v[".name"] ~= id then
                                -- Rewrite state
                                uci:section("luci_splash_locations", "redirect", v[".name"], {
                                        location = v.location
@@ -159,5 +172,6 @@ function remove_redirect(mac)
                        end
                end
        end
+
        uci:save("luci_splash_redirects")
 end
index 3415c205d53da61f70590fc427527801ba382cc7..37f67776aadd2acd90f406ce125a4b6cf769fa69 100644 (file)
@@ -6,6 +6,8 @@
 <%-
 
 local utl = require "luci.util"
+local sys = require "luci.sys"
+local ipc = require "luci.ip"
 local ipt = require "luci.sys.iptparser".IptParser()
 local uci = require "luci.model.uci".cursor_state()
 local wat = require "luci.tools.webadmin"
@@ -14,21 +16,15 @@ local fs  = require "nixio.fs"
 
 local clients = { }
 local leasetime = tonumber(uci:get("luci_splash", "general", "leasetime") or 1) * 60 * 60
-local leasefile = "/tmp/dhcp.leases"
-
-uci:foreach("dhcp", "dnsmasq",
-       function(s)
-               if s.leasefile then leasefile = s.leasefile end
-       end)
-
 
 uci:foreach("luci_splash_leases", "lease",
        function(s)
-               if s.start and s.mac then
-                       clients[s.mac:lower()] = {
+               local m = ipc.checkmac(s.mac)
+               if m and s.start then
+                       clients[m] = {
                                start   = tonumber(s.start),
                                limit   = ( tonumber(s.start) + leasetime ),
-                               mac     = s.mac:upper(),
+                               mac     = m,
                                ipaddr  = s.ipaddr,
                                policy  = "normal",
                                packets = 0,
@@ -39,11 +35,12 @@ uci:foreach("luci_splash_leases", "lease",
 
 for _, r in ipairs(ipt:find({table="nat", chain="luci_splash_leases"})) do
        if r.options and #r.options >= 2 and r.options[1] == "MAC" then
-               if not clients[r.options[2]:lower()] then
-                       clients[r.options[2]:lower()] = {
+               local m = ipc.checkmac(r.options[2])
+               if m and not clients[m] then
+                       clients[m] = {
                                start  = 0,
                                limit  = 0,
-                               mac    = r.options[2]:upper(),
+                               mac    = m,
                                policy = ( r.target == "RETURN" ) and "whitelist" or "blacklist",
                                packets = 0,
                                bytes   = 0
@@ -60,7 +57,7 @@ for mac, client in pairs(clients) do
 
        if client.ipaddr then
                local rin  = ipt:find({table="mangle", chain="luci_splash_mark_in", destination=client.ipaddr})
-               local rout = ipt:find({table="mangle", chain="luci_splash_mark_out", options={"MAC", client.mac:upper()}})
+               local rout = ipt:find({table="mangle", chain="luci_splash_mark_out", options={"MAC", client.mac}})
 
                if rin and #rin > 0 then
                        client.bytes_in   = rin[1].bytes
@@ -76,39 +73,27 @@ end
 
 uci:foreach("luci_splash", "whitelist",
        function(s)
-               if s.mac and clients[s.mac:lower()] then
-                       clients[s.mac:lower()].policy="whitelist"
+               local m = ipc.checkmac(s.mac)
+               if m and clients[m] then
+                       clients[m].policy="whitelist"
                end
        end)
 
 uci:foreach("luci_splash", "blacklist",
        function(s)
-               if s.mac and clients[s.mac:lower()] then
-                       clients[s.mac:lower()].policy=(s.kicked and "kicked" or "blacklist")
+               local m = ipc.checkmac(s.mac)
+               if m and clients[m] then
+                       clients[m].policy=(s.kicked and "kicked" or "blacklist")
                end
        end)            
 
-if fs.access(leasefile) then
-       for l in io.lines(leasefile) do
-               local time, mac, ip, name = l:match("^(%d+) (%S+) (%S+) (%S+)")
-               if time and mac and ip then
-                       local c = clients[mac:lower()]
-                       if c then
-                               c.ip = ip
-                               c.hostname = ( name ~= "*" ) and name or nil
-                       end
-               end
+sys.net.host_hints(function(mac, v4, v6, name)
+       local c = mac and clients[mac]
+       if c then
+               c.ip = c.ip or v4
+               c.hostname = c.hostname or name
        end
-end
-
-for i, n in ipairs(ipc.neighbors({ family = 4 })) do
-       if n.mac and n.dest then
-               local c = clients[n.mac]
-               if c and not c.ip then
-                       c.ip = n.dest:string()
-               end
-       end
-end
+end)
 
 local function showmac(mac)
        if not is_admin then
@@ -176,7 +161,7 @@ end
                                                splash.hostname, splash.ip, splash.mac, splash.timeleft, splash.trafficin, splash.trafficout);
 
                                <% if is_admin then %>
-                                       s += String.format('<select name="policy.%s" style="width:200px">', splash.mac.toLowerCase());
+                                       s += String.format('<select name="policy.%s" style="width:200px">', splash.mac);
                                        if (splash.policy == 'whitelist') {     
                                                s += '<option value="whitelist" selected="selected"><%:whitelisted%></option>'
                                        } else {
@@ -196,7 +181,7 @@ end
                                        s += String.format(
                                                '</select>' +
                                                '<input type="submit" class="cbi-button cbi-button-save" name="save.%s" value="<%:Save%>" />',
-                                               splash.mac.toLowerCase());
+                                               splash.mac);
                                <% else %>
                                        s += String.format('%s', splash.policy);
                                <% end %>
index 3f470dba0dc7c7bf113dc0cfb46748cce3655747..24151654a608b5cd6b205d007d9d146321fce412 100644 (file)
@@ -1,19 +1,19 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: splash\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-26 15:10+0200\n"
-"PO-Revision-Date: 2013-11-13 18:52+0200\n"
-"Last-Translator: Роман <x.wserfer@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2013-11-13 18:52+0200\n"
+"PO-Revision-Date: 2018-01-19 22:46+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "Accept"
 msgstr "Принять"
@@ -24,8 +24,8 @@ msgid ""
 "few connections are shared between all users. That means available bandwidth "
 "is limited and because of this we ask you not to do any of the following:"
 msgstr ""
-"Ð\94оÑ\81Ñ\82Ñ\83п Ðº Ð¸нтернету возможен благодаря некоторым активистам данного проекта, "
-"коÑ\82оÑ\80Ñ\8bе Ð´ÐµÐ»Ð°Ñ\8eÑ\82 Ð¾Ð±Ñ\89едоÑ\81Ñ\82Ñ\83пнÑ\8bм Ñ\81воÑ\91 Ð»Ð¸Ñ\87ное Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87ение Ðº Ð¸нтернету. Эти "
+"Ð\94оÑ\81Ñ\82Ñ\83п Ðº Ð\98нтернету возможен благодаря некоторым активистам данного проекта, "
+"коÑ\82оÑ\80Ñ\8bе Ð´ÐµÐ»Ð°Ñ\8eÑ\82 Ð¾Ð±Ñ\89едоÑ\81Ñ\82Ñ\83пнÑ\8bм Ñ\81воÑ\91 Ð»Ð¸Ñ\87ное Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87ение Ðº Ð\98нтернету. Эти "
 "немногие подключения разделяются среди всех пользователей. Это означает, что "
 "доступная пропускная способность ограничена и поэтому мы просим вас не "
 "делать следующего:"
@@ -35,17 +35,23 @@ msgid ""
 "without notice for any reason, for certain devices, and/or may be blocked "
 "for certain users."
 msgstr ""
+"Доступ к сети не гарантируется. Он может быть прерван в любое время без "
+"предварительного уведомления по любой причине, для определенных устройств, и/"
+"или может быть заблокирован для определенных пользователей."
 
 msgid "Active Clients"
 msgstr "Активные клиенты"
 
 msgid "Allowed hosts/subnets"
-msgstr "Разрешённые хосты/подсети"
+msgstr "Разрешенные хосты/подсети"
 
 msgid ""
 "As an alternative to editing the complete splash text you can also just "
 "include some custom text in the default splash page by entering it here."
 msgstr ""
+"В качестве альтернативы редактированию полного текста заставки, можно также "
+"просто включить некоторый пользовательский текст на странице заставки по "
+"умолчанию, введя его здесь."
 
 msgid ""
 "Bandwidth limit for clients is only activated when both up- and download "
@@ -53,14 +59,14 @@ msgid ""
 "Whitelisted clients are not limited."
 msgstr ""
 "Ограничение полосы для клиентов активируется только при указанных лимитах "
-"ниÑ\81Ñ\85одÑ\8fÑ\89его Ð¸ Ð²Ð¾Ñ\81Ñ\85одÑ\8fÑ\89его ÐºÐ°Ð½Ð°Ð»Ð¾Ð². Ð\97наÑ\87ение 0 Ð¿Ð¾Ð»Ð½Ð¾Ñ\81Ñ\82Ñ\8cÑ\8e Ð¾Ñ\82клÑ\8eÑ\87аеÑ\82 "
-"огÑ\80аниÑ\87ение. Ð\9aлиенÑ\82Ñ\8b Ð¸Ð· \"белого\" списка не имеют ограничений."
+"загÑ\80Ñ\83зки Ð¸ Ñ\81каÑ\87иваниÑ\8f.<br />Ð\97наÑ\87ение '0' Ð¿Ð¾Ð»Ð½Ð¾Ñ\81Ñ\82Ñ\8cÑ\8e Ð¾Ñ\82клÑ\8eÑ\87аеÑ\82 Ð¾Ð³Ñ\80аниÑ\87ение. "
+"Ð\9aлиенÑ\82Ñ\8b Ð¸Ð· Ð\91елого списка не имеют ограничений."
 
 msgid ""
 "Become an active member of this community and help by operating your own node"
 msgstr ""
 "Станьте активным участником данного сообщества и окажите содействие, "
-"запустив свой узел сети"
+"запустив свой узел сети."
 
 msgid "Blacklist"
 msgstr "Чёрный список"
@@ -72,42 +78,45 @@ msgid ""
 "By accepting these rules you can use this network for %s hour(s). After this "
 "time you need to accept these rules again."
 msgstr ""
+"Приняв эти правила, вы можете использовать эту сеть для %s час (ы). По "
+"истечении этого времени вам необходимо снова принять эти правила."
 
 msgid "Clearance time"
 msgstr "Разрешённое время"
 
 msgid "Client-Splash"
-msgstr "Client-Splash"
+msgstr "Splash-Клиент"
 
 msgid ""
 "Client-Splash is a hotspot authentification system for wireless mesh "
 "networks."
 msgstr ""
-"Client-Splash - это система аутентификации точек доступа для беспроводных "
-"ячеистых сетей."
+"Splash-Клиент - это система аутентификации точек доступа для беспроводных "
+"Mesh сетей."
 
 msgid ""
 "Clients are redirected to this page after they have accepted the splash. If "
 "this is left empty they are redirected to the page they had requested."
 msgstr ""
+"Клиенты перенаправляются на эту страницу после того, как они вступили в "
+"Splash.<br />Если эта страница пуста, они перенаправляются на запрашиваемую "
+"страницу."
 
 msgid "Clients download speed is limited to this value (kbyte/s)"
-msgstr ""
-"Скорость нисходящего канала для клиентов ограничена этим значением (КБ/c)"
+msgstr "Скорость скачивания для клиентов ограничена этим значением (КБ/c)."
 
 msgid ""
 "Clients that have accepted the splash are allowed to use the network for "
 "that many hours."
 msgstr ""
-"Клиенты, принявшие приглашение splash-экрана, могут использовать сеть данное "
+"Клиенты, принявшие приглашение Splash-экрана, могут использовать сеть данное "
 "количество часов."
 
 msgid "Clients upload speed is limited to this value (kbyte/s)"
-msgstr ""
-"Скорость восходящего канала для клиентов ограничена этим значением (КБ/c)"
+msgstr "Скорость загрузки для клиентов ограничена этим значением (КБ/c)."
 
 msgid "Contact"
-msgstr "СвÑ\8fзаÑ\82Ñ\8cÑ\81Ñ\8f"
+msgstr "Ð\9aонÑ\82акÑ\82Ñ\8b Ð´Ð»Ñ\8f Ñ\81вÑ\8fзи"
 
 msgid "Decline"
 msgstr "Отклонить"
@@ -116,15 +125,17 @@ msgid ""
 "Destination hosts and networks that are excluded from splashing, i.e. they "
 "are always allowed."
 msgstr ""
+"Назначенные хосты и сети, которые исключены из Splash, т.е. они всегда "
+"разрешены."
 
 msgid "Donate some money to help us keep this project alive."
 msgstr "Пожертвовать деньги на поддержку этого проекта."
 
 msgid "Download limit"
-msgstr "Лимит загрузки"
+msgstr "Лимит скачивания"
 
 msgid "Edit the complete splash text"
-msgstr ""
+msgstr "Изменение полного текста заставки"
 
 msgid "Fair Use Policy"
 msgstr "Политика добровольного использования"
@@ -133,16 +144,16 @@ msgid "Firewall zone"
 msgstr "Зона межсетевого экрана"
 
 msgid "General"
-msgstr "Общие"
+msgstr "Основные настройки"
 
 msgid "Get in %s with the operator of this access point."
-msgstr ""
+msgstr "Получить в% s с оператором этой точки доступа."
 
 msgid "Hostname"
 msgstr "Имя хоста"
 
 msgid "IP Address"
-msgstr "IP-адрес"
+msgstr "IP-Ð\90дрес"
 
 msgid ""
 "If you operate your own wifi equipment use channels different from ours."
@@ -154,10 +165,10 @@ msgid "If you use this network on a regular basis we ask for your support:"
 msgstr "Если вы используете эту сеть регулярно, мы просим вашей поддержки:"
 
 msgid "Include your own text in the default splash"
-msgstr ""
+msgstr "Включить собственный текст в заставку по умолчанию"
 
 msgid "Intercept client traffic on this Interface"
-msgstr "Перехватывать клиентский трафик на этом интерфейсе"
+msgstr "Перехватывать клиентский трафик на этом интерфейсе."
 
 msgid "Interfaces"
 msgstr "Интерфейсы"
@@ -169,11 +180,11 @@ msgid ""
 "KB/s (Download/Upload). You may be able to remove this limit by actively "
 "contributing to this project."
 msgstr ""
-"КБ/с (загрузка/отдача). Данное ограничение может быть снято при активном "
+"КБ/с (скачать/загрузить). Данное ограничение может быть снято при активном "
 "участии в этом проекте."
 
 msgid "Legally Prohibited Activities"
-msgstr ""
+msgstr "Запрещенные законом виды деятельности"
 
 msgid "Legally Prohibited content"
 msgstr "Юридически запрещенный контент"
@@ -188,8 +199,8 @@ msgid ""
 "MAC addresses of whitelisted clients. These do not need to accept the splash "
 "and are not bandwidth limited."
 msgstr ""
-"MAC-адреса клиентов из \"белого\" списка. Данные клиенты не имеют "
-"ограничений пропускной способности."
+"MAC-адреса клиентов из Белого списка. Данных клиентов не нужно принимать в "
+"Splash и они не имеют ограничений по пропускной способности."
 
 msgid "Netmask"
 msgstr "Маска сети"
@@ -204,14 +215,14 @@ msgid ""
 "Please note that we are not an internet service provider but an experimental "
 "community network."
 msgstr ""
-"Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð¾Ð±Ñ\80аÑ\82иÑ\82е Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ, Ñ\87Ñ\82о Ð¼Ñ\8b Ð½Ðµ Ð¸Ð½Ñ\82еÑ\80неÑ\82-пÑ\80овайдеÑ\80, Ð° "
-"Ñ\8dкÑ\81пеÑ\80именÑ\82алÑ\8cнаÑ\8f Ñ\81еÑ\82Ñ\8c Ñ\81ообÑ\89еÑ\81Ñ\82ва."
+"Ð\9eбÑ\80аÑ\82иÑ\82е Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ, Ñ\87Ñ\82о Ð¼Ñ\8b Ð½Ðµ Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80овайдеÑ\80, Ð° Ñ\81ообÑ\89еÑ\81Ñ\82во "
+"Ñ\8dкÑ\81пеÑ\80именÑ\82алÑ\8cной Ñ\81еÑ\82и ."
 
 msgid "Policy"
 msgstr "Политика"
 
 msgid "Redirect target"
-msgstr ""
+msgstr "Назначение перенаправления"
 
 msgid "Safety"
 msgstr "Безопасный"
@@ -220,47 +231,62 @@ msgid "Save"
 msgstr "Сохранить"
 
 msgid "Splash rules are integrated in this firewall zone"
-msgstr "Правила Splash интегрированы в зону этого межсетевого экрана"
+msgstr "Правила Splash интегрированы в зону этого межсетевого экрана."
 
 msgid "Splashtext"
-msgstr "Текст splash-экрана"
+msgstr "Текст Splash-экрана"
 
 msgid ""
 "The network, like the Internet, is unencrypted and open. Each participant is "
 "responsible for the safety of their own connections and devices."
 msgstr ""
+"Сеть, как и Интернет, не зашифрована и открыта. Каждый участник несет "
+"ответственность за безопасность своих собственных подключений и устройств."
 
 msgid ""
 "The open and free wireless network of volunteers (\"Operators\") provides "
 "the necessary equipment and Internet connections (\"Infrastructure\") at "
 "their own expense."
 msgstr ""
+"Открытая и бесплатная беспроводная сеть волонтеров 'операторы' обеспечивает "
+"необходимое оборудование и подключение к Интернету 'инфраструктура' за свой "
+"счет."
 
 msgid ""
 "The operator claims no liability for loss of data, unauthorized access/"
 "damage to devices, or financial losses that participants may suffer from the "
 "use of the network."
 msgstr ""
+"Оператор не несет ответственности за потерю данных, несанкционированного "
+"доступа/повреждения устройств или финансовых потерь, которые участники могут "
+"пострадать от использования сети."
 
 msgid ""
 "The participant agrees to not perform any action and refrain from acts which "
 "may violate the law or infringe upon the rights of third parties."
 msgstr ""
+"Участник соглашается не предпринимать никаких действий и воздерживаться от "
+"действий, которые могут нарушать закон или нарушать права третьих лиц."
 
 msgid ""
 "The participant agrees to not transfer content over the network which "
 "violates the law."
-msgstr ""
+msgstr "Участник соглашается не передавать контент по сети, нарушающей закон."
 
 msgid ""
 "The participant agrees to not use the network in any way which will harm the "
 "infrastructure, the network itself, its operators or other participants."
 msgstr ""
+"Участник соглашается не использовать сеть любым способом, который нанесет "
+"ущерб инфраструктуре, самой сети, ее операторам или другим участникам."
 
 msgid ""
 "These Terms of Use govern the use of the network by its participants' "
 "computer, PDA, or similar device (\"Devices\") within the network."
 msgstr ""
+"Настоящие условия использования регулируют использование сети компьютером "
+"участников, КПК, смартфоном или аналогичным устройством 'устройствами' в "
+"сети."
 
 msgid "Time remaining"
 msgstr "Оставшееся время"
@@ -276,29 +302,28 @@ msgid "Traffic in/out"
 msgstr "Трафик вх/исх"
 
 msgid "Upload limit"
-msgstr "Ð\9bимиÑ\82 Ð¾Ñ\82даÑ\87и"
+msgstr "Ð\9fÑ\80едел Ð·Ð°Ð³Ñ\80Ñ\83зки"
 
 msgid "Usage Agreement"
-msgstr ""
+msgstr "Соглашение об использовании"
 
 msgid "Welcome"
 msgstr "Добро пожаловать"
 
 msgid "Whitelist"
-msgstr "\"Белый\" список"
+msgstr "Белый список"
 
 msgid "You are now connected to the free wireless mesh network"
-msgstr "Теперь вы подключены к бесплатной беспроводной ячеистой сети"
+msgstr "Теперь вы подключены к свободной беспроводной Mesh сети."
 
 msgid ""
 "You can enter your own text that is displayed to clients here.<br />It is "
 "possible to use the following markers: ###COMMUNITY###, ###COMMUNITY_URL###, "
 "###CONTACTURL###, ###LEASETIME###, ###LIMIT### and ###ACCEPT###."
 msgstr ""
-"Здесь вы можете указать свой текст, который будет отображаться клиентам.<br /"
-">Возможно использовать следующие маркеры: ###COMMUNITY###, "
-"###COMMUNITY_URL###, ###CONTACTURL###, ###LEASETIME###, ###LIMIT### and "
-"###ACCEPT###."
+"Здесь можно ввести собственный текст, отображаемый для клиентов.<br />Можно "
+"использовать следующие маркеры: ###COMMUNITY###, ###COMMUNITY_URL###, "
+"###CONTACTURL###, ###LEASETIME###, ###LIMIT### и ###ACCEPT###."
 
 msgid ""
 "Your access to this network has been blocked, most likely because you did "
@@ -311,25 +336,25 @@ msgid "Your bandwidth is limited to"
 msgstr "Ваша полоса пропускания ограничена значением"
 
 msgid "blacklisted"
-msgstr "в \"чёрном\" списке"
+msgstr "в Черном списке"
 
 msgid "expired"
-msgstr "истёк"
+msgstr "истекло"
 
 msgid "optional when using host addresses"
-msgstr "опÑ\86ионалÑ\8cно Ð¿Ñ\80и Ð¸Ñ\81полÑ\8cзовании Ñ\85оÑ\81Ñ\82-адÑ\80еÑ\81ов"
+msgstr "необÑ\8fзаÑ\82елÑ\8cно Ð¿Ñ\80и Ð¸Ñ\81полÑ\8cзовании Ð°Ð´Ñ\80еÑ\81ов Ñ\85оÑ\81Ñ\82ов"
 
 msgid "perform any kind of illegal activities"
 msgstr "выполнять любые незаконные действия"
 
 msgid "splashed"
-msgstr "уже в splash"
+msgstr "вы в Splash"
 
 msgid "temporarily blocked"
 msgstr "временно заблокирован"
 
 msgid "unknown"
-msgstr "неизвестный"
+msgstr "неизвестно"
 
 msgid "use filesharing applications on this network"
 msgstr "использование файлообменных приложений в этой сети"
@@ -338,25 +363,4 @@ msgid "waste bandwidth with unneccesary downloads or streams"
 msgstr "тратить пропускную способность на ненужные загрузки или потоки"
 
 msgid "whitelisted"
-msgstr "в \"белом\" списке"
-
-#~ msgid ""
-#~ "Hosts and Networks that are listed here are excluded from splashing, i.e. "
-#~ "they are always allowed."
-#~ msgstr ""
-#~ "Перечисленные хосты и сети не получают приглашения splash-экрана, т.е. они "
-#~ "всегда разрешены."
-
-#~ msgid "By accepting these rules you can use this network for"
-#~ msgstr "Принимая эти правила, вы можете использовать данную сеть для"
-
-#~ msgid "Edit Splash text"
-#~ msgstr "Редактировать текст splash-экрана"
-
-#~ msgid "hour(s). After this time you need to accept these rules again."
-#~ msgstr ""
-#~ "час(ы). После указанного времени Вы должны вновь принять эти правила."
-
-# Здесь наверняка нужно склонить в другом падеже, надо смотреть по контексту
-#~ msgid "the owner of this access point."
-#~ msgstr "с владельцем этой точки доступа."
+msgstr "в Белом списке"
index 2870dbe6aae08e32ee10df80b55942405edc852b..9ec9f3a9e16a36f575694bc96f56578ce2567351 100755 (executable)
@@ -36,6 +36,10 @@ function call(cmd)
        os.execute(cmd)
 end
 
+function esc(str)
+       return utl.shellquote(str)
+end
+
 
 function lock()
        call("lock /var/run/luci_splash.lock")
@@ -84,14 +88,14 @@ end
 
 function get_physdev(interface)
        local dev
-       dev = utl.trim(sys.exec(". /lib/functions/network.sh; network_get_device IFNAME '" ..  interface .. "'; echo $IFNAME"))
+       dev = utl.trim(sys.exec(". /lib/functions/network.sh; network_get_device IFNAME %s; echo $IFNAME" % esc(interface)))
        return dev
 end
 
 
 
 function get_filter_handle(parent, direction, device, mac)
-       local input = utl.split(sys.exec('/usr/sbin/tc filter show dev ' .. device .. ' parent ' .. parent) or {})
+       local input = utl.split(sys.exec('/usr/sbin/tc filter show dev %s parent %s' %{ esc(device), esc(parent) }) or {})
        local tbl = {}
        local handle
        for k, v in pairs(input) do
@@ -264,7 +268,7 @@ function main(argv)
                                elseif whitelist_macs[mac] then
                                        print("Removing %s from whitelist" % mac)
                                        remove_whitelist(mac)
-                                       whitelist_macs[mac] = nil                                       
+                                       whitelist_macs[mac] = nil
                                elseif blacklist_macs[mac] then
                                        print("Removing %s from blacklist" % mac)
                                        remove_blacklist(mac)
@@ -295,7 +299,7 @@ function main(argv)
                print("\n  luci-splash remove <MAC-or-IP>\n    Remove given address from the lease-, black- or whitelist")
                print("")
 
-               os.exit(1)      
+               os.exit(1)
        end
 end
 
@@ -338,8 +342,8 @@ function ipt_delete_all(args, comp, off)
                        off[r.table] = off[r.table] or { }
                        off[r.table][r.chain] = off[r.table][r.chain] or 0
 
-                       exec("iptables -t %q -D %q %d 2>/dev/null"
-                               %{ r.table, r.chain, r.index - off[r.table][r.chain] })
+                       exec("iptables -t %s -D %s %d 2>/dev/null"
+                               %{ esc(r.table), esc(r.chain), r.index - off[r.table][r.chain] })
 
                        off[r.table][r.chain] = off[r.table][r.chain] + 1
                end
@@ -353,8 +357,8 @@ function ipt6_delete_all(args, comp, off)
                        off[r.table] = off[r.table] or { }
                        off[r.table][r.chain] = off[r.table][r.chain] or 0
 
-                       exec("ip6tables -t %q -D %q %d 2>/dev/null"
-                               %{ r.table, r.chain, r.index - off[r.table][r.chain] })
+                       exec("ip6tables -t %s -D %s %d 2>/dev/null"
+                               %{ esc(r.table), esc(r.chain), r.index - off[r.table][r.chain] })
 
                        off[r.table][r.chain] = off[r.table][r.chain] + 1
                end
@@ -460,13 +464,13 @@ function remove_whitelist_tc(mac)
                        end
                        local handle = get_filter_handle('ffff:', 'src', device, mac)
                        if handle then
-                               exec('tc filter del dev "%s" parent ffff: protocol ip prio 1 handle %s u32' % { device, handle })
+                               exec('tc filter del dev %s parent ffff: protocol ip prio 1 handle %s u32' % { esc(device), esc(handle) })
                        else
                                print('Warning! Could not get a handle for %s parent :ffff on interface %s' % { mac, device })
                        end
                        local handle = get_filter_handle('1:', 'dest', device, mac)
                        if handle then
-                               exec('tc filter del dev "%s" parent 1:0 protocol ip prio 1 handle %s u32' % { device, handle })
+                               exec('tc filter del dev %s parent 1:0 protocol ip prio 1 handle %s u32' % { esc(device), esc(handle) })
                        else
                                print('Warning! Could not get a handle for %s parent 1:0 on interface %s' % { mac, device })
                        end
@@ -492,37 +496,37 @@ function add_lease_rule(mac, ipaddr, device)
                id = get_id(ipaddr)
        end
 
-       exec("iptables -t mangle -I luci_splash_mark_out -m mac --mac-source %q -j RETURN" % mac)
+       exec("iptables -t mangle -I luci_splash_mark_out -m mac --mac-source %s -j RETURN" % esc(mac))
 
        -- Mark incoming packets to a splashed host
        -- for ipv4 - by iptables and destination
        if id and device then
-               exec("iptables -t mangle -I luci_splash_mark_in -d %q -j MARK --set-mark 0x1%s -m comment --comment %s" % {ipaddr, id, mac:upper()})
+               exec("iptables -t mangle -I luci_splash_mark_in -d %s -j MARK --set-mark 0x1%s -m comment --comment %s" % { esc(ipaddr), esc(id), esc(mac:upper())})
        end
 
        --for ipv6: need to use the mac here
 
        if has_ipv6 then
-               exec("ip6tables -t mangle -I luci_splash_mark_out -m mac --mac-source %q -j MARK --set-mark 79" % mac)
+               exec("ip6tables -t mangle -I luci_splash_mark_out -m mac --mac-source %s -j MARK --set-mark 79" % esc(mac))
                if id and device and tonumber(limit_down) then
-                       exec("tc filter add dev %s parent 1:0 protocol ipv6 prio 1 u32 match ether dst %s classid 1:%s" % {device, mac:lower(), id})
+                       exec("tc filter add dev %s parent 1:0 protocol ipv6 prio 1 u32 match ether dst %s classid 1:%s" % { esc(device), esc(mac:lower()), esc(id) })
                end
        end
 
 
        if device and tonumber(limit_up) > 0 then
-               exec('tc filter add dev "%s" parent ffff: protocol all prio 2 u32 match ether src %s police rate %skbit mtu 6k burst 6k drop' % {device, mac, limit_up})
+               exec('tc filter add dev %s parent ffff: protocol all prio 2 u32 match ether src %s police rate %skbit mtu 6k burst 6k drop' % { esc(device), esc(mac), esc(limit_up) })
        end
 
        if id and device and tonumber(limit_down) > 0 then
-               exec("tc class add dev %s parent 1: classid 1:0x%s htb rate %skbit" % { device, id, limit_down })
-               exec("tc qdisc add dev %s parent 1:%s sfq perturb 10" % { device, id })
+               exec("tc class add dev %s parent 1: classid 1:0x%s htb rate %skbit" % { esc(device), esc(id), esc(limit_down) })
+               exec("tc qdisc add dev %s parent 1:%s sfq perturb 10" % { esc(device), esc(id) })
        end
 
-       exec("iptables -t filter -I luci_splash_filter -m mac --mac-source %q -j RETURN" % mac)
-       exec("iptables -t nat    -I luci_splash_leases -m mac --mac-source %q -j RETURN" % mac)
+       exec("iptables -t filter -I luci_splash_filter -m mac --mac-source %s -j RETURN" % esc(mac))
+       exec("iptables -t nat    -I luci_splash_leases -m mac --mac-source %s -j RETURN" % esc(mac))
        if has_ipv6 then
-               exec("ip6tables -t filter -I luci_splash_filter -m mac --mac-source %q -j RETURN" % mac)
+               exec("ip6tables -t filter -I luci_splash_filter -m mac --mac-source %s -j RETURN" % esc(mac))
        end
 end
 
@@ -548,32 +552,32 @@ function remove_lease_rule(mac, ipaddr, device, limit_up, limit_down)
        if device and tonumber(limit_up) > 0 then
                local handle = get_filter_handle('ffff:', 'src', device, mac)
                if handle then
-                       exec('tc filter del dev "%s" parent ffff: protocol all prio 2 handle %s u32 police rate %skbit mtu 6k burst 6k drop' % {device, handle, limit_up})
+                       exec('tc filter del dev %s parent ffff: protocol all prio 2 handle %s u32 police rate %skbit mtu 6k burst 6k drop' % { esc(device), esc(handle), esc(limit_up) })
                else
                        print('Warning! Could not get a handle for %s parent :ffff on interface %s' % { mac, device })
                end
        end
        -- remove clients class
        if device and id then
-               exec('tc class del dev "%s" classid 1:%s' % {device, id})
-               exec('tc filter del dev "%s" parent 1:0 prio 1' % device) -- ipv6 rule
-               --exec('tc qdisc del dev "%s" parent 1:%s sfq perturb 10' % { device, id })
+               exec('tc class del dev %s classid 1:%s' % { esc(device), esc(id) })
+               exec('tc filter del dev %s parent 1:0 prio 1' % esc(device)) -- ipv6 rule
+               --exec('tc qdisc del dev %s parent 1:%s sfq perturb 10' % { esc(device), esc(id) })
        end
 end
 
 
 -- Add whitelist rules
 function add_whitelist_rule(mac)
-       exec("iptables -t filter -I luci_splash_filter -m mac --mac-source %q -j RETURN" % mac)
-       exec("iptables -t nat    -I luci_splash_leases -m mac --mac-source %q -j RETURN" % mac)
+       exec("iptables -t filter -I luci_splash_filter -m mac --mac-source %s -j RETURN" % esc(mac))
+       exec("iptables -t nat    -I luci_splash_leases -m mac --mac-source %s -j RETURN" % esc(mac))
        if has_ipv6 then
-               exec("ip6tables -t filter -I luci_splash_filter -m mac --mac-source %q -j RETURN" % mac)
+               exec("ip6tables -t filter -I luci_splash_filter -m mac --mac-source %s -j RETURN" % esc(mac))
        end
         uci:foreach("luci_splash", "iface", function(s)
                local device = get_physdev(s['.name'])
                if device and device ~= "" then
-                       exec('tc filter add dev "%s" parent ffff: protocol ip prio 1 u32 match ether src %s police pass' % { device, mac })
-                       exec('tc filter add dev "%s" parent 1:0 protocol ip prio 1 u32 match ether dst %s classid 1:1' % { device, mac })
+                       exec('tc filter add dev %s parent ffff: protocol ip prio 1 u32 match ether src %s police pass' % { esc(device), esc(mac) })
+                       exec('tc filter add dev %s parent 1:0 protocol ip prio 1 u32 match ether dst %s classid 1:1' % { esc(device), esc(mac) })
                end
         end)
 end
@@ -581,9 +585,9 @@ end
 
 -- Add blacklist rules
 function add_blacklist_rule(mac)
-       exec("iptables -t filter -I luci_splash_filter -m mac --mac-source %q -j DROP" % mac)
+       exec("iptables -t filter -I luci_splash_filter -m mac --mac-source %s -j DROP" % esc(mac))
        if has_ipv6 then
-               exec("ip6tables -t filter -I luci_splash_filter -m mac --mac-source %q -j DROP" % mac)
+               exec("ip6tables -t filter -I luci_splash_filter -m mac --mac-source %s -j DROP" % esc(mac))
        end
 end
 
@@ -596,15 +600,15 @@ function sync()
 
        -- Current leases in state files
        local leases = uci:get_all("luci_splash_leases")
-       
+
        -- Convert leasetime to seconds
        local leasetime = tonumber(uci:get("luci_splash", "general", "leasetime")) * 3600
-       
+
        -- Clean state file
        uci:load("luci_splash_leases")
        uci:revert("luci_splash_leases")
 
-        
+
        local blackwhitelist = uci:get_all("luci_splash")
        local whitelist_total = 0
        local whitelist_online = 0
@@ -628,7 +632,7 @@ function sync()
                                 end
 
                                -- Rewrite state
-                               uci:section("luci_splash_leases", "lease", convert_mac_to_secname(v.mac), {             
+                               uci:section("luci_splash_leases", "lease", convert_mac_to_secname(v.mac), {
                                        mac    = v.mac,
                                        ipaddr = v.ipaddr,
                                        device = v.device,
@@ -639,7 +643,7 @@ function sync()
                        end
                end
        end
-       
+
        -- Whitelist, Blacklist
        for _, s in utl.spairs(blackwhitelist,
                function(a,b) return blackwhitelist[a][".type"] > blackwhitelist[b][".type"] end
@@ -666,7 +670,7 @@ function sync()
 
        -- ToDo:
         -- include a new field "leases_online" in stats to differ between active clients and leases:
-        -- update_stats(leasecount, leases_online, whitelist_online, whitelist_total, blacklist_online, blacklist_total) later: 
+        -- update_stats(leasecount, leases_online, whitelist_online, whitelist_total, blacklist_online, blacklist_total) later:
         update_stats(leases_online, whitelist_online, whitelist_total, blacklist_online, blacklist_total)
 
        uci:save("luci_splash_leases")
index e29a2e17d9dba3e0a39d66921022b0e7a4e657a4..47e1696ece2b0ffea5a3a04eb60d5fd58067277d 100644 (file)
@@ -87,7 +87,7 @@ function Graph._rrdtool( self, def, rrd )
        fs.mkdirr( dir )
 
        -- construct commandline
-       local cmdline = "rrdtool graph"
+       local cmdline = { "rrdtool", "graph" }
 
        -- copy default arguments to def stack
        for i, opt in ipairs(self.args) do
@@ -102,15 +102,11 @@ function Graph._rrdtool( self, def, rrd )
                        opt = opt:gsub( "{file}", rrd )
                end
 
-               if opt:match("[^%w]") then
-                       cmdline = cmdline .. " '" .. opt .. "'"
-               else
-                       cmdline = cmdline .. " " .. opt
-               end
+               cmdline[#cmdline+1] = luci.util.shellquote(opt)
        end
 
        -- execute rrdtool
-       local rrdtool = io.popen( cmdline )
+       local rrdtool = io.popen(table.concat(cmdline, " "))
        rrdtool:close()
 end
 
index 2a8aceec0863dd09548174793d26a53099dc2801..9f7a51a868c14104fb23d268fd14249515242cf7 100644 (file)
@@ -3,25 +3,80 @@
 
 module("luci.statistics.rrdtool.definitions.apcups",package.seeall)
 
-function rrdargs( graph, plugin, plugin_instance, dtype )
+function rrdargs( graph, plugin, plugin_instance )
+
+       local lu = require("luci.util")
+       local rv = { }
+
+       -- Types and instances supported by APC UPS
+       -- e.g. ups_types -> { 'timeleft', 'charge', 'percent', 'voltage' }
+       -- e.g. ups_inst['voltage'] -> { 'input', 'battery' }
+
+       local ups_types = graph.tree:data_types( plugin, plugin_instance )
+
+       local ups_inst = {}
+       for _, t in ipairs(ups_types) do
+               ups_inst[t] = graph.tree:data_instances( plugin, plugin_instance, t )
+       end
+
+
+    -- Check if hash table or array is empty or nil-filled
+
+       local function empty( t )
+               for _, v in pairs(t) do
+                       if type(v) then return false end
+               end
+               return true
+       end
+
+
+       -- Append graph definition but only types/instances which are
+       -- supported and available to the plugin and UPS.
+
+       local function add_supported( t, defs )
+               local def_inst = defs['data']['instances']
+
+               if type(def_inst) == "table" then
+                       for k, v in pairs( def_inst ) do
+                               if lu.contains( ups_types, k) then
+                                       for j = #v, 1, -1 do
+                                               if not lu.contains( ups_inst[k], v[j] ) then
+                                                       table.remove( v, j )
+                                               end
+                                       end
+                                       if #v == 0 then
+                                               def_inst[k] = nil  -- can't assign v: immutable
+                                       end
+                               else
+                                       def_inst[k] = nil  -- can't assign v: immutable
+                               end
+                       end
+                       if empty(def_inst) then return end
+               end
+               table.insert( t, defs )
+       end
+
+
+    -- Graph definitions for APC UPS measurements MUST use only 'instances':
+    -- e.g. instances = { voltage = {  "input", "output" } }
 
        local voltagesdc = {
                title = "%H: Voltages on APC UPS - Battery",
                vlabel = "Volts DC",
-    alt_autoscale = true,
+               alt_autoscale = true,
                number_format = "%5.1lfV",
                data = {
                        instances = {
                                voltage = { "battery" }
                        },
-
-                       options = { 
+                       options = {
                                voltage = { title = "Battery voltage", noarea=true }
                        }
                }
        }
-       
-       local voltages = {
+       add_supported( rv, voltagesdc )
+
+       local voltagesac = {
                title = "%H: Voltages on APC UPS - AC",
                vlabel = "Volts AC",
                alt_autoscale = true,
@@ -30,13 +85,13 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
                        instances = {
                                voltage = {  "input", "output" }
                        },
-
                        options = {
                                voltage_output  = { color = "00e000", title = "Output voltage", noarea=true, overlay=true },
                                voltage_input   = { color = "ffb000", title = "Input voltage", noarea=true, overlay=true }
                        }
                }
        }
+       add_supported( rv, voltagesac )
 
        local percentload = {
                title = "%H: Load on APC UPS ",
@@ -45,17 +100,15 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
                y_max = "100",
                number_format = "%5.1lf%%",
                data = {
-                       sources = {
-                               percent_load = { "value" }
-                       },
                        instances = {
-                               percent = "load"
+                               percent = { "load" }
                        },
                        options = {
                                percent_load = { color = "00ff00", title = "Load level"  }
                        }
                }
        }
+       add_supported( rv, percentload )
 
        local charge_percent = {
                title = "%H: Battery charge on APC UPS ",
@@ -64,54 +117,59 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
                y_max = "100",
                number_format = "%5.1lf%%",
                data = {
-                       types = { "charge" },
+                       instances = {
+                               charge = { "" }
+                       },
                        options = {
                                charge = { color = "00ff0b", title = "Charge level"  }
                        }
                }
        }
+       add_supported( rv, charge_percent )
 
        local temperature = {
                title = "%H: Battery temperature on APC UPS ",
                vlabel = "\176C",
                number_format = "%5.1lf\176C",
                data = {
-                       types = { "temperature" },
+                       instances = {
+                               temperature = { "" }
+                       },
                        options = {
                                temperature = { color = "ffb000", title = "Battery temperature" } }
                }
        }
+       add_supported( rv, temperature )
 
        local timeleft = {
                title = "%H: Time left on APC UPS ",
                vlabel = "Minutes",
                number_format = "%.1lfm",
                data = {
-                       sources = {
-                               timeleft = { "value" }
+                       instances = {
+                               timeleft = { "" }
                        },
                        options = {
                                timeleft = { color = "0000ff", title = "Time left" }
                        }
                }
        }
+       add_supported( rv, timeleft )
 
        local frequency = {
                title = "%H: Incoming line frequency on APC UPS ",
                vlabel = "Hz",
                number_format = "%5.0lfhz",
                data = {
-                       sources = {
-                               frequency_input = { "value" }
-                       },
                        instances = {
-                               frequency = "frequency"
+                               frequency = { "input" }
                        },
                        options = {
-                               frequency_frequency = { color = "000fff", title = "Line frequency" }
+                               frequency_input = { color = "000fff", title = "Line frequency" }
                        }
                }
        }
+       add_supported( rv, frequency )
 
-       return { voltages, voltagesdc, percentload, charge_percent, temperature, timeleft, frequency }
+       return rv
 end
index a63a850806a6565762c110bdde9bacd73ba6ad09..b72476aa3611bc2e13e4a2f9771b14b58440fb88 100644 (file)
@@ -1,18 +1,21 @@
+#  rrdtool.pot
+#  generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua
 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-03-26 15:36+0200\n"
-"Last-Translator: Anonymous Pootle User\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: ru\n"
-"MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: rrdtool\n"
+"POT-Creation-Date: 2017-10-17 22:00+0300\n"
+"PO-Revision-Date: 2018-01-24 14:59+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\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"
+"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"
 
 #. %H: Wireless - Signal Noise Ratio
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1
@@ -187,7 +190,7 @@ msgstr "%di"
 #. %H: Process %pi - used cpu time
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35
 msgid "stat_dg_title_processes__ps_cputime"
-msgstr "%H: Процесс %pi - время ЦП"
+msgstr "%H: Процесс %pi - время CPU"
 
 #. Jiffies
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36
@@ -197,12 +200,12 @@ msgstr "Jiffies"
 #. system
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37
 msgid "stat_ds_ps_cputime__syst"
-msgstr "система"
+msgstr "Система"
 
 #. user
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38
 msgid "stat_ds_ps_cputime__user"
-msgstr "пользователь"
+msgstr "Ð\9fользователь"
 
 #. %H: Process %pi - threads and processes
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39
index 9d0ff9fdf2b682430658b447f724798afa5ca95a..300b1c07da813d36222e3e1fd2da48374b02a95a 100644 (file)
@@ -1,25 +1,25 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: statistics\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2013-12-05 17:11+0200\n"
-"Last-Translator: Dmitri <4glitch@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2017-10-17 22:00+0300\n"
+"PO-Revision-Date: 2018-01-24 14:59+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "APC UPS"
-msgstr ""
+msgstr "APC ИБП"
 
 msgid "APCUPS Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина APCUPS"
 
 msgid "Action (target)"
 msgstr "Действие (цель)"
@@ -37,34 +37,34 @@ msgid "Add notification command"
 msgstr "Добавить команду уведомления"
 
 msgid "Aggregate number of connected users"
-msgstr ""
+msgstr "Общее число подключенных пользователей"
 
 msgid "Base Directory"
-msgstr "Ð\91азоваÑ\8f Ð´Ð¸Ñ\80екÑ\82оÑ\80ия"
+msgstr "Ð\9eÑ\81новнаÑ\8f Ð¿Ð°Ð¿ÐºÐ° Ð¿Ñ\80иложения"
 
 msgid "Basic monitoring"
-msgstr "Ð\91азовая статистика"
+msgstr "Ð\9eÑ\81новная статистика"
 
 msgid "CPU Context Switches Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина контекстных переключателей CPU"
 
 msgid "CPU Frequency"
-msgstr ""
+msgstr "Частота CPU"
 
 msgid "CPU Frequency Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина частоты CPU"
 
 msgid "CPU Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f CPU"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'CPU'"
 
 msgid "CSV Output"
-msgstr "Вывод в CSV"
+msgstr "CSV вывод"
 
 msgid "CSV Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f CSV"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° CSV"
 
 msgid "Cache collected data for"
-msgstr "Ð\9aÑ\8dÑ\88иÑ\80оваÑ\82Ñ\8c Ñ\81обÑ\80аннÑ\83Ñ\8e Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð² Ñ\82еÑ\87ение"
+msgstr "Ð\9aÑ\8dÑ\88иÑ\80оваÑ\82Ñ\8c Ñ\81обÑ\80аннÑ\83Ñ\8e Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð² Ñ\82еÑ\87ении"
 
 msgid "Cache flush interval"
 msgstr "Интервал сброса кэша"
@@ -89,8 +89,8 @@ msgid ""
 "different plugins. On this page you can change general settings for the "
 "collectd daemon."
 msgstr ""
-"Collectd - Ñ\8dÑ\82о Ñ\81еÑ\80виÑ\81 Ð´Ð»Ñ\8f Ñ\81боÑ\80а Ð´Ð°Ð½Ð½Ñ\8bÑ\85 Ñ\81 Ñ\80азнÑ\8bÑ\85 Ð¼Ð¾Ð´Ñ\83лей. Ð\9dа Ñ\8dÑ\82ой Ñ\81Ñ\82Ñ\80аниÑ\86е Ð²Ñ\8b "
-"можете изменить настройки Сollectd."
+"Collectd - Ñ\8dÑ\82о Ñ\81еÑ\80виÑ\81 Ð´Ð»Ñ\8f Ñ\81боÑ\80а Ð´Ð°Ð½Ð½Ñ\8bÑ\85 Ñ\81 Ñ\80азнÑ\8bÑ\85 Ð¿Ð»Ð°Ð³Ð¸Ð½Ð¾Ð². Ð\9dа Ñ\8dÑ\82ой Ñ\81Ñ\82Ñ\80аниÑ\86е "
+"вÑ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ\82Ñ\8c Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ð¡ollectd."
 
 msgid "Conntrack"
 msgstr "Отслеживание подключения (Conntrack)"
@@ -99,77 +99,76 @@ msgid "Conntrack Plugin Configuration"
 msgstr "Настройка плагина Conntrack"
 
 msgid "Context Switches"
-msgstr ""
+msgstr "Переключатели контекста"
 
 msgid "DF Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f DF"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° DF"
 
 msgid "DNS"
 msgstr "DNS"
 
 msgid "DNS Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f DNS"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° DNS"
 
 msgid "Data collection interval"
 msgstr "Интервал сбора данных"
 
 msgid "Datasets definition file"
-msgstr "Файл с определением набора данных"
+msgstr "Файл с определением<br />набора данных"
 
 msgid "Destination ip range"
 msgstr "Диапазон IP-адресов назначения"
 
 msgid "Directory for collectd plugins"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f Ñ\81 Ð¼Ð¾Ð´Ñ\83лÑ\8fми collectd"
+msgstr "Ð\9fапка Ñ\81 Ð¿Ð»Ð°Ð³Ð¸Ð½Ð°ми collectd"
 
 msgid "Directory for sub-configurations"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ий"
+msgstr "Ð\9fапка Ñ\81 config Ñ\84айлом"
 
 msgid "Disk Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Disk"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° Disk"
 
 msgid "Disk Space Usage"
-msgstr "Ð\98Ñ\81полÑ\8cзование Ð´Ð¸Ñ\81ка"
+msgstr "Ð\98Ñ\81полÑ\8cзовано Ð¼ÐµÑ\81Ñ\82а Ð½Ð° Ð´Ð¸Ñ\81ке"
 
 msgid "Disk Usage"
 msgstr "Использование диска"
 
 msgid "Display Host »"
-msgstr "Ð\9fоказаÑ\82Ñ\8c Ñ\83зел »"
+msgstr "Ð\9fоказаÑ\82Ñ\8c Ñ\85оÑ\81Ñ\82 »"
 
 msgid "Display timespan »"
 msgstr "Показать за промежуток »"
 
 msgid "E-Mail Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f E-Mail"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° E-Mail"
 
 msgid "Email"
 msgstr "E-mail"
 
 msgid "Empty value = monitor all"
-msgstr ""
+msgstr "Если пусто = monitor all"
 
 msgid "Enable this plugin"
-msgstr "Ð\92клÑ\8eÑ\87иÑ\82Ñ\8c Ñ\8dÑ\82оÑ\82 Ð¼Ð¾Ð´Ñ\83лÑ\8c"
+msgstr "Ð\92клÑ\8eÑ\87иÑ\82Ñ\8c Ñ\8dÑ\82оÑ\82 Ð¿Ð»Ð°Ð³Ð¸Ð½"
 
 msgid "Entropy"
-msgstr ""
+msgstr "Entropy"
 
 msgid "Entropy Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина Entropy"
 
 msgid "Exec"
 msgstr "Exec"
 
 msgid "Exec Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Exec"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° Exec"
 
-#, fuzzy
 msgid "Filter class monitoring"
-msgstr "Ð\9cониÑ\82оÑ\80инг ÐºÐ»Ð°Ñ\81Ñ\81ов фильтров"
+msgstr "Ð\9cониÑ\82оÑ\80инг ÐºÐ»Ð°Ñ\81Ñ\81а фильтров"
 
 msgid "Firewall"
-msgstr "Firewall"
+msgstr "Межсетевой экран"
 
 msgid "Flush cache after"
 msgstr "Сбросить кэш после"
@@ -178,13 +177,13 @@ msgid "Forwarding between listen and server addresses"
 msgstr "Перенаправление между локальным адресом и адресом сервера"
 
 msgid "Gather compression statistics"
-msgstr ""
+msgstr "Сбор статистики сжатия"
 
 msgid "General plugins"
-msgstr ""
+msgstr "Основные плагины"
 
 msgid "Generate a separate graph for each logged user"
-msgstr ""
+msgstr "Создать отдельный график для каждого пользователя"
 
 msgid "Graphs"
 msgstr "Графики"
@@ -196,27 +195,30 @@ msgid ""
 "Here you can define external commands which will be started by collectd in "
 "order to read certain values. The values will be read from stdout."
 msgstr ""
-"Здесь вы можете определить внешние команды, которые будут выполнены для "
-"чтения определённых значений. Значения будут считаны со стандартного вывода."
+"На странице вы можете определить внешние команды, которые будут выполнены "
+"для чтения определенных значений. Значения будут считаны со стандартного "
+"вывода."
 
 msgid ""
 "Here you can define external commands which will be started by collectd when "
 "certain threshold values have been reached. The values leading to invokation "
 "will be feeded to the the called programs stdin."
 msgstr ""
-"Ð\97деÑ\81Ñ\8c Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¾Ð¿Ñ\80еделиÑ\82Ñ\8c Ð²Ð½ÐµÑ\88ние ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\8b, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ð±Ñ\83дÑ\83Ñ\82 Ð²Ñ\8bполненÑ\8b, ÐºÐ¾Ð³Ð´Ð° "
-"знаÑ\87ениÑ\8f Ð´Ð¾Ñ\81Ñ\82игнÑ\83Ñ\82 Ð¾Ð¿Ñ\80еделÑ\91нного порога. Значения будут переданы на "
+"Ð\9dа Ñ\81Ñ\82Ñ\80аниÑ\86е Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¾Ð¿Ñ\80еделиÑ\82Ñ\8c  Ð²Ð½ÐµÑ\88ние ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\8b, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ð±Ñ\83дÑ\83Ñ\82 Ð²Ñ\8bполненÑ\8b, "
+"когда Ð·Ð½Ð°Ñ\87ениÑ\8f Ð´Ð¾Ñ\81Ñ\82игнÑ\83Ñ\82 Ð¾Ð¿Ñ\80еделенного порога. Значения будут переданы на "
 "стандартный ввод вызванным программам."
 
 msgid ""
 "Here you can define various criteria by which the monitored iptables rules "
 "are selected."
 msgstr ""
-"Ð\97деÑ\81Ñ\8c Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ñ\83казаÑ\82Ñ\8c Ñ\80азлиÑ\87нÑ\8bе ÐºÑ\80иÑ\82еÑ\80ии, Ð¿Ð¾ ÐºÐ¾Ñ\82оÑ\80Ñ\8bм Ð±Ñ\83дÑ\83Ñ\82 Ð²Ñ\8bбÑ\80анÑ\8b Ð¿Ñ\80авила "
-"для сбора статистики."
+"Ð\9dа Ñ\81Ñ\82Ñ\80аниÑ\86е Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ñ\83казаÑ\82Ñ\8c Ñ\80азлиÑ\87нÑ\8bе ÐºÑ\80иÑ\82еÑ\80ии, Ð¿Ð¾ ÐºÐ¾Ñ\82оÑ\80Ñ\8bм Ð±Ñ\83дÑ\83Ñ\82 Ð²Ñ\8bбÑ\80анÑ\8b "
+"пÑ\80авила Ð´Ð»Ñ\8f Ñ\81боÑ\80а Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82ики."
 
 msgid "Hold Ctrl to select multiple items or to deselect entries."
 msgstr ""
+"Удерживая нажатой клавишу Ctrl, выберите несколько элементов или отмените "
+"выбор записей."
 
 msgid "Host"
 msgstr "Хост"
@@ -228,16 +230,16 @@ msgid "IP or hostname where to get the txtinfo output from"
 msgstr "IP-адрес или имя хоста, с которых получать текстовый вывод"
 
 msgid "IRQ Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f IRQ"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° IRQ"
 
 msgid "Ignore source addresses"
-msgstr "Ð\98гноÑ\80иÑ\80оваÑ\82Ñ\8c Ð°Ð´Ñ\80еÑ\81а-иÑ\81Ñ\82оÑ\87ники"
+msgstr "Ð\98гноÑ\80иÑ\80оваÑ\82Ñ\8c Ð¸Ñ\81Ñ\85одÑ\8fÑ\89ие Ð°Ð´Ñ\80еÑ\81а"
 
 msgid "Incoming interface"
 msgstr "Входящий интерфейс"
 
 msgid "Interface Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Interface"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'Ð\98нÑ\82еÑ\80Ñ\84ейÑ\81Ñ\8b'"
 
 msgid "Interfaces"
 msgstr "Интерфейсы"
@@ -249,7 +251,7 @@ msgid "Interval for pings"
 msgstr "Интервал для ping-запросов"
 
 msgid "Iptables Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Iptables"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° Iptables"
 
 msgid "Leave unselected to automatically determine interfaces to monitor."
 msgstr ""
@@ -257,93 +259,95 @@ msgstr ""
 "мониторинга."
 
 msgid "Listen host"
-msgstr "Хост"
+msgstr "Хост для входящих соединений"
 
 msgid "Listen port"
-msgstr "Порт"
+msgstr "Порт для входящих соединений"
 
 msgid "Listener interfaces"
-msgstr "Ð\98Ñ\81полÑ\8cзовать интерфейсы"
+msgstr "Ð\9fÑ\80оÑ\81лÑ\83Ñ\88ивать интерфейсы"
 
 msgid "Load Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Load"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'Ð\97агÑ\80Ñ\83зка Ñ\81иÑ\81Ñ\82емÑ\8b'"
 
 msgid ""
 "Max values for a period can be used instead of averages when not using 'only "
 "average RRAs'"
 msgstr ""
+"Максимальные значения для периода, могут использоваться вместо средних "
+"значений, когда не используется 'only average RRAs'"
 
 msgid "Maximum allowed connections"
-msgstr "Максимальное число соединений"
+msgstr "Максимум разрешенных соединений"
 
 msgid "Memory"
-msgstr "Ð\9fамÑ\8fÑ\82Ñ\8c"
+msgstr "Ð\9eпеÑ\80аÑ\82ивнаÑ\8f Ð¿Ð°Ð¼Ñ\8fÑ\82Ñ\8c (RAM)"
 
 msgid "Memory Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Memory"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'Ð\9eпеÑ\80аÑ\82ивнаÑ\8f Ð¿Ð°Ð¼Ñ\8fÑ\82Ñ\8c (RAM)'"
 
 msgid "Monitor all except specified"
-msgstr "Собирать статистику со всех, кроме указанных"
+msgstr "Собирать статистику<br />со всех кроме указанных"
 
 msgid "Monitor all local listen ports"
-msgstr "Собирать статистику со всех портов, ожидающих соединения"
+msgstr "Собирать статистику со всех портов для входящих соединений"
 
 msgid "Monitor all sensors"
-msgstr ""
+msgstr "Мониторить все сенсоры"
 
 msgid "Monitor device(s) / thermal zone(s)"
-msgstr ""
+msgstr "Мониторить устройство(а) / зону(ы) нагрева"
 
 msgid "Monitor devices"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82в"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва"
 
 msgid "Monitor disks and partitions"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ð´Ð¸Ñ\81ков Ð¸ Ñ\80азделов"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ð´Ð¸Ñ\81ки Ð¸ Ñ\80азделÑ\8b"
 
 msgid "Monitor filesystem types"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 файловых систем"
+msgstr "Ð\9cониÑ\82оиÑ\82Ñ\8c Ñ\82ипÑ\8b файловых систем"
 
 msgid "Monitor host"
-msgstr ""
+msgstr "Мониторить хост"
 
 msgid "Monitor hosts"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ñ\85оÑ\81Ñ\82ов"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ñ\85оÑ\81Ñ\82Ñ\8b"
 
 msgid "Monitor interfaces"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81ов"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81Ñ\8b"
 
 msgid "Monitor interrupts"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð¿Ð¾ Ð¿Ñ\80еÑ\80Ñ\8bваниÑ\8fм"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ð¿Ñ\80еÑ\80Ñ\8bваниÑ\8f"
 
 msgid "Monitor local ports"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ð»Ð¾ÐºÐ°Ð»Ñ\8cнÑ\8bÑ\85 Ð¿Ð¾Ñ\80Ñ\82ов"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ð»Ð¾ÐºÐ°Ð»Ñ\8cнÑ\8bе Ð¿Ð¾Ñ\80Ñ\82Ñ\8b"
 
 msgid "Monitor mount points"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ñ\82оÑ\87ек монтирования"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ñ\82оÑ\87ки монтирования"
 
 msgid "Monitor processes"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ð¿Ñ\80оÑ\86еÑ\81Ñ\81ов"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ð¿Ñ\80оÑ\86еÑ\81Ñ\81Ñ\8b"
 
 msgid "Monitor remote ports"
-msgstr "СобиÑ\80аÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ñ\81 Ñ\83далÑ\91ннÑ\8bÑ\85 Ð¿Ð¾Ñ\80Ñ\82ов"
+msgstr "Ð\9cониÑ\82оÑ\80иÑ\82Ñ\8c Ñ\83даленнÑ\8bе Ð¿Ð¾Ñ\80Ñ\82Ñ\8b"
 
 msgid "Name of the rule"
-msgstr "Ð\9dазвание правила"
+msgstr "Ð\98мÑ\8f правила"
 
 msgid "Netlink"
 msgstr "Netlink"
 
 msgid "Netlink Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Netlink"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'Netlink'"
 
 msgid "Network"
-msgstr "Network"
+msgstr "Сеть"
 
 msgid "Network Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Network"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'СеÑ\82Ñ\8c'"
 
 msgid "Network plugins"
-msgstr "СеÑ\82евÑ\8bе Ð¼Ð¾Ð´Ñ\83ли"
+msgstr "СеÑ\82евÑ\8bе Ð¿Ð»Ð°Ð³Ð¸Ð½Ñ\8b"
 
 msgid "Network protocol"
 msgstr "Сетевой протокол"
@@ -352,9 +356,11 @@ msgid ""
 "Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
 "directory and all its parent directories need to be world readable."
 msgstr ""
+"Внимание: все операции осуществляются под пользователем 'nobody', "
+"соответственно все файлы *.rrd и папки  будут доступны любому пользователю."
 
 msgid "Number of threads for data collection"
-msgstr "Количество потоков сбора данных"
+msgstr "Количество потоков<br />сбора данных"
 
 msgid "OLSRd"
 msgstr "OLSRd"
@@ -363,16 +369,16 @@ msgid "OLSRd Plugin Configuration"
 msgstr "Настройка плагина OLSRd"
 
 msgid "Only create average RRAs"
-msgstr "Создавать только средние RRA"
+msgstr "Создавать только<br />средние RRA"
 
 msgid "OpenVPN"
-msgstr ""
+msgstr "OpenVPN"
 
 msgid "OpenVPN Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина OpenVPN"
 
 msgid "OpenVPN status files"
-msgstr ""
+msgstr "Состояние файлов OpenVPN"
 
 msgid "Options"
 msgstr "Опции"
@@ -381,69 +387,67 @@ msgid "Outgoing interface"
 msgstr "Исходящий интерфейс"
 
 msgid "Output plugins"
-msgstr "Ð\9cодÑ\83ли вывода"
+msgstr "Ð\9fлагинÑ\8b вывода"
 
 msgid "Ping"
-msgstr "Ping"
+msgstr "Пинг-запрос"
 
 msgid "Ping Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Ping"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° Ping"
 
 msgid "Port"
 msgstr "Порт"
 
 msgid "Port for apcupsd communication"
-msgstr ""
+msgstr "Порт для связи apcupsd"
 
 msgid "Processes"
 msgstr "Процессы"
 
 msgid "Processes Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Processes"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° Processes"
 
 msgid "Processes to monitor separated by space"
 msgstr "Процессы для мониторинга (разделённые пробелом)"
 
 msgid "Processor"
-msgstr "Processor"
+msgstr "CPU"
 
 msgid "Qdisc monitoring"
 msgstr "Мониторинг Qdisc"
 
-#, fuzzy
 msgid "RRD XFiles Factor"
-msgstr "Фактор XFiles RRD"
+msgstr "RRD XFiles Factor"
 
-#, fuzzy
 msgid "RRD heart beat interval"
-msgstr "Интервал heartbeat RRD"
+msgstr "RRD heartbeat interval"
 
 msgid "RRD step interval"
-msgstr "Интервал шага RRD"
+msgstr "RRD step interval"
 
 msgid "RRDTool"
 msgstr "RRDTool"
 
 msgid "RRDTool Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f RRDTool"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'RRDTool'"
 
 msgid "Rows per RRA"
-msgstr "Количество строк в RRA"
+msgstr "Rows per RRA"
 
 msgid "Script"
 msgstr "Скрипт"
 
 msgid "Seconds"
-msgstr "Секунды"
+msgstr "Секунд(ы)"
 
 msgid "Sensor list"
-msgstr ""
+msgstr "Список сенсоров"
 
 msgid "Sensors"
-msgstr ""
+msgstr "Сенсоры"
 
 msgid "Sensors Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина сенсоров"
 
 msgid "Server host"
 msgstr "Хост сервера"
@@ -452,13 +456,13 @@ msgid "Server port"
 msgstr "Порт сервера"
 
 msgid "Setup"
-msgstr ""
+msgstr "Настройка"
 
 msgid "Shaping class monitoring"
-msgstr "Мониторинг классов шейпинга"
+msgstr "Мониторинг классов Shaping"
 
 msgid "Show max values instead of averages"
-msgstr ""
+msgstr "Показывают максимальные значения, а не средние"
 
 msgid "Socket file"
 msgstr "Файл сокета"
@@ -482,25 +486,25 @@ msgid "Specifies what information to collect about the global topology."
 msgstr "Указывает, какую информацию собирать о глобальной топологии."
 
 msgid "Splash Leases"
-msgstr ""
+msgstr "Splash Leases"
 
 msgid "Splash Leases Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина Splash Leases"
 
 msgid "Statistics"
 msgstr "Статистика"
 
 msgid "Storage directory"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f с данными"
+msgstr "Ð\9fапка с данными"
 
 msgid "Storage directory for the csv files"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f для CSV-файлов"
+msgstr "Ð\9fапка для CSV-файлов"
 
 msgid "Store data values as rates instead of absolute values"
 msgstr "Хранить данные в виде коэффициентов вместо абсолютных значений"
 
 msgid "Stored timespans"
-msgstr "Сохранённые промежутки времени"
+msgstr "Сохранённые<br />промежутки времени"
 
 msgid "System Load"
 msgstr "Загрузка системы"
@@ -509,7 +513,7 @@ msgid "TCP Connections"
 msgstr "TCPConns"
 
 msgid "TCPConns Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f TCPConns"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° TCPConns"
 
 msgid "TTL for network packets"
 msgstr "TTL для сетевых пакетов"
@@ -521,56 +525,58 @@ msgid "Table"
 msgstr "Таблица"
 
 msgid "The APCUPS plugin collects statistics about the APC UPS."
-msgstr ""
+msgstr "Плагин 'APCUPS' собирает статистику об ИБП APC."
 
 msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
 msgstr ""
+"Плагин 'NUT' считывает информацию об источниках бесперебойного питания."
 
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c OLSRd Ñ\81Ñ\87иÑ\82Ñ\8bваеÑ\82 Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8e Ð¾ Ñ\83зловÑ\8bÑ\85 Ñ\81еÑ\82Ñ\8fÑ\85 Ñ\81 Ð¼Ð¾Ð´Ñ\83лÑ\8f txtinfo OLSRd."
+"Ð\9fлагин 'OLSRd' Ñ\81Ñ\87иÑ\82Ñ\8bваеÑ\82 Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8e Ð¾ Ñ\83зловÑ\8bÑ\85 Ñ\81еÑ\82Ñ\8fÑ\85 Ñ\81 Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° txtinfo OLSRd."
 
 msgid ""
 "The OpenVPN plugin gathers information about the current vpn connection "
 "status."
 msgstr ""
+"Плагин 'OpenVPN' собирает информацию о текущем состоянии VPN подключения."
 
 msgid ""
 "The conntrack plugin collects statistics about the number of tracked "
 "connections."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c Conntrack собирает статистику о количестве отслеживаемых соединений."
+"Ð\9fлагин 'Conntrack' собирает статистику о количестве отслеживаемых соединений."
 
 msgid "The cpu plugin collects basic statistics about the processor usage."
-msgstr "Ð\9cодÑ\83лÑ\8c CPU Ñ\81обиÑ\80аеÑ\82 Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð¿Ð¾ Ð¸Ñ\81полÑ\8cзованиÑ\8e процессора."
+msgstr "Ð\9fлагин 'CPU' Ñ\81обиÑ\80аеÑ\82 Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð¾Ð± Ð¸Ñ\81полÑ\8cзовании процессора."
 
 msgid ""
 "The csv plugin stores collected data in csv file format for further "
 "processing by external programs."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c CSV позволяет сохранить статистику в формате CSV для последующей "
+"Ð\9fлагин 'CSV' позволяет сохранить статистику в формате CSV для последующей "
 "обработки."
 
 msgid ""
 "The df plugin collects statistics about the disk space usage on different "
 "devices, mount points or filesystem types."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c DF собирает статистику о доступном пространстве на различных "
+"Ð\9fлагин 'DF' собирает статистику о доступном пространстве на различных "
 "устройствах, точках монтирования или файловых системах."
 
 msgid ""
 "The disk plugin collects detailled usage statistics for selected partitions "
 "or whole disks."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c Disk Ñ\81обиÑ\80аеÑ\82 Ð¿Ð¾Ð´Ñ\80обнÑ\83Ñ\8e Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð´Ð»Ñ\8f Ð²Ñ\8bбÑ\80аннÑ\8bÑ\85 Ñ\80азделов Ð¸Ð»Ð¸ Ð´Ð¸Ñ\81ков."
+"Ð\9fлагин 'Disk' Ñ\81обиÑ\80аеÑ\82 Ð¿Ð¾Ð´Ñ\80обнÑ\83Ñ\8e Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð¿Ð¾ Ð²Ñ\8bбÑ\80аннÑ\8bм Ñ\80азделам Ð¸Ð»Ð¸ Ð´Ð¸Ñ\81кам."
 
 msgid ""
 "The dns plugin collects detailled statistics about dns related traffic on "
 "selected interfaces."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c DNS Ñ\81обиÑ\80аеÑ\82 Ð¿Ð¾Ð´Ñ\80обнÑ\83Ñ\8e Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð¾ DNS-трафике на выбранных "
+"Ð\9fлагин 'DNS' Ñ\81обиÑ\80аеÑ\82 Ð¿Ð¾Ð´Ñ\80обнÑ\83Ñ\8e Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð¾ DNS трафике на выбранных "
 "интерфейсах."
 
 msgid ""
@@ -579,55 +585,59 @@ msgid ""
 "to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can "
 "be used in other ways as well."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c E-mail создает Unix-сокет, который может быть использован для "
-"передачи статистики эл. почты работающему сервису collectd. В основном, этот "
-"модÑ\83лÑ\8c предназначен для использования вместе с Mail::SpamAssasin::Plugin::"
+"Ð\9fлагин 'E-mail' создает Unix-сокет, который может быть использован для "
+"передачи статистики email работающему сервису collectd. В основном, этот "
+"плагин предназначен для использования вместе с Mail::SpamAssasin::Plugin::"
 "Collectd."
 
 msgid "The entropy plugin collects statistics about the available entropy."
-msgstr ""
+msgstr "Плагин 'Entropy' собирает статистику о доступной энтропии."
 
 msgid ""
 "The exec plugin starts external commands to read values from or to notify "
 "external processes when certain threshold values have been reached."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c Exec Ð²Ñ\8bполнÑ\8fеÑ\82 Ð²Ð½ÐµÑ\88нÑ\8eÑ\8e ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\83 Ð² Ñ\81лÑ\83Ñ\87ае, ÐºÐ¾Ð³Ð´Ð° Ð¾Ð¿Ñ\80еделÑ\91ннÑ\8bе Ð·Ð½Ð°Ñ\87ениÑ\8f "
-"достигают заданного порога."
+"Ð\9fлагин 'Exec' Ð²Ñ\8bполнÑ\8fеÑ\82 Ð²Ð½ÐµÑ\88нÑ\8eÑ\8e ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ\83 Ð² Ñ\81лÑ\83Ñ\87ае, ÐºÐ¾Ð³Ð´Ð° Ð¾Ð¿Ñ\80еделеннÑ\8bе "
+"знаÑ\87ениÑ\8f Ð´Ð¾Ñ\81Ñ\82игаÑ\8eÑ\82 Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ð¿Ð¾Ñ\80ога."
 
 msgid ""
 "The interface plugin collects traffic statistics on selected interfaces."
-msgstr "Модуль Interface собирает статистику на выбранных сетевых интерфейсах."
+msgstr ""
+"Плагин 'Интерфейсы' собирает статистику на выбранных сетевых интерфейсах."
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
 "informations about processed bytes and packets per rule."
 msgstr ""
-"Модуль Iptables собирает статистику с определённых правил межсетевого экрана."
+"Плагин 'Iptables' собирает статистику с определенных правил межсетевого "
+"экрана."
 
 msgid ""
 "The irq plugin will monitor the rate of issues per second for each selected "
 "interrupt. If no interrupt is selected then all interrupts are monitored."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c IRQ собирает статистику по выбранным прерываниям. Если ни одно "
+"Ð\9fлагин 'IRQ' собирает статистику по выбранным прерываниям. Если ни одно "
 "прерывание не выбрано, сбор статистики будет проводиться по всем прерываниям."
 
 msgid ""
 "The iwinfo plugin collects statistics about wireless signal strength, noise "
 "and quality."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c Iwinfo собирает статистику о беспроводном сигнале, шуме и качестве."
+"Ð\9fлагин 'Wi-Fi' собирает статистику о беспроводном сигнале, шуме и качестве."
 
 msgid "The load plugin collects statistics about the general system load."
-msgstr "Ð\9cодÑ\83лÑ\8c Load собирает статистику о загрузке системы."
+msgstr "Ð\9fлагин 'Ð\97агÑ\80Ñ\83зка Ñ\81иÑ\81Ñ\82емÑ\8b' собирает статистику о загрузке системы."
 
 msgid "The memory plugin collects statistics about the memory usage."
-msgstr "Модуль Memory собирает статистику об использовании памяти."
+msgstr ""
+"Плагин 'Оперативная память (RAM)' собирает статистику об использовании "
+"памяти."
 
 msgid ""
 "The netlink plugin collects extended informations like qdisc-, class- and "
 "filter-statistics for selected interfaces."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c Netlink собирает расширенную статистику с выбранных интерфейсов."
+"Ð\9fлагин 'Netlink' собирает расширенную статистику с выбранных интерфейсов."
 
 msgid ""
 "The network plugin provides network based communication between different "
@@ -635,23 +645,24 @@ msgid ""
 "client mode locally collected data is transferred to a collectd server "
 "instance, in server mode the local instance receives data from other hosts."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c Network предоставляет возможность сетевого обмена данными между "
-"разными сервисами collectd. Collectd может работать в режиме сервера или "
-"клиенÑ\82а. Ð\92 Ñ\80ежиме ÐºÐ»Ð¸ÐµÐ½Ñ\82а, Ð»Ð¾ÐºÐ°Ð»Ñ\8cнаÑ\8f Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82ика Ð¿ÐµÑ\80едаеÑ\82Ñ\81Ñ\8f collectd-Ñ\81еÑ\80веÑ\80Ñ\83"
-"в режиме сервера collectd собирает статистику с удалённых хостов."
+"Ð\9fлагин 'СеÑ\82Ñ\8c' предоставляет возможность сетевого обмена данными между "
+"разными сервисами collectd.<br />Collectd может работать в режиме сервера "
+"или ÐºÐ»Ð¸ÐµÐ½Ñ\82а.<br />Ð\92 Ñ\80ежиме ÐºÐ»Ð¸ÐµÐ½Ñ\82а, Ð»Ð¾ÐºÐ°Ð»Ñ\8cнаÑ\8f Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82ика Ð¿ÐµÑ\80едаеÑ\82Ñ\81Ñ\8f collectd-"
+"серверу, в режиме сервера collectd собирает статистику с удаленных хостов."
 
 msgid ""
 "The ping plugin will send icmp echo replies to selected hosts and measure "
 "the roundtrip time for each host."
 msgstr ""
-"Модуль Ping посылает ICMP-запросы выбранным хостам и измеряет время отклика."
+"Плагин 'Ping' посылает ICMP-запросы выбранным хостам и измеряет время "
+"отклика."
 
 msgid ""
 "The processes plugin collects informations like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c Processes Ñ\81обиÑ\80аеÑ\82 Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð´Ð»Ñ\8f Ð²Ñ\8bбÑ\80аннÑ\8bÑ\85 Ð¿Ñ\80оÑ\86еÑ\81Ñ\81ов Ð¾Ð± "
-"использовании ЦП, ошибках обращения к страницам памяти, использовании памяти."
+"Ð\9fлагин 'Processes' Ñ\81обиÑ\80аеÑ\82 Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8e, Ñ\82акÑ\83Ñ\8e ÐºÐ°Ðº Ð²Ñ\80емÑ\8f CPU, Ð¾Ñ\88ибки Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b "
+"и использование памяти выбранных процессов."
 
 msgid ""
 "The rrdtool plugin stores the collected data in rrd database files, the "
@@ -659,102 +670,109 @@ msgid ""
 "values will result in a very high memory consumption in the temporary "
 "directory. This can render the device unusable!</strong>"
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c Rrdtool сохраняет статистику в формате rrd для последующего "
+"Ð\9fлагин 'Rrdtool' сохраняет статистику в формате rrd для последующего "
 "построения диаграмм.<br /><br /><strong>Внимание: установка неверных "
-"параметров может привезти к высокому потреблению памяти во временной "
-"директории. Это, в свою очередь, может привести к отказу устройства!</strong>"
+"параметров может привезти к высокому потреблению памяти при считывании "
+"данных из temp.<br />Что в свою очередь, может привести к зависанию "
+"устройства!</strong>"
 
 msgid ""
 "The sensors plugin uses the Linux Sensors framework to gather environmental "
 "statistics."
 msgstr ""
+"Плагин 'Sensors' использует сенсоры Linux, чтобы собрать статистику "
+"состояния устройства."
 
 msgid ""
 "The splash leases plugin uses libuci to collect statistics about splash "
 "leases."
-msgstr ""
+msgstr "Плагин 'Splash' использует libuci для сбора статистики работы splash."
 
 msgid ""
 "The statistics package uses <a href=\"https://collectd.org/\">Collectd</a> "
 "to gather data and <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</a> to "
 "render diagram images."
 msgstr ""
+"Страница 'Статистика' использует <a href=\"https://collectd.org/\">Collectd</"
+"a> для сбора данных и <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</a> "
+"и представления их в виде графиков."
 
 msgid ""
 "The tcpconns plugin collects informations about open tcp connections on "
 "selected ports."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c TCPConns Ñ\81обиÑ\80аеÑ\82 Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8e Ð¾Ð± Ð¾Ñ\82кÑ\80Ñ\8bÑ\82Ñ\8bÑ\85 TCP-Ñ\81оединениÑ\8fÑ\85 Ð½Ð° Ð²Ñ\8bбÑ\80аннÑ\8bÑ\85 "
-"портах."
+"Ð\9fлагин 'TCPConns' Ñ\81обиÑ\80аеÑ\82 Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8e Ð¾Ð± Ð¾Ñ\82кÑ\80Ñ\8bÑ\82Ñ\8bÑ\85 TCP Ñ\81оединениÑ\8fÑ\85 Ð½Ð° "
+"вÑ\8bбÑ\80аннÑ\8bÑ\85 Ð¿Ð¾Ñ\80Ñ\82аÑ\85."
 
 msgid ""
 "The thermal plugin will monitor temperature of the system. Data is typically "
 "read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be "
 "read, e.g. thermal_zone1 )"
 msgstr ""
+"Плагин 'Thermal', будет контролировать температурные сенсоры. Данные будут "
+"считываются из /sys/class/thermal/*/temp ( '*' обозначает сенсор "
+"устройства , как-то thermal_zone1 )"
 
 msgid ""
 "The unixsock plugin creates a unix socket which can be used to read "
 "collected data from a running collectd instance."
 msgstr ""
-"Ð\9cодÑ\83лÑ\8c UnixSock создает Unix-сокет, который может быть использован для "
+"Ð\9fлагин 'UnixSock' создает Unix-сокет, который может быть использован для "
 "получения статистики от работающего сервиса collectd."
 
 msgid "The uptime plugin collects statistics about the uptime of the system."
-msgstr ""
+msgstr "Плагин 'Uptime' собирает статистику о времени работы системы."
 
 msgid "Thermal"
-msgstr ""
+msgstr "Thermal"
 
 msgid "Thermal Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина Thermal"
 
 msgid "This plugin collects statistics about the processor context switches."
-msgstr ""
+msgstr "Данный плагин собирает статистику о переключение контекста процессора."
 
 msgid "This plugin collects statistics about the processor frequency scaling."
-msgstr ""
+msgstr "Этот плагин собирает статистику о частоте процессора масштабирования."
 
 msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
-"ЭÑ\82а Ñ\81екÑ\86иÑ\8f Ð¾Ð¿Ñ\80еделÑ\8fеÑ\82 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81Ñ\8b, Ð½Ð° ÐºÐ¾Ñ\82оÑ\80Ñ\8bÑ\85 collectd Ð±Ñ\83деÑ\82 Ð¾Ð±Ñ\80абаÑ\82Ñ\8bваÑ\82Ñ\8c "
-"входящие соединения."
+"СÑ\82Ñ\80ока Ð·Ð°Ð´Ð°ÐµÑ\82 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81Ñ\8b, Ð½Ð° ÐºÐ¾Ñ\82оÑ\80Ñ\8bÑ\85 collectd Ð±Ñ\83деÑ\82 Ð¾Ð±Ñ\80абаÑ\82Ñ\8bваÑ\82Ñ\8c Ð²Ñ\85одÑ\8fÑ\89ие "
+"соединения."
 
 msgid ""
 "This section defines to which servers the locally collected data is sent to."
 msgstr ""
-"Эта секция определяет серверы, на которые будет передаваться локальная "
-"статистика."
+"Строка задает сервера, на которые будет передаваться локальная статистика."
 
 msgid "Try to lookup fully qualified hostname"
-msgstr "Пытаться определять имя хоста"
+msgstr "Пытаться определять<br />имя хоста"
 
 msgid "UPS"
 msgstr "ИБП"
 
 msgid "UPS Plugin Configuration"
-msgstr "Настройка плагина ИБП"
+msgstr "Настройка плагина UPS"
 
-#, fuzzy
 msgid "UPS name in NUT ups@host format"
-msgstr "Имя ИБП в ups@host NUT-формате"
+msgstr "Имя ИБП в формате NUT ups@host"
 
 msgid "UnixSock"
 msgstr "UnixSock"
 
 msgid "Unixsock Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f UnixSock"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° UnixSock"
 
 msgid "Uptime"
-msgstr ""
+msgstr "Время работы"
 
 msgid "Uptime Plugin Configuration"
-msgstr ""
+msgstr "Настройка плагина Uptime"
 
 msgid "Use improved naming schema"
-msgstr ""
+msgstr "Используйте улучшенную схему наименования"
 
 msgid "Used PID file"
 msgstr "Используемый PID-файл"
@@ -766,14 +784,16 @@ msgid "Verbose monitoring"
 msgstr "Расширенная статистика"
 
 msgid "Wireless"
-msgstr "Wireless"
+msgstr "Wi-Fi"
 
 msgid "Wireless iwinfo Plugin Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¼Ð¾Ð´Ñ\83лÑ\8f Iwinfo"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð»Ð°Ð³Ð¸Ð½Ð° 'Wi-Fi'"
 
 msgid ""
 "You can install additional collectd-mod-* plugins to enable more statistics."
 msgstr ""
+"Вы можете установить плагины collectd-mod-* для включения дополнительной "
+"статистики."
 
 msgid "e.g. br-ff"
 msgstr "напр. br-ff"
@@ -790,64 +810,8 @@ msgstr "не более 16 символов"
 msgid "reduces rrd size"
 msgstr "уменьшает размер rrd"
 
-#, fuzzy
 msgid "seconds; multiple separated by space"
-msgstr "секунды; разделяются пробелом"
+msgstr "секунд; значения разделенные пробелом"
 
 msgid "server interfaces"
-msgstr "интерфейсы сервера"
-
-#~ msgid "Collectd"
-#~ msgstr "Collectd"
-
-#~ msgid "System plugins"
-#~ msgstr "Системные модули"
-
-#~ msgid ""
-#~ "The statistics package is based on <a href=\"http://collectd.org/index."
-#~ "shtml\">Collectd</a> and uses <a href=\"http://oss.oetiker.ch/rrdtool/"
-#~ "\">RRD Tool</a> to render diagram images from collected data."
-#~ msgstr ""
-#~ "Данная статистика основана на программе <a href=\"http://collectd.org/"
-#~ "index.shtml\">Collectd</a> и использует <a href=\"http://oss.oetiker.ch/"
-#~ "rrdtool/\">RRD Tool</a> для построения диаграмм."
-
-#~ msgid "Installed network plugins:"
-#~ msgstr "Установленные сетевые модули:"
-
-#~ msgid "Installed output plugins:"
-#~ msgstr "Установленные модули вывода:"
-
-#~ msgid ""
-#~ "Network plugins are used to collect information about open tcp "
-#~ "connections, interface traffic, iptables rules etc."
-#~ msgstr ""
-#~ "Сетевые модули используются для сбора информации об открытых TCP-"
-#~ "соединениях, трафике, правилах iptables и т.п."
-
-#~ msgid ""
-#~ "Output plugins provide different possibilities to store collected data. "
-#~ "It is possible to enable multiple plugin at one, for example to store "
-#~ "collected data in rrd databases and to transmit the data over the network "
-#~ "to other collectd instances."
-#~ msgstr ""
-#~ "Модули вывода обеспечивают различные варианты сохранения собранных "
-#~ "данных. Можно включить несколько модулей, например, чтобы сохранить "
-#~ "собранные данные в базе данных RRD и передать их по сети другим "
-#~ "инстанциям collectd."
-
-#~ msgid ""
-#~ "System plugins collecting values about system state and ressource usage "
-#~ "on the device.:"
-#~ msgstr ""
-#~ "Системные модули, собирающие данные о состоянии системы и использовании "
-#~ "ресурсов устройства:"
-
-#~ msgid ""
-#~ "The wireless plugin collects statistics about wireless signal strength, "
-#~ "noise and quality."
-#~ msgstr ""
-#~ "Модуль Wireless собирает статистику о силе, шуме и качестве сигнала."
-
-#~ msgid "Wireless Plugin Configuration"
-#~ msgstr "Конфигурация модуля Wireless"
+msgstr "Интерфейсы сервера"
index ab75b69df0c33d2c9de9e506b5091da0357068f0..2dc176c83c8609d1c2959855ca6c1546088dcb23 100755 (executable)
@@ -1,7 +1,14 @@
 #!/bin/sh /etc/rc.common
+
 START=79
+USE_PROCD=1
+
+service_triggers()
+{
+       procd_add_reload_trigger "luci_statistics"
+}
 
-start() {
+start_service() {
        ### replace shipped config with symlink
        mkdir -p /var/etc
        if [ ! -L /etc/collectd.conf ]; then
@@ -16,6 +23,10 @@ start() {
        chmod 1777 /tmp
 }
 
+reload_service() {
+       restart "$@"
+}
+
 restart() {
        ### regenerate config / prepare environment
        start
index d43a887b073ef33359f8d66ecdd65c4c37b8a6f2..2ba9dddb8e663c27b57e6daea8dd405913ca0955 100644 (file)
@@ -13,7 +13,11 @@ if luci.http.formvalue("frame") == "1" then
                end)
 
        local data = false
-       local wget = io.popen("wget -qO- http://%s:%s" % { addr, port })
+       local wget = io.popen("wget -qO- http://%s:%s" %{
+               luci.util.shellquote(addr),
+               luci.util.shellquote(port)
+       })
+
        if wget then
                while true do
                        local l = wget:read("*l")
@@ -30,7 +34,10 @@ if luci.http.formvalue("frame") == "1" then
 
        if not data then
                luci.http.write(translate("Failed to retrieve statistics from url:"))
-               luci.http.write(" http://%s:%s" % { addr, port })
+               luci.http.write(" http://%s:%s" %{
+                       luci.util.pcdata(addr),
+                       luci.util.pcdata(port)
+               })
        end
 
        return
@@ -43,7 +50,7 @@ end
 <div class="cbi-map">
        <h2 name="content"><%:Tinyproxy Status%></h2>
        <div class="cbi-section">
-               <iframe src="<%=REQUESTURL%>?frame=1" style="width:100%; height:350px; border:none"></iframe>
+               <iframe src="<%=REQUEST_URI%>?frame=1" style="width:100%; height:350px; border:none"></iframe>
        </div>
 </div>
 
index f9a3c23d1677db7f735971964f6fe46a0e3a87f3..8e7362a4582aa5acdda02e82f47acd95c7d43115 100644 (file)
@@ -1,85 +1,85 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: tinyproxy\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-08-15 20:24+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2012-08-15 20:24+0300\n"
+"PO-Revision-Date: 2018-01-24 14:59+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid ""
 "<em>Via proxy</em> routes requests to the given target via the specifed "
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
-"<em>Через прокси</em> перенаправляет запросы на заданные узлы через "
-"Ñ\83казаннÑ\8bй Ð¿Ñ\80окÑ\81и, <em>Ð\9eÑ\82клонÑ\8fÑ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п</em> Ð¾Ñ\82клÑ\8eÑ\87аеÑ\82 Ð¸Ñ\81полÑ\8cзование Ð¿Ñ\80окÑ\81и "
-"длÑ\8f Ð²Ñ\81еÑ\85 Ñ\83злов"
+"<em>'Через прокси'</em> перенаправляет запросы на узлы назначения через "
+"Ñ\83казаннÑ\8bй Ð²Ð½ÐµÑ\88ний Ð¿Ñ\80окÑ\81и-Ñ\81еÑ\80веÑ\80, <em>'Ð\9eÑ\82клонÑ\8fÑ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п'</em> Ð¾Ñ\82клÑ\8eÑ\87аеÑ\82 "
+"иÑ\81полÑ\8cзование Ð²Ð½ÐµÑ\88ниÑ\85 Ð¿Ñ\80окÑ\81и-Ñ\81еÑ\80веÑ\80ов Ð´Ð»Ñ\8f Ð²Ñ\81еÑ\85 Ñ\83злов."
 
 msgid ""
 "Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded "
 "requests"
 msgstr ""
-"Добавляет HTTP-заголовок \"X-Tinyproxy\" с IP-адресом клиента ко всем "
-"перенаправленным запросам"
+"Добавляет HTTP-заголовок 'X-Tinyproxy' с IP-адресом клиента для "
+"перенаправленных запросов."
 
 msgid "Allowed clients"
 msgstr "Разрешённые клиенты"
 
 msgid "Allowed connect ports"
-msgstr "Разрешённые порты подключения"
+msgstr "Разрешенные<br />порты подключения"
 
 msgid "Bind address"
-msgstr "Ð\90дÑ\80еÑ\81 Ð¿Ñ\80ивÑ\8fзки"
+msgstr "Ð\9fÑ\80ивÑ\8fзка Ð°Ð´Ñ\80еÑ\81а"
 
 msgid ""
 "By default, basic POSIX expressions are used for filtering. Enable this to "
 "activate extended regular expressions"
 msgstr ""
-"РазÑ\80еÑ\88иÑ\82Ñ\8c Ð¸Ñ\81полÑ\8cзование Ñ\80аÑ\81Ñ\88иÑ\80еннÑ\8bÑ\85 Ñ\80егÑ\83лÑ\8fÑ\80нÑ\8bÑ\85 Ð²Ñ\8bÑ\80ажений Ð´Ð»Ñ\8f Ñ\84илÑ\8cÑ\82Ñ\80аÑ\86ии. Ð\9fо "
-"умолчанию, используются базовые POSIX-выражения"
+"Ð\9fо Ñ\83молÑ\87аниÑ\8e Ð´Ð»Ñ\8f Ñ\84илÑ\8cÑ\82Ñ\80аÑ\86ии Ð¸Ñ\81полÑ\8cзÑ\83Ñ\8eÑ\82Ñ\81Ñ\8f Ð±Ð°Ð·Ð¾Ð²Ñ\8bе POSIX-вÑ\8bÑ\80ажениÑ\8f.<br /"
+">Включить эту функцию для активации расширенных регулярных выражений."
 
 msgid ""
 "By default, filter strings are treated as case-insensitive. Enable this to "
 "make the matching case-sensitive"
 msgstr ""
-"По умолчанию, строки фильтрации регистро-независимы. Включите эту опцию, "
-"чтобы сделать сравнение регистро-зависимым"
+"По умолчанию строки фильтрации регистро-независимы.<br />Включите эту опцию, "
+"чтобы сделать сравнение регистро-зависимым."
 
 msgid ""
 "By default, filtering is done based on domain names. Enable this to match "
 "against URLs instead"
 msgstr ""
-"По умолчанию, фильтрация выполняется на основе имени домена. Включите эту "
-"опцию, чтобы фильтровать при помощи URL"
+"По умолчанию фильтрация выполняется на основе доменных имен.<br />Включите "
+"это для сопоставления с URL-адресами."
 
 msgid ""
 "By default, the filter rules act as blacklist. Enable this option to only "
 "allow matched URLs or domain names"
 msgstr ""
-"По умолчанию, фильтрация работает в режиме чёрного списка. Включите эту "
-"опцию, чтобы разрешить только опредёленные URL или доменные имена"
+"По умолчанию правила фильтрации действуют как Черный список.<br />Включите "
+"эту опцию, чтобы разрешить только совпадающие URL-адреса или имена доменов."
 
 msgid ""
 "Can be either an IP address or range, a domain name or \".\" for any host "
 "without domain"
 msgstr ""
-"Может быть IP-адресом, диапазоном, именем домена или \".\" для любого хоста "
+"Может быть IP-адресом, диапазоном, именем домена или '.' для любого хоста "
 "без домена"
 
 msgid "Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка config Ñ\84айла"
 
 msgid "Connection timeout"
-msgstr "ТаймаÑ\83Ñ\82 соединения"
+msgstr "Ð\92Ñ\80емÑ\8f Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ\8f соединения"
 
 msgid "Default deny"
 msgstr "Запретить по умолчанию"
@@ -91,34 +91,34 @@ msgid "Error page"
 msgstr "Страница ошибки"
 
 msgid "Failed to retrieve statistics from url:"
-msgstr "Ð\9eÑ\88ибка Ð¿Ð¾Ð»Ñ\83Ñ\87ениÑ\8f Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82ики Ð¿Ð¾ URL:"
+msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð¿Ð¾Ð»Ñ\83Ñ\87иÑ\82Ñ\8c Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82икÑ\83 Ð¿Ð¾ URL-адÑ\80еÑ\81Ñ\83:"
 
 msgid "Filter by RegExp"
-msgstr "Фильтровать при помощи регулярных выражений"
+msgstr "Фильтровать по регулярным выражениям (RegExp)"
 
 msgid "Filter by URLs"
-msgstr "Фильтровать по URL"
+msgstr "Фильтровать<br /> по URL-адресам"
 
 msgid "Filter case-sensitive"
-msgstr "Фильтровать с учётом регистра"
+msgstr "Фильтровать<br />с учетом регистра"
 
 msgid "Filter file"
 msgstr "Файл фильтрации"
 
 msgid "Filtering and ACLs"
-msgstr "Фильтрация и ACL"
+msgstr "Фильтрация и списки ACL"
 
 msgid "General settings"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
 
 msgid "Group"
 msgstr "Группа"
 
 msgid "HTML template file to serve for stat host requests"
-msgstr "HTML-Ñ\88аблон Ð´Ð»Ñ\8f Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82ики Ñ\85оÑ\81Ñ\82ов"
+msgstr "HTML-Ñ\84айл Ñ\88аблона Ð´Ð»Ñ\8f Ð²Ñ\8bвода Ñ\81Ñ\82аÑ\82иÑ\81Ñ\82ики Ð·Ð°Ð¿Ñ\80оÑ\81ов Ñ\85оÑ\81Ñ\82а."
 
 msgid "HTML template file to serve when HTTP errors occur"
-msgstr "HTML-Ñ\88аблон Ð´Ð»Ñ\8f Ð²Ñ\8bвода Ð¾Ñ\88ибок HTTP"
+msgstr "HTML-Ñ\84айл Ñ\88аблона Ð´Ð»Ñ\8f Ð²Ñ\8bвода Ð¾Ñ\88ибок HTTP."
 
 msgid "Header whitelist"
 msgstr "Белый список заголовков"
@@ -126,71 +126,74 @@ msgstr "Белый список заголовков"
 msgid ""
 "List of IP addresses or ranges which are allowed to use the proxy server"
 msgstr ""
-"Список или диапазон IP-адресов, которым разрешено использовать прокси-сервер"
+"Список или диапазон IP-адресов, которым разрешено использовать прокси-сервер."
 
 msgid ""
 "List of allowed ports for the CONNECT method. A single value \"0\" allows "
 "all ports"
 msgstr ""
-"Список разрешённых портов для метода CONNECT. Значение \"0\" разрешает все "
-"порты"
+"Список разрешенных портов для опции 'CONNECT'. Значение '0' разрешает все "
+"порты."
 
 msgid "Listen address"
-msgstr "Адрес"
+msgstr "Адрес для входящих соединений"
 
 msgid "Listen port"
-msgstr "Порт"
+msgstr "Порт для входящих соединений"
 
 msgid "Log file"
-msgstr "Файл Ð¶Ñ\83Ñ\80налиÑ\80ованиÑ\8f"
+msgstr "Файл Ð¶Ñ\83Ñ\80нала"
 
 msgid "Log file to use for dumping messages"
-msgstr "Файл Ð´Ð»Ñ\8f Ð·Ð°Ð¿Ð¸Ñ\81и Ñ\81ообÑ\89ений"
+msgstr "Ð\97адайÑ\82е Ñ\80аÑ\81положение Ñ\84айла Ð¶Ñ\83Ñ\80нала Tinyproxy."
 
 msgid "Log level"
-msgstr "УÑ\80овенÑ\8c Ð¶Ñ\83Ñ\80налиÑ\80ованиÑ\8f"
+msgstr "Ð\97апиÑ\81Ñ\8bваÑ\82Ñ\8c Ð² Ð¶Ñ\83Ñ\80нал"
 
 msgid "Logging verbosity of the Tinyproxy process"
-msgstr "УÑ\80овенÑ\8c Ð¿Ð¾Ð´Ñ\80обноÑ\81Ñ\82и Ð¶Ñ\83Ñ\80налиÑ\80ованиÑ\8f Ð¿Ñ\80оÑ\86еÑ\81Ñ\81а Tinyproxy"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð¾Ð´Ñ\80обной Ð·Ð°Ð¿Ð¸Ñ\81и Ð² Ð¶Ñ\83Ñ\80нал Ð¿Ñ\80оÑ\86еÑ\81Ñ\81ов Tinyproxy."
 
 msgid "Max. clients"
-msgstr "Макс. кол-во клиентов"
+msgstr "Максимальное кол-во<br />клиентов"
 
 msgid "Max. requests per server"
-msgstr "Макс. кол-во запросов на сервер"
+msgstr "Максимальное кол-во<br />запросов на сервер"
 
 msgid "Max. spare servers"
-msgstr "Макс. кол-во серверов ожидания"
+msgstr "Максимальное кол-во<br />серверов ожидания"
 
 msgid "Maximum allowed number of concurrently connected clients"
-msgstr "Максимально допустимое количество одновременно подключенных клиентов"
+msgstr "Максимально допустимое число параллельно подключенных клиентов."
 
 msgid ""
 "Maximum allowed number of requests per process. If it is exeeded, the "
 "process is restarted. Zero means unlimited."
 msgstr ""
-"Максимально допустимое количество запросов на процесс. Если превышено, "
-"пÑ\80оÑ\86еÑ\81Ñ\81 Ð±Ñ\83деÑ\82 Ð¿ÐµÑ\80езапÑ\83Ñ\89ен. Ð\9dолÑ\8c Ð¾Ñ\82клÑ\8eÑ\87аеÑ\82 Ð´Ð°Ð½Ð½Ð¾Ðµ Ð¾Ð³Ñ\80аниÑ\87ение."
+"Максимальное допустимое число запросов для каждого процесса.<br />Если "
+"пÑ\80евÑ\8bÑ\88ено, Ð¿Ñ\80оÑ\86еÑ\81Ñ\81 Ð±Ñ\83деÑ\82 Ð¿ÐµÑ\80езапÑ\83Ñ\89ен. Ð\9dолÑ\8c Ð¾Ð·Ð½Ð°Ñ\87аеÑ\82 Ð½ÐµÐ¾Ð³Ñ\80аниÑ\87енное."
 
 msgid "Maximum number of prepared idle processes"
-msgstr "Ð\9cакÑ\81ималÑ\8cное ÐºÐ¾Ð»Ð¸Ñ\87еÑ\81Ñ\82во Ð³Ð¾Ñ\82овÑ\8bÑ\85 Ðº Ð¾Ð±Ñ\80абоÑ\82ке Ð¿Ñ\80оÑ\86еÑ\81Ñ\81ов"
+msgstr "Ð\9cакÑ\81ималÑ\8cное ÐºÐ¾Ð»Ð¸Ñ\87еÑ\81Ñ\82во Ð¿Ð¾Ð´Ð³Ð¾Ñ\82овленнÑ\8bÑ\85 Ð±ÐµÐ·Ð´ÐµÐ¹Ñ\81Ñ\82вÑ\83Ñ\8eÑ\89иÑ\85 Ð¿Ñ\80оÑ\86еÑ\81Ñ\81ов."
 
 msgid "Maximum number of seconds an inactive connection is held open"
 msgstr ""
 "Максимальное количество секунд, в течение которых неактивное соединение "
-"остаётся открытым"
+"удерживается открытым."
 
 msgid "Min. spare servers"
-msgstr "Мин. кол-во серверов ожидания"
+msgstr "Минимальное кол-во<br />серверов ожидания"
 
 msgid "Minimum number of prepared idle processes"
-msgstr "Ð\9cинималÑ\8cное ÐºÐ¾Ð»Ð¸Ñ\87еÑ\81Ñ\82во Ð³Ð¾Ñ\82овÑ\8bÑ\85 Ðº Ð¾Ð±Ñ\80абоÑ\82ке Ð¿Ñ\80оÑ\86еÑ\81Ñ\81ов"
+msgstr "Ð\9cинималÑ\8cное ÐºÐ¾Ð»Ð¸Ñ\87еÑ\81Ñ\82во Ð¿Ð¾Ð´Ð³Ð¾Ñ\82овленнÑ\8bÑ\85 Ð±ÐµÐ·Ð´ÐµÐ¹Ñ\81Ñ\82вÑ\83Ñ\8eÑ\89иÑ\85 Ð¿Ñ\80оÑ\86еÑ\81Ñ\81ов."
 
 msgid "Number of idle processes to start when launching Tinyproxy"
-msgstr "Количество готовых к обработке процессов при старте Tinyproxy"
+msgstr ""
+"Количество бездействующих процессов, запускаемых при запуске Tinyproxy."
 
 msgid "Plaintext file with URLs or domains to filter. One entry per line"
-msgstr "Файл с URL или доменами для фильтрации. Одна запись на строку"
+msgstr ""
+"Текстовый файл с URL-адресами или доменами для фильтрации. Одна запись - "
+"одна строка."
 
 msgid "Policy"
 msgstr "Политика"
@@ -211,41 +214,40 @@ msgid ""
 "Specifies HTTP header names which are allowed to pass-through, all others "
 "are discarded. Leave empty to disable header filtering"
 msgstr ""
-"Ð\9eпÑ\80еделÑ\8fеÑ\82 HTTP-заголовки, ÐºÐ¾Ñ\82оÑ\80Ñ\8bм Ñ\80азÑ\80еÑ\88ено Ð¿Ñ\80оÑ\85одиÑ\82Ñ\8c Ñ\87еÑ\80ез Ð¿Ñ\80окÑ\81и. "
-"Ð\9eÑ\81Ñ\82авÑ\8cÑ\82е Ð¿Ñ\83Ñ\81Ñ\82Ñ\8bм, Ñ\87Ñ\82обÑ\8b Ð½Ðµ Ñ\84илÑ\8cÑ\82Ñ\80оваÑ\82Ñ\8c Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¸"
+"Ð\97адайÑ\82е Ð¸Ð¼ÐµÐ½Ð° HTTP-заголовков, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ñ\80азÑ\80еÑ\88ено Ð¿ÐµÑ\80едаваÑ\82Ñ\8c, Ð²Ñ\81е Ð¾Ñ\81Ñ\82алÑ\8cнÑ\8bе "
+"оÑ\82бÑ\80аÑ\81Ñ\8bваÑ\8eÑ\82Ñ\81Ñ\8f.<br />Ð\9eÑ\81Ñ\82авÑ\8cÑ\82е Ð¿Ñ\83Ñ\81Ñ\82Ñ\8bм, Ñ\87Ñ\82обÑ\8b Ð¾Ñ\82клÑ\8eÑ\87иÑ\82Ñ\8c Ñ\84илÑ\8cÑ\82Ñ\80аÑ\86иÑ\8e Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð²."
 
 msgid "Specifies the HTTP port Tinyproxy is listening on for requests"
-msgstr "Ð\9eпÑ\80еделÑ\8fеÑ\82 Ð¿Ð¾Ñ\80Ñ\82 HTTP, Ð½Ð° ÐºÐ¾Ñ\82оÑ\80ом Tinyproxy Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ\82 Ð·Ð°Ð¿Ñ\80оÑ\81Ñ\8b"
+msgstr "Ð\97адайÑ\82е HTTP-поÑ\80Ñ\82 Tinyproxy Ð´Ð»Ñ\8f Ð²Ñ\85одÑ\8fÑ\89иÑ\85 Ñ\81оединений."
 
 msgid "Specifies the Tinyproxy hostname to use in the Via HTTP header"
 msgstr ""
-"Определяет имя хоста Tinyproxy, которое будет использовано в HTTP-заголовке "
-"Via"
+"Задайте имя хоста Tinyproxy, которое будет использовано в HTTP-заголовке."
 
 msgid ""
 "Specifies the address Tinyproxy binds to for outbound forwarded requests"
 msgstr ""
-"Ð\9eпÑ\80еделÑ\8fеÑ\82 Ð°Ð´Ñ\80еÑ\81, Ðº ÐºÐ¾Ñ\82оÑ\80омÑ\83 Ð¿Ñ\80ивÑ\8fзÑ\8bваеÑ\82Ñ\81Ñ\8f Tinyproxy Ð´Ð»Ñ\8f Ð¾Ñ\82пÑ\80авки Ð¸Ñ\81Ñ\85одÑ\8fÑ\89иÑ\85 "
-"запÑ\80оÑ\81ов"
+"Ð\97адайÑ\82е Ð°Ð´Ñ\80еÑ\81, Ðº ÐºÐ¾Ñ\82оÑ\80омÑ\83 Ð¿Ñ\80ивÑ\8fзÑ\8bваеÑ\82Ñ\81Ñ\8f Tinyproxy Ð´Ð»Ñ\8f Ð¾Ñ\82пÑ\80авки "
+"пеÑ\80енапÑ\80авленнÑ\8bÑ\85 Ð¸Ñ\81Ñ\85одÑ\8fÑ\89иÑ\85 Ð·Ð°Ð¿Ñ\80оÑ\81ов."
 
 msgid "Specifies the addresses Tinyproxy is listening on for requests"
-msgstr "Ð\9eпÑ\80еделÑ\8fеÑ\82 Ð°Ð´Ñ\80еÑ\81, Ð½Ð° ÐºÐ¾Ñ\82оÑ\80ом Tinyproxy Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ\82 Ð·Ð°Ð¿Ñ\80оÑ\81Ñ\8b"
+msgstr "Ð\97адайÑ\82е Ð°Ð´Ñ\80еÑ\81 Ð½Ð° ÐºÐ¾Ñ\82оÑ\80ом Tinyproxy Ð±Ñ\83деÑ\82 Ð¾Ð¶Ð¸Ð´Ð°Ñ\82Ñ\8c Ð²Ñ\85одÑ\8fÑ\89ие Ñ\81оединениÑ\8f."
 
 msgid "Specifies the group name the Tinyproxy process is running as"
-msgstr "Ð\9eпÑ\80еделÑ\8fеÑ\82 Ð¸Ð¼Ñ\8f Ð³Ñ\80Ñ\83ппÑ\8b, Ð² ÐºÐ¾Ñ\82оÑ\80ой Ñ\80абоÑ\82аеÑ\82 Tinyproxy"
+msgstr "Ð\97адайÑ\82е Ð¸Ð¼Ñ\8f Ð³Ñ\80Ñ\83ппÑ\8b, Ð² ÐºÐ¾Ñ\82оÑ\80ой Ñ\80абоÑ\82аеÑ\82 Tinyproxy."
 
 msgid ""
 "Specifies the upstream proxy to use for accessing the target host. Format is "
 "<code>address:port</code>"
 msgstr ""
-"Ð\9eпÑ\80еделÑ\8fеÑ\82 Ð¿Ñ\80окÑ\81и Ð²Ð¾Ñ\81Ñ\85одÑ\8fÑ\89его ÐºÐ°Ð½Ð°Ð»Ð° Ð´Ð»Ñ\8f Ð´Ð¾Ñ\81Ñ\82Ñ\83па Ðº Ñ\85оÑ\81Ñ\82Ñ\83 Ð² Ñ\84оÑ\80маÑ\82е "
-"<code>адрес:порт</code>"
+"Ð\97адайÑ\82е Ð²Ð½ÐµÑ\88ний Ð¿Ñ\80окÑ\81и-Ñ\81еÑ\80веÑ\80, Ð¸Ñ\81полÑ\8cзÑ\83емÑ\8bй Ð´Ð»Ñ\8f Ð´Ð¾Ñ\81Ñ\82Ñ\83па Ðº Ñ\85оÑ\81Ñ\82Ñ\83 Ð½Ð°Ð·Ð½Ð°Ñ\87ениÑ\8f. "
+"В виде <code>'адрес:порт'</code>."
 
 msgid "Specifies the user name the Tinyproxy process is running as"
-msgstr "Ð\9eпÑ\80еделÑ\8fеÑ\82 Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f, Ð¾Ñ\82 Ð¸Ð¼ÐµÐ½Ð¸ ÐºÐ¾Ñ\82оÑ\80ого Ñ\80абоÑ\82аеÑ\82 Tinyproxy"
+msgstr "Ð\97адайÑ\82е Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f, Ð¾Ñ\82 Ð¸Ð¼ÐµÐ½Ð¸ ÐºÐ¾Ñ\82оÑ\80ого Ñ\80абоÑ\82аеÑ\82 Tinyproxy."
 
 msgid "Start spare servers"
-msgstr "Запустить указанное количество готовых к обработке процессов"
+msgstr "Запустить запасные сервера"
 
 msgid "Statistics page"
 msgstr "Страница статистики"
@@ -263,32 +265,34 @@ msgid "Tinyproxy Status"
 msgstr "Состояние Tinyproxy"
 
 msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy"
-msgstr "Tinyproxy - Ð±Ñ\8bÑ\81Ñ\82Ñ\80Ñ\8bй HTTP(S)-пÑ\80окÑ\81и, Ð½Ðµ Ð¸Ñ\81полÑ\8cзÑ\83Ñ\8eÑ\89ий ÐºÑ\8dÑ\88"
+msgstr "Tinyproxy - Ð½ÐµÐ±Ð¾Ð»Ñ\8cÑ\88ой Ð¸ Ð±Ñ\8bÑ\81Ñ\82Ñ\80Ñ\8bй HTTP(S)-пÑ\80окÑ\81и, Ð½Ðµ Ð¸Ñ\81полÑ\8cзÑ\83Ñ\8eÑ\89ий ÐºÑ\8dÑ\88."
 
 msgid "Upstream Proxies"
-msgstr "Ð\9fÑ\80окÑ\81и Ð´Ð»Ñ\8f Ð¸Ñ\81Ñ\85одÑ\8fÑ\89его Ñ\82Ñ\80аÑ\84ика"
+msgstr "Ð\9fÑ\80окÑ\81и Ð²Ð½ÐµÑ\88ней Ñ\81еÑ\82и"
 
 msgid ""
 "Upstream proxy rules define proxy servers to use when accessing certain IP "
 "addresses or domains."
 msgstr ""
-"Ð\9fÑ\80окÑ\81и Ð´Ð»Ñ\8f Ð¸Ñ\81Ñ\85одÑ\8fÑ\89его Ñ\82Ñ\80аÑ\84ика Ð¿Ñ\80и Ð¾Ð±Ñ\80аÑ\89ении Ðº Ð¾Ð¿Ñ\80еделÑ\91ннÑ\8bм IP-адÑ\80еÑ\81ам Ð¸Ð»Ð¸ "
-"доменам."
+"Ð\9fÑ\80авила Ñ\82Ñ\80аÑ\84ика Ð´Ð»Ñ\8f Ð²Ð½ÐµÑ\88ниÑ\85 Ð¿Ñ\80окÑ\81и-Ñ\81еÑ\80веÑ\80ов, Ð´Ð»Ñ\8f Ð¸Ñ\81полÑ\8cзованиÑ\8f Ð¿Ñ\80и Ð´Ð¾Ñ\81Ñ\82Ñ\83пе Ðº "
+"опÑ\80еделеннÑ\8bм IP-адÑ\80еÑ\81ам Ð¸Ð»Ð¸ Ð´Ð¾Ð¼ÐµÐ½Ð°Ð¼."
 
 msgid "Use syslog"
-msgstr "Ð\98Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ñ\81истемный журнал"
+msgstr "Системный журнал"
 
 msgid "User"
 msgstr "Пользователь"
 
 msgid "Via hostname"
-msgstr "Имя хоста Via"
+msgstr "Имя хоста"
 
 msgid "Via proxy"
 msgstr "Через прокси"
 
 msgid "Writes log messages to syslog instead of a log file"
-msgstr "Записывать сообщения журнала в системный журнал вместо файла"
+msgstr ""
+"Записывать сообщения журнала в общий системный журнал.<br />Вместо "
+"отдельного файла журнала Tinyproxy."
 
 msgid "X-Tinyproxy header"
 msgstr "Заголовок X-Tinyproxy"
index fac9510a5918b1b9662e6bfad525af72cf487957..32edc4f51adf5f7f6f7ec92a0d4b03d26231063e 100644 (file)
@@ -1,67 +1,67 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: transmission\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-08-15 17:35+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2012-08-15 17:35+0300\n"
+"PO-Revision-Date: 2018-02-06 23:49+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "Alternative download speed"
-msgstr "Ð\90лÑ\8cÑ\82еÑ\80наÑ\82ивнаÑ\8f Ñ\81коÑ\80оÑ\81Ñ\82Ñ\8c загрузки"
+msgstr "Ð\90лÑ\8cÑ\82еÑ\80наÑ\82ивное Ð¾Ð³Ñ\80аниÑ\87ение Ñ\81коÑ\80оÑ\81Ñ\82и загрузки"
 
 msgid "Alternative speed enabled"
-msgstr "Ð\90лÑ\8cÑ\82еÑ\80наÑ\82ивнаÑ\8f Ñ\81коÑ\80оÑ\81Ñ\82Ñ\8c Ð²ÐºÐ»Ñ\8eÑ\87ена"
+msgstr "Ð\90лÑ\8cÑ\82еÑ\80наÑ\82ивное Ð¾Ð³Ñ\80аниÑ\87ение Ñ\81коÑ\80оÑ\81Ñ\82и Ð²ÐºÐ»Ñ\8eÑ\87ено"
 
 msgid "Alternative speed time begin"
-msgstr "Ð\92Ñ\80емÑ\8f Ð½Ð°Ñ\87ала Ð°Ð»Ñ\8cÑ\82еÑ\80наÑ\82ивной скорости"
+msgstr "Ð\92Ñ\80емÑ\8f Ð·Ð°Ð¿Ñ\83Ñ\81ка Ð°Ð»Ñ\8cÑ\82еÑ\80наÑ\82ивного Ð¾Ð³Ñ\80аниÑ\87ениÑ\8f скорости"
 
 msgid "Alternative speed time day"
-msgstr "Ð\94енÑ\8c Ð°Ð»Ñ\8cÑ\82еÑ\80наÑ\82ивной скорости"
+msgstr "Ð\92Ñ\80емÑ\8f Ñ\81Ñ\83Ñ\82ок Ð°Ð»Ñ\8cÑ\82еÑ\80наÑ\82ивного Ð¾Ð³Ñ\80аниÑ\87ениÑ\8f скорости"
 
 msgid "Alternative speed time end"
-msgstr "Ð\92Ñ\80емÑ\8f Ð¾ÐºÐ¾Ð½Ñ\87аниÑ\8f Ð°Ð»Ñ\8cÑ\82еÑ\80наÑ\82ивной скорости"
+msgstr "Ð\92Ñ\80емÑ\8f Ð¾ÐºÐ¾Ð½Ñ\87аниÑ\8f Ð°Ð»Ñ\8cÑ\82еÑ\80наÑ\82ивного Ð¾Ð³Ñ\80аниÑ\87ениÑ\8f скорости"
 
 msgid "Alternative speed timing enabled"
-msgstr "РаÑ\81пиÑ\81ание Ð°Ð»Ñ\8cÑ\82еÑ\80наÑ\82ивной Ñ\81коÑ\80оÑ\81Ñ\82и Ð²ÐºÐ»Ñ\8eÑ\87ено"
+msgstr "Ð\92Ñ\80емÑ\8f Ð·Ð°Ð¿Ñ\83Ñ\81ка Ð°Ð»Ñ\8cÑ\82еÑ\80наÑ\82ивного Ð¾Ð³Ñ\80аниÑ\87ениÑ\8f Ñ\81коÑ\80оÑ\81Ñ\82и"
 
 msgid "Alternative upload speed"
-msgstr "Ð\90лÑ\8cÑ\82еÑ\80наÑ\82ивнаÑ\8f Ñ\81коÑ\80оÑ\81Ñ\82Ñ\8c Ð¾Ñ\82дачи"
+msgstr "Ð\90лÑ\8cÑ\82еÑ\80наÑ\82ивное Ð¾Ð³Ñ\80аниÑ\87ение Ñ\81коÑ\80оÑ\81Ñ\82и Ñ\80аздачи"
 
 msgid "Automatically start added torrents"
-msgstr "Автоматически запускать добавленные торренты"
+msgstr "Автоматический старт при добавлении торрент файлов"
 
 msgid "Bandwidth settings"
-msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойки скорости"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка скорости"
 
 msgid "Binding address IPv4"
-msgstr "Ð\9fÑ\80ивÑ\8fзаннÑ\8bй Ð°Ð´Ñ\80еÑ\81 IPv4"
+msgstr "Ð\98Ñ\81полÑ\8cзÑ\83емÑ\8bй IPv4-адÑ\80еÑ\81"
 
 msgid "Binding address IPv6"
-msgstr "Ð\9fÑ\80ивÑ\8fзаннÑ\8bй Ð°Ð´Ñ\80еÑ\81 IPv6"
+msgstr "Ð\98Ñ\81полÑ\8cзÑ\83емÑ\8bй IPv6-адÑ\80еÑ\81"
 
 msgid "Block list enabled"
-msgstr "СпиÑ\81ок Ð±Ð»Ð¾ÐºÐ¸Ñ\80овок включен"
+msgstr "ЧеÑ\80нÑ\8bй Ñ\81пиÑ\81ок включен"
 
 msgid "Blocklist URL"
-msgstr "URL списка блокировок"
+msgstr "URL ссылка для<br />загрузки Черного списка"
 
 msgid "Blocklists"
-msgstr "СпиÑ\81ки Ð±Ð»Ð¾ÐºÐ¸Ñ\80овок"
+msgstr "ЧеÑ\80нÑ\8bй Ñ\81пиÑ\81ок"
 
 msgid "Cache size in MB"
-msgstr "Размер кэша (МБ)"
+msgstr "Размер кэша в МБ"
 
 msgid "Config file directory"
-msgstr "Ð\9fапка Ñ\84айла ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии"
+msgstr "Ð\9fапка Ñ\80аÑ\81положениÑ\8f<br />Ñ\81onfig Ñ\84айла"
 
 msgid "DHT enabled"
 msgstr "DHT включен"
@@ -70,7 +70,7 @@ msgid "Debug"
 msgstr "Отладка"
 
 msgid "Download directory"
-msgstr "Ð\9fапка Ð´Ð»Ñ\8f Ð·Ð°Ð³Ñ\80Ñ\83зок"
+msgstr "Ð\9fапка Ð´Ð»Ñ\8f Ð·Ð°Ð³Ñ\80Ñ\83зки"
 
 msgid "Download queue enabled"
 msgstr "Очередь загрузок включена"
@@ -79,7 +79,7 @@ msgid "Download queue size"
 msgstr "Размер очереди загрузок"
 
 msgid "Enable watch directory"
-msgstr "Включить папку поиска"
+msgstr "Включить папку<br />для торрент файлов"
 
 msgid "Enabled"
 msgstr "Включено"
@@ -91,63 +91,62 @@ msgid "Error"
 msgstr "Ошибка"
 
 msgid "Fast"
-msgstr "Быстрый"
+msgstr "Быстрое"
 
 msgid "Files and Locations"
-msgstr "Файлы и пути"
+msgstr "Файлы и папки"
 
 msgid "Forced"
-msgstr "Ð\9fÑ\80инÑ\83дительно"
+msgstr "Ð\9eбÑ\8fзательно"
 
 msgid "Full"
-msgstr "Полный"
+msgstr "Полное"
 
 msgid "Global peer limit"
-msgstr "Ð\93лобалÑ\8cнÑ\8bй Ð»Ð¸Ð¼Ð¸Ñ\82 Ð¿Ð¸Ñ\80ов"
+msgstr "Ð\9eбÑ\89ее Ð¾Ð³Ñ\80аниÑ\87ение ÐºÐ¾Ð»-ва<br />пиÑ\80ов Ð´Ð»Ñ\8f Ð´ÐµÐ¼Ð¾Ð½Ð°"
 
 msgid "Global settings"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
 
 msgid "Idle seeding limit"
-msgstr "Ð\9eгÑ\80аниÑ\87ение Ð²Ñ\80емени Ñ\81идиÑ\80ованиÑ\8f"
+msgstr "Ð\9fÑ\80иоÑ\81Ñ\82ановиÑ\82Ñ\8c Ñ\80аздаÑ\87Ñ\83"
 
 msgid "Idle seeding limit enabled"
-msgstr "Ð\9eгÑ\80аниÑ\87ение Ð²Ñ\80емени Ñ\81идиÑ\80ованиÑ\8f Ð²ÐºÐ»Ñ\8eÑ\87ено"
+msgstr "Ð\9fÑ\80иоÑ\81Ñ\82ановка Ñ\80аздаÑ\87и Ð²ÐºÐ»Ñ\8eÑ\87ена"
 
 msgid "Incomplete directory"
-msgstr "Папка для не полностью загруженых файлов"
+msgstr "Папка для не полностью загруженных файлов"
 
 msgid "Incomplete directory enabled"
-msgstr "Папка для не полностью загруженых файлов включена"
+msgstr "Папка для не полностью загруженных файлов включена"
 
 msgid "Info"
 msgstr "Информация"
 
 msgid "LPD enabled"
-msgstr "LPD включено"
+msgstr "LPD включен"
 
-#, fuzzy
 msgid "Lazy bitfield enabled"
-msgstr "Lazy bitfield включен"
+msgstr "Lazy bitfield включено"
 
 msgid "Message level"
-msgstr "УÑ\80овенÑ\8c Ñ\81ообÑ\89ений"
+msgstr "Ð\97апиÑ\81Ñ\8c Ñ\81ообÑ\89ений Ð² Ð¶Ñ\83Ñ\80нал"
 
 msgid "Miscellaneous"
-msgstr "Ð\9fÑ\80оÑ\87ее"
+msgstr "Ð\94ополниÑ\82елÑ\8cно"
 
 msgid "None"
-msgstr "Ð\9eÑ\82Ñ\81Ñ\83Ñ\82Ñ\81Ñ\82вÑ\83еÑ\82"
+msgstr "Ð\9dиÑ\87его"
 
-#, fuzzy
 msgid ""
 "Number/bitfield. Start with 0, then for each day you want the scheduler "
 "enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - "
 "8, Thursday - 16, Friday - 32, Saturday - 64"
 msgstr ""
-"Номер/битовое поле. Начните с 0, затем для каждого дня, в который вы хотите "
-"включить планировщик, добавьте значение. Для воскресенья - 1, понедельника - "
-"2, вторника - 4, среды - 8, четверга - 16, пятницы - 32, субботы - 64."
+"Номер/bitfield. Начните с 0, затем для каждого дня недели, в который вы "
+"хотите включить планировщик, добавьте значение. Для воскресенья - 1, "
+"понедельника - 2, вторника - 4, среды - 8, четверга - 16, пятницы - 32, "
+"субботы - 64."
 
 msgid "Off"
 msgstr "Выключено"
@@ -159,28 +158,28 @@ msgid "PEX enabled"
 msgstr "PEX включен"
 
 msgid "Peer Port settings"
-msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойки Ð¿Ð¾Ñ\80Ñ\82а Ð¿Ð¸Ñ\80а"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¿Ð¾Ñ\80Ñ\82а Ð´Ð»Ñ\8f Ð²Ð½ÐµÑ\88ниÑ\85 Ñ\81оединений (пиÑ\80ов)"
 
 msgid "Peer congestion algorithm"
 msgstr "Алгоритм перегрузки пиров"
 
 msgid "Peer limit per torrent"
-msgstr "Ð\9eгÑ\80аниÑ\87ение Ð¿Ð¸Ñ\80ов Ð½Ð° Ñ\82оÑ\80Ñ\80енÑ\82"
+msgstr "Ð\9eгÑ\80аниÑ\87ение ÐºÐ¾Ð»-ва<br />пиÑ\80ов Ð½Ð° Ñ\82оÑ\80Ñ\80енÑ\82 Ñ\84айл"
 
 msgid "Peer port"
-msgstr "Ð\9fоÑ\80Ñ\82 Ð¿Ð¸Ñ\80а"
+msgstr "Ð\9fоÑ\80Ñ\82 Ð´Ð»Ñ\8f Ð¿Ð¸Ñ\80ов"
 
 msgid "Peer port random high"
-msgstr "Наибольший случайный порт пира"
+msgstr "Наибольший случайный<br />порт для пиров"
 
 msgid "Peer port random low"
-msgstr "Наименьший случайный порт пира"
+msgstr "Наименьший случайный<br />порт для пиров"
 
 msgid "Peer port random on start"
-msgstr "СлÑ\83Ñ\87айнÑ\8bй Ð¿Ð¾Ñ\80Ñ\82 Ð¿Ð¸Ñ\80а Ð¿Ñ\80и Ð·Ð°Ð¿Ñ\83Ñ\81ке"
+msgstr "СлÑ\83Ñ\87айнÑ\8bй Ð¿Ð¾Ñ\80Ñ\82 Ð´Ð»Ñ\8f Ð¿Ð¸Ñ\80ов Ð¿Ñ\80и Ð·Ð°Ð¿Ñ\83Ñ\81ке Ð´ÐµÐ¼Ð¾Ð½Ð°"
 
 msgid "Peer settings"
-msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойки Ð¿Ð¸Ñ\80а"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð²Ð½ÐµÑ\88ниÑ\85 Ñ\81оединений (пиÑ\80ов)"
 
 msgid "Peer socket tos"
 msgstr "Значение ToS сокета пира"
@@ -189,93 +188,91 @@ msgid "Port forwarding enabled"
 msgstr "Перенаправление портов включено"
 
 msgid "Preferred"
-msgstr "Ð\9fÑ\80едпоÑ\87иÑ\82аемо"
+msgstr "Ð\96елаÑ\82елÑ\8cно"
 
 msgid "Prefetch enabled"
-msgstr "Ð\9fÑ\80едвÑ\8bбоÑ\80ка Ð²ÐºÐ»Ñ\8eÑ\87ена"
+msgstr "Ð\92клÑ\8eÑ\87ен Ð¿Ñ\80едваÑ\80иÑ\82елÑ\8cнÑ\8bй<br />Ñ\80езеÑ\80в Ð¼ÐµÑ\81Ñ\82а Ð½Ð° Ð½Ð¾Ñ\81иÑ\82еле"
 
-#, fuzzy
 msgid "Queue stalled enabled"
 msgstr "Приостановка очереди включена"
 
-#, fuzzy
 msgid "Queue stalled minutes"
-msgstr "Приостановка очереди (мин.)"
+msgstr "Приостановка очереди в минутах"
 
 msgid "Queueing"
-msgstr "Ð\9eбÑ\81лÑ\83живание"
+msgstr "ФоÑ\80миÑ\80ование Ð¾Ñ\87еÑ\80еди"
 
 msgid "RPC URL"
-msgstr "URL RPC"
+msgstr "URL ссылка для доступа к удаленному управлению (RPC)"
 
 msgid "RPC authentication required"
-msgstr "Ð\90Ñ\83Ñ\82енÑ\82иÑ\84икаÑ\86иÑ\8f RPC"
+msgstr "ТÑ\80ебÑ\83еÑ\82Ñ\81Ñ\8f Ð°Ñ\83Ñ\82енÑ\82иÑ\84икаÑ\86иÑ\8f Ð´Ð»Ñ\8f Ð´Ð¾Ñ\81Ñ\82Ñ\83па Ðº Ñ\83даленномÑ\83 Ñ\83пÑ\80авлениÑ\8e (RPC)"
 
 msgid "RPC bind address"
-msgstr "RPC-адрес"
+msgstr "Адрес для доступа к удаленному управлению (RPC)"
 
 msgid "RPC enabled"
-msgstr "RPC включен"
+msgstr "Удаленное управление<br />(RPC) включено"
 
 msgid "RPC password"
-msgstr "Пароль RPC"
+msgstr "Пароль для доступа к удаленному управлению (RPC)"
 
 msgid "RPC port"
-msgstr "Порт RPC"
+msgstr "Порт для доступа к удаленному управлению (RPC)"
 
 msgid "RPC settings"
-msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойки RPC"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð´Ð¾Ñ\81Ñ\82Ñ\83па Ðº Ñ\83даленномÑ\83 Ñ\83пÑ\80авлениÑ\8e (RPC)"
 
 msgid "RPC username"
-msgstr "Ð\98мÑ\8f Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f RPC"
+msgstr "Ð\9bогин Ð´Ð»Ñ\8f Ð´Ð¾Ñ\81Ñ\82Ñ\83па Ðº Ñ\83даленномÑ\83 Ñ\83пÑ\80авлениÑ\8e (RPC)"
 
 msgid "RPC whitelist"
-msgstr "\"Белый\" список RPC"
+msgstr "Белый список IP-адресов для доступа к удаленному управлению (RPC)"
 
 msgid "RPC whitelist enabled"
-msgstr "\"Белый\" список RPC включен"
+msgstr "Белый список IP-адресов для удаленного управления (RPC) включен"
 
 msgid "Ratio limit"
-msgstr "Ð\9aоÑ\8dÑ\84Ñ\84иÑ\86иенÑ\82 Ð¾Ñ\82даÑ\87и"
+msgstr "Ð\9eгÑ\80аниÑ\87ение Ð¾Ñ\82ноÑ\88ениÑ\8f Ð¾Ñ\82данного Ðº Ñ\81каÑ\87анномÑ\83"
 
 msgid "Ratio limit enabled"
-msgstr "Ð\9aоÑ\8dÑ\84Ñ\84иÑ\86иенÑ\82 Ð¾Ñ\82даÑ\87и Ð²ÐºÐ»Ñ\8eÑ\87ен"
+msgstr "Ð\9eгÑ\80аниÑ\87ение Ð¾Ñ\82ноÑ\88ениÑ\8f Ð¾Ñ\82данного Ðº Ñ\81каÑ\87анномÑ\83 Ð²ÐºÐ»Ñ\8eÑ\87ено"
 
 msgid "Rename partial files"
 msgstr "Переименовывать незавершённые файлы"
 
 msgid "Run daemon as user"
-msgstr "Запустить демон от пользователя"
+msgstr "Запуск демона<br />от имени пользователя"
 
 msgid "Scheduling"
-msgstr "Планирование"
+msgstr "Планировщик"
 
 msgid "Scrape paused torrents enabled"
-msgstr "Ð\9fÑ\80оизводиÑ\82Ñ\8c scrape-запÑ\80оÑ\81Ñ\8b Ñ\83 Ð¿Ñ\80иоÑ\81Ñ\82ановленнÑ\8bÑ\85 Ñ\82оÑ\80Ñ\80енÑ\82ов"
+msgstr "Ð\92Ñ\8bполнÑ\8fÑ\82Ñ\8c scrape Ð·Ð°Ð¿Ñ\80оÑ\81Ñ\8b Ð´Ð»Ñ\8f Ð¿Ñ\80иоÑ\81Ñ\82ановленнÑ\8bÑ\85 Ñ\82оÑ\80Ñ\80енÑ\82ов (нежелаÑ\82елÑ\8cно)"
 
 msgid "Script torrent done enabled"
 msgstr "Запуск скрипта после загрузки торрента включён"
 
 msgid "Script torrent done filename"
-msgstr "СкÑ\80ипÑ\82 Ð·Ð°Ð²ÐµÑ\80Ñ\88ениÑ\8f загрузки"
+msgstr "Ð\9fÑ\83Ñ\82Ñ\8c Ðº Ñ\81кÑ\80ипÑ\82Ñ\83<br />запÑ\83Ñ\81каемомÑ\83 Ð¿Ð¾<br />завеÑ\80Ñ\88ении загрузки"
 
 msgid "Seed queue enabled"
-msgstr "Очередь сидов включена"
+msgstr "Ограничение кол-ва<br />сидов включено"
 
 msgid "Seed queue size"
-msgstr "РазмеÑ\80 Ð¾Ñ\87еÑ\80еди Ñ\81идиÑ\80ованиÑ\8f"
+msgstr "Ð\9eгÑ\80аниÑ\87ение ÐºÐ¾Ð»-ва Ñ\81идов"
 
 msgid "Speed limit down"
-msgstr "Ð\9bимиÑ\82 скорости загрузки"
+msgstr "Ð\9eгÑ\80аниÑ\87ение скорости загрузки"
 
 msgid "Speed limit down enabled"
-msgstr "Ð\9bимиÑ\82 Ñ\81коÑ\80оÑ\81Ñ\82и Ð·Ð°Ð³Ñ\80Ñ\83зки Ð²ÐºÐ»Ñ\8eÑ\87ен"
+msgstr "Ð\9eгÑ\80аниÑ\87ение Ñ\81коÑ\80оÑ\81Ñ\82и Ð·Ð°Ð³Ñ\80Ñ\83зки Ð²ÐºÐ»Ñ\8eÑ\87ено"
 
 msgid "Speed limit up"
-msgstr "Ð\9bимиÑ\82 Ñ\81коÑ\80оÑ\81Ñ\82и Ð¾Ñ\82дачи"
+msgstr "Ð\9eгÑ\80аниÑ\87ение Ñ\81коÑ\80оÑ\81Ñ\82и Ñ\80аздачи"
 
 msgid "Speed limit up enabled"
-msgstr "Ð\9bимиÑ\82 Ñ\81коÑ\80оÑ\81Ñ\82и Ð¾Ñ\82даÑ\87и Ð²ÐºÐ»Ñ\8eÑ\87ен"
+msgstr "Ð\9eгÑ\80аниÑ\87ение Ñ\81коÑ\80оÑ\81Ñ\82и Ñ\80аздаÑ\87и Ð²ÐºÐ»Ñ\8eÑ\87ено"
 
 msgid "Transmission"
 msgstr "Transmission"
@@ -284,23 +281,25 @@ msgid ""
 "Transmission daemon is a simple bittorrent client, here you can configure "
 "the settings."
 msgstr ""
-"Transmission - простой bittorrent-клиент. Здесь Вы можете настроить "
-"параметры."
+"Демон Transmission - это простой bittorrent-клиент. Здесь вы сможете его "
+"настроить.<br />Установить пакеты веб-интерфейса недостаточно, выберите и "
+"установите необходимый для работы пакет демона transmission-daemon-openssl "
+"или transmission-daemon-mbedtls."
 
 msgid "Trash original torrent files"
-msgstr "Удалить торрент-файлы"
+msgstr "Удалить торрент файлы"
 
 msgid "Upload slots per torrent"
-msgstr "Кол-во слотов отдачи на торрент"
+msgstr "Кол-во слотов раздачи на торрент файл"
 
 msgid "Watch directory"
-msgstr "Папка поиска"
+msgstr "Папка поиска демоном<br />торрент файлов"
 
 msgid "in minutes from midnight"
 msgstr "в минутах от полуночи"
 
 msgid "preallocation"
-msgstr "пÑ\80едÑ\80аÑ\81пÑ\80еделение"
+msgstr "Ð\9fÑ\80едваÑ\80иÑ\82елÑ\8cное<br />Ñ\80аÑ\81пÑ\80еделение<br />меÑ\81Ñ\82а Ð¿Ð¾Ð´ Ñ\84айл"
 
 msgid "uTP enabled"
 msgstr "uTP включен"
index 6170f9d4c35e890b405c59ff27deb12bfd3c0f84..58d9bf37d45e521e0389ed7f680e4b43e36067da 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2017 Dirk Brenken (dev@brenken.org)
+# Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 # This is free software, licensed under the Apache License, Version 2.0
 #
 
index efbe619a43435a2717c95788e34ed6488188076c..493a387c3e363390b341f0047db1625376146d0a 100644 (file)
@@ -1,9 +1,8 @@
--- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 -- This is free software, licensed under the Apache License, Version 2.0
 
 module("luci.controller.travelmate", package.seeall)
 
-local fs    = require("nixio.fs")
 local util  = require("luci.util")
 local i18n  = require("luci.i18n")
 local templ = require("luci.template")
@@ -17,25 +16,26 @@ function index()
        entry({"admin", "services", "travelmate", "stations"}, template("travelmate/stations"), _("Wireless Stations"), 20).leaf = true
        entry({"admin", "services", "travelmate", "logfile"}, call("logread"), _("View Logfile"), 30).leaf = true
        entry({"admin", "services", "travelmate", "advanced"}, firstchild(), _("Advanced"), 100)
-       entry({"admin", "services", "travelmate", "advanced", "configuration"}, cbi("travelmate/configuration_tab"), _("Edit Travelmate Configuration"), 110).leaf = true
-       entry({"admin", "services", "travelmate", "advanced", "cfg_wireless"}, cbi("travelmate/cfg_wireless_tab"), _("Edit Wireless Configuration"), 120).leaf = true
-       entry({"admin", "services", "travelmate", "advanced", "cfg_network"}, cbi("travelmate/cfg_network_tab"), _("Edit Network Configuration"), 130).leaf = true
-       entry({"admin", "services", "travelmate", "advanced", "cfg_firewall"}, cbi("travelmate/cfg_firewall_tab"), _("Edit Firewall Configuration"), 140).leaf = true
+       entry({"admin", "services", "travelmate", "advanced", "configuration"}, form("travelmate/configuration_tab"), _("Edit Travelmate Configuration"), 110).leaf = true
+       entry({"admin", "services", "travelmate", "advanced", "cfg_wireless"}, form("travelmate/cfg_wireless_tab"), _("Edit Wireless Configuration"), 120).leaf = true
+       entry({"admin", "services", "travelmate", "advanced", "cfg_network"}, form("travelmate/cfg_network_tab"), _("Edit Network Configuration"), 130).leaf = true
+       entry({"admin", "services", "travelmate", "advanced", "cfg_firewall"}, form("travelmate/cfg_firewall_tab"), _("Edit Firewall Configuration"), 140).leaf = true
 
+       entry({"admin", "services", "travelmate", "apqr"}, template("travelmate/ap_qr")).leaf = true
        entry({"admin", "services", "travelmate", "wifiscan"}, template("travelmate/wifi_scan")).leaf = true
-       entry({"admin", "services", "travelmate", "wifiadd"}, cbi("travelmate/wifi_add", {hideresetbtn=true, hidesavebtn=true})).leaf = true
-       entry({"admin", "services", "travelmate", "wifiedit"}, cbi("travelmate/wifi_edit", {hideresetbtn=true, hidesavebtn=true})).leaf = true
-       entry({"admin", "services", "travelmate", "wifidelete"}, cbi("travelmate/wifi_delete", {hideresetbtn=true, hidesavebtn=true})).leaf = true
-       entry({"admin", "services", "travelmate", "wifiorder"}, cbi("travelmate/wifi_order", {hideresetbtn=true, hidesavebtn=true})).leaf = true
+       entry({"admin", "services", "travelmate", "wifiadd"}, form("travelmate/wifi_add", {hideresetbtn=true, hidesavebtn=true})).leaf = true
+       entry({"admin", "services", "travelmate", "wifiedit"}, form("travelmate/wifi_edit", {hideresetbtn=true, hidesavebtn=true})).leaf = true
+       entry({"admin", "services", "travelmate", "wifidelete"}, form("travelmate/wifi_delete", {hideresetbtn=true, hidesavebtn=true})).leaf = true
+       entry({"admin", "services", "travelmate", "wifiorder"}, form("travelmate/wifi_order", {hideresetbtn=true, hidesavebtn=true})).leaf = true
 end
 
 function logread()
-       local logfile
+       local logfile = ""
 
        if nixio.fs.access("/var/log/messages") then
-               logfile = util.trim(util.exec("cat /var/log/messages | grep 'travelmate'"))
-       else
-               logfile = util.trim(util.exec("logread -e 'travelmate'"))
+               logfile = util.trim(util.exec("grep -F 'travelmate-' /var/log/messages"))
+       elseif nixio.fs.access("/sbin/logread") then
+               logfile = util.trim(util.exec("logread -e 'travelmate-'"))
        end
        templ.render("travelmate/logread", {title = i18n.translate("Travelmate Logfile"), content = logfile})
 end
index e715a2ba06b12e8ebae7b74bd52a3544a99bf649..a1dcbc638ce18166123dc779336a16019c779db1 100644 (file)
@@ -1,4 +1,4 @@
--- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 -- This is free software, licensed under the Apache License, Version 2.0
 
 local fs       = require("nixio.fs")
@@ -8,9 +8,9 @@ local util     = require("luci.util")
 local nw       = require("luci.model.network").init()
 local fw       = require("luci.model.firewall").init()
 local dump     = util.ubus("network.interface", "dump", {})
-local trmiface = uci.get("travelmate", "global", "trm_iface") or "trm_wwan"
-local trminput = uci.get("travelmate", "global", "trm_rtfile") or "/tmp/trm_runtime.json"
-local uplink   = uci.get("network", trmiface) or ""
+local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan"
+local trminput = uci:get("travelmate", "global", "trm_rtfile") or "/tmp/trm_runtime.json"
+local uplink   = uci:get("network", trmiface) or ""
 local parse    = json.parse(fs.readfile(trminput) or "")
 
 m = Map("travelmate", translate("Travelmate"),
@@ -18,8 +18,11 @@ m = Map("travelmate", translate("Travelmate"),
        .. translatef("For further information "
        .. "<a href=\"%s\" target=\"_blank\">"
        .. "see online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md"))
+m:chain("network")
+m:chain("firewall")
+m.apply_on_parse = true
 
-function m.on_after_commit(self)
+function m.on_apply(self)
        luci.sys.call("env -i /etc/init.d/travelmate restart >/dev/null 2>&1")
        luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
 end
@@ -28,39 +31,27 @@ end
 
 if uplink == "" then
        ds = m:section(NamedSection, "global", "travelmate", translate("Interface Wizard"))
-
-       o = ds:option(Value, "", translate("Uplink interface"))
+       o = ds:option(Value, "trm_iface", translate("Create Uplink interface"),
+               translate("Create a new wireless wan uplink interface, configure it to use dhcp and ")
+               .. translate("add it to the wan zone of the firewall.<br />")
+               .. translate("This step has only to be done once."))
        o.datatype = "and(uciname,rangelength(3,15))"
        o.default = trmiface
        o.rmempty = false
 
-       btn = ds:option(Button, "trm_iface", translate("Create Uplink Interface"),
-               translate("Create a new wireless wan uplink interface, configure it to use dhcp and ")
-               .. translate("add it to the wan zone of the firewall. This step has only to be done once."))
-       btn.inputtitle = translate("Add Interface")
-       btn.inputstyle = "apply"
-       btn.disabled = false
-
-       function btn.write(self, section)
-               local iface = o:formvalue(section)
-               if iface then
-                       uci:set("travelmate", section, "trm_iface", iface)
-                       uci:save("travelmate")
-                       uci:commit("travelmate")
-                       local net = nw:add_network(iface, { proto = "dhcp" })
-                       if net then
-                               nw:save("network")
-                               nw:commit("network")
-                               local zone = fw:get_zone_by_network("wan")
-                               if zone then
-                                       zone:add_network(iface)
-                                       fw:save("firewall")
-                                       fw:commit("firewall")
-                               end
+       function o.validate(self, value)
+               if value then
+                       local nwnet = nw:get_network(value)
+                       local zone  = fw:get_zone("wan")
+                       local fwnet = fw:get_zone_by_network(value)
+                       if not nwnet then
+                               nwnet = nw:add_network(value, { proto = "dhcp" })
+                       end
+                       if zone and not fwnet then
+                               fwnet = zone:add_network(value)
                        end
-                       luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1")
                end
-               luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
+               return value
        end
        return m
 end
@@ -73,8 +64,8 @@ o1 = s:option(Flag, "trm_enabled", translate("Enable travelmate"))
 o1.default = o1.disabled
 o1.rmempty = false
 
-o2 = s:option(Flag, "trm_automatic", translate("Enable 'automatic' mode"),
-       translate("Keep travelmate in an active state. Check every n seconds the connection status, i.e. the uplink availability."))
+o2 = s:option(Flag, "trm_captive", translate("Captive Portal Detection"),
+       translate("Check the internet availability, log captive portal redirections and keep the uplink connection 'alive'."))
 o2.default = o2.enabled
 o2.rmempty = false
 
@@ -91,39 +82,31 @@ end
 o3.default = trmiface
 o3.rmempty = false
 
-o4 = s:option(Value, "trm_triggerdelay", translate("Trigger delay"),
-       translate("Additional trigger delay in seconds before travelmate processing begins."))
-o4.default = 2
-o4.datatype = "range(1,90)"
-o4.rmempty = false
-
-btn = s:option(Button, "", translate("Manual Rescan"),
-       translate("Force a manual uplink rescan / reconnect in 'trigger' mode."))
-btn:depends("trm_automatic", "")
-btn.inputtitle = translate("Rescan")
-btn.inputstyle = "find"
-btn.disabled = false
-
-function btn.write()
-       luci.sys.call("env -i /etc/init.d/travelmate start >/dev/null 2>&1")
-       luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
+if fs.access("/usr/bin/qrencode") then
+       btn = s:option(Button, "btn", translate("View AP QR-Codes"),
+               translate("Connect your Android or iOS devices to your router's WiFi using the shown QR code."))
+       btn.inputtitle = translate("QR-Codes")
+       btn.inputstyle = "apply"
+       btn.disabled = false
+
+       function btn.write()
+               luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate", "apqr"))
+       end
 end
 
 -- Runtime information
 
 ds = m:section(NamedSection, "global", "travelmate", translate("Runtime Information"))
 
-dv1 = ds:option(DummyValue, "status", translate("Online Status"))
+dv1 = ds:option(DummyValue, "status", translate("Travelmate Status (Quality)"))
 dv1.template = "travelmate/runtime"
-if parse == nil then
-       dv1.value = translate("n/a")
-elseif parse.data.station_connection == "true" then
-       dv1.value = translate("connected")
+if parse ~= nil then
+       dv1.value = parse.data.travelmate_status or translate("n/a")
 else
-       dv1.value = translate("not connected")
+       dv1.value = translate("n/a")
 end
 
-dv2 = ds:option(DummyValue, "travelmate_version", translate("Travelmate version"))
+dv2 = ds:option(DummyValue, "travelmate_version", translate("Travelmate Version"))
 dv2.template = "travelmate/runtime"
 if parse ~= nil then
        dv2.value = parse.data.travelmate_version or translate("n/a")
@@ -177,23 +160,34 @@ e2 = e:option(Value, "trm_radio", translate("Radio selection"),
 e2.datatype = "and(uciname,rangelength(6,6))"
 e2.rmempty = true
 
-e3 = e:option(Value, "trm_maxretry", translate("Connection Limit"),
-       translate("How many times should travelmate try to connect to an Uplink. ")
-       .. translate("To disable this feature set it to '0' which means unlimited retries."))
-e3.default = 3
-e3.datatype = "range(0,30)"
+e3 = e:option(Value, "trm_triggerdelay", translate("Trigger Delay"),
+       translate("Additional trigger delay in seconds before travelmate processing begins."))
+e3.datatype = "range(1,60)"
+e3.default = 2
 e3.rmempty = false
 
-e4 = e:option(Value, "trm_maxwait", translate("Interface Timeout"),
-       translate("How long should travelmate wait for a successful wlan interface reload."))
-e4.default = 30
-e4.datatype = "range(5,60)"
+e4 = e:option(Value, "trm_maxretry", translate("Connection Limit"),
+       translate("Retry limit to connect to an uplink."))
+e4.default = 3
+e4.datatype = "range(1,10)"
 e4.rmempty = false
 
-e5 = e:option(Value, "trm_timeout", translate("Overall Timeout"),
-       translate("Timeout in seconds between retries in 'automatic' mode."))
-e5.default = 60
-e5.datatype = "range(60,300)"
+e5 = e:option(Value, "trm_minquality", translate("Signal Quality Threshold"),
+       translate("Minimum signal quality threshold as percent for conditional uplink (dis-) connections."))
+e5.default = 35
+e5.datatype = "range(20,80)"
 e5.rmempty = false
 
+e6 = e:option(Value, "trm_maxwait", translate("Interface Timeout"),
+       translate("How long should travelmate wait for a successful wlan uplink connection."))
+e6.default = 30
+e6.datatype = "range(20,40)"
+e6.rmempty = false
+
+e7 = e:option(Value, "trm_timeout", translate("Overall Timeout"),
+       translate("Overall retry timeout in seconds."))
+e7.default = 60
+e7.datatype = "range(30,300)"
+e7.rmempty = false
+
 return m
index a3dd0a2b94610b02b1395e1312fb203c44d8ef12..83011e9dd5fcdbbedddadf30d92590f5b5747ec4 100644 (file)
@@ -1,10 +1,10 @@
--- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 -- This is free software, licensed under the Apache License, Version 2.0
 
 local fs       = require("nixio.fs")
 local uci      = require("luci.model.uci").cursor()
 local http     = require("luci.http")
-local trmiface = uci.get("travelmate", "global", "trm_iface") or "trm_wwan"
+local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan"
 local encr_psk = {"psk", "psk2", "psk-mixed"}
 local encr_wpa = {"wpa", "wpa2", "wpa-mixed"}
 
@@ -26,15 +26,24 @@ m.hidden = {
        wpa_version = http.formvalue("wpa_version")
 }
 
-if m.hidden.ssid ~= "" then
+if m.hidden.ssid == "" then
+       wssid = m:field(Value, "ssid", translate("SSID (hidden)"))
+else
        wssid = m:field(Value, "ssid", translate("SSID"))
-       wssid.datatype = "rangelength(1,32)"
-       wssid.default = m.hidden.ssid or ""
+end
+wssid.datatype = "rangelength(1,32)"
+wssid.default = m.hidden.ssid or ""
+
+nobssid = m:field(Flag, "no_bssid", translate("Ignore BSSID"))
+if m.hidden.ssid == "" then
+       nobssid.default = nobssid.disabled
 else
-       wssid = m:field(Value, "ssid", translate("SSID (hidden)"))
+       nobssid.default = nobssid.enabled
 end
 
-bssid = m:field(Value, "bssid", translate("BSSID"))
+bssid = m:field(Value, "bssid", translate("BSSID"),
+       translatef("The BSSID information '%s' is optional and only required for hidden networks", m.hidden.bssid or ""))
+bssid:depends("no_bssid", 0)
 bssid.datatype = "macaddr"
 bssid.default = m.hidden.bssid or ""
 
@@ -97,6 +106,8 @@ elseif (tonumber(m.hidden.wpa_version) or 0) > 0 then
                authentication:value("EAP-MD5")
                authentication:value("EAP-MSCHAPV2")
                authentication:value("EAP-TLS")
+               authentication:value("auth=PAP")
+               authentication:value("auth=MSCHAPV2")
                authentication.default = "EAP-MSCHAPV2"
 
                ident = m:field(Value, "identity", translate("Identity"))
@@ -165,6 +176,7 @@ function wssid.write(self, section, value)
        end
        uci:save("wireless")
        uci:commit("wireless")
+       luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1")
        http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations"))
 end
 
index 0c3cc1865bdc271dc1800b89821c58a8afe75896..0a7678f7eda308777345070948d322bcf7c9b3bf 100644 (file)
@@ -9,5 +9,6 @@ if cfg ~= nil then
        uci:delete("wireless", cfg)
        uci:save("wireless")
        uci:commit("wireless")
+       luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1")
 end
 http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations"))
index b8e0f11b3a631be47beefa7b13317db133652d2a..f3ad762594b8fc8ba472ec37aa1cb3ced58caf88 100644 (file)
@@ -1,4 +1,4 @@
--- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 -- This is free software, licensed under the Apache License, Version 2.0
 
 local fs   = require("nixio.fs")
@@ -92,6 +92,8 @@ if s ~= nil then
                        authentication:value("EAP-MD5")
                        authentication:value("EAP-MSCHAPV2")
                        authentication:value("EAP-TLS")
+                       authentication:value("auth=PAP")
+                       authentication:value("auth=MSCHAPV2")
                        authentication.default = s.auth or "EAP-MSCHAPV2"
 
                        ident = m:field(Value, "identity", translate("Identity"))
@@ -160,6 +162,7 @@ function wssid.write(self, section, value)
        end
        uci:save("wireless")
        uci:commit("wireless")
+       luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1")
        m.on_cancel()
 end
 
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/ap_qr.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/ap_qr.htm
new file mode 100644 (file)
index 0000000..a92dbe1
--- /dev/null
@@ -0,0 +1,65 @@
+<%#
+Copyright 2018 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+<div class="cbi-map">
+    <div class="cbi-map-descr">
+        <%=translate("Here you'll find the QR codes from all of your configured Access Points. It allows you to connect your Android or iOS devices to your router's WiFi using the QR code shown below.")%>
+    </div>
+<%-
+  local write = io.write
+  local uci   = require("luci.model.uci").cursor()
+
+  uci:foreach("wireless", "wifi-iface", function(s)
+    local device = s.device or ""
+    local mode = s.mode or ""
+    local ssid = s.ssid or ""
+    local enc = s.encryption or ""
+    local key = s.key or ""
+    local hidden = s.hidden or "false"
+    local disabled = s.disabled or ""
+    local wep_slots = {s.key1 or "", s.key2 or "", s.key3 or "", s.key4 or ""}
+
+    if device and mode == "ap" and disabled ~= "1" then
+      if string.match(enc, '^psk') then
+        enc = "WPA"
+      elseif string.match(enc, '^wep') then
+        enc = "WEP"
+        if tonumber(key) then
+          key = wep_slots[tonumber(key)]
+        end
+      elseif enc == "none" then
+        enc = "nopass"
+        key = "nokey"
+      else
+        enc = ""
+      end
+      if hidden == "1" then
+        hidden = "true"
+      end
+      if ssid and enc and key then
+        local e_ssid = string.gsub(ssid,"[\"\\';:, ]",[[\\\%1]])
+        local e_key = string.gsub(key,"[\"\\';:, ]",[[\\\%1]])
+        local qrcode = ""
+        qrcode = luci.sys.exec("/usr/bin/qrencode --inline --8bit --type=SVG --output=- 'WIFI:S:\"'" .. e_ssid .. "'\";T:'" .. enc .. "';P:\"'" .. e_key .. "'\";H:'" .. hidden .. "';'")
+-%>
+    <fieldset class="cbi-section">
+        <legend>AP on <%=device%> with SSID "<%=ssid%>"</legend>
+        <h3 name="content"><%=qrcode%></h3>
+    </fieldset>
+<%-
+      end
+    end
+  end)
+%>
+</div>
+<div class="cbi-page-actions right">
+    <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/tab_from_cbi')%>" method="post">
+        <input class="cbi-button cbi-button-reset" type="submit" value="<%:Back to overview%>"/>
+    </form>
+</div>
+
+<%+footer%>
index 7f6ff7776d51e44756b613361e98d11ec0eac1dc..6cbeaffde614c7b3dbf536f2364d53c626d8c8f0 100644 (file)
@@ -1,5 +1,5 @@
 <%#
-Copyright 2017 Dirk Brenken (dev@brenken.org)
+Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 This is free software, licensed under the Apache License, Version 2.0
 -%>
 
@@ -12,4 +12,9 @@ This is free software, licensed under the Apache License, Version 2.0
        </fieldset>
 </div>
 
+<script type="text/javascript">
+       var textarea = document.getElementById('logread_id');
+       textarea.scrollTop = textarea.scrollHeight;
+</script>
+
 <%+footer%>
index 2b9885567a3eac331171e8102e6ef294ca4d253a..7e93efab91af4acec7c08a5a7fa3379138576d55 100644 (file)
@@ -1,10 +1,10 @@
 <%#
-Copyright 2017 Dirk Brenken (dev@brenken.org)
+Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 This is free software, licensed under the Apache License, Version 2.0
 -%>
 
 <%+cbi/valueheader%>
 
-<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="border:none; box-shadow:none; background-color:#ffffff; color:#0069d6;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
+<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="outline:none;border:none;box-shadow:none;background:transparent;color:#0069d6;font-weight:bold;line-height:30px;height:30px;width:50em;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
 
 <%+cbi/valuefooter%>
index 11c36d427ccc0e9f17b87078c62781cd1552a1d5..75e52aeb27323d5b217ab48167a1a2a08a68a99b 100644 (file)
@@ -1,5 +1,5 @@
 <%#
-Copyright 2017 Dirk Brenken (dev@brenken.org)
+Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
 This is free software, licensed under the Apache License, Version 2.0
 -%>
 
@@ -12,7 +12,6 @@ This is free software, licensed under the Apache License, Version 2.0
 <%+header%>
 
 <div class="cbi-map">
-<h2 name="content"><%:Wireless Stations%></h2>
 <div class="cbi-map-descr">
   <%=translatef("Provides an overview of all configured uplinks for the travelmate interface (%s). You can edit, delete or re-order existing uplinks or scan for a new one. The currently used uplink is emphasized in blue.", trmiface)%>
 </div>
@@ -36,21 +35,21 @@ This is free software, licensed under the Apache License, Version 2.0
       local bssid = s.bssid or "-"
       local encryption = s.encryption or "-"
       local disabled = s.disabled or ""
-      local style = "color:#000000"
+      local style = "text-align:left;color:#000000"
       if disabled == "0" then
-        style = "color:#0069d6;font-weight:bold"
+        style = "text-align:left;color:#0069d6;font-weight:bold"
       end
 %>
     <tr class="cbi-section-table-row cbi-rowstyle-1" style="<%=style%>">
-      <td style="text-align:left"><%=device%></td>
-      <td style="text-align:left"><%=ssid%></td>
-      <td style="text-align:left"><%=bssid%></td>
-      <td style="text-align:left"><%=encryption%></td>
-      <td class="cbi-value-field" style="width:70px;text-align:right">
-        <input class="cbi-button cbi-button-up" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>;dir=up'" alt="<%:Move up%>" title="<%:Move up%>"/>
-        <input class="cbi-button cbi-button-down" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>;dir=down'" alt="<%:Move down%>" title="<%:Move down%>"/>
+      <td style="<%=style%>"><%=device%></td>
+      <td style="<%=style%>"><%=ssid%></td>
+      <td style="<%=style%>"><%=bssid%></td>
+      <td style="<%=style%>"><%=encryption%></td>
+      <td class="cbi-value-field" style="width:80px">
+        <input class="cbi-button cbi-button-up" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>&amp;dir=up'" alt="<%:Move up%>" title="<%:Move up%>"/>
+        <input class="cbi-button cbi-button-down" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>&amp;dir=down'" alt="<%:Move down%>" title="<%:Move down%>"/>
       </td>
-      <td class="cbi-value-field" style="width:150px;text-align:right">
+      <td class="cbi-value-field" style="width:150px">
         <input type="button" class="cbi-button cbi-button-edit" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiedit')%>?cfg=<%=section%>'" title="<%:Edit this Uplink%>" value="<%:Edit%>"/>
         <input type="button" class="cbi-button cbi-button-remove" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifidelete')%>?cfg=<%=section%>'" title="<%:Delete this Uplink%>" value="<%:Delete%>"/>
       </td>
@@ -69,7 +68,7 @@ This is free software, licensed under the Apache License, Version 2.0
   <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiscan')%>" method="post">
     <input type="hidden" name="device" value="<%=device%>"/>
     <input type="hidden" name="token" value="<%=token%>"/>
-    <input type="submit" class="cbi-button cbi-button-find" title="<%:Find and join network on %><%=device%>" value="<%:Scan %><%=device%>"/>
+    <input type="submit" class="cbi-button cbi-button-find" title="<%:Find and join network on%> <%=device%>" value="<%:Scan%> <%=device%>"/>
   </form>
 <%
   end)
index 1158966e0bb892d42823e15abbd5f07c56e942f8..6a46ea3c87a3428eeabcefb3cc5ff33f14285ccd 100644 (file)
@@ -7,7 +7,7 @@ msgstr ""
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.5\n"
+"X-Generator: Poedit 2.0.7\n"
 "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "Language: ja\n"
@@ -15,9 +15,6 @@ msgstr ""
 msgid "Actions"
 msgstr "操作"
 
-msgid "Add Interface"
-msgstr "インターフェースの追加"
-
 msgid "Add Uplink"
 msgstr "アップリンクの追加"
 
@@ -43,6 +40,16 @@ msgstr "BSSID"
 msgid "Back to overview"
 msgstr "概要へ戻る"
 
+msgid "Captive Portal Detection"
+msgstr "キャプティブポータル検知"
+
+msgid ""
+"Check the internet availability, log captive portal redirections and keep "
+"the uplink connection 'alive'."
+msgstr ""
+"インターネットの利用可否を確認し、キャプティブポータル リダイレクトを記録して"
+"アップリンク接続を 'alive' として保持します。"
+
 msgid "Cipher"
 msgstr "暗号化方式"
 
@@ -52,10 +59,16 @@ msgid ""
 msgstr ""
 "トラベル ルーター機能を有効化するための、 Travelmate パッケージの設定です。"
 
+msgid ""
+"Connect your Android or iOS devices to your router's WiFi using the shown QR "
+"code."
+msgstr ""
+"Android や iOS デバイスを、表示される QR コードを使用して WiFi に接続します。"
+
 msgid "Connection Limit"
 msgstr "接続制限"
 
-msgid "Create Uplink Interface"
+msgid "Create Uplink interface"
 msgstr "アップリンク インターフェースの作成"
 
 msgid ""
@@ -97,9 +110,6 @@ msgstr "無線アップリンク設定の編集"
 msgid "Edit this Uplink"
 msgstr "このアップリンクを編集"
 
-msgid "Enable 'automatic' mode"
-msgstr "'automatic' モードの有効化"
-
 msgid "Enable travelmate"
 msgstr "Travelmate の有効化"
 
@@ -131,21 +141,25 @@ msgstr "TKIP"
 msgid "Force TKIP and CCMP (AES)"
 msgstr "TKIP と CCMP (AES)"
 
-msgid "Force a manual uplink rescan / reconnect in 'trigger' mode."
-msgstr ""
-"'trigger' モード時に、手動でアップリンクの再スキャンと再接続を行います。"
-
-msgid "How long should travelmate wait for a successful wlan interface reload."
+msgid ""
+"Here you'll find the QR codes from all of your configured Access Points. It "
+"allows you to connect your Android or iOS devices to your router's WiFi "
+"using the QR code shown below."
 msgstr ""
-"無線LAN インターフェースのリロードが成功するまでの、Travelmate の待機時間で"
-"す。"
+"ここには、構成済みの全アクセスポイントの QR コードを表示しています。以下の "
+"QR コードを使用して、 Android または iOS デバイスをルータの WiFi に接続するこ"
+"とができます。"
 
-msgid "How many times should travelmate try to connect to an Uplink."
-msgstr "Travelmate がアップリンクへの接続を試行する回数です。"
+msgid ""
+"How long should travelmate wait for a successful wlan uplink connection."
+msgstr "Travelmate が無線アップリンクへの接続成功を待つ時間です。"
 
 msgid "Identity"
 msgstr "ID"
 
+msgid "Ignore BSSID"
+msgstr "BSSID の無視"
+
 msgid "Input file not found, please check your configuration."
 msgstr "入力ファイルが見つかりません。設定を確認してください。"
 
@@ -155,18 +169,15 @@ msgstr "インターフェース タイムアウト"
 msgid "Interface Wizard"
 msgstr "インターフェース ウィザード"
 
-msgid ""
-"Keep travelmate in an active state. Check every n seconds the connection "
-"status, i.e. the uplink availability."
-msgstr ""
-"Travelmate をアクティブ状態で維持します。\"実行間隔\" で設定された時間毎"
-"(秒)に、アップリンクの可用性を確認するために接続状態をチェックします"
-
 msgid "Last rundate"
 msgstr "最終実行日時"
 
-msgid "Manual Rescan"
-msgstr "手動再スキャン"
+msgid ""
+"Minimum signal quality threshold as percent for conditional uplink (dis-) "
+"connections."
+msgstr ""
+"条件付きアップリンク接続(または切断)のための、シグナル品質閾値の下限(%)で"
+"す。"
 
 msgid "Move down"
 msgstr "下へ"
@@ -177,9 +188,6 @@ msgstr "上へ"
 msgid "Name of the used uplink interface."
 msgstr "使用されるアップリンク インターフェースの名前です。"
 
-msgid "Online Status"
-msgstr "オンライン ステータス"
-
 msgid "Open"
 msgstr "オープン"
 
@@ -190,6 +198,9 @@ msgstr "デフォルトの設定が適切でない場合、さらに設定する
 msgid "Overall Timeout"
 msgstr "実行間隔"
 
+msgid "Overall retry timeout in seconds."
+msgstr "全体的な再試行タイムアウト(秒)です。"
+
 msgid "Overview"
 msgstr "概要"
 
@@ -221,18 +232,21 @@ msgstr ""
 "ンクを追加することができます。現在使用されているアップリンクは、青色で強調さ"
 "れます。"
 
+msgid "QR-Codes"
+msgstr "QR-コード"
+
 msgid "Radio selection"
 msgstr "無線の選択"
 
 msgid "Repeat scan"
 msgstr "再スキャン"
 
-msgid "Rescan"
-msgstr "再スキャン"
-
 msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
 msgstr "Travelmate が指定された無線に接続するよう制御します。(例: 'radio0')"
 
+msgid "Retry limit to connect to an uplink."
+msgstr "アップリンクへの接続を試行する回数です。"
+
 msgid "Runtime Information"
 msgstr "実行情報"
 
@@ -248,6 +262,9 @@ msgstr "保存"
 msgid "Scan"
 msgstr "スキャン:"
 
+msgid "Signal Quality Threshold"
+msgstr "シグナル品質閾値"
+
 msgid "Signal strength"
 msgstr "信号強度"
 
@@ -260,6 +277,12 @@ msgstr "ステーション インターフェース"
 msgid "Station Radio"
 msgstr "ステーション電波"
 
+msgid ""
+"The BSSID information '%s' is optional and only required for hidden networks"
+msgstr ""
+"BSSID 情報 '%s' はオプションであり、ステルス化されたネットワークにのみ必要で"
+"す。"
+
 msgid ""
 "This form allows you to modify the content of the main firewall "
 "configuration file (/etc/config/firewall)."
@@ -295,12 +318,8 @@ msgstr ""
 "このフォームには、システムログ内の Travelmate に関するメッセージのみが表示さ"
 "れます。"
 
-msgid "Timeout in seconds between retries in 'automatic' mode."
-msgstr "'automatic' モード時に接続を確認または再試行する間隔(秒)です。"
-
-msgid "To disable this feature set it to '0' which means unlimited retries."
-msgstr ""
-"この機能を無効にして接続の再試行を無制限にする場合、 '0' を設定します。"
+msgid "This step has only to be done once."
+msgstr "この手順は、一度だけ実行される必要があります。"
 
 msgid "Travelmate"
 msgstr "Travelmate"
@@ -308,11 +327,14 @@ msgstr "Travelmate"
 msgid "Travelmate Logfile"
 msgstr "Travelmate ログファイル"
 
-msgid "Travelmate version"
+msgid "Travelmate Status (Quality)"
+msgstr "Travelmate ステータス(品質)"
+
+msgid "Travelmate Version"
 msgstr "Travelmate バージョン"
 
-msgid "Trigger delay"
-msgstr "トリガ遅延"
+msgid "Trigger Delay"
+msgstr "トリガ遅延"
 
 msgid "Unknown"
 msgstr "不明"
@@ -326,8 +348,8 @@ msgstr "アップリンク BSSID"
 msgid "Uplink SSID"
 msgstr "アップリンク SSID"
 
-msgid "Uplink interface"
-msgstr "アップリンク インターフェース"
+msgid "View AP QR-Codes"
+msgstr "AP QR-コードを確認"
 
 msgid "View Logfile"
 msgstr "ログファイルの確認"
@@ -356,20 +378,11 @@ msgstr "無線スキャン"
 msgid "Wireless Stations"
 msgstr "無線ステーション"
 
-msgid ""
-"add it to the wan zone of the firewall. This step has only to be done once."
-msgstr ""
-"ファイアウォールの wan ゾーンに追加します。このステップは、一度だけ実行される"
-"必要があります。"
-
-msgid "connected"
-msgstr "接続済み"
+msgid "add it to the wan zone of the firewall.<br />"
+msgstr "ファイアウォールの wan ゾーンに追加します。<br />"
 
 msgid "hidden"
-msgstr "(不明)"
+msgstr "(ステルス)"
 
 msgid "n/a"
 msgstr "利用不可"
-
-msgid "not connected"
-msgstr "未接続"
index e36860eaa18247621e7a4bec36a55b9c0eb50188..6bf65b9370ca8d8155dc92be110f6cc9f7e6c189 100644 (file)
@@ -15,9 +15,6 @@ msgstr ""
 msgid "Actions"
 msgstr ""
 
-msgid "Add Interface"
-msgstr ""
-
 msgid "Add Uplink"
 msgstr ""
 
@@ -43,6 +40,14 @@ msgstr ""
 msgid "Back to overview"
 msgstr ""
 
+msgid "Captive Portal Detection"
+msgstr ""
+
+msgid ""
+"Check the internet availability, log captive portal redirections and keep "
+"the uplink connection 'alive'."
+msgstr ""
+
 msgid "Cipher"
 msgstr ""
 
@@ -51,10 +56,15 @@ msgid ""
 "functionality."
 msgstr ""
 
+msgid ""
+"Connect your Android or iOS devices to your router's WiFi using the shown QR "
+"code."
+msgstr ""
+
 msgid "Connection Limit"
 msgstr ""
 
-msgid "Create Uplink Interface"
+msgid "Create Uplink interface"
 msgstr ""
 
 msgid ""
@@ -94,9 +104,6 @@ msgstr ""
 msgid "Edit this Uplink"
 msgstr ""
 
-msgid "Enable 'automatic' mode"
-msgstr ""
-
 msgid "Enable travelmate"
 msgstr ""
 
@@ -126,16 +133,20 @@ msgstr ""
 msgid "Force TKIP and CCMP (AES)"
 msgstr ""
 
-msgid "Force a manual uplink rescan / reconnect in 'trigger' mode."
+msgid ""
+"Here you'll find the QR codes from all of your configured Access Points. It "
+"allows you to connect your Android or iOS devices to your router's WiFi "
+"using the QR code shown below."
 msgstr ""
 
-msgid "How long should travelmate wait for a successful wlan interface reload."
+msgid ""
+"How long should travelmate wait for a successful wlan uplink connection."
 msgstr ""
 
-msgid "How many times should travelmate try to connect to an Uplink."
+msgid "Identity"
 msgstr ""
 
-msgid "Identity"
+msgid "Ignore BSSID"
 msgstr ""
 
 msgid "Input file not found, please check your configuration."
@@ -147,15 +158,12 @@ msgstr ""
 msgid "Interface Wizard"
 msgstr ""
 
-msgid ""
-"Keep travelmate in an active state. Check every n seconds the connection "
-"status, i.e. the uplink availability."
-msgstr ""
-
 msgid "Last rundate"
 msgstr ""
 
-msgid "Manual Rescan"
+msgid ""
+"Minimum signal quality threshold as percent for conditional uplink (dis-) "
+"connections."
 msgstr ""
 
 msgid "Move down"
@@ -167,9 +175,6 @@ msgstr ""
 msgid "Name of the used uplink interface."
 msgstr ""
 
-msgid "Online Status"
-msgstr ""
-
 msgid "Open"
 msgstr ""
 
@@ -180,6 +185,9 @@ msgstr ""
 msgid "Overall Timeout"
 msgstr ""
 
+msgid "Overall retry timeout in seconds."
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -207,16 +215,19 @@ msgid ""
 "one. The currently used uplink is emphasized in blue."
 msgstr ""
 
+msgid "QR-Codes"
+msgstr ""
+
 msgid "Radio selection"
 msgstr ""
 
 msgid "Repeat scan"
 msgstr ""
 
-msgid "Rescan"
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
 msgstr ""
 
-msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
+msgid "Retry limit to connect to an uplink."
 msgstr ""
 
 msgid "Runtime Information"
@@ -234,6 +245,9 @@ msgstr ""
 msgid "Scan"
 msgstr ""
 
+msgid "Signal Quality Threshold"
+msgstr ""
+
 msgid "Signal strength"
 msgstr ""
 
@@ -246,6 +260,10 @@ msgstr ""
 msgid "Station Radio"
 msgstr ""
 
+msgid ""
+"The BSSID information '%s' is optional and only required for hidden networks"
+msgstr ""
+
 msgid ""
 "This form allows you to modify the content of the main firewall "
 "configuration file (/etc/config/firewall)."
@@ -271,10 +289,7 @@ msgid ""
 "messages only."
 msgstr ""
 
-msgid "Timeout in seconds between retries in 'automatic' mode."
-msgstr ""
-
-msgid "To disable this feature set it to '0' which means unlimited retries."
+msgid "This step has only to be done once."
 msgstr ""
 
 msgid "Travelmate"
@@ -283,10 +298,13 @@ msgstr "Travelmate"
 msgid "Travelmate Logfile"
 msgstr ""
 
-msgid "Travelmate version"
+msgid "Travelmate Status (Quality)"
+msgstr ""
+
+msgid "Travelmate Version"
 msgstr ""
 
-msgid "Trigger delay"
+msgid "Trigger Delay"
 msgstr ""
 
 msgid "Unknown"
@@ -301,7 +319,7 @@ msgstr ""
 msgid "Uplink SSID"
 msgstr ""
 
-msgid "Uplink interface"
+msgid "View AP QR-Codes"
 msgstr ""
 
 msgid "View Logfile"
@@ -331,11 +349,7 @@ msgstr ""
 msgid "Wireless Stations"
 msgstr ""
 
-msgid ""
-"add it to the wan zone of the firewall. This step has only to be done once."
-msgstr ""
-
-msgid "connected"
+msgid "add it to the wan zone of the firewall.<br />"
 msgstr ""
 
 msgid "hidden"
@@ -344,9 +358,6 @@ msgstr ""
 msgid "n/a"
 msgstr ""
 
-msgid "not connected"
-msgstr ""
-
 #~ msgid ""
 #~ "Brief advice: Create a wwan interface, configure it to use dhcp and add "
 #~ "it to the wan zone in firewall. Create the wifi interfaces to be used "
diff --git a/applications/luci-app-travelmate/po/ru/travelmate.po b/applications/luci-app-travelmate/po/ru/travelmate.po
new file mode 100644 (file)
index 0000000..8b25e9b
--- /dev/null
@@ -0,0 +1,455 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: travelmate\n"
+"POT-Creation-Date: 2017-12-07 21:00+0300\n"
+"PO-Revision-Date: 2018-01-26 18:04+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"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"
+
+msgid "Actions"
+msgstr "Действия"
+
+msgid "Add Uplink"
+msgstr "Подключение к сети"
+
+msgid "Add Wireless Uplink Configuration"
+msgstr "Добавить настройку внешней беспроводной сети"
+
+msgid ""
+"Additional trigger delay in seconds before travelmate processing begins."
+msgstr "Дополнительная задержка в секундах до запуска TravelMate."
+
+msgid "Advanced"
+msgstr "Дополнительно"
+
+msgid "Authentication"
+msgstr "Аутентификация"
+
+msgid "Automatic"
+msgstr "Автоматически"
+
+msgid "BSSID"
+msgstr "BSSID"
+
+msgid "Back to overview"
+msgstr "Назад в меню"
+
+msgid "Captive Portal Detection"
+msgstr ""
+
+msgid ""
+"Check the internet availability, log captive portal redirections and keep "
+"the uplink connection 'alive'."
+msgstr ""
+
+msgid "Cipher"
+msgstr "Алгоритм шифрования"
+
+msgid ""
+"Configuration of the travelmate package to to enable travel router "
+"functionality."
+msgstr "Настройка утилиты TravelMate - помощника путешественника. "
+
+msgid ""
+"Connect your Android or iOS devices to your router's WiFi using the shown QR "
+"code."
+msgstr ""
+
+msgid "Connection Limit"
+msgstr "Ограничение соединений"
+
+msgid "Create Uplink interface"
+msgstr ""
+
+msgid ""
+"Create a new wireless wan uplink interface, configure it to use dhcp and"
+msgstr ""
+"Создать новый wwan интерфейс внешней беспроводной сети, настроить его на "
+"использование с DHCP<br />и "
+
+msgid "Delete"
+msgstr "Удалить"
+
+msgid "Delete this Uplink"
+msgstr "Удалить сеть"
+
+msgid "Device"
+msgstr "Устройство"
+
+msgid "EAP-Method"
+msgstr "Метод EAP"
+
+msgid "Edit"
+msgstr "Изменить"
+
+msgid "Edit Firewall Configuration"
+msgstr "Настройка config файла firewall"
+
+msgid "Edit Network Configuration"
+msgstr "Настройка config файла network"
+
+msgid "Edit Travelmate Configuration"
+msgstr "Настройка config файла Travelmate"
+
+msgid "Edit Wireless Configuration"
+msgstr "Настройка config файл wireless"
+
+msgid "Edit Wireless Uplink Configuration"
+msgstr "Редактировать настройки беспроводной сети"
+
+msgid "Edit this Uplink"
+msgstr "Редактировать настройки сети"
+
+msgid "Enable travelmate"
+msgstr "Включить Travelmate"
+
+msgid "Enable verbose debug logging"
+msgstr "Включить подробное ведение журнала отладки"
+
+msgid "Encryption"
+msgstr "Шифрование"
+
+msgid "Extra options"
+msgstr "Дополнительные настройки"
+
+msgid "Find and join network on"
+msgstr "Найти сеть для подключения используя"
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+"Для получения дополнительной информации <a href=\"%s\" target=\"_blank\"> "
+"смотрите онлайн документацию</a>."
+
+msgid "Force CCMP (AES)"
+msgstr "Назначить CCMP (AES)"
+
+msgid "Force TKIP"
+msgstr "Назначить TKIP"
+
+msgid "Force TKIP and CCMP (AES)"
+msgstr "Назначить TKIP и CCMP (AES)"
+
+msgid ""
+"Here you'll find the QR codes from all of your configured Access Points. It "
+"allows you to connect your Android or iOS devices to your router's WiFi "
+"using the QR code shown below."
+msgstr ""
+
+msgid ""
+"How long should travelmate wait for a successful wlan uplink connection."
+msgstr ""
+
+msgid "Identity"
+msgstr "Идентификация EAP"
+
+msgid "Ignore BSSID"
+msgstr "Игнорировать BSSID"
+
+msgid "Input file not found, please check your configuration."
+msgstr "Config файл не найден, настройте config файл."
+
+msgid "Interface Timeout"
+msgstr "Временная задержка интерфейса"
+
+msgid "Interface Wizard"
+msgstr "Помощник настройки интерфейса"
+
+msgid "Last rundate"
+msgstr "Дата последнего запуска"
+
+msgid ""
+"Minimum signal quality threshold as percent for conditional uplink (dis-) "
+"connections."
+msgstr ""
+
+msgid "Move down"
+msgstr "Переместить вниз"
+
+msgid "Move up"
+msgstr "Переместить вверх"
+
+msgid "Name of the used uplink interface."
+msgstr "Имя используемого интерфейса внешней сети."
+
+msgid "Open"
+msgstr "Открыть"
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+"Возможные варианты детальной настройки, если значения по умолчанию не "
+"подходят для вас."
+
+msgid "Overall Timeout"
+msgstr "Общее время ожидания"
+
+msgid "Overall retry timeout in seconds."
+msgstr ""
+
+msgid "Overview"
+msgstr "Главное меню"
+
+msgid "Passphrase"
+msgstr "Парольная фраза"
+
+msgid "Password"
+msgstr "Пароль"
+
+msgid "Password of Private Key"
+msgstr "Пароль к Приватному ключу"
+
+msgid "Path to CA-Certificate"
+msgstr "Путь к CA-Сертификату"
+
+msgid "Path to Client-Certificate"
+msgstr "Путь к Client-Сертификату"
+
+msgid "Path to Private Key"
+msgstr "Путь к Приватному ключу"
+
+msgid ""
+"Provides an overview of all configured uplinks for the travelmate interface "
+"(%s). You can edit, delete or re-order existing uplinks or scan for a new "
+"one. The currently used uplink is emphasized in blue."
+msgstr ""
+"Общие сведения обо всех настроенных внешних сетевых соединениях интерфейса "
+"TravelMate (%s).<br />Вы можете редактировать, удалять или пере "
+"упорядочивать существующий список внешних сетей или выполнять их поиск.<br /"
+">Используемое сетевое соединение выделено синим цветом."
+
+msgid "QR-Codes"
+msgstr ""
+
+msgid "Radio selection"
+msgstr "Выбор Wi-Fi устройства"
+
+msgid "Repeat scan"
+msgstr "Повторить поиск"
+
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
+msgstr "Выделить TravelMate-у конкретное Wi-Fi устройство, например 'radio0'."
+
+msgid "Retry limit to connect to an uplink."
+msgstr ""
+
+msgid "Runtime Information"
+msgstr "Информация о состоянии"
+
+msgid "SSID"
+msgstr "SSID"
+
+msgid "SSID (hidden)"
+msgstr "SSID (скрытый)"
+
+msgid "Save"
+msgstr "Сохранить"
+
+msgid "Scan"
+msgstr "Поиск"
+
+msgid "Signal Quality Threshold"
+msgstr ""
+
+msgid "Signal strength"
+msgstr "Мощность сигнала"
+
+msgid "Station ID (SSID/BSSID)"
+msgstr "ID (SSID/BSSID) клиента"
+
+msgid "Station Interface"
+msgstr "Интерфейс клиента"
+
+msgid "Station Radio"
+msgstr "Wi-Fi устройство клиента"
+
+msgid ""
+"The BSSID information '%s' is optional and only required for hidden networks"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main firewall "
+"configuration file (/etc/config/firewall)."
+msgstr ""
+"Страница настройки межсетевого экрана, изменение содержимого config файла "
+"firewall настройки межсетевого экрана (/etc/config/firewall)."
+
+msgid ""
+"This form allows you to modify the content of the main network configuration "
+"file (/etc/config/network)."
+msgstr ""
+"Страница настройки сети, изменение содержимого config файла network "
+"настройки сети (/etc/config/network)."
+
+msgid ""
+"This form allows you to modify the content of the main travelmate "
+"configuration file (/etc/config/travelmate)."
+msgstr ""
+"Страница настройки Travelmate, изменение содержимого config файла travelmate "
+"настройки Travelmate (/etc/config/travelmate)."
+
+msgid ""
+"This form allows you to modify the content of the main wireless "
+"configuration file (/etc/config/wireless)."
+msgstr ""
+"Страница настройки беспроводных соединений, изменение содержимого config "
+"файла wireless настройки беспроводных сетей (/etc/config/wireless)."
+
+msgid ""
+"This form shows the syslog output, pre-filtered for travelmate related "
+"messages only."
+msgstr ""
+"Страница просмотра системного журнала, показаны только события связанные с "
+"работой утилиты TravelMate."
+
+msgid "This step has only to be done once."
+msgstr ""
+
+msgid "Travelmate"
+msgstr "TravelMate"
+
+msgid "Travelmate Logfile"
+msgstr "Системный журнал TravelMate"
+
+msgid "Travelmate Status (Quality)"
+msgstr ""
+
+msgid "Travelmate Version"
+msgstr "Версия TravelMate"
+
+msgid "Trigger Delay"
+msgstr ""
+
+msgid "Unknown"
+msgstr "Неизвестно"
+
+msgid "Uplink / Trigger interface"
+msgstr "Включить интерфейс<br />внешней сети"
+
+msgid "Uplink BSSID"
+msgstr "BSSID внешней сети"
+
+msgid "Uplink SSID"
+msgstr "SSID внешней сети"
+
+msgid "View AP QR-Codes"
+msgstr ""
+
+msgid "View Logfile"
+msgstr "Показать системный журнал"
+
+msgid "WEP"
+msgstr "WEP"
+
+msgid "WEP-Passphrase"
+msgstr "Пароль WEP"
+
+msgid "WPA"
+msgstr "WPA"
+
+msgid "WPA-Passphrase"
+msgstr "Пароль WPA"
+
+msgid "WPA/WPA2"
+msgstr "WPA/WPA2"
+
+msgid "WPA2"
+msgstr "WPA2"
+
+msgid "Wireless Scan"
+msgstr "Найденные точки доступа Wi-Fi"
+
+msgid "Wireless Stations"
+msgstr "Клиенты беспроводной сети"
+
+msgid "add it to the wan zone of the firewall.<br />"
+msgstr ""
+
+msgid "hidden"
+msgstr "скрытый"
+
+msgid "n/a"
+msgstr "нет данных"
+
+#~ msgid "Add Interface"
+#~ msgstr "Добавить интерфейс"
+
+#~ msgid "Create Uplink Interface"
+#~ msgstr "Создать интерфейс сети"
+
+#~ msgid "Uplink interface"
+#~ msgstr "Интерфейс внешней сети"
+
+#~ msgid ""
+#~ "add it to the wan zone of the firewall. This step has only to be done "
+#~ "once."
+#~ msgstr ""
+#~ "добавить в wan зону межсетевого экрана. Можно сделать только один раз."
+
+#~ msgid "Enable 'automatic' mode"
+#~ msgstr "Включить режим 'автоматически'"
+
+#~ msgid "Force a manual uplink rescan / reconnect in 'trigger' mode."
+#~ msgstr ""
+#~ "Принудительно выполнить повторное сканирование/повторное подключение "
+#~ "внешних сетей в режиме 'ручной'."
+
+#~ msgid ""
+#~ "Keep travelmate in an active state. Check every n seconds the connection "
+#~ "status, i.e. the uplink availability."
+#~ msgstr ""
+#~ "Поддержка TravelMate в активном состоянии.<br />Проверка состояния "
+#~ "соединения каждые n секунд, т.е. доступность внешней сети."
+
+#~ msgid "Manual Rescan"
+#~ msgstr "Поиск сети вручную"
+
+#~ msgid "Rescan"
+#~ msgstr "Пересканировать"
+
+#~ msgid "Timeout in seconds between retries in 'automatic' mode."
+#~ msgstr ""
+#~ "Время ожидания в секундах между повторными попытками соединения в режиме "
+#~ "'автоматически'."
+
+#~ msgid ""
+#~ "How long should travelmate wait for a successful wlan interface reload."
+#~ msgstr ""
+#~ "Временная задержка необходима TravelMate для полной перезагрузки wlan "
+#~ "интерфейса."
+
+#~ msgid "How many times should travelmate try to connect to an Uplink."
+#~ msgstr "Сколько раз TravelMate должен пытаться подключиться к сети. "
+
+#~ msgid "To disable this feature set it to '0' which means unlimited retries."
+#~ msgstr ""
+#~ "<br />Чтобы отключить эту функцию, установите значение '0', что означает "
+#~ "неограниченное количество попыток."
+
+#~ msgid "Travelmate Status"
+#~ msgstr "Состояние Travelmate"
+
+#~ msgid "Trigger delay"
+#~ msgstr "Задержка запуска"
+
+#~ msgid "connected"
+#~ msgstr "подключен"
+
+#~ msgid "error"
+#~ msgstr "ошибка"
+
+#~ msgid "not connected"
+#~ msgstr "не подключено"
+
+#~ msgid "running"
+#~ msgstr "работает"
index d1047242fe276584717282b773adfef77743ada6..f4f34184226a02756ed368bd600512307fd0feca 100644 (file)
@@ -4,9 +4,6 @@ msgstr "Content-Type: text/plain; charset=UTF-8"
 msgid "Actions"
 msgstr ""
 
-msgid "Add Interface"
-msgstr ""
-
 msgid "Add Uplink"
 msgstr ""
 
@@ -32,6 +29,14 @@ msgstr ""
 msgid "Back to overview"
 msgstr ""
 
+msgid "Captive Portal Detection"
+msgstr ""
+
+msgid ""
+"Check the internet availability, log captive portal redirections and keep "
+"the uplink connection 'alive'."
+msgstr ""
+
 msgid "Cipher"
 msgstr ""
 
@@ -40,10 +45,15 @@ msgid ""
 "functionality."
 msgstr ""
 
+msgid ""
+"Connect your Android or iOS devices to your router's WiFi using the shown QR "
+"code."
+msgstr ""
+
 msgid "Connection Limit"
 msgstr ""
 
-msgid "Create Uplink Interface"
+msgid "Create Uplink interface"
 msgstr ""
 
 msgid ""
@@ -83,9 +93,6 @@ msgstr ""
 msgid "Edit this Uplink"
 msgstr ""
 
-msgid "Enable 'automatic' mode"
-msgstr ""
-
 msgid "Enable travelmate"
 msgstr ""
 
@@ -115,16 +122,20 @@ msgstr ""
 msgid "Force TKIP and CCMP (AES)"
 msgstr ""
 
-msgid "Force a manual uplink rescan / reconnect in 'trigger' mode."
+msgid ""
+"Here you'll find the QR codes from all of your configured Access Points. It "
+"allows you to connect your Android or iOS devices to your router's WiFi "
+"using the QR code shown below."
 msgstr ""
 
-msgid "How long should travelmate wait for a successful wlan interface reload."
+msgid ""
+"How long should travelmate wait for a successful wlan uplink connection."
 msgstr ""
 
-msgid "How many times should travelmate try to connect to an Uplink."
+msgid "Identity"
 msgstr ""
 
-msgid "Identity"
+msgid "Ignore BSSID"
 msgstr ""
 
 msgid "Input file not found, please check your configuration."
@@ -136,15 +147,12 @@ msgstr ""
 msgid "Interface Wizard"
 msgstr ""
 
-msgid ""
-"Keep travelmate in an active state. Check every n seconds the connection "
-"status, i.e. the uplink availability."
-msgstr ""
-
 msgid "Last rundate"
 msgstr ""
 
-msgid "Manual Rescan"
+msgid ""
+"Minimum signal quality threshold as percent for conditional uplink (dis-) "
+"connections."
 msgstr ""
 
 msgid "Move down"
@@ -156,9 +164,6 @@ msgstr ""
 msgid "Name of the used uplink interface."
 msgstr ""
 
-msgid "Online Status"
-msgstr ""
-
 msgid "Open"
 msgstr ""
 
@@ -169,6 +174,9 @@ msgstr ""
 msgid "Overall Timeout"
 msgstr ""
 
+msgid "Overall retry timeout in seconds."
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -196,16 +204,19 @@ msgid ""
 "one. The currently used uplink is emphasized in blue."
 msgstr ""
 
+msgid "QR-Codes"
+msgstr ""
+
 msgid "Radio selection"
 msgstr ""
 
 msgid "Repeat scan"
 msgstr ""
 
-msgid "Rescan"
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
 msgstr ""
 
-msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
+msgid "Retry limit to connect to an uplink."
 msgstr ""
 
 msgid "Runtime Information"
@@ -223,6 +234,9 @@ msgstr ""
 msgid "Scan"
 msgstr ""
 
+msgid "Signal Quality Threshold"
+msgstr ""
+
 msgid "Signal strength"
 msgstr ""
 
@@ -235,6 +249,10 @@ msgstr ""
 msgid "Station Radio"
 msgstr ""
 
+msgid ""
+"The BSSID information '%s' is optional and only required for hidden networks"
+msgstr ""
+
 msgid ""
 "This form allows you to modify the content of the main firewall "
 "configuration file (/etc/config/firewall)."
@@ -260,10 +278,7 @@ msgid ""
 "messages only."
 msgstr ""
 
-msgid "Timeout in seconds between retries in 'automatic' mode."
-msgstr ""
-
-msgid "To disable this feature set it to '0' which means unlimited retries."
+msgid "This step has only to be done once."
 msgstr ""
 
 msgid "Travelmate"
@@ -272,10 +287,13 @@ msgstr ""
 msgid "Travelmate Logfile"
 msgstr ""
 
-msgid "Travelmate version"
+msgid "Travelmate Status (Quality)"
+msgstr ""
+
+msgid "Travelmate Version"
 msgstr ""
 
-msgid "Trigger delay"
+msgid "Trigger Delay"
 msgstr ""
 
 msgid "Unknown"
@@ -290,7 +308,7 @@ msgstr ""
 msgid "Uplink SSID"
 msgstr ""
 
-msgid "Uplink interface"
+msgid "View AP QR-Codes"
 msgstr ""
 
 msgid "View Logfile"
@@ -320,11 +338,7 @@ msgstr ""
 msgid "Wireless Stations"
 msgstr ""
 
-msgid ""
-"add it to the wan zone of the firewall. This step has only to be done once."
-msgstr ""
-
-msgid "connected"
+msgid "add it to the wan zone of the firewall.<br />"
 msgstr ""
 
 msgid "hidden"
@@ -332,6 +346,3 @@ msgstr ""
 
 msgid "n/a"
 msgstr ""
-
-msgid "not connected"
-msgstr ""
index 572903404688f21c45885437acdafa40f6d2fea3..75bad249767dfc2dae142fe02506a7e125a380f3 100644 (file)
@@ -2,14 +2,14 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-01-01 18:11+0900\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 1.8.11\n"
+"X-Generator: Poedit 2.0.6\n"
 "X-Poedit-Basepath: .\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
@@ -36,8 +36,8 @@ msgstr "サーバーがホストするファイルのベースディレクトリ
 
 msgid "Bind to specific interface:port (by specifying interface address"
 msgstr ""
-"インターフェースのアドレスを使用して、特定のインターフェースとポートに関連付"
-"ã\81\91ます。"
+"インターフェースのアドレスを用いて、特定の インターフェース:ポート にバイン"
+"ã\83\89ã\81\97ます。"
 
 msgid "CGI filetype handler"
 msgstr "CGIファイル形式 ハンドラー"
@@ -70,7 +70,7 @@ msgid "E.g specify with index.html and index.php when using PHP"
 msgstr "index.html や、PHPを使用しているときは index.php を設定します。"
 
 msgid "Embedded Lua interpreter is disabled if not present."
-msgstr "指定しない場合、組込Lua インタープリタは無効になります。"
+msgstr "指定しない場合、組込 Lua インタープリタは無効になります。"
 
 msgid "Enable JSON-RPC Cross-Origin Resource Support"
 msgstr ""
@@ -82,7 +82,7 @@ msgid "Full Web Server Settings"
 msgstr "完全なWebサーバー設定"
 
 msgid "Full real path to handler for Lua scripts"
-msgstr "Lua スクリプトへの絶対パス"
+msgstr "Lua スクリプト用ハンドラへの絶対パス"
 
 msgid "General Settings"
 msgstr "一般設定"
@@ -109,14 +109,14 @@ msgid ""
 "Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/"
 "usr/bin/php-cgi')"
 msgstr ""
-"ファイル拡張子に関連付けるインタープリタです。('suffix=handler'、例: '.php=/"
-"usr/bin/php-cgi')"
+"ファイル拡張子に関連付けるインタープリタです。('suffix=handler'、例: '."
+"php=/usr/bin/php-cgi')"
 
 msgid "Length of key in bits"
 msgstr "鍵のビット数"
 
 msgid "Location"
-msgstr "å ´æ\89\80"
+msgstr "å¸\82å\8cºç\94ºæ\9d\91"
 
 msgid "Maximum number of connections"
 msgstr "最大接続数"
@@ -140,14 +140,14 @@ msgid ""
 "Prevent access from private (RFC1918) IPs on an interface if it has an "
 "public IP address"
 msgstr ""
-"グローバル IPアドレスを持つインターフェースでは、プライベート IP (RFC1918) "
-"らのアクセスをブロックします。"
+"グローバル IPアドレスを持つインターフェースでは、プライベート IP (RFC1918) "
+"ã\81\8bã\82\89ã\81®ã\82¢ã\82¯ã\82»ã\82¹ã\82\92ã\83\96ã\83­ã\83\83ã\82¯ã\81\97ã\81¾ã\81\99ã\80\82"
 
 msgid "Realm for Basic Auth"
 msgstr "基本認証の領域名"
 
 msgid "Redirect all HTTP to HTTPS"
-msgstr "全てのHTTPをHTTPSにリダイレクトする"
+msgstr "全ての HTTP を HTTPS にリダイレクトする"
 
 msgid "Remove configuration for certificate and key"
 msgstr "証明書と鍵の設定を削除する"
@@ -160,10 +160,10 @@ msgstr "サーバー ホスト名"
 
 msgid ""
 "Settings which are either rarely needed or which affect serving the WebUI"
-msgstr "まれに必要とされる設定、またはWeb UIに影響する設定です。"
+msgstr "まれに必要とされる設定、または Web UI の提供に影響する設定です。"
 
 msgid "State"
-msgstr "ステータス"
+msgstr "都道府県"
 
 msgid "TCP Keepalive"
 msgstr "TCP キープアライブ"
@@ -178,6 +178,8 @@ msgid ""
 "Virtual URL or CGI script to display on status '404 Not Found'. Must begin "
 "with '/'"
 msgstr ""
+"'404 Not Found' ステータスを表示するための仮想 URL または CGI スクリプトで"
+"す。 '/' から始まる必要があります。"
 
 msgid "Virtual path prefix for Lua scripts"
 msgstr "Lua スクリプトへの仮想パスプレフィクス"
@@ -200,14 +202,7 @@ msgstr "uHTTPd 自己署名証明書 パラメーター"
 msgid ""
 "uHTTPd will generate a new self-signed certificate using the configuration "
 "shown below."
-msgstr "uHTTPd ã\81¯ã\80\81以ä¸\8bã\81«è¡¨ç¤ºã\81\97ã\81\9f設定で新しい自己署名証明書を生成します。"
+msgstr "uHTTPd ã\81¯ã\80\81ä¸\8bã\81«è¡¨ç¤ºã\81\95ã\82\8cã\81¦ã\81\84ã\82\8b設定で新しい自己署名証明書を生成します。"
 
 msgid "ubus integration is disabled if not present"
-msgstr ""
-
-#~ msgid ""
-#~ "Virtual URL or CGI script to display on status '404 Not Found'.  Must "
-#~ "begin with '/'"
-#~ msgstr ""
-#~ "'404 Not Found' ステータスを表示する、仮想URLまたはCGIスクリプトです。'/' "
-#~ "から始まる必要があります。"
+msgstr "指定しない場合、ubus 統合は無効になります。"
diff --git a/applications/luci-app-uhttpd/po/ru/uhttpd.po b/applications/luci-app-uhttpd/po/ru/uhttpd.po
new file mode 100644 (file)
index 0000000..7f97d9a
--- /dev/null
@@ -0,0 +1,219 @@
+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"
+
+msgid ""
+"(/old/path=/new/path) or (just /old/path which becomes /cgi-prefix/old/path)"
+msgstr ""
+"(/старый/путь=/новый/путь) или (просто /старый/путь становится /cgi-prefix/"
+"старый/путь)."
+
+msgid "404 Error"
+msgstr "Ошибка 404"
+
+msgid "A lightweight single-threaded HTTP(S) server"
+msgstr "Легкий однопоточный HTTP(S) сервер."
+
+msgid "Advanced Settings"
+msgstr "Дополнительные настройки"
+
+msgid "Aliases"
+msgstr "Псевдонимы (Aliases)"
+
+msgid "Base directory for files to be served"
+msgstr "Основная папка для файлов, которые будут обслуживаться сервером."
+
+msgid "Bind to specific interface:port (by specifying interface address"
+msgstr ""
+"Привязка к конкретному интерфейсу:порту (путем указания адреса интерфейса)."
+
+msgid "CGI filetype handler"
+msgstr "Обработчик<br />типа файла CGI"
+
+msgid "CGI is disabled if not present."
+msgstr "CGI отключается, если он отсутствует."
+
+msgid "Config file (e.g. for credentials for Basic Auth)"
+msgstr "Config файл"
+
+msgid "Connection reuse"
+msgstr "Повторное использование соединения"
+
+msgid "Country"
+msgstr "Страна"
+
+msgid "Disable JSON-RPC authorization via ubus session API"
+msgstr "Отключение авторизации<br />JSON-RPC через API<br />в систему ubus"
+
+msgid "Do not follow symlinks outside document root"
+msgstr ""
+"Не следовать по символическим ссылкам<br />вне корневого каталога документов"
+
+msgid "Do not generate directory listings."
+msgstr "Не создавать списки папок"
+
+msgid "Document root"
+msgstr "Основная папка"
+
+msgid "E.g specify with index.html and index.php when using PHP"
+msgstr "Например, укажите index.html и index.php если использовуется PHP."
+
+msgid "Embedded Lua interpreter is disabled if not present."
+msgstr ""
+"Встроенный обработчик скриптов Lua отключается, если скрипт отсутствует."
+
+msgid "Enable JSON-RPC Cross-Origin Resource Support"
+msgstr "Включение поддержки JSON-RPC разных источников"
+
+msgid "For settings primarily geared to serving more than the web UI"
+msgstr ""
+"Страница в основном предназначена для настройки параметров обслуживания "
+"сервера, а не веб-интерфейса."
+
+msgid "Full Web Server Settings"
+msgstr "Полные настройки web сервера"
+
+msgid "Full real path to handler for Lua scripts"
+msgstr "Полный путь<br />к обработчику<br />скриптов Lua"
+
+msgid "General Settings"
+msgstr "Основные настройки"
+
+msgid "HTTP listeners (address:port)"
+msgstr "Входящие HTTP<br />(адрес:порт)"
+
+msgid "HTTPS Certificate (DER Encoded)"
+msgstr "Сертификат HTTPS (кодировка DER)"
+
+msgid "HTTPS Private Key (DER Encoded)"
+msgstr "Приватный ключ HTTPS (кодировка DER)"
+
+msgid "HTTPS listener (address:port)"
+msgstr "Входящие HTTPS<br />(адрес:порт)"
+
+msgid "Ignore private IPs on public interface"
+msgstr "Игнорировать приватные<br />IP-адреса на<br />публичном интерфейсе"
+
+msgid "Index page(s)"
+msgstr "Страница(ы) индекса"
+
+msgid ""
+"Interpreter to associate with file endings ('suffix=handler', e.g. '.php=/"
+"usr/bin/php-cgi')"
+msgstr ""
+"Обработчик для сопоставления расширений файлов ('суффикс=обработчик', "
+"например: '.php=/usr/bin/php-cgi')."
+
+msgid "Length of key in bits"
+msgstr "Длина ключа в битах"
+
+msgid "Location"
+msgstr "Расположение"
+
+msgid "Maximum number of connections"
+msgstr "Максимальное количество соединений"
+
+msgid "Maximum number of script requests"
+msgstr "Максимальное количество запросов скрипта"
+
+msgid "Maximum wait time for Lua, CGI, or ubus execution"
+msgstr "Максимальное время ожидания для Lua, CGI,<br />или выполнение ubus"
+
+msgid "Maximum wait time for network activity"
+msgstr "Максимальное время ожидания сетевой активности"
+
+msgid "Override path for ubus socket"
+msgstr "Переопределить<br />путь для сокета ubus"
+
+msgid "Path prefix for CGI scripts"
+msgstr "Префикс пути<br />для CGI скриптов"
+
+msgid ""
+"Prevent access from private (RFC1918) IPs on an interface if it has an "
+"public IP address"
+msgstr ""
+"Запретить доступ к приватному интерфейсу IPS (RFC1918), если он имеет "
+"публичный IP-адрес."
+
+msgid "Realm for Basic Auth"
+msgstr "Хост для аутентификации"
+
+msgid "Redirect all HTTP to HTTPS"
+msgstr "Перенаправление всех<br />HTTP на HTTPS"
+
+msgid "Remove configuration for certificate and key"
+msgstr "Удалить настройки для сертификата и ключа"
+
+msgid "Remove old certificate and key"
+msgstr "Удалить старый сертификат и ключ"
+
+msgid "Server Hostname"
+msgstr "Имя хоста"
+
+msgid ""
+"Settings which are either rarely needed or which affect serving the WebUI"
+msgstr ""
+"Страница содержит параметры, которые редко используются или влияют на "
+"обслуживание веб-интерфейса."
+
+msgid "State"
+msgstr "Указывать"
+
+msgid "TCP Keepalive"
+msgstr "TCP активность"
+
+msgid "This permanently deletes the cert, key, and configuration to use same."
+msgstr "Полное удаление сертификата, ключа и настроек вкладки меню cнизу."
+
+msgid "Valid for # of Days"
+msgstr "Действителен в течение указанного кол-ва дней"
+
+msgid ""
+"Virtual URL or CGI script to display on status '404 Not Found'. Must begin "
+"with '/'"
+msgstr ""
+"Виртуальный URL-адрес или CGI скрипт для отображения статуса '404 не "
+"найдено'. Надо начинать с '/'."
+
+msgid "Virtual path prefix for Lua scripts"
+msgstr "Виртуальный путь<br />префикса<br />для скриптов Lua"
+
+msgid "Virtual path prefix for ubus via JSON-RPC integration"
+msgstr "Виртуальный префикс<br />пути для ubus через<br />интеграцию JSON-RPC"
+
+msgid "Will not use HTTP authentication if not present"
+msgstr ""
+"Например, учетные данные для основной авторизации.<br />Не будет "
+"использоваться проверка подлинности HTTP, если она отсутствует."
+
+msgid "a.k.a CommonName"
+msgstr "Имя хоста сервера, так называемое - 'CommonName'."
+
+msgid "uHTTPd"
+msgstr "uHTTPd"
+
+msgid "uHTTPd Self-signed Certificate Parameters"
+msgstr "Параметры самозаверяющего сертификата uHTTPd"
+
+msgid ""
+"uHTTPd will generate a new self-signed certificate using the configuration "
+"shown below."
+msgstr ""
+"uHTTPd создаст самозаверяющий сертификат используя вкладку расположенную "
+"ниже."
+
+msgid "ubus integration is disabled if not present"
+msgstr "Интеграция с ubus будет отключена, если она отсутствует."
index b44bf038eb5a7060e33ac039909deae8b479c2cf..730ca724a4316d75a42956b4651add2c540c1f00 100644 (file)
@@ -47,12 +47,12 @@ function index()
     if valman ~= "1" then
       entry({"admin", "services", "unbound", "files", "base"}, call("ShowUnboundConf"), _("UCI: Unbound"), 10).leaf = true
     else
-      entry({"admin", "services", "unbound", "files", "base"}, cbi("unbound/manual"), _("Edit: Unbound"), 10).leaf = true
+      entry({"admin", "services", "unbound", "files", "base"}, form("unbound/manual"), _("Edit: Unbound"), 10).leaf = true
     end
 
 
-    entry({"admin", "services", "unbound", "files", "server"}, cbi("unbound/server"), _("Edit: Server"), 20).leaf = true
-    entry({"admin", "services", "unbound", "files", "extended"}, cbi("unbound/extended"), _("Edit: Extended"), 30).leaf = true
+    entry({"admin", "services", "unbound", "files", "server"}, form("unbound/server"), _("Edit: Server"), 20).leaf = true
+    entry({"admin", "services", "unbound", "files", "extended"}, form("unbound/extended"), _("Edit: Extended"), 30).leaf = true
 
 
     if nixio.fs.access("/var/lib/unbound/unbound_dhcp.conf") then
index cdf7757e3a59a4c8f01f011530f7922383eacdb9..bf2b65a0a1e1a61ee3e8ef4895c69c676b003c73 100644 (file)
@@ -4,9 +4,12 @@
 -- Licensed to the public under the Apache License 2.0.
 
 local m1, s1
-local ena, mcf, lci, lsv, rlh, rpv, vld, nvd, eds, prt, tlm
-local ctl, dlk, dom, dty, lfq, wfq, exa, dp6, d64, pfx, qry, qrs
+local ena, mcf, lci, lsv
+local rlh, rpv, vld, nvd, eds, prt, tlm
+local ctl, dlk, dom, dty, lfq, wfq, exa
+local dp6, d64, pfx, qry, qrs
 local pro, tgr, rsc, rsn, ag2, stt
+local rpn, din, dfw
 local ucl = luci.model.uci.cursor()
 local valman = ucl:get_first("unbound", "unbound", "manual_conf")
 
@@ -19,13 +22,44 @@ s1.anonymous = true
 --LuCI, Unbound, or Not
 s1:tab("basic", translate("Basic"),
   translatef("<h3>Unbound Basic Settings</h3>\n"
-  .. "<a href=\"%s\" target=\"_blank\">Unbound</a>"
+  .. "<a href=\"%s\" target=\"_blank\">Unbound (link)</a>"
   .. " is a validating, recursive, and caching DNS resolver. "
-  .. "UCI help can be found on "
-  .. "<a href=\"%s\" target=\"_blank\">github</a>.",
+  .. "UCI documentation can be found on "
+  .. "<a href=\"%s\" target=\"_blank\">github (link)</a>.",
   "https://www.unbound.net/",
   "https://github.com/openwrt/packages/blob/master/net/unbound/files/README.md"))
 
+
+if valman ~= "1" then
+  -- Not in manual configuration mode; show UCI
+  s1:tab("advanced", translate("Advanced"),
+    translatef("<h3>Unbound Advanced Settings</h3>\n"
+    .. "Domain manipulation, lookup protection, and workarounds for "
+    .. "<a href=\"%s\" target=\"_blank\">Unbound </a>"
+    .. " DNS resolver.", "https://www.unbound.net/"))
+
+  s1:tab("DHCP", translate("DHCP"),
+    translatef("<h3>Unbound DHCP Settings</h3>\n"
+    .. "Link your DHCP server to "
+    .. "<a href=\"%s\" target=\"_blank\">Unbound </a>"
+    .. " DNS resolver.", "https://www.unbound.net/ "))
+
+  s1:tab("resource", translate("Resource"),
+    translatef("<h3>Unbound Resource Settings</h3>\n"
+    .. "Memory and protocol setttings for "
+    .. "<a href=\"%s\" target=\"_blank\">Unbound </a>"
+    .. " DNS resolver.", "https://www.unbound.net/"))
+end
+
+
+s1:tab("trigger", translate("Trigger"),
+    translatef("<h3>Unbound Event Trigger Settings</h3>\n"
+    .. "Start, reload, and save RFC5011 DNSKEY records for "
+    .. "<a href=\"%s\" target=\"_blank\">Unbound </a>"
+    .. " DNS resolver.", "https://www.unbound.net/"))
+
+
+--Basic Tab, unconditional pieces
 ena = s1:taboption("basic", Flag, "enabled", translate("Enable Unbound:"),
   translate("Enable the initialization scripts for Unbound"))
 ena.rmempty = false
@@ -34,56 +68,18 @@ mcf = s1:taboption("basic", Flag, "manual_conf", translate("Manual Conf:"),
   translate("Skip UCI and use /etc/unbound/unbound.conf"))
 mcf.rmempty = false
 
-lci = s1:taboption("basic", Flag, "extended_luci", translate("Advanced LuCI:"),
-  translate("See detailed tabs for debug and advanced manual configuration"))
+lci = s1:taboption("basic", Flag, "extended_luci", translate("Extended Tabs:"),
+  translate("See detailed tabs for statistics, debug, and manual configuration"))
 lci.rmempty = false
 
 
-function ena.cfgvalue(self, section)
-  return luci.sys.init.enabled("unbound") and self.enabled or self.disabled
-end
-
-
-function ena.write(self, section, value)
-  if value == "1" then
-    luci.sys.init.enable("unbound")
-    luci.sys.call("/etc/init.d/unbound start >/dev/null")
-  else
-    luci.sys.call("/etc/init.d/unbound stop >/dev/null")
-    luci.sys.init.disable("unbound")
-  end
-
-  return Flag.write(self, section, value)
-end
-
-
 if valman ~= "1" then
   -- Not in manual configuration mode; show UCI
-  s1:tab("advanced", translate("Advanced"),
-    translatef("<h3>Unbound Advanced Settings</h3>\n"
-    .. "Advanced setttings and plugin modules for "
-    .. "<a href=\"%s\" target=\"_blank\">Unbound</a>"
-    .. " DNS resolver.", "https://www.unbound.net/"))
-
-  s1:tab("resource", translate("Resource"),
-    translatef("<h3>Unbound Resource Settings</h3>\n"
-    .. "Memory and protocol setttings for "
-    .. "<a href=\"%s\" target=\"_blank\">Unbound</a>"
-    .. " DNS resolver.", "https://www.unbound.net/"))
-
   --Basic Tab
   lsv = s1:taboption("basic", Flag, "localservice", translate("Local Service:"),
     translate("Accept queries only from local subnets"))
   lsv.rmempty = false
 
-  rlh = s1:taboption("basic", Flag, "rebind_localhost", translate("Block Localhost Rebind:"),
-    translate("Prevent upstream response of 127.0.0.0/8"))
-  rlh.rmempty = false
-
-  rpv = s1:taboption("basic", Flag, "rebind_protection", translate("Block Private Rebind:"),
-    translate("Prevent upstream response of RFC1918 ranges"))
-  rpv.rmempty = false
-
   vld = s1:taboption("basic", Flag, "validator", translate("Enable DNSSEC:"),
     translate("Enable the DNSSEC validator module"))
   vld.rmempty = false
@@ -93,45 +89,82 @@ if valman ~= "1" then
   nvd.rmempty = false
   nvd:depends({ validator = true })
 
-  eds = s1:taboption("basic", Value, "edns_size", translate("EDNS Size:"),
-    translate("Limit extended DNS packet size"))
-  eds.datatype = "and(uinteger,min(512),max(4096))"
-  eds.rmempty = false
+  d64 = s1:taboption("basic", Flag, "dns64", translate("Enable DNS64:"),
+    translate("Enable the DNS64 module"))
+  d64.rmempty = false
+
+  pfx = s1:taboption("basic", Value, "dns64_prefix", translate("DNS64 Prefix:"),
+    translate("Prefix for generated DNS64 addresses"))
+  pfx.datatype = "ip6addr"
+  pfx.placeholder = "64:ff9b::/96"
+  pfx.optional = true
+  pfx:depends({ dns64 = true })
+
+  qry = s1:taboption("basic", Flag, "query_minimize", translate("Query Minimize:"),
+    translate("Break down query components for limited added privacy"))
+  qry.rmempty = false
+
+  qrs = s1:taboption("basic", Flag, "query_min_strict", translate("Strict Minimize:"),
+    translate("Strict version of 'query minimize' but it can break DNS"))
+  qrs.rmempty = false
+  qrs:depends({ query_minimize = true })
 
   prt = s1:taboption("basic", Value, "listen_port", translate("Listening Port:"),
     translate("Choose Unbounds listening port"))
   prt.datatype = "port"
   prt.rmempty = false
 
-  tlm = s1:taboption("basic", Value, "ttl_min", translate("TTL Minimum:"),
-    translate("Prevent excessively short cache periods"))
-  tlm.datatype = "and(uinteger,min(0),max(600))"
-  tlm.rmempty = false
+  --Avanced Tab
+  din = s1:taboption("advanced", DynamicList, "domain_insecure",
+    translate("Domain Insecure:"),
+    translate("List domains to bypass checks of DNSSEC"))
+  din:depends({ validator = true })
 
-  --Advanced Tab
-  ctl = s1:taboption("advanced", ListValue, "unbound_control", translate("Unbound Control App:"),
-    translate("Enable access for unbound-control"))
-  ctl.rmempty = false
-  ctl:value("0", translate("No Remote Control"))
-  ctl:value("1", translate("Local Host, No Encryption"))
-  ctl:value("2", translate("Local Host, Encrypted"))
-  ctl:value("3", translate("Local Subnet, Encrypted"))
-  ctl:value("4", translate("Local Subnet, Static Encryption"))
+  dfw = s1:taboption("advanced", DynamicList, "domain_forward",
+    translate("Domain Forward:"),
+    translate("List domains to simply forward to stub resolvers in /tmp/resolve.auto"))
+
+  rlh = s1:taboption("advanced", Flag, "rebind_localhost", translate("Filter Localhost Rebind:"),
+    translate("Protect against upstream response of 127.0.0.0/8"))
+  rlh.rmempty = false
+
+  rpv = s1:taboption("advanced", ListValue, "rebind_protection", translate("Filter Private Rebind:"),
+    translate("Protect against upstream responses within local subnets"))
+  rpv:value("0", translate("No Filter"))
+  rpv:value("1", translate("Filter RFC1918/4193"))
+  rpv:value("2", translate("Filter Entire Subnet"))
+  rpv.rmempty = false
 
-  dlk = s1:taboption("advanced", ListValue, "dhcp_link", translate("DHCP Link:"),
+  rpn = s1:taboption("advanced", Value, "rebind_interface", translate("Rebind Network Filter:"),
+    translate("Network subnets to filter from upstream responses"))
+  rpn.template = "cbi/network_netlist"
+  rpn.widget = "checkbox"
+  rpn.rmempty = true
+  rpn.cast = "string"
+  rpn.nocreate = true
+  rpn:depends({ rebind_protection = 2 })
+  rpn:depends({ rebind_protection = 3 })
+
+  --DHCP Tab
+  dlk = s1:taboption("DHCP", ListValue, "dhcp_link", translate("DHCP Link:"),
     translate("Link to supported programs to load DHCP into DNS"))
   dlk:value("none", translate("No Link"))
   dlk:value("dnsmasq", "dnsmasq")
   dlk:value("odhcpd", "odhcpd")
   dlk.rmempty = false
 
-  dom = s1:taboption("advanced", Value, "domain", translate("Local Domain:"),
+  dp6 = s1:taboption("DHCP", Flag, "dhcp4_slaac6", translate("DHCPv4 to SLAAC:"),
+    translate("Use DHCPv4 MAC to discover IP6 hosts SLAAC (EUI64)"))
+  dp6.rmempty = false
+  dp6:depends({ dhcp_link = "odhcpd" })
+
+  dom = s1:taboption("DHCP", Value, "domain", translate("Local Domain:"),
     translate("Domain suffix for this router and DHCP clients"))
   dom.placeholder = "lan"
   dom:depends({ dhcp_link = "none" })
   dom:depends({ dhcp_link = "odhcpd" })
 
-  dty = s1:taboption("advanced", ListValue, "domain_type", translate("Local Domain Type:"),
+  dty = s1:taboption("DHCP", ListValue, "domain_type", translate("Local Domain Type:"),
     translate("How to treat queries of this local domain"))
   dty:value("deny", translate("Ignored"))
   dty:value("refuse", translate("Refused"))
@@ -140,9 +173,9 @@ if valman ~= "1" then
   dty:depends({ dhcp_link = "none" })
   dty:depends({ dhcp_link = "odhcpd" })
 
-  lfq = s1:taboption("advanced", ListValue, "add_local_fqdn", translate("LAN DNS:"),
+  lfq = s1:taboption("DHCP", ListValue, "add_local_fqdn", translate("LAN DNS:"),
     translate("How to enter the LAN or local network router in DNS"))
-  lfq:value("0", translate("No DNS"))
+  lfq:value("0", translate("No Entry"))
   lfq:value("1", translate("Hostname, Primary Address"))
   lfq:value("2", translate("Hostname, All Addresses"))
   lfq:value("3", translate("Host FQDN, All Addresses"))
@@ -150,9 +183,9 @@ if valman ~= "1" then
   lfq:depends({ dhcp_link = "none" })
   lfq:depends({ dhcp_link = "odhcpd" })
 
-  wfq = s1:taboption("advanced", ListValue, "add_wan_fqdn", translate("WAN DNS:"),
+  wfq = s1:taboption("DHCP", ListValue, "add_wan_fqdn", translate("WAN DNS:"),
     translate("Override the WAN side router entry in DNS"))
-  wfq:value("0", translate("Upstream"))
+  wfq:value("0", translate("Use Upstream"))
   wfq:value("1", translate("Hostname, Primary Address"))
   wfq:value("2", translate("Hostname, All Addresses"))
   wfq:value("3", translate("Host FQDN, All Addresses"))
@@ -160,7 +193,7 @@ if valman ~= "1" then
   wfq:depends({ dhcp_link = "none" })
   wfq:depends({ dhcp_link = "odhcpd" })
 
-  exa = s1:taboption("advanced", ListValue, "add_extra_dns", translate("Extra DNS:"),
+  exa = s1:taboption("DHCP", ListValue, "add_extra_dns", translate("Extra DNS:"),
     translate("Use extra DNS entries found in /etc/config/dhcp"))
   exa:value("0", translate("Ignore"))
   exa:value("1", translate("Include Network/Hostnames"))
@@ -169,33 +202,18 @@ if valman ~= "1" then
   exa:depends({ dhcp_link = "none" })
   exa:depends({ dhcp_link = "odhcpd" })
 
-  dp6 = s1:taboption("advanced", Flag, "dhcp4_slaac6", translate("DHCPv4 to SLAAC:"),
-    translate("Use DHCPv4 MAC to discover IP6 hosts SLAAC (EUI64)"))
-  dp6.rmempty = false
-
-  d64 = s1:taboption("advanced", Flag, "dns64", translate("Enable DNS64:"),
-    translate("Enable the DNS64 module"))
-  d64.rmempty = false
-
-  pfx = s1:taboption("advanced", Value, "dns64_prefix", translate("DNS64 Prefix:"),
-    translate("Prefix for generated DNS64 addresses"))
-  pfx.datatype = "ip6addr"
-  pfx.placeholder = "64:ff9b::/96"
-  pfx.optional = true
-  pfx:depends({ dns64 = true })
-
-  qry = s1:taboption("advanced", Flag, "query_minimize", translate("Query Minimize:"),
-    translate("Break down query components for limited added privacy"))
-  qry.rmempty = false
-
-  qrs = s1:taboption("advanced", Flag, "query_min_strict", translate("Strict Minimize:"),
-    translate("Strict version of 'query minimize' but it can break DNS"))
-  qrs.rmempty = false
-  qrs:depends({ query_minimize = true })
-
   --TODO: dnsmasq needs to not reference resolve-file and get off port 53.
 
   --Resource Tuning Tab
+  ctl = s1:taboption("resource", ListValue, "unbound_control", translate("Unbound Control App:"),
+    translate("Enable access for unbound-control"))
+  ctl.rmempty = false
+  ctl:value("0", translate("No Remote Control"))
+  ctl:value("1", translate("Local Host, No Encryption"))
+  ctl:value("2", translate("Local Host, Encrypted"))
+  ctl:value("3", translate("Local Subnet, Encrypted"))
+  ctl:value("4", translate("Local Subnet, Static Encryption"))
+
   pro = s1:taboption("resource", ListValue, "protocol", translate("Recursion Protocol:"),
     translate("Chose the protocol recursion queries leave on"))
   pro:value("mixed", translate("IP4 and IP6"))
@@ -219,42 +237,60 @@ if valman ~= "1" then
   rsc:value("tiny", translate("Tiny"))
   rsc.rmempty = false
 
-  ag2 = s1:taboption("resource", Value, "root_age", translate("Root DSKEY Age:"),
-    translate("Limit days between RFC5011 to reduce flash writes"))
-  ag2.datatype = "and(uinteger,min(1),max(99))"
-  ag2:value("3", "3")
-  ag2:value("9", "9 ("..translate("default")..")")
-  ag2:value("12", "12")
-  ag2:value("24", "24")
-  ag2:value("99", "99 ("..translate("never")..")")
+  eds = s1:taboption("resource", Value, "edns_size", translate("EDNS Size:"),
+    translate("Limit extended DNS packet size"))
+  eds.datatype = "and(uinteger,min(512),max(4096))"
+  eds.rmempty = false
+
+  tlm = s1:taboption("resource", Value, "ttl_min", translate("TTL Minimum:"),
+    translate("Prevent excessively short cache periods"))
+  tlm.datatype = "and(uinteger,min(0),max(600))"
+  tlm.rmempty = false
 
   stt = s1:taboption("resource", Flag, "extended_stats", translate("Extended Statistics:"),
     translate("Extended statistics are printed from unbound-control"))
   stt.rmempty = false
+end
+
+
+--Trigger Tab, always unconditional
+ag2 = s1:taboption("trigger", Value, "root_age", translate("Root DSKEY Age:"),
+    translate("Limit days between RFC5011 copies to reduce flash writes"))
+ag2.datatype = "and(uinteger,min(1),max(99))"
+ag2:value("3", "3")
+ag2:value("9", "9 ("..translate("default")..")")
+ag2:value("12", "12")
+ag2:value("24", "24")
+ag2:value("99", "99 ("..translate("never")..")")
 
-  tgr = s1:taboption("resource", Value, "trigger", translate("Trigger Networks:"),
+tgr = s1:taboption("trigger", Value, "trigger_interface", translate("Trigger Networks:"),
     translate("Networks that may trigger Unbound to reload (avoid wan6)"))
-  tgr.template = "cbi/network_netlist"
-  tgr.widget = "checkbox"
-  tgr.cast = "string"
-
-else
-  s1:tab("rfc5011", translate("RFC5011"),
-    translatef("<h3>Unbound RFC5011 Settings</h3>\n"
-    .. "RFC5011 copy scripts protect flash ROM even with UCI disabled."))
-
-  ag2 = s1:taboption("rfc5011", Value, "root_age", translate("Root DSKEY Age:"),
-    translate("Limit days to copy /var/->/etc/ to reduce flash writes"))
-  ag2.datatype = "and(uinteger,min(1),max(99))"
-  ag2:value("3", "3")
-  ag2:value("9", "9 ("..translate("default")..")")
-  ag2:value("12", "12")
-  ag2:value("24", "24")
-  ag2:value("99", "99 ("..translate("never")..")")
+tgr.template = "cbi/network_netlist"
+tgr.widget = "checkbox"
+tgr.rmempty = true
+tgr.cast = "string"
+tgr.nocreate = true
+
+
+function ena.cfgvalue(self, section)
+  return luci.sys.init.enabled("unbound") and self.enabled or self.disabled
+end
+
+
+function ena.write(self, section, value)
+  if value == "1" then
+    luci.sys.init.enable("unbound")
+    luci.sys.call("/etc/init.d/unbound start >/dev/null")
+  else
+    luci.sys.call("/etc/init.d/unbound stop >/dev/null")
+    luci.sys.init.disable("unbound")
+  end
+
+  return Flag.write(self, section, value)
 end
 
 
-function m1.on_after_commit(self)
+function m1.on_apply(self)
   function ena.validate(self, value)
     if value ~= "0" then
       luci.sys.call("/etc/init.d/unbound restart >/dev/null 2>&1")
index e485708f0ec0c97658b2d33986c0161d9599b22f..95a0ef4862a7cd1157e028fd89062da9e575ef65 100644 (file)
@@ -21,7 +21,7 @@ end
 function act_status()
        local uci = luci.model.uci.cursor()
        local lease_file = uci:get("upnpd", "config", "upnp_lease_file")
-       
+
        local ipt = io.popen("iptables --line-numbers -t nat -xnvL MINIUPNPD 2>/dev/null")
        if ipt then
                local upnpf = lease_file and io.open(lease_file, "r")
@@ -39,7 +39,7 @@ function act_status()
                                        num     = tonumber(num)
                                        extport = tonumber(extport)
                                        intport = tonumber(intport)
-                                       
+
                                        if upnpf then
                                                local uln = upnpf:read("*l")
                                                if uln then descr = uln:match(string.format("^%s:%d:%s:%d:%%d*:(.*)$", proto:upper(), extport, intaddr, intport)) end
@@ -76,7 +76,7 @@ function act_delete(num)
 
                local lease_file = uci:get("upnpd", "config", "upnp_lease_file")
                if lease_file and nixio.fs.access(lease_file) then
-                       luci.sys.call("sed -i -e '%dd' %q" %{ idx, lease_file })
+                       luci.sys.call("sed -i -e '%dd' %s" %{ idx, luci.util.shellquote(lease_file) })
                end
 
                luci.http.status(200, "OK")
index 74b9d1d033e8584035942c727c1d1e2b6b011215..a2023926e060fd2651fe943d5c7d7b5b474e6f74 100644 (file)
@@ -35,6 +35,9 @@ s:taboption("general", Flag, "enable_natpmp", translate("Enable NAT-PMP function
 s:taboption("general", Flag, "secure_mode", translate("Enable secure mode"),
        translate("Allow adding forwards only to requesting ip addresses")).default = "1"
 
+s:taboption("general", Flag, "igdv1", translate("Enable IGDv1 mode"),
+       translate("Advertise as IGDv1 device instead of IGDv2")).default = "0"
+
 s:taboption("general", Flag, "log_output", translate("Enable additional logging"),
        translate("Puts extra debugging information into the system log"))
 
@@ -71,7 +74,7 @@ pu = s:taboption("advanced", Value, "presentation_url", translate("Presentation
 pu.placeholder = "http://192.168.1.1/"
 
 lf = s:taboption("advanced", Value, "upnp_lease_file", translate("UPnP lease file"))
-lf.placeholder = "/var/log/upnp.leases"
+lf.placeholder = "/var/run/miniupnpd.leases"
 
 
 s2 = m:section(TypedSection, "perm_rule", translate("MiniUPnP ACLs"),
index 2767ade5b165993baa7c6478e1e9cf77017c9731..398c87ecb65ee27993107135a95394f4f6280258 100644 (file)
@@ -31,6 +31,9 @@ msgstr "Redireccions UPnP actives"
 msgid "Advanced Settings"
 msgstr "Ajusts avançats"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr "Permet que s'afegeixin redireccions només a les adreces IP peticionant"
 
@@ -70,6 +73,9 @@ msgstr "UUID de dispositiu"
 msgid "Downlink"
 msgstr "Enllaç de baixada"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "Habilita la funcionalitat NAT-PMP"
 
index bfc97cca5223660bb71ff0c4b510cf122316d657..adb4d19ab1eb691bdd2dbedf0e0ede5c0b43508b 100644 (file)
@@ -27,6 +27,9 @@ msgstr "Aktivní přesměrování UPnP"
 msgid "Advanced Settings"
 msgstr "Pokročilé nastavení"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr "Povolit přesměrování pouze na dotazující ip adresy"
 
@@ -66,6 +69,9 @@ msgstr "UUID zařízení"
 msgid "Downlink"
 msgstr "Downlink"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "Povolit funkčnost NAT-PMP"
 
index 46aa42ffe35d2f6a575af3da8b4a9caeccd4dc80..bdafbf1054452efaee35452921089f11bf0cdd76 100644 (file)
@@ -29,6 +29,9 @@ msgstr "Aktive UPnP-Weiterleitungen"
 msgid "Advanced Settings"
 msgstr "Erweiterte Einstellungen"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr "Nur Weiterleitungen zurück zum anfordernden Client zulassen"
 
@@ -68,6 +71,9 @@ msgstr "Geräte-UUID"
 msgid "Downlink"
 msgstr "Downlink"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "NAT-PMP Funktionalität aktivieren"
 
index 79a02a487ac6625c692e707a6ecde458600abf14..c02b0ce29a39783e4de809d5f7281650889cac7e 100644 (file)
@@ -26,6 +26,9 @@ msgstr ""
 msgid "Advanced Settings"
 msgstr ""
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr ""
 
@@ -65,6 +68,9 @@ msgstr ""
 msgid "Downlink"
 msgstr ""
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr ""
 
index 450e62a7c91b5311f7ee249c8543031aa279f3d4..eae23a13a02e99e92504fc64464c425a9b37fa0c 100644 (file)
@@ -26,6 +26,9 @@ msgstr ""
 msgid "Advanced Settings"
 msgstr ""
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr ""
 
@@ -65,6 +68,9 @@ msgstr ""
 msgid "Downlink"
 msgstr "Downlink"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr ""
 
index 8c26b3cf5e2169e996606fb3baf95413511042cb..6c9c262607adb72f9a4b7ceb24c21173073d0c69 100644 (file)
@@ -29,6 +29,9 @@ msgstr "Redirecciones UPnP activas"
 msgid "Advanced Settings"
 msgstr "Configuración avanzada"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr "Permitir añadir redirecciones sólo a IPs que lo soliciten"
 
@@ -68,6 +71,9 @@ msgstr "UUID del dispositivo"
 msgid "Downlink"
 msgstr "Enlace para bajada"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "Activar la funcionalidad NAT-PMP"
 
index 1f3f8635bdb113031704806e5b090e2a0d322ac8..f8b2a8536a397d6997e36a76993454d054f28c0f 100644 (file)
@@ -29,6 +29,9 @@ msgstr "Redirections UPnP actives"
 msgid "Advanced Settings"
 msgstr "Paramètres avancés"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr ""
 "Permet d'ajouter des redirections seulement vers les adresses IP qui font "
@@ -70,6 +73,9 @@ msgstr "UUID du périphérique"
 msgid "Downlink"
 msgstr "Lien descendant"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "Activer la fonctionnalité NAT-PMP"
 
index 5b01f31b84d4bd4ca33e0aa299d1ab67fd869e8d..387444f152e557db2883c9ebe7eee238aec89b70 100644 (file)
@@ -22,6 +22,9 @@ msgstr ""
 msgid "Advanced Settings"
 msgstr ""
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr ""
 
@@ -61,6 +64,9 @@ msgstr ""
 msgid "Downlink"
 msgstr ""
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr ""
 
index 9f64e5a18af2a10f7989b44517349499e69b77b3..21bc7b59c040c74ecec04fb1f615b44fde2fb920 100644 (file)
@@ -27,6 +27,9 @@ msgstr "Aktív UPnP átirányítások"
 msgid "Advanced Settings"
 msgstr "Haladó beállítások"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr ""
 "Kizárólag a kérést küldő IP címre történő továbbítás hozzáadásának "
@@ -68,6 +71,9 @@ msgstr "Eszköz UUID"
 msgid "Downlink"
 msgstr "Letöltés"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "NAT-PMP funkció engedélyezése"
 
index 2eb4a44044615a7eceaabd116f38af1c7ef797ed..8e498c34b0b1ac5280f8e06d7843abc5b5b98186 100644 (file)
@@ -29,6 +29,9 @@ msgstr "Attiva reindirizzamento UPnP"
 msgid "Advanced Settings"
 msgstr "Opzioni Avanzate"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr "Permetti l'aggiunta della mappatura solo agli indirizzi IP richiedenti"
 
@@ -68,6 +71,9 @@ msgstr "UUID del dispositivo"
 msgid "Downlink"
 msgstr "Downlink"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "Abilita il protocollo NAT-PMP"
 
index b9dae4f8d6e89bd52e6d58de36d3f73cec5fc2a6..4e6f879dc0c15b6e1135cdcd66f06d5e9ecdf592 100644 (file)
@@ -17,8 +17,8 @@ msgid ""
 "ACLs specify which external ports may be redirected to which internal "
 "addresses and ports"
 msgstr ""
-"アクセス制御リスト(ACL) は、どの外部ポートからどの内部アドレス及びポートへ"
-"ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81\99ã\82\8bã\81\8bã\82\92設å®\9aã\81\97ã\81¾ã\81\99ã\80\82"
+"アクセス制御リスト(ACL) は、どの外部ポートからどの内部アドレス及びポートへ"
+"ダイレクトするかを設定します。"
 
 msgid "Action"
 msgstr "動作"
@@ -29,6 +29,9 @@ msgstr "稼働中のUPnPリダイレクト"
 msgid "Advanced Settings"
 msgstr "詳細設定"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr "要求元IPアドレスへの転送のみ、追加を許可します。"
 
@@ -68,6 +71,9 @@ msgstr "デバイス UUID"
 msgid "Downlink"
 msgstr "ダウンリンク"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "NAT-PMP機能を有効にする"
 
@@ -132,8 +138,8 @@ msgid ""
 "UPnP allows clients in the local network to automatically configure the "
 "router."
 msgstr ""
-"UPnPを使用することで、ローカルネットワーク内のクライアントが自動的にルータ"
-"構成することができます。"
+"UPnPを使用することで、ローカルネットワーク内のクライアントが自動的にルータ"
+"構成することができます。"
 
 msgid "UPnP lease file"
 msgstr "UPnP リースファイル"
index 62d4d5aec484d3b91e46c065853524b3b2332b5e..834d6546abdfe87c23fbc661aad91f8da0697a73 100644 (file)
@@ -21,6 +21,9 @@ msgstr ""
 msgid "Advanced Settings"
 msgstr ""
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr ""
 
@@ -60,6 +63,9 @@ msgstr ""
 msgid "Downlink"
 msgstr ""
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr ""
 
index dc9daba1ba8f54750ec2438421328b8d86603f15..f313b42ee917c4f5b6e9406c1854044cfd3245b6 100644 (file)
@@ -20,6 +20,9 @@ msgstr "Aktive UPnP Viderekoblinger"
 msgid "Advanced Settings"
 msgstr "Avanserte Innstillinger"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr "Tillat videkobling kun til IP adresser som ber om det"
 
@@ -59,6 +62,9 @@ msgstr "Enhet UUID"
 msgid "Downlink"
 msgstr "Nedlinje"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "Aktiver NAT-PMP funksjonalitet"
 
index 0afabe326f1b5c5e09a292e77ef56d6c7050a8cd..fb1f0a4bddfa185566062c296f6e671df9f544ec 100644 (file)
@@ -28,6 +28,9 @@ msgstr "Aktywne przekierowania UPnP"
 msgid "Advanced Settings"
 msgstr "Ustawienia zaawansowane"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr "Zezwól na dodawanie przekierowań tylko do odpytujących adresów IP"
 
@@ -67,6 +70,9 @@ msgstr "UUID urządzenia"
 msgid "Downlink"
 msgstr "Downlink"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "Włącz funkcjonalność NAT-PMP"
 
index 72741d26c99025158c49b1dde50da009b8488b76..705bbde617da059ecdc4551518dc0bee9c520496 100644 (file)
@@ -29,6 +29,9 @@ msgstr "Redirecionamentos UPnP Ativos"
 msgid "Advanced Settings"
 msgstr "Configurações Avançadas"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr ""
 "Permite adicionar encaminhamento apenas para o endereço IP requisitante"
@@ -69,6 +72,9 @@ msgstr "UUID do Dispositivo"
 msgid "Downlink"
 msgstr "Velocidade de recebimento do enlace (downlink)"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "Habilite a função NAT-PMP"
 
index 415a72b08233e7c020e3cfd0aaa8ff1f173c28d3..e1ee340e30596da6a78a827e09d745b78e5625f7 100644 (file)
@@ -26,6 +26,9 @@ msgstr ""
 msgid "Advanced Settings"
 msgstr ""
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr ""
 
@@ -65,6 +68,9 @@ msgstr ""
 msgid "Downlink"
 msgstr "Link para download"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr ""
 
index d5e5c79932dd290ce57e51d4808e88e2e4f122ed..8525279d005b03a64d9f4e713bbac77f68d5ef10 100644 (file)
@@ -28,6 +28,9 @@ msgstr "Redirecturi active UPnP"
 msgid "Advanced Settings"
 msgstr "Setari avansate"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr "Permite adaugarea forward-urilor doar catre adresele ip solicitante"
 
@@ -67,6 +70,9 @@ msgstr "UUID al dispozitivului"
 msgid "Downlink"
 msgstr "Downlink"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "Activeaza functionalitatea NAT-PMP"
 
index 0c195ad85b48f405d44e2bd68610b84952b9d4a0..878f83eafb4044283469ac479cabf21935ee68bb 100644 (file)
@@ -1,26 +1,26 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: upnp\n"
-"Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-08-15 15:20+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"PO-Revision-Date: 2018-01-18 23:42+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid ""
 "ACLs specify which external ports may be redirected to which internal "
 "addresses and ports"
 msgstr ""
-"СпиÑ\81ок Ð´Ð¾Ñ\81Ñ\82Ñ\83па Ð¾Ð¿Ñ\80еделÑ\8fеÑ\82, ÐºÐ°ÐºÐ¸Ðµ Ð²Ð½ÐµÑ\88ние Ð¿Ð¾Ñ\80Ñ\82Ñ\8b Ð¼Ð¾Ð³Ñ\83Ñ\82 Ð±Ñ\8bÑ\82Ñ\8c Ð¿ÐµÑ\80енапÑ\80авленÑ\8b Ð½а "
-"внÑ\83Ñ\82Ñ\80енние Ð°Ð´Ñ\80еÑ\81а Ð¸ Ð¿Ð¾Ñ\80Ñ\82Ñ\8b"
+"СпиÑ\81ок Ð´Ð¾Ñ\81Ñ\82Ñ\83па Ð·Ð°Ð´Ð°ÐµÑ\82 Ð²Ð½ÐµÑ\88ние Ð¿Ð¾Ñ\80Ñ\82Ñ\8b Ð´Ð»Ñ\8f Ð¿ÐµÑ\80енапÑ\80авлениÑ\8f Ð½Ð° Ð²Ð½Ñ\83Ñ\82Ñ\80енние Ð°Ð´Ñ\80еÑ\81а "
+"и Ð¿Ð¾Ñ\80Ñ\82Ñ\8b."
 
 msgid "Action"
 msgstr "Действие"
@@ -29,16 +29,19 @@ msgid "Active UPnP Redirects"
 msgstr "Активные UPnP-переадресации"
 
 msgid "Advanced Settings"
-msgstr "Расширенные настройки"
+msgstr "Дополнительные настройки"
+
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
 
 msgid "Allow adding forwards only to requesting ip addresses"
-msgstr "Разрешить перенаправление только для запрашивающих IP-адресов"
+msgstr "Разрешить перенаправление только для запрашивающих IP-адресов."
 
 msgid "Announced model number"
-msgstr "Ð\9dомер модели"
+msgstr "Ð\9eбÑ\8aÑ\8fвиÑ\82Ñ\8c Ð½омер модели"
 
 msgid "Announced serial number"
-msgstr "Серийный номер"
+msgstr "Ð\9eбÑ\8aÑ\8fвиÑ\82Ñ\8c Ñ\81ерийный номер"
 
 msgid "Clean rules interval"
 msgstr "Интервал очистки правил"
@@ -59,16 +62,19 @@ msgid "Comment"
 msgstr "Комментарий"
 
 msgid "Delete"
-msgstr ""
+msgstr "Удалить"
 
 msgid "Description"
-msgstr ""
+msgstr "Описание"
 
 msgid "Device UUID"
 msgstr "UUID устройства"
 
 msgid "Downlink"
-msgstr "Нисходящий канал"
+msgstr "Внутреннее соединение"
+
+msgid "Enable IGDv1 mode"
+msgstr ""
 
 msgid "Enable NAT-PMP functionality"
 msgstr "Включить NAT-PMP"
@@ -80,7 +86,7 @@ msgid "Enable additional logging"
 msgstr "Включить дополнительное журналирование"
 
 msgid "Enable secure mode"
-msgstr "Использовать защищённый режим"
+msgstr "Использовать<br />защищённый режим"
 
 msgid "External Port"
 msgstr "Внешний порт"
@@ -89,7 +95,7 @@ msgid "External ports"
 msgstr "Внешние порты"
 
 msgid "General Settings"
-msgstr "Общие настройки"
+msgstr "Основные настройки"
 
 msgid "Internal addresses"
 msgstr "Внутренние адреса"
@@ -110,19 +116,19 @@ msgid "Port"
 msgstr "Порт"
 
 msgid "Presentation URL"
-msgstr "URL представления"
+msgstr "Задать URL-адрес"
 
 msgid "Protocol"
 msgstr "Протокол"
 
 msgid "Puts extra debugging information into the system log"
-msgstr "Добавлять дополнительную отладочную информацию в системный журнал"
+msgstr "Добавлять дополнительную отладочную информацию в системный журнал."
 
 msgid "Report system instead of daemon uptime"
 msgstr "Сообщать время работы системы вместо сервиса"
 
 msgid "Start UPnP and NAT-PMP service"
-msgstr "Запустить службы UPnP и NAT-PMP"
+msgstr "Запустить службы<br />UPnP и NAT-PMP"
 
 msgid "There are no active redirects."
 msgstr "Активные переадресации отсутствуют."
@@ -144,21 +150,7 @@ msgid "Universal Plug & Play"
 msgstr "Universal Plug & Play"
 
 msgid "Uplink"
-msgstr "Ð\92оÑ\81Ñ\85одÑ\8fÑ\89ий ÐºÐ°Ð½Ð°Ð»"
+msgstr "Ð\92неÑ\88нее Ñ\81оединение"
 
 msgid "Value in KByte/s, informational only"
-msgstr "Значение в КБ/с, только для информации"
-
-#~ msgid "Delete Redirect"
-#~ msgstr "Удалить переадресацию"
-
-# Used in upnpmini.lua, which is marked broken, thus can be removed
-#~ msgid ""
-#~ "UPNP allows clients in the local network to automatically configure the "
-#~ "router."
-#~ msgstr ""
-#~ "UPnP позволяет клиентам в локальной сети автоматически настраивать "
-#~ "маршрутизатор."
-
-#~ msgid "enable"
-#~ msgstr "включить"
+msgstr "Значение в КБ/с, только для информации."
index ccd256c715468a22c545c98664b0e0438a0fe687..81ded2220f9fa1fa74f7a4216fe9f88a9c416194 100644 (file)
@@ -22,6 +22,9 @@ msgstr ""
 msgid "Advanced Settings"
 msgstr ""
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr ""
 
@@ -61,6 +64,9 @@ msgstr ""
 msgid "Downlink"
 msgstr ""
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr ""
 
index 10fef558ea927974c75b261425380acbe8a04938..c2d1c6b0bf38535591cb633e04efe86bce9dd4c6 100644 (file)
@@ -25,6 +25,9 @@ msgstr "Aktivera UPnP-omdirigeringar"
 msgid "Advanced Settings"
 msgstr "Avancerade inställningar"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr ""
 
@@ -64,6 +67,9 @@ msgstr "Enhetens UUID"
 msgid "Downlink"
 msgstr "Nerlänk"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "Aktivera NAT-PMP-funktionalitet"
 
index dda0e7ea3c4387226a015e657616f65aa4ffa776..e3b1f1a26c9e107f28d4ae3579764a64f1546da5 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 msgid "Advanced Settings"
 msgstr ""
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr ""
 
@@ -54,6 +57,9 @@ msgstr ""
 msgid "Downlink"
 msgstr ""
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr ""
 
index 1bcd2b73abe5134056e517216673ee03cf2c3221..2a997a79b03980f0669298ac73d26340e5b2b664 100644 (file)
@@ -22,6 +22,9 @@ msgstr ""
 msgid "Advanced Settings"
 msgstr ""
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr ""
 
@@ -61,6 +64,9 @@ msgstr ""
 msgid "Downlink"
 msgstr ""
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr ""
 
index 746fd3e8819b52880c5a1e1e0a01b6619b327456..8f43ae371ad0ed00938f559c6d64cb8b3345f035 100644 (file)
@@ -28,6 +28,9 @@ msgstr "Активні переспрямування UPnP"
 msgid "Advanced Settings"
 msgstr "Додаткові параметри"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr ""
 "Дозволити додавання переспрямування тільки для IP-адрес, що надсилають запити"
@@ -68,6 +71,9 @@ msgstr "UUID пристрою"
 msgid "Downlink"
 msgstr "Низхідний канал"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "Увімкнути функцію NAT-PMP"
 
index d27720d2af6fe59913996dfc04d0801deefa55fb..c933777478df99055e2767f83f40f8ef642b50da 100644 (file)
@@ -27,6 +27,9 @@ msgstr ""
 msgid "Advanced Settings"
 msgstr ""
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr ""
 
@@ -66,6 +69,9 @@ msgstr ""
 msgid "Downlink"
 msgstr "Downlink"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr ""
 
index 6620d93c0d478ef1e7f31b9ba4e703cd41894249..588ad2cf191e4812b48bbeb434777348fdff422c 100644 (file)
@@ -16,31 +16,34 @@ msgstr ""
 msgid ""
 "ACLs specify which external ports may be redirected to which internal "
 "addresses and ports"
-msgstr "指定外部端口的ACL可能会被重定向至某些内部地址及端口"
+msgstr "ACL 指定哪些外部端口可以被重定向至哪些内部地址及端口"
 
 msgid "Action"
 msgstr "动作"
 
 msgid "Active UPnP Redirects"
-msgstr "活动的UPnP重定向"
+msgstr "活动的 UPnP 重定向"
 
 msgid "Advanced Settings"
 msgstr "高级设置"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
-msgstr "允许添加只转发给请求的IP地址(当启用时,UPnP的客户可以只转发到其IP)"
+msgstr "允许只向请求的 IP 地址添加转发"
 
 msgid "Announced model number"
-msgstr "公布的型号"
+msgstr "通告的型号"
 
 msgid "Announced serial number"
-msgstr "公布的序列号"
+msgstr "通告的序列号"
 
 msgid "Clean rules interval"
-msgstr "定时自动清除无效规则"
+msgstr "定时清除规则"
 
 msgid "Clean rules threshold"
-msgstr "启动时清除端口转发"
+msgstr "清除规则阈值"
 
 msgid "Client Address"
 msgstr "客户端地址"
@@ -49,31 +52,34 @@ msgid "Client Port"
 msgstr "客户端端口"
 
 msgid "Collecting data..."
-msgstr "正在收集数据"
+msgstr "正在收集数据..."
 
 msgid "Comment"
 msgstr "备注"
 
 msgid "Delete"
-msgstr ""
+msgstr "删除"
 
 msgid "Description"
-msgstr ""
+msgstr "描述"
 
 msgid "Device UUID"
-msgstr "设备UUID"
+msgstr "设备 UUID"
 
 msgid "Downlink"
 msgstr "下行速率"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
-msgstr "启用NAT-PMP功能"
+msgstr "启用 NAT-PMP 功能"
 
 msgid "Enable UPnP functionality"
-msgstr "启用UPnP功能"
+msgstr "启用 UPnP 功能"
 
 msgid "Enable additional logging"
-msgstr "启用额外的日志记录"
+msgstr "启用额外的日志"
 
 msgid "Enable secure mode"
 msgstr "启用安全模式"
@@ -94,19 +100,19 @@ msgid "Internal ports"
 msgstr "内部端口"
 
 msgid "MiniUPnP ACLs"
-msgstr "MiniUPnPACL"
+msgstr "MiniUPnP 的 ACL"
 
 msgid "MiniUPnP settings"
-msgstr "MiniUPnP设置"
+msgstr "MiniUPnP 设置"
 
 msgid "Notify interval"
-msgstr "è­¦æ\8a¥é\97´é\9a\94"
+msgstr "é\80\9aç\9f¥é\97´é\9a\94"
 
 msgid "Port"
 msgstr "端口"
 
 msgid "Presentation URL"
-msgstr "显示URL"
+msgstr "显示 URL"
 
 msgid "Protocol"
 msgstr "协议"
@@ -118,10 +124,10 @@ msgid "Report system instead of daemon uptime"
 msgstr "用系统运行时间代替进程运行时间"
 
 msgid "Start UPnP and NAT-PMP service"
-msgstr "启动UPnP与NAT-PMP服务"
+msgstr "启动 UPnP 与 NAT-PMP 服务"
 
 msgid "There are no active redirects."
-msgstr "没有活动的重定向"
+msgstr "没有活动的重定向"
 
 msgid "UPnP"
 msgstr "UPnP"
@@ -129,19 +135,19 @@ msgstr "UPnP"
 msgid ""
 "UPnP allows clients in the local network to automatically configure the "
 "router."
-msgstr "UPnP允许局域网内客户端自动设置路由上的端口转发。"
+msgstr "UPnP 允许局域网内客户端自动设置路由器上的端口转发。"
 
 msgid "UPnP lease file"
-msgstr "UPnP租约文件"
+msgstr "UPnP 租约文件"
 
 msgid "Universal Plug & Play"
-msgstr "通用即插即用(UPnP)"
+msgstr "通用即插即用(UPnP)"
 
 msgid "Uplink"
 msgstr "上行速率"
 
 msgid "Value in KByte/s, informational only"
-msgstr "值为KByte/s,仅供参考"
+msgstr "值为 KByte/s,仅供参考"
 
 #~ msgid "Delete Redirect"
 #~ msgstr "删除转发规则"
index 338a6629e212d2f1b39189d82a88a982e5f1dca4..57edb9e4602998d2cd2ac28b68790a958f2975c7 100644 (file)
@@ -25,6 +25,9 @@ msgstr "啓用UPnP從導"
 msgid "Advanced Settings"
 msgstr "進階設定"
 
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
 msgid "Allow adding forwards only to requesting ip addresses"
 msgstr "只允許請求的IP位址新增從導機制"
 
@@ -64,6 +67,9 @@ msgstr "設備UUID獨立識別碼"
 msgid "Downlink"
 msgstr "下載"
 
+msgid "Enable IGDv1 mode"
+msgstr ""
+
 msgid "Enable NAT-PMP functionality"
 msgstr "啓用蘋果NAT-PMP傳輸埠對應通訊協定功能"
 
diff --git a/applications/luci-app-ushare/Makefile b/applications/luci-app-ushare/Makefile
deleted file mode 100644 (file)
index 5c0974c..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# 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:=uShare - UPnP A/V & DLNA Media Server
-LUCI_DEPENDS:=+ushare @BROKEN
-
-include ../../luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-ushare/luasrc/controller/ushare.lua b/applications/luci-app-ushare/luasrc/controller/ushare.lua
deleted file mode 100644 (file)
index c811773..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
--- Copyright 2008 Yanira <forum-2008@email.de>
--- Licensed to the public under the Apache License 2.0.
-
-module("luci.controller.ushare", package.seeall)
-
-function index()
-       if not nixio.fs.access("/etc/config/ushare") then
-               return
-       end
-
-       local page
-
-       page = entry({"admin", "services", "ushare"}, cbi("ushare"), _("uShare"), 60)
-       page.dependent = true
-end
diff --git a/applications/luci-app-ushare/luasrc/model/cbi/ushare.lua b/applications/luci-app-ushare/luasrc/model/cbi/ushare.lua
deleted file mode 100644 (file)
index 0c2d1f0..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
--- Copyright 2008 Yanira <forum-2008@email.de>
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("ushare", translate("uShare"),
-       luci.util.pcdata(translate("uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server component that provides UPnP media devices with information on available multimedia files.")))
-
-s = m:section(TypedSection, "ushare", translate("Settings"))
-s.addremove = false
-s.anonymous = true
-
-s:option(Flag, "enabled", translate("Enable"))
-
-s:option(Value, "username", translate("Username"))
-
-s:option(Value, "servername", translate("Servername"))
-
-dif = s:option( Value, "interface", translate("Interface")) 
-for _, nif in ipairs(luci.sys.net.devices()) do                         
-        if nif ~= "lo" then dif:value(nif) end                          
-end 
-
-s:option(DynamicList, "content_directories", translate("Content directories"))
-
-s:option(Flag, "disable_webif", translate("Disable webinterface"))
-
-s:option(Flag, "disable_telnet", translate("Disable telnet console"))
-
-s:option(Value, "options", translate("Options"))
-
-return m
diff --git a/applications/luci-app-ushare/po/ca/ushare.po b/applications/luci-app-ushare/po/ca/ushare.po
deleted file mode 100644 (file)
index 9d64596..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#  ushare.pot
-#  generated from ./applications/luci-ushare/luasrc/i18n/ushare.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 08:29+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"
-
-msgid "Content directories"
-msgstr "Directoris de contingut"
-
-msgid "Disable telnet console"
-msgstr "Inhabilita la consola telnet"
-
-msgid "Disable webinterface"
-msgstr "Inhabilita la interfície web"
-
-msgid "Enable"
-msgstr "Habilita"
-
-msgid "Interface"
-msgstr "Interfície"
-
-msgid "Options"
-msgstr "Opcions"
-
-msgid "Servername"
-msgstr "Nom de servidor"
-
-msgid "Settings"
-msgstr "Configuració"
-
-msgid "Username"
-msgstr "Nom d'usuari"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-"El uShare és un servidor de mitjans UPnP (TM) A/V i DLNA. Implementa el "
-"component servidor que proveeix els dispositius de mitjans UPnP amb "
-"informació sobre els fitxers de multimèdia disponibles."
diff --git a/applications/luci-app-ushare/po/cs/ushare.po b/applications/luci-app-ushare/po/cs/ushare.po
deleted file mode 100644 (file)
index d908e91..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#  ushare.pot
-#  generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-01-29 21:49+0200\n"
-"Last-Translator: Astran <martin.hromadko@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"
-
-msgid "Content directories"
-msgstr "Složky s obsahem"
-
-msgid "Disable telnet console"
-msgstr "Zakázat telnet konzoli"
-
-msgid "Disable webinterface"
-msgstr "Zakázat webové rozhraní"
-
-msgid "Enable"
-msgstr "Povolit"
-
-msgid "Interface"
-msgstr "Rozhraní"
-
-msgid "Options"
-msgstr "Možnosti"
-
-msgid "Servername"
-msgstr "Název serveru"
-
-msgid "Settings"
-msgstr "Nastavení"
-
-msgid "Username"
-msgstr "Uživatelské jméno"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-"uShare je UPnP (TM) A/V & DLNA Media Server. Implementuje součást serveru, "
-"který poskytuje UPnP mediální zařízení s informacemi o dostupných "
-"multimediálních souborech."
diff --git a/applications/luci-app-ushare/po/de/ushare.po b/applications/luci-app-ushare/po/de/ushare.po
deleted file mode 100644 (file)
index d7d7e22..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-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:32+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"
-
-msgid "Content directories"
-msgstr "Freigabeverzeichnisse"
-
-msgid "Disable telnet console"
-msgstr "Telnet-Konsole deaktivieren"
-
-msgid "Disable webinterface"
-msgstr "Webinterface deaktivieren"
-
-msgid "Enable"
-msgstr "Aktivieren"
-
-msgid "Interface"
-msgstr "Schnittstelle"
-
-msgid "Options"
-msgstr "Optionen"
-
-msgid "Servername"
-msgstr "Servername"
-
-msgid "Settings"
-msgstr "Einstellungen"
-
-msgid "Username"
-msgstr "Benutzername"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-"uShare ist ein uPNP(TM) A/V & DLNA - basierender Medien-Server. Es "
-"implementiert die Serverkomponente, welche uPNP-Geräten Informationen über "
-"verfügbare Mediendateien bereitstellt."
diff --git a/applications/luci-app-ushare/po/el/ushare.po b/applications/luci-app-ushare/po/el/ushare.po
deleted file mode 100644 (file)
index 331c8a0..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-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: 2010-06-30 17:26+0200\n"
-"Last-Translator: Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr>\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"
-
-msgid "Content directories"
-msgstr "Φάκελοι περιεχομένου"
-
-msgid "Disable telnet console"
-msgstr "Απενεργοποίηση τερματικού telnet"
-
-msgid "Disable webinterface"
-msgstr "Απενεργοποίηση διεπαφής web"
-
-msgid "Enable"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Options"
-msgstr "Επιλογές"
-
-msgid "Servername"
-msgstr "Όνομα εξυπηρετητή"
-
-msgid "Settings"
-msgstr "Ρυθμίσεις"
-
-msgid "Username"
-msgstr ""
-
-msgid "uShare"
-msgstr ""
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
diff --git a/applications/luci-app-ushare/po/en/ushare.po b/applications/luci-app-ushare/po/en/ushare.po
deleted file mode 100644 (file)
index 5e5d65f..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#, fuzzy
-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: 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"
-"X-Generator: Translate Toolkit 1.1.1\n"
-
-msgid "Content directories"
-msgstr "Content directories"
-
-msgid "Disable telnet console"
-msgstr "Disable telnet console"
-
-msgid "Disable webinterface"
-msgstr "Disable webinterface"
-
-msgid "Enable"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Options"
-msgstr "Options"
-
-msgid "Servername"
-msgstr "Servername"
-
-msgid "Settings"
-msgstr "Settings"
-
-msgid "Username"
-msgstr ""
-
-msgid "uShare"
-msgstr ""
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
diff --git a/applications/luci-app-ushare/po/es/ushare.po b/applications/luci-app-ushare/po/es/ushare.po
deleted file mode 100644 (file)
index e8422b9..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-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: 2012-08-25 09:23+0200\n"
-"Last-Translator: José Vicente <josevteg@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\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: Pootle 2.0.6\n"
-
-msgid "Content directories"
-msgstr "Directorios de contenido"
-
-msgid "Disable telnet console"
-msgstr "Inhabilitar consola telnet"
-
-msgid "Disable webinterface"
-msgstr "Inhabilitar interfaz web"
-
-msgid "Enable"
-msgstr "Activar"
-
-msgid "Interface"
-msgstr "Interfaz"
-
-msgid "Options"
-msgstr "Opciones"
-
-msgid "Servername"
-msgstr "Nombre para el servidor"
-
-msgid "Settings"
-msgstr "Configuración"
-
-msgid "Username"
-msgstr "Nombre de usuario"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-"uShare es un servidor UPnP (TM) A/V y DLNA. Implementa el componente del "
-"servidor que proporciona a los dispositivos UPnP la información disponible "
-"en los ficheros multimedia."
diff --git a/applications/luci-app-ushare/po/fr/ushare.po b/applications/luci-app-ushare/po/fr/ushare.po
deleted file mode 100644 (file)
index e2e917d..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-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: 2013-08-06 13:57+0200\n"
-"Last-Translator: st <shailjathkr@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"
-
-msgid "Content directories"
-msgstr "Répertoires de contenus"
-
-msgid "Disable telnet console"
-msgstr "Désactiver la console Telnet"
-
-msgid "Disable webinterface"
-msgstr "Désactiver l'interface web"
-
-msgid "Enable"
-msgstr "Activer"
-
-msgid "Interface"
-msgstr "Interface"
-
-msgid "Options"
-msgstr "Options"
-
-msgid "Servername"
-msgstr "Nom du serveur"
-
-msgid "Settings"
-msgstr "Paramètres"
-
-msgid "Username"
-msgstr "Nom d'utilisateur"
-
-msgid "uShare"
-msgstr ""
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
diff --git a/applications/luci-app-ushare/po/he/ushare.po b/applications/luci-app-ushare/po/he/ushare.po
deleted file mode 100644 (file)
index 4858a9a..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#  ushare.pot
-#  generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-06-24 18:47+0200\n"
-"Last-Translator: GiladL <gl1000007@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.4\n"
-
-msgid "Content directories"
-msgstr "ספריות תוכן"
-
-# האם לכתוב טלנט באנגלית (telenet) או בתעתיק עברי (טלנט)?
-msgid "Disable telnet console"
-msgstr "השבת קונסולת telnet"
-
-msgid "Disable webinterface"
-msgstr "השבת מנשק רשת"
-
-msgid "Enable"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Options"
-msgstr "אפשרויות"
-
-msgid "Servername"
-msgstr "שם שרת"
-
-msgid "Settings"
-msgstr "הגדרות"
-
-msgid "Username"
-msgstr ""
-
-# זה שם של תוכנה ולא צריך לתרגם אותו
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
diff --git a/applications/luci-app-ushare/po/hu/ushare.po b/applications/luci-app-ushare/po/hu/ushare.po
deleted file mode 100644 (file)
index 6efa521..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#  ushare.pot
-#  generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-09-13 18:29+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"
-
-msgid "Content directories"
-msgstr "Megosztott könyvtárak"
-
-msgid "Disable telnet console"
-msgstr "Telnet-konzol tiltása"
-
-msgid "Disable webinterface"
-msgstr "Web felület tiltása"
-
-msgid "Enable"
-msgstr "Engedélyezés"
-
-msgid "Interface"
-msgstr "Interfész"
-
-msgid "Options"
-msgstr "Opciók"
-
-msgid "Servername"
-msgstr "Szerver név"
-
-msgid "Settings"
-msgstr "Beállítások"
-
-msgid "Username"
-msgstr "Felhasználónév"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-"Az uShare egy UPnP (TM) A/V & DLNA média szerver. A szerver komponenst "
-"valósítja meg, amely információt szolgáltat az elérhető multimédia fájlokról "
-"az uPnP média eszközök számára."
diff --git a/applications/luci-app-ushare/po/it/ushare.po b/applications/luci-app-ushare/po/it/ushare.po
deleted file mode 100644 (file)
index 5837a11..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-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: 2013-02-03 14:03+0200\n"
-"Last-Translator: Francesco <3gasas@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"
-
-msgid "Content directories"
-msgstr "Percorso dei contenuti"
-
-msgid "Disable telnet console"
-msgstr "Disabilita console telnet"
-
-msgid "Disable webinterface"
-msgstr "Disabilita l'interfaccia web"
-
-msgid "Enable"
-msgstr "Attiva"
-
-msgid "Interface"
-msgstr "Interfaccia"
-
-msgid "Options"
-msgstr "Opzioni"
-
-msgid "Servername"
-msgstr "Nome del server"
-
-msgid "Settings"
-msgstr "Impostazioni"
-
-msgid "Username"
-msgstr "Nome Utente"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-"uShare è un Server Multimediale UPnP (TM) A / V e DLNA. Implementa il "
-"componente server che fornisce ai dispositivi multimediali UPnP, le "
-"informazioni su file multimediali disponibili."
diff --git a/applications/luci-app-ushare/po/ja/ushare.po b/applications/luci-app-ushare/po/ja/ushare.po
deleted file mode 100644 (file)
index a217ece..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-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: 2013-05-04 14:28+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.6\n"
-
-msgid "Content directories"
-msgstr "コンテンツディレクトリ"
-
-msgid "Disable telnet console"
-msgstr "telnelコンソールを無効にする"
-
-msgid "Disable webinterface"
-msgstr "Webインターフェースを無効にする"
-
-msgid "Enable"
-msgstr "サービスを有効にする"
-
-msgid "Interface"
-msgstr "インターフェース"
-
-msgid "Options"
-msgstr "オプション"
-
-msgid "Servername"
-msgstr "サーバー名"
-
-msgid "Settings"
-msgstr "設定"
-
-msgid "Username"
-msgstr "ユーザー名"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-"uShareはUPnP (TM) A/V および DLNA "
-"メディアサーバーであり、UPnPメディアデバイスに対してマルチメディア・ファイル情報を提供するサーバー・コンポーネント機能を実装しています。"
diff --git a/applications/luci-app-ushare/po/ms/ushare.po b/applications/luci-app-ushare/po/ms/ushare.po
deleted file mode 100644 (file)
index 40b24f2..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#  ushare.pot
-#  generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua
-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"
-
-msgid "Content directories"
-msgstr ""
-
-msgid "Disable telnet console"
-msgstr ""
-
-msgid "Disable webinterface"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Options"
-msgstr ""
-
-msgid "Servername"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Username"
-msgstr ""
-
-msgid "uShare"
-msgstr ""
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
diff --git a/applications/luci-app-ushare/po/no/ushare.po b/applications/luci-app-ushare/po/no/ushare.po
deleted file mode 100644 (file)
index 321d29e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-msgid ""
-msgstr ""
-"Last-Translator: Lars Hardy <lars.hardy@gmail.com>\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-msgid "Content directories"
-msgstr "Innholdskataloger"
-
-msgid "Disable telnet console"
-msgstr "Deaktiver telnet konsoll"
-
-msgid "Disable webinterface"
-msgstr "Deaktiver webgrensesnitt"
-
-msgid "Enable"
-msgstr "Aktiver"
-
-msgid "Interface"
-msgstr "Grensesnitt"
-
-msgid "Options"
-msgstr "Alternativer"
-
-msgid "Servername"
-msgstr "Servernavn"
-
-msgid "Settings"
-msgstr "Innstillinger"
-
-msgid "Username"
-msgstr "Brukernavn"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-
-#~ msgid "ushare_desc"
-#~ msgstr "UPnP A/V og DLNA Media Server for Linux."
diff --git a/applications/luci-app-ushare/po/pl/ushare.po b/applications/luci-app-ushare/po/pl/ushare.po
deleted file mode 100644 (file)
index 2a26404..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-#  ushare.pot
-#  generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-09-08 13:18+0200\n"
-"Last-Translator: Staszek <fistaszek@tlen.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"
-
-msgid "Content directories"
-msgstr "Katalogi zawartości"
-
-msgid "Disable telnet console"
-msgstr "Wyłącz konsolę telnet"
-
-msgid "Disable webinterface"
-msgstr "Wyłącz interfejs web"
-
-msgid "Enable"
-msgstr "Włącz"
-
-msgid "Interface"
-msgstr "Interfejs"
-
-msgid "Options"
-msgstr "Opcje"
-
-msgid "Servername"
-msgstr "Nazwa serwera"
-
-msgid "Settings"
-msgstr "Ustawienia"
-
-msgid "Username"
-msgstr "Użytkownik"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-"uShare jest serwerem mediów UPnP (TM) i DLNA. Implementuje serwer, który "
-"udostępnia urządzenia medialne UPnP z informacjami na temat dostępnych "
-"plików multimedialnych."
diff --git a/applications/luci-app-ushare/po/pt-br/ushare.po b/applications/luci-app-ushare/po/pt-br/ushare.po
deleted file mode 100644 (file)
index 5fc872e..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-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: 2012-09-26 23:09+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\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"
-
-msgid "Content directories"
-msgstr "Diretórios de conteúdo"
-
-msgid "Disable telnet console"
-msgstr "Desativar console telnet"
-
-msgid "Disable webinterface"
-msgstr "Desativar interface web"
-
-msgid "Enable"
-msgstr "Habilitar"
-
-msgid "Interface"
-msgstr "Interface"
-
-msgid "Options"
-msgstr "Opções"
-
-msgid "Servername"
-msgstr "Nome do servidor"
-
-msgid "Settings"
-msgstr "Configurações"
-
-msgid "Username"
-msgstr "Nome do usuário"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-"uShare é um Servidor de Mídia DLNA & UPnP (TM) A/V. Implementa o componente "
-"do servidor que provê aos dispositivos de mídia UPnP informações sobre os "
-"arquivos multimídias disponíveis."
diff --git a/applications/luci-app-ushare/po/pt/ushare.po b/applications/luci-app-ushare/po/pt/ushare.po
deleted file mode 100644 (file)
index 795a963..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-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 23:32+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"
-
-msgid "Content directories"
-msgstr "Diretórios de conteúdo"
-
-msgid "Disable telnet console"
-msgstr "Desativar console telnet"
-
-msgid "Disable webinterface"
-msgstr "Desativar interface web"
-
-msgid "Enable"
-msgstr "Ativar"
-
-msgid "Interface"
-msgstr "Interface"
-
-msgid "Options"
-msgstr "Opções"
-
-msgid "Servername"
-msgstr "Nome do servidor"
-
-msgid "Settings"
-msgstr "Configurações"
-
-msgid "Username"
-msgstr "Nome Utilizador"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-"O uShare é um Servidor Multimédia UPnP (TM) A/V & DLNA. Implementa o "
-"componente de servidor que fornece aos dispositivos multimédia UPnP "
-"informações sobre os ficheiros disponiveis."
diff --git a/applications/luci-app-ushare/po/ro/ushare.po b/applications/luci-app-ushare/po/ro/ushare.po
deleted file mode 100644 (file)
index 3c99754..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#  ushare.pot
-#  generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-06-29 20:03+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"
-
-msgid "Content directories"
-msgstr "Conţinut directoare"
-
-msgid "Disable telnet console"
-msgstr "Dezactiveaza consola telnet"
-
-msgid "Disable webinterface"
-msgstr "Dezactiveaza interfata web"
-
-msgid "Enable"
-msgstr "Activează"
-
-msgid "Interface"
-msgstr "Interfaţă"
-
-msgid "Options"
-msgstr "Optiuni"
-
-msgid "Servername"
-msgstr "Numele serverului"
-
-msgid "Settings"
-msgstr "Setari"
-
-msgid "Username"
-msgstr "Utilizator"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
diff --git a/applications/luci-app-ushare/po/ru/ushare.po b/applications/luci-app-ushare/po/ru/ushare.po
deleted file mode 100644 (file)
index ac08e94..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: LuCI: ushare\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-08-15 11:29+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\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"
-"X-Poedit-SourceCharset: UTF-8\n"
-
-msgid "Content directories"
-msgstr "Директории с содержимым"
-
-msgid "Disable telnet console"
-msgstr "Выключить telnet-консоль"
-
-msgid "Disable webinterface"
-msgstr "Выключить веб-интерфейс"
-
-msgid "Enable"
-msgstr "Включить"
-
-msgid "Interface"
-msgstr "Интерфейс"
-
-msgid "Options"
-msgstr "Опции"
-
-msgid "Servername"
-msgstr "Имя сервера"
-
-msgid "Settings"
-msgstr "Настройки"
-
-msgid "Username"
-msgstr "Имя пользователя"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-"uShare - это UPnP (TM) A/V DLNA медиа-сервер, который предоставляет "
-"мультимедийным устройствам информацию о доступных медиа-файлах."
diff --git a/applications/luci-app-ushare/po/sk/ushare.po b/applications/luci-app-ushare/po/sk/ushare.po
deleted file mode 100644 (file)
index 4c9022b..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"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"
-
-msgid "Content directories"
-msgstr ""
-
-msgid "Disable telnet console"
-msgstr ""
-
-msgid "Disable webinterface"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Options"
-msgstr ""
-
-msgid "Servername"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Username"
-msgstr ""
-
-msgid "uShare"
-msgstr ""
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
diff --git a/applications/luci-app-ushare/po/sv/ushare.po b/applications/luci-app-ushare/po/sv/ushare.po
deleted file mode 100644 (file)
index 7528484..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: sv\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Content directories"
-msgstr ""
-
-msgid "Disable telnet console"
-msgstr ""
-
-msgid "Disable webinterface"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Options"
-msgstr ""
-
-msgid "Servername"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Username"
-msgstr ""
-
-msgid "uShare"
-msgstr ""
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-
-#~ msgid ""
-#~ "ACLs specify which external ports may be redirected to which internal "
-#~ "addresses and ports"
-#~ msgstr ""
-#~ "ACL:er anger vilka externa portar som ska omdirigeras till vilka interna "
-#~ "adresser och portar"
-
-#~ msgid "Action"
-#~ msgstr "Handling"
-
-#~ msgid "Active UPnP Redirects"
-#~ msgstr "Aktivera UPnP-omdirigeringar"
-
-#~ msgid "Advanced Settings"
-#~ msgstr "Avancerade inställningar"
-
-#~ msgid "Announced model number"
-#~ msgstr "Aviserat modellnummer"
-
-#~ msgid "Announced serial number"
-#~ msgstr "Aviserat serienummer"
-
-#~ msgid "Client Address"
-#~ msgstr "Klient-adress"
-
-#~ msgid "Client Port"
-#~ msgstr "Klient-port"
-
-#~ msgid "Collecting data..."
-#~ msgstr "Samlar in data..."
-
-#~ msgid "Comment"
-#~ msgstr "Kommentar"
-
-#~ msgid "Delete Redirect"
-#~ msgstr "Ta bort omdirigering"
-
-#~ msgid "Device UUID"
-#~ msgstr "Enhetens UUID"
-
-#~ msgid "Downlink"
-#~ msgstr "Nerlänk"
-
-#~ msgid "Enable NAT-PMP functionality"
-#~ msgstr "Aktivera NAT-PMP-funktionalitet"
-
-#~ msgid "Enable UPnP functionality"
-#~ msgstr "Aktivera UPnP-funktionalitet"
-
-#~ msgid "Enable additional logging"
-#~ msgstr "Aktivera ytterligare loggning"
-
-#~ msgid "Enable secure mode"
-#~ msgstr "Aktivera säkert läge"
-
-#~ msgid "External Port"
-#~ msgstr "Extern port"
-
-#~ msgid "External ports"
-#~ msgstr "Externa portar"
-
-#~ msgid "General Settings"
-#~ msgstr "Generella inställningar"
-
-#~ msgid "Internal addresses"
-#~ msgstr "Interna adresser"
-
-#~ msgid "Internal ports"
-#~ msgstr "Interna portar"
-
-#~ msgid "MiniUPnP ACLs"
-#~ msgstr "ACL:er för MiniUPnP"
-
-#~ msgid "MiniUPnP settings"
-#~ msgstr "Inställningar för MiniUPnP"
-
-#~ msgid "Notify interval"
-#~ msgstr "Intervall för avisering"
-
-#~ msgid "Port"
-#~ msgstr "Port"
-
-#~ msgid "Presentation URL"
-#~ msgstr "Presentationens URL"
-
-#~ msgid "Protocol"
-#~ msgstr "Protokoll"
-
-#~ msgid "Puts extra debugging information into the system log"
-#~ msgstr "Lägger extra felsökningsinformation till system-loggen"
-
-#~ msgid "Report system instead of daemon uptime"
-#~ msgstr "Rapportera systemet iställer för demonens upptid"
-
-#~ msgid "Start UPnP and NAT-PMP service"
-#~ msgstr "Starta UPnP och NAT-PMP-tjänsten"
-
-#~ msgid "There are no active redirects."
-#~ msgstr "Det finns inga aktiva omdirigeringar"
-
-#~ msgid "UPnP"
-#~ msgstr "UPnP"
-
-#~ msgid ""
-#~ "UPnP allows clients in the local network to automatically configure the "
-#~ "router."
-#~ msgstr ""
-#~ "UPnP tillåter klienter i det lokala nätverket att automatiskt ställa in "
-#~ "routern."
-
-#~ msgid "UPnP lease file"
-#~ msgstr "Hyr-fil för UPnP"
-
-#~ msgid "Universal Plug & Play"
-#~ msgstr "Universiell Plug & Play"
-
-#~ msgid "Uplink"
-#~ msgstr "Upplänk"
-
-#~ msgid "Value in KByte/s, informational only"
-#~ msgstr "Värde i KByte/s, endast informell"
diff --git a/applications/luci-app-ushare/po/templates/ushare.pot b/applications/luci-app-ushare/po/templates/ushare.pot
deleted file mode 100644 (file)
index 7e4dbc1..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-msgid "Content directories"
-msgstr ""
-
-msgid "Disable telnet console"
-msgstr ""
-
-msgid "Disable webinterface"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Options"
-msgstr ""
-
-msgid "Servername"
-msgstr ""
-
-msgid "Settings"
-msgstr ""
-
-msgid "Username"
-msgstr ""
-
-msgid "uShare"
-msgstr ""
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
diff --git a/applications/luci-app-ushare/po/tr/ushare.po b/applications/luci-app-ushare/po/tr/ushare.po
deleted file mode 100644 (file)
index c905c57..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#  ushare.pot
-#  generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-10-11 22:33+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"
-
-msgid "Content directories"
-msgstr "İçerik Dizinleri"
-
-msgid "Disable telnet console"
-msgstr "Telnet Konsolunu Kapatma"
-
-msgid "Disable webinterface"
-msgstr "Web Arayüzünü Kapatma"
-
-msgid "Enable"
-msgstr "Aktif Hale Getir"
-
-msgid "Interface"
-msgstr "Arayüz"
-
-msgid "Options"
-msgstr "Seçenekler"
-
-msgid "Servername"
-msgstr "Sunucuadı"
-
-msgid "Settings"
-msgstr "Ayarlar"
-
-msgid "Username"
-msgstr "Kullanıcıadı"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
diff --git a/applications/luci-app-ushare/po/uk/ushare.po b/applications/luci-app-ushare/po/uk/ushare.po
deleted file mode 100644 (file)
index d79f896..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#  ushare.pot
-#  generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-05-26 18:43+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"
-
-msgid "Content directories"
-msgstr "Каталоги даних"
-
-msgid "Disable telnet console"
-msgstr "Вимкнути консоль Telnet"
-
-msgid "Disable webinterface"
-msgstr "Вимкнути веб-інтерфейс"
-
-msgid "Enable"
-msgstr "Увімкнути"
-
-msgid "Interface"
-msgstr "Інтерфейс"
-
-msgid "Options"
-msgstr "Опції"
-
-msgid "Servername"
-msgstr "Ім'я сервера"
-
-msgid "Settings"
-msgstr "Настройки"
-
-msgid "Username"
-msgstr "Ім'я користувача"
-
-msgid "uShare"
-msgstr "uShare"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-"uShare є UPnP (TM) A/V DLNA медіа-сервером, який надає UPnP медіа-пристроям "
-"інформацію про наявні мультимедійні файли."
diff --git a/applications/luci-app-ushare/po/vi/ushare.po b/applications/luci-app-ushare/po/vi/ushare.po
deleted file mode 100644 (file)
index 20e5df7..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#  ushare.pot
-#  generated from ./applications/luci-ushare/luasrc/i18n/ushare.en.lua
-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-13 04:01+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"
-
-msgid "Content directories"
-msgstr "Danh bạ nội dung "
-
-msgid "Disable telnet console"
-msgstr "Vô hiệu hóa khiển telnet"
-
-msgid "Disable webinterface"
-msgstr "Vô hiệu hóa giao diện web"
-
-msgid "Enable"
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Options"
-msgstr "Lựa chọn "
-
-msgid "Servername"
-msgstr "tên máy chủ"
-
-msgid "Settings"
-msgstr "Cài đặt"
-
-msgid "Username"
-msgstr ""
-
-msgid "uShare"
-msgstr ""
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
diff --git a/applications/luci-app-ushare/po/zh-cn/ushare.po b/applications/luci-app-ushare/po/zh-cn/ushare.po
deleted file mode 100644 (file)
index f426526..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-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-09-18 16:26+0200\n"
-"Last-Translator: nKsyn <e.nksyn@gmail.com>\n"
-"Language-Team: QQ Group 75543259\n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Content directories"
-msgstr "目录"
-
-msgid "Disable telnet console"
-msgstr "关闭telnet管理"
-
-msgid "Disable webinterface"
-msgstr "关闭界面管理"
-
-msgid "Enable"
-msgstr "启用"
-
-msgid "Interface"
-msgstr "网络接口"
-
-msgid "Options"
-msgstr "选项"
-
-msgid "Servername"
-msgstr "服务器名"
-
-msgid "Settings"
-msgstr "设置"
-
-msgid "Username"
-msgstr "用户名"
-
-msgid "uShare"
-msgstr "UPNP流媒体服务"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr ""
-"uShare是一个UPnP(TM) A/V和DLNA媒体服务器。可以将多媒体文件共享到支持UPnP的设"
-"备上。"
diff --git a/applications/luci-app-ushare/po/zh-tw/ushare.po b/applications/luci-app-ushare/po/zh-tw/ushare.po
deleted file mode 100644 (file)
index eba6677..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-08-10 12:32+0200\n"
-"Last-Translator: mp607 <mickey60711@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"
-
-msgid "Content directories"
-msgstr "目錄"
-
-msgid "Disable telnet console"
-msgstr "關閉telnet管理"
-
-msgid "Disable webinterface"
-msgstr "關閉網路介面管理"
-
-msgid "Enable"
-msgstr "啟用"
-
-msgid "Interface"
-msgstr "網路介面"
-
-msgid "Options"
-msgstr "選項"
-
-msgid "Servername"
-msgstr "伺服器名稱"
-
-msgid "Settings"
-msgstr "設定"
-
-msgid "Username"
-msgstr "使用者名稱"
-
-msgid "uShare"
-msgstr "UPnP多媒體服務"
-
-msgid ""
-"uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
-"component that provides UPnP media devices with information on available "
-"multimedia files."
-msgstr "uShare是一個UPnP (TM) A/V & DLNA多媒體伺服器。可以將多媒體檔案共用分享到支援UPnP的裝置上"
diff --git a/applications/luci-app-ushare/root/etc/uci-defaults/40_luci-ushare b/applications/luci-app-ushare/root/etc/uci-defaults/40_luci-ushare
deleted file mode 100755 (executable)
index 8bcb6e4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-uci -q batch <<-EOF >/dev/null
-       delete ucitrack.@ushare[-1]
-       add ucitrack ushare
-       set ucitrack.@ushare[-1].init=ushare
-       commit ucitrack
-EOF
-
-rm -f /tmp/luci-indexcache
-exit 0
index 2b8d9ff9c902a0e84e8cd9da49260974aba4466f..42d7d2404b8b37e6b644682571f29576c29f59f9 100644 (file)
@@ -21,12 +21,13 @@ style = (style and #style > 0) and style or "s"
 -- render image
 --
 if iface then
-       style = style:gsub("[^%w]", "")
-       iface = iface:gsub("[^%w%.%-%_]", "")
-
        luci.http.prepare_content("image/png")
 
-       local png = io.popen("vnstati -i '%s' '-%s' -o -" % { iface, style })
+       local png = io.popen("vnstati -i %s -%s -o -" %{
+               utl.shellquote(iface),
+               utl.shellquote(style)
+       })
+
        luci.http.write(png:read("*a"))
        png:close()
 
@@ -89,7 +90,7 @@ dbdir = dbdir or "/var/lib/vnstat"
 <%
        end
      end
-   end 
+   end
 %>
 
 <% if empty then %>
index 5254ca1ee1c0f226d2f8ad6481fcf5770b33b233..42e7a5ae5034a214146584b18120eba7e3b1ad40 100644 (file)
@@ -1,21 +1,22 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: vnstat\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2012-08-15 11:48+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2012-08-15 11:48+0300\n"
+"PO-Revision-Date: 2018-01-13 15:01+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка config Ñ\84айла"
 
 msgid "Daily traffic"
 msgstr "Трафик за день"
@@ -36,8 +37,8 @@ msgid ""
 "No database has been set up yet. Go to the VnStat configuration and enable "
 "monitoring for one or more interfaces."
 msgstr ""
-"Ð\91аза Ð´Ð°Ð½Ð½Ñ\8bÑ\85 Ð½Ðµ Ð½Ð°Ñ\81Ñ\82Ñ\80оена. Ð\9fеÑ\80ейдиÑ\82е Ð² ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86иÑ\8e Ð¸ Ñ\83кажиÑ\82е Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81Ñ\8b Ð´Ð»Ñ\8f "
-"сбора статистики."
+"Ð\91аза Ð´Ð°Ð½Ð½Ñ\8bÑ\85 Ð½Ðµ Ð½Ð°Ñ\81Ñ\82Ñ\80оена. Ð\92Ñ\8bполниÑ\82е Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ð¸ Ñ\83кажиÑ\82е Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81Ñ\8b Ð´Ð»Ñ\8f Ñ\81боÑ\80а "
+"статистики."
 
 msgid "Restart VnStat"
 msgstr "Перезапустить VnStat"
@@ -66,6 +67,3 @@ msgid ""
 msgstr ""
 "VnStat - монитор сетевого трафика для Linux, собирающий статистику по "
 "выбранным интерфейсам."
-
-#~ msgid "The VnStat service has been restarted."
-#~ msgstr "VnStat сервис перезапущен."
diff --git a/applications/luci-app-voice-core/Makefile b/applications/luci-app-voice-core/Makefile
deleted file mode 100644 (file)
index 32c476c..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# 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 Voice Software (Core)
-LUCI_DEPENDS:=@BROKEN
-
-include ../../luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-voice-core/luasrc/controller/luci_voice.lua b/applications/luci-app-voice-core/luasrc/controller/luci_voice.lua
deleted file mode 100644 (file)
index b37018d..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
--- Copyright 2009 Daniel Dickinson
--- Licensed to the public under the Apache License 2.0.
-
-module("luci.controller.luci_voice", package.seeall)
-
-function index()
-   local e
-
-   e = entry({"admin", "voice"}, template("luci_voice/index") , _("Voice"), 90)
-   e.index = true
-
-   e = entry({"mini", "voice"}, template("luci_voice/index"), _("Voice"), 90)
-   e.index = true
-
-   e = entry({"mini", "voice", "phones"}, template("luci_voice/phone_index"), _("Phones"), 90)
-   e.index = true
-
-   e = entry({"admin", "voice", "phones"}, template("luci_voice/phone_index"), _("Phones"), 90)
-   e.index = true
-
-end
diff --git a/applications/luci-app-voice-core/luasrc/view/luci_voice/index.htm b/applications/luci-app-voice-core/luasrc/view/luci_voice/index.htm
deleted file mode 100644 (file)
index e14862e..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<%#
- Copyright 2009 Daniel Dickinson
- Licensed to the public under the Apache License 2.0.
--%>
-
-<%+header%>
-<h2 name="content">Voice</h2>
-<p>Here you can control OpenWRT voice-related settings and see
-  voice-related information from OpenWRT</p>
-<p>In particular Asterisk configuration and information is displayed
-  here, as well as diagnostics that specifically apply to voice but are
-  not general networking diagnostics (e.g. includes SIP device scans, but not
-  ping tests).  Includes PSTN phones as well as VoIP and possibly
-  non-telephony related options.
-</p>
-<%+footer%>
diff --git a/applications/luci-app-voice-core/luasrc/view/luci_voice/phone_index.htm b/applications/luci-app-voice-core/luasrc/view/luci_voice/phone_index.htm
deleted file mode 100644 (file)
index c4466cb..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<%#
- Copyright 2009 Daniel Dickinson
- Licensed to the public under the Apache License 2.0.
--%>
-
-<%+header%>
-<h2 name="content">Phones</h2>
-<p>Here you can control phone configuration and information in OpenWRT</p>
-<p>You can control the setup of phone clients and servers and see
-  information such as diagnostics related to phone devices from this menu.
-</p>
-<%+footer%>
diff --git a/applications/luci-app-voice-core/po/ca/voice_core.po b/applications/luci-app-voice-core/po/ca/voice_core.po
deleted file mode 100644 (file)
index 0686209..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-29 01:58+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"
-
-msgid "Phones"
-msgstr "Telèfons"
-
-msgid "Voice"
-msgstr "Veu"
diff --git a/applications/luci-app-voice-core/po/cs/voice_core.po b/applications/luci-app-voice-core/po/cs/voice_core.po
deleted file mode 100644 (file)
index e4eae35..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-01-29 21:47+0200\n"
-"Last-Translator: Astran <martin.hromadko@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"
-
-msgid "Phones"
-msgstr "Telefony"
-
-msgid "Voice"
-msgstr "Hlas"
-
-#~ msgid "l_v_adminphones"
-#~ msgstr "Telefony"
diff --git a/applications/luci-app-voice-core/po/de/voice_core.po b/applications/luci-app-voice-core/po/de/voice_core.po
deleted file mode 100644 (file)
index 2a03b63..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-01-28 22:20+0200\n"
-"Last-Translator: DAC324 <gerd_roethig@web.de>\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"
-
-msgid "Phones"
-msgstr "Telefone"
-
-msgid "Voice"
-msgstr "Sprache"
diff --git a/applications/luci-app-voice-core/po/el/voice_core.po b/applications/luci-app-voice-core/po/el/voice_core.po
deleted file mode 100644 (file)
index 01abb41..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-02-16 19:15+0200\n"
-"Last-Translator: Jinxcat <bikkit@gmail.com>\n"
-"Language-Team: none\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"
-
-msgid "Phones"
-msgstr "Τηλέφωνα"
-
-msgid "Voice"
-msgstr ""
diff --git a/applications/luci-app-voice-core/po/en/voice_core.po b/applications/luci-app-voice-core/po/en/voice_core.po
deleted file mode 100644 (file)
index 297f873..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# Voice Core.
-# Copyright (C) 2009 Daniel Dickinson
-# Daniel Dickinson <crazycshore@gmail.com>, 2009.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2009-07-16 22:19-0400\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"
-
-msgid "Phones"
-msgstr "Phones"
-
-msgid "Voice"
-msgstr ""
-
-#~ msgid "l_v_adminphones"
-#~ msgstr "Phones"
diff --git a/applications/luci-app-voice-core/po/es/voice_core.po b/applications/luci-app-voice-core/po/es/voice_core.po
deleted file mode 100644 (file)
index 74e2c23..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-07-28 23:17+0200\n"
-"Last-Translator: Daniel <danips@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: Pootle 2.0.6\n"
-
-msgid "Phones"
-msgstr "Teléfonos"
-
-msgid "Voice"
-msgstr "Voz"
-
-#~ msgid "l_v_adminphones"
-#~ msgstr "l_v_adminphones"
diff --git a/applications/luci-app-voice-core/po/fr/voice_core.po b/applications/luci-app-voice-core/po/fr/voice_core.po
deleted file mode 100644 (file)
index 71ef062..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-11-06 16:09+0200\n"
-"Last-Translator: hogsim <hogsim@gmail.com>\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"
-
-msgid "Phones"
-msgstr "Téléphones"
-
-msgid "Voice"
-msgstr "Voix"
-
-#~ msgid "l_v_adminphones"
-#~ msgstr "Téléphones"
diff --git a/applications/luci-app-voice-core/po/he/voice_core.po b/applications/luci-app-voice-core/po/he/voice_core.po
deleted file mode 100644 (file)
index 74440e3..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-09-10 03:44+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"
-
-msgid "Phones"
-msgstr "טלפונים"
-
-msgid "Voice"
-msgstr "קול"
-
-# מה בדיוק מתרגמים כאן? אם זה phones אז התרגום הוא טלפונים. אם זה l_v_adminphones אז זה מונח טכני וצריך להשאיר אותו ללא שינוי
-#~ msgid "l_v_adminphones"
-#~ msgstr "טלפונים"
diff --git a/applications/luci-app-voice-core/po/hu/voice_core.po b/applications/luci-app-voice-core/po/hu/voice_core.po
deleted file mode 100644 (file)
index 07eaa14..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-04-01 09:34+0200\n"
-"Last-Translator: juhosg <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.4\n"
-
-msgid "Phones"
-msgstr "Telefonok"
-
-msgid "Voice"
-msgstr "Hang"
-
-#~ msgid "l_v_adminphones"
-#~ msgstr "l_v_adminphones"
diff --git a/applications/luci-app-voice-core/po/it/voice_core.po b/applications/luci-app-voice-core/po/it/voice_core.po
deleted file mode 100644 (file)
index 4d22ff0..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-02-03 14:00+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"
-
-msgid "Phones"
-msgstr "Telefoni"
-
-msgid "Voice"
-msgstr "Voce"
-
-#~ msgid "l_v_adminphones"
-#~ msgstr "l_v_adminphones"
diff --git a/applications/luci-app-voice-core/po/ja/voice_core.po b/applications/luci-app-voice-core/po/ja/voice_core.po
deleted file mode 100644 (file)
index c7e60e2..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-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"
-
-msgid "Phones"
-msgstr "電話"
-
-msgid "Voice"
-msgstr ""
-
-#~ msgid "l_v_adminphones"
-#~ msgstr "l_v_adminphones"
diff --git a/applications/luci-app-voice-core/po/ms/voice_core.po b/applications/luci-app-voice-core/po/ms/voice_core.po
deleted file mode 100644 (file)
index a866bec..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-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"
-
-msgid "Phones"
-msgstr ""
-
-msgid "Voice"
-msgstr ""
diff --git a/applications/luci-app-voice-core/po/no/voice_core.po b/applications/luci-app-voice-core/po/no/voice_core.po
deleted file mode 100644 (file)
index a0149da..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-msgid ""
-msgstr ""
-"Last-Translator: Lars Hardy <lars.hardy@gmail.com>\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-msgid "Phones"
-msgstr "Telefoner"
-
-msgid "Voice"
-msgstr "Voice"
-
-#~ msgid "l_v_adminphones"
-#~ msgstr "Admin Telefoner"
diff --git a/applications/luci-app-voice-core/po/pl/voice_core.po b/applications/luci-app-voice-core/po/pl/voice_core.po
deleted file mode 100644 (file)
index 39950f8..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-08-24 07:03+0200\n"
-"Last-Translator: goodgod261 <goodgod261@wp.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"
-
-msgid "Phones"
-msgstr "Telefony"
-
-msgid "Voice"
-msgstr "Głos"
-
-#~ msgid "l_v_adminphones"
-#~ msgstr "l_v_adminphones"
diff --git a/applications/luci-app-voice-core/po/pt-br/voice_core.po b/applications/luci-app-voice-core/po/pt-br/voice_core.po
deleted file mode 100644 (file)
index 18cab72..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-07-05 06:44+0200\n"
-"Last-Translator: rafaelff1 <rafael.f.f1@gmail.com>\n"
-"Language-Team: none\n"
-"Language: pt_BR\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Phones"
-msgstr "Telefones"
-
-msgid "Voice"
-msgstr "Voz"
-
-#~ msgid "l_v_adminphones"
-#~ msgstr "l_v_adminphones"
diff --git a/applications/luci-app-voice-core/po/pt/voice_core.po b/applications/luci-app-voice-core/po/pt/voice_core.po
deleted file mode 100644 (file)
index 07d6093..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-05-01 00:34+0200\n"
-"Last-Translator: pedromrgoncalves <pedromrgoncalves@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"
-
-msgid "Phones"
-msgstr "Telefones"
-
-msgid "Voice"
-msgstr "Voz"
diff --git a/applications/luci-app-voice-core/po/ro/voice_core.po b/applications/luci-app-voice-core/po/ro/voice_core.po
deleted file mode 100644 (file)
index 1776a51..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-09-25 19:14+0200\n"
-"Last-Translator: Mihai <WyRwSyK@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"
-
-msgid "Phones"
-msgstr "Telefoane"
-
-msgid "Voice"
-msgstr "Voce"
-
-#~ msgid "l_v_adminphones"
-#~ msgstr "l_v_adminphones"
diff --git a/applications/luci-app-voice-core/po/ru/voice_core.po b/applications/luci-app-voice-core/po/ru/voice_core.po
deleted file mode 100644 (file)
index b6631df..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: LuCI: voice_core\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2012-08-15 11:23+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\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"
-"X-Poedit-SourceCharset: UTF-8\n"
-
-msgid "Phones"
-msgstr "Телефоны"
-
-msgid "Voice"
-msgstr "Голос"
-
-#~ msgid "l_v_adminphones"
-#~ msgstr "l_v_adminphones"
diff --git a/applications/luci-app-voice-core/po/sk/voice_core.po b/applications/luci-app-voice-core/po/sk/voice_core.po
deleted file mode 100644 (file)
index 9c30581..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"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"
-
-msgid "Phones"
-msgstr ""
-
-msgid "Voice"
-msgstr ""
diff --git a/applications/luci-app-voice-core/po/sv/voice_core.po b/applications/luci-app-voice-core/po/sv/voice_core.po
deleted file mode 100644 (file)
index 803726a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-04-28 06:14+0200\n"
-"Last-Translator: Umeaboy <kristoffer.grundstrom1983@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"
-
-msgid "Phones"
-msgstr "Telefoner"
-
-msgid "Voice"
-msgstr "Röst"
diff --git a/applications/luci-app-voice-core/po/templates/voice_core.pot b/applications/luci-app-voice-core/po/templates/voice_core.pot
deleted file mode 100644 (file)
index 64c93eb..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-msgid "Phones"
-msgstr ""
-
-msgid "Voice"
-msgstr ""
diff --git a/applications/luci-app-voice-core/po/tr/voice_core.po b/applications/luci-app-voice-core/po/tr/voice_core.po
deleted file mode 100644 (file)
index 642538e..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-10-11 22:25+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"
-
-msgid "Phones"
-msgstr "Telefonlar"
-
-msgid "Voice"
-msgstr "Ses"
diff --git a/applications/luci-app-voice-core/po/uk/voice_core.po b/applications/luci-app-voice-core/po/uk/voice_core.po
deleted file mode 100644 (file)
index 4886d72..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-12-29 12:56+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"
-
-msgid "Phones"
-msgstr "Телефони"
-
-msgid "Voice"
-msgstr "Голос"
-
-#~ msgid "l_v_adminphones"
-#~ msgstr "l_v_adminphones"
diff --git a/applications/luci-app-voice-core/po/vi/voice_core.po b/applications/luci-app-voice-core/po/vi/voice_core.po
deleted file mode 100644 (file)
index 3e45434..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-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"
-
-msgid "Phones"
-msgstr ""
-
-msgid "Voice"
-msgstr ""
diff --git a/applications/luci-app-voice-core/po/zh-cn/voice_core.po b/applications/luci-app-voice-core/po/zh-cn/voice_core.po
deleted file mode 100644 (file)
index 0978889..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-10-08 13:41+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
-"Language-Team: none\n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Phones"
-msgstr "话机"
-
-msgid "Voice"
-msgstr "语音"
diff --git a/applications/luci-app-voice-core/po/zh-tw/voice_core.po b/applications/luci-app-voice-core/po/zh-tw/voice_core.po
deleted file mode 100644 (file)
index e1bbf7a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-14 10:41+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"
-
-msgid "Phones"
-msgstr "電話"
-
-msgid "Voice"
-msgstr "語音"
diff --git a/applications/luci-app-voice-diag/Makefile b/applications/luci-app-voice-diag/Makefile
deleted file mode 100644 (file)
index 2d47918..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# 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 Voice Software (Diagnostics)
-LUCI_DEPENDS:=+luci-app-diag-devinfo @BROKEN
-
-include ../../luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-voice-diag/luasrc/controller/luci_voice/luci_voice_diag.lua b/applications/luci-app-voice-diag/luasrc/controller/luci_voice/luci_voice_diag.lua
deleted file mode 100644 (file)
index 16a79d9..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
--- Copyright 2009 Daniel Dickinson
--- Licensed to the public under the Apache License 2.0.
-
-module("luci.controller.luci_voice.luci_voice_diag", package.seeall)
-
-function index()
-       local e
-
-       e = entry({"admin", "voice", "diag"}, template("luci_voice/diag_index"), _("Diagnostics"), 90)
-       e.index = true
-       e.dependent = true
-end
diff --git a/applications/luci-app-voice-diag/luasrc/view/luci_voice/diag_index.htm b/applications/luci-app-voice-diag/luasrc/view/luci_voice/diag_index.htm
deleted file mode 100644 (file)
index e324fab..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<%#
- Copyright 2009 Daniel Dickinson
- Licensed to the public under the Apache License 2.0.
--%>
-
-<%+header%>
-<h2 name="content"><%:Diagnostics%></h2>
-<p><%:Under this menu are options that allow you to configure and perform tests on the voice operations of your system.  These are known as diagnostics.%></p>
-<p><%:The diagnostics available on your device depend on the modules that you have installed.%></p>
-<%+footer%>
diff --git a/applications/luci-app-voice-diag/po/ca/voice_diag.po b/applications/luci-app-voice-diag/po/ca/voice_diag.po
deleted file mode 100644 (file)
index 0396100..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-29 02:00+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"
-
-msgid "Diagnostics"
-msgstr "Diagnòstics"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Els diagnòstics disponibles en el vostre dispositiu depenen dels mòduls que "
-"teniu instal·lats."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"En aquest menú estan opcions que us permeten configurar i realitzar proves "
-"en les operacions de veu del vostre sistema. Aquestes es coneixen com "
-"diagnòstics."
diff --git a/applications/luci-app-voice-diag/po/cs/voice_diag.po b/applications/luci-app-voice-diag/po/cs/voice_diag.po
deleted file mode 100644 (file)
index 4939d20..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-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"
-
-msgid "Diagnostics"
-msgstr "Diagnostika"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Diagnostiky, dostupné na vašem zařízení, závisí na modulech, které máte "
-"nainstalovány."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"Pod tímto menu se nachází možnosti, které vám umožní nastavovat a provádět "
-"testy hlasových operací vašeho systému. Tyto jsou známy pod názvem "
-"diagnostika."
-
-#~ msgid "l_v_d_admindiag"
-#~ msgstr "Diagnostika"
diff --git a/applications/luci-app-voice-diag/po/de/voice_diag.po b/applications/luci-app-voice-diag/po/de/voice_diag.po
deleted file mode 100644 (file)
index f60dc08..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-09-08 15:21+0200\n"
-"Last-Translator: Manuel <freifunk@somakoma.de>\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.4\n"
-
-msgid "Diagnostics"
-msgstr "Diagnose"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Welche Diagnosetools auf diesem System verfügbar sind hängt davon ab, welche "
-"Module installiert sind."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"Unter diesem Menüpunkt können Diagnosetools für sprachbezogene Dienste "
-"konfiguriert und ausgeführt werden."
diff --git a/applications/luci-app-voice-diag/po/el/voice_diag.po b/applications/luci-app-voice-diag/po/el/voice_diag.po
deleted file mode 100644 (file)
index 4ff4f86..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-03-18 17:15+0200\n"
-"Last-Translator: Vasilis <acinonyx@openwrt.gr>\n"
-"Language-Team: none\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"
-
-msgid "Diagnostics"
-msgstr "Διαγνωστικά"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Τα διαγνωστικά που είναι διαθέσιμα για την συσκευή σας, εξαρτώνται από τα "
-"αρθρώματα που έχετε εγκατεστημένα."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"Κάτω από αυτό το μενού βρίσκονται επιλογές που σας επιτρέπουν να "
-"παραμετροποιήσετε και να πραγματοποιήσετε δοκιμές στις φωνητικές λειτουργίες "
-"του συστήματός σας. Είναι γνωστές ως διαγνωστικά."
-
-#~ msgid "l_v_d_admindiag"
-#~ msgstr "l_v_d_admindiag"
diff --git a/applications/luci-app-voice-diag/po/en/voice_diag.po b/applications/luci-app-voice-diag/po/en/voice_diag.po
deleted file mode 100644 (file)
index 12bb459..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# Voice Diagnostics.
-# Copyright (C) 2009 Daniel Dickinson
-# Daniel Dickinson <crazycshore@gmail.com>, 2009.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2009-07-16 22:26-0400\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"
-
-msgid "Diagnostics"
-msgstr "Diagnostics"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system.  These are known as diagnostics."
-
-#~ msgid "l_v_d_admindiag"
-#~ msgstr "Diagnostics"
diff --git a/applications/luci-app-voice-diag/po/es/voice_diag.po b/applications/luci-app-voice-diag/po/es/voice_diag.po
deleted file mode 100644 (file)
index f2f4da2..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-04-16 00:58+0200\n"
-"Last-Translator: Jose <jarre2_es_jose@hotmail.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: Pootle 2.0.4\n"
-
-msgid "Diagnostics"
-msgstr "Diagnósticos"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Los tipos de diagnósticos disponibles en el dispositivo dependen de los "
-"módulos que ha instalado."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"En este menú hay opciones que permite realizar pruebas de configuración y "
-"funcionamiento de las operaciones de voz en su sistema. Estas opciones se "
-"conocen como diagósticos."
-
-#~ msgid "l_v_d_admindiag"
-#~ msgstr "l_v_d_admindiag"
diff --git a/applications/luci-app-voice-diag/po/fr/voice_diag.po b/applications/luci-app-voice-diag/po/fr/voice_diag.po
deleted file mode 100644 (file)
index c550f06..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-01-15 07:08+0200\n"
-"Last-Translator: desillu <ledesillusionniste@hotmail.com>\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.4\n"
-
-msgid "Diagnostics"
-msgstr "Diagnostics"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Les diagnostics disponibles pour votre périphérique dépendent des modules "
-"que vous avez installé."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"Ce menu contient des options vous permettant de configurer et lancer des "
-"tests sur les fonctions vocales de votre système. Ils sont nommés "
-"diagnostics."
-
-#~ msgid "l_v_d_admindiag"
-#~ msgstr "l_v_d_admindiag"
diff --git a/applications/luci-app-voice-diag/po/he/voice_diag.po b/applications/luci-app-voice-diag/po/he/voice_diag.po
deleted file mode 100644 (file)
index 3cd1c9f..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-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"
-
-msgid "Diagnostics"
-msgstr ""
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
diff --git a/applications/luci-app-voice-diag/po/hu/voice_diag.po b/applications/luci-app-voice-diag/po/hu/voice_diag.po
deleted file mode 100644 (file)
index 79d2379..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-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"
-
-msgid "Diagnostics"
-msgstr "Diagnosztika"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Az eszközön elérhető diagnosztikai lehetőségek a telepített összetevőktől "
-"függenek."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"Ez alatt a menüpont alatt olyan lehetőségek vannak, amelyek lehetővé teszik, "
-"hogy beállítsa és tesztelje az eszköz hangrendszerének a működését. Ezek "
-"diagnosztikaként ismertek."
-
-#~ msgid "l_v_d_admindiag"
-#~ msgstr "l_v_d_admindiag"
diff --git a/applications/luci-app-voice-diag/po/it/voice_diag.po b/applications/luci-app-voice-diag/po/it/voice_diag.po
deleted file mode 100644 (file)
index 620aedf..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-02-03 14:13+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"
-
-msgid "Diagnostics"
-msgstr "Diagnostiche"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Le funzioni di diagnostica disponibili sul dispositivo dipendono i moduli "
-"che sono stati installati."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"In questo menu ci sono delle opzioni che consentono di configurare ed "
-"eseguire test sulle operazioni vocali del sistema. Questi sono noti come "
-"diagnostica."
diff --git a/applications/luci-app-voice-diag/po/ja/voice_diag.po b/applications/luci-app-voice-diag/po/ja/voice_diag.po
deleted file mode 100644 (file)
index 715f411..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-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"
-
-msgid "Diagnostics"
-msgstr ""
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
diff --git a/applications/luci-app-voice-diag/po/ms/voice_diag.po b/applications/luci-app-voice-diag/po/ms/voice_diag.po
deleted file mode 100644 (file)
index bf65c14..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-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"
-
-msgid "Diagnostics"
-msgstr ""
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
diff --git a/applications/luci-app-voice-diag/po/no/voice_diag.po b/applications/luci-app-voice-diag/po/no/voice_diag.po
deleted file mode 100644 (file)
index de7aaf2..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-msgid ""
-msgstr ""
-"Last-Translator: Lars Hardy <lars.hardy@gmail.com>\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-msgid "Diagnostics"
-msgstr "Diagnostikk"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Diagnostikk tilgjengelig på denne enheten avhenger av hvilken moduler som er "
-"installert."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"Under denne meny finner du instillinger som gjør det mulig å konfigurere og "
-"utføre 'Voice' operasjoner på systemet ditt. Dette er kjent som diagnostikk."
-
-#~ msgid "l_v_d_admindiag"
-#~ msgstr "Administrasjon Diagnostikk"
diff --git a/applications/luci-app-voice-diag/po/pl/voice_diag.po b/applications/luci-app-voice-diag/po/pl/voice_diag.po
deleted file mode 100644 (file)
index cb19e22..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-09-20 12:16+0200\n"
-"Last-Translator: Michał <wispwind@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.4\n"
-
-msgid "Diagnostics"
-msgstr "Diagnostyka"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Diagnostyka dostępna na Twoim urządzeniu zależna jest od zainstalowanych "
-"modułów."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"To menu zawiera opcje pozwalające na konfiguracje i testowanie operacji "
-"głosowych w Twoim systemie. Opcje te nazwamy Diagnostyką."
-
-#~ msgid "l_v_d_admindiag"
-#~ msgstr "l_v_d_admindiag"
diff --git a/applications/luci-app-voice-diag/po/pt-br/voice_diag.po b/applications/luci-app-voice-diag/po/pt-br/voice_diag.po
deleted file mode 100644 (file)
index c5d426d..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-10-11 20:31+0200\n"
-"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
-"Language-Team: none\n"
-"Language: pt_BR\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
-
-msgid "Diagnostics"
-msgstr "Diagnósticos"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Os diagnósticos disponíveis em seu dispositivo dependem dos módulos que você "
-"instalou."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"Neste menu existem opções que permite a configuração e execução de testes "
-"nas operações de voz em seu sistema. Estas são conhecidas como diagósticos."
-
-#~ msgid "l_v_d_admindiag"
-#~ msgstr "l_v_d_admindiag"
diff --git a/applications/luci-app-voice-diag/po/pt/voice_diag.po b/applications/luci-app-voice-diag/po/pt/voice_diag.po
deleted file mode 100644 (file)
index 5162c84..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-06-01 00:00+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"
-
-msgid "Diagnostics"
-msgstr "Diagnósticos"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Os diagnósticos disponiveis no dispositivo dependem dos módulos que tem "
-"instalados."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"Neste menu há opções que lhe permitem configurar e executar testes nas "
-"operações de voz do seu sistema. Estes são conhecidos como diagnósticos."
diff --git a/applications/luci-app-voice-diag/po/ro/voice_diag.po b/applications/luci-app-voice-diag/po/ro/voice_diag.po
deleted file mode 100644 (file)
index e6ee682..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-10-07 16:50+0200\n"
-"Last-Translator: Daniel <daniel.petre@pitesti.rcs-rds.ro>\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.4\n"
-
-msgid "Diagnostics"
-msgstr "Diagnosticuri"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Diagnosticurile disponibile pe dispozitivul tau depind de modulele instalate."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"In acest menu sunt optiuni care-ti permit sa configurezi si sa testezi "
-"diferite operatiuni de voce pe sistemul tau. Acestea sunt denumite "
-"diagnostice."
-
-#~ msgid "l_v_d_admindiag"
-#~ msgstr "l_v_d_admindiag"
diff --git a/applications/luci-app-voice-diag/po/ru/voice_diag.po b/applications/luci-app-voice-diag/po/ru/voice_diag.po
deleted file mode 100644 (file)
index 5c98de0..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: LuCI: voice_diag\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2012-08-15 11:22+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\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"
-"X-Poedit-SourceCharset: UTF-8\n"
-
-msgid "Diagnostics"
-msgstr "Диагностика"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr "Доступные виды диагностики зависят от установленных модулей."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"В данном меню содержатся опции, которые позволяют вам протестировать "
-"голосовые службы вашей системы. Это известно как \"диагностика\"."
-
-#~ msgid "l_v_d_admindiag"
-#~ msgstr "l_v_d_admindiag"
diff --git a/applications/luci-app-voice-diag/po/sk/voice_diag.po b/applications/luci-app-voice-diag/po/sk/voice_diag.po
deleted file mode 100644 (file)
index 874e11f..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"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"
-
-msgid "Diagnostics"
-msgstr ""
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
diff --git a/applications/luci-app-voice-diag/po/sv/voice_diag.po b/applications/luci-app-voice-diag/po/sv/voice_diag.po
deleted file mode 100644 (file)
index 4f99757..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: sv\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Diagnostics"
-msgstr "Diagnostik"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Den tillgängliga diagnostiken i din enhet är beroende av modulerna som du "
-"har installerat."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"Under den här menyn så finns det alternativ som gör att du kan ställa in och "
-"utföra tester på röstverksamheten i ditt system. Dessa kallas diagnostik."
diff --git a/applications/luci-app-voice-diag/po/templates/voice_diag.pot b/applications/luci-app-voice-diag/po/templates/voice_diag.pot
deleted file mode 100644 (file)
index ba28b45..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-msgid "Diagnostics"
-msgstr ""
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
diff --git a/applications/luci-app-voice-diag/po/tr/voice_diag.po b/applications/luci-app-voice-diag/po/tr/voice_diag.po
deleted file mode 100644 (file)
index 715f411..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-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"
-
-msgid "Diagnostics"
-msgstr ""
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
diff --git a/applications/luci-app-voice-diag/po/uk/voice_diag.po b/applications/luci-app-voice-diag/po/uk/voice_diag.po
deleted file mode 100644 (file)
index 60c55ba..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-04-28 22:05+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"
-
-msgid "Diagnostics"
-msgstr "Діагностика"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-"Доступність засобів діагностики визначається модулями, які ви встановили."
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
-"Це меню містить опції, які дають вам змогу сконфігурувати й виконати "
-"тестування голосових функцій вашої системи. Інша їх назва - засоби "
-"діагностики."
-
-#~ msgid "l_v_d_admindiag"
-#~ msgstr "l_v_d_admindiag"
diff --git a/applications/luci-app-voice-diag/po/vi/voice_diag.po b/applications/luci-app-voice-diag/po/vi/voice_diag.po
deleted file mode 100644 (file)
index 715f411..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-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"
-
-msgid "Diagnostics"
-msgstr ""
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr ""
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr ""
diff --git a/applications/luci-app-voice-diag/po/zh-cn/voice_diag.po b/applications/luci-app-voice-diag/po/zh-cn/voice_diag.po
deleted file mode 100644 (file)
index 4bad894..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-10-08 13:50+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
-"Language-Team: none\n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Diagnostics"
-msgstr "检测"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr "检测您已在设备上安装的模块。"
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr "菜单下的选项,允许您配置和执行语音相关的测试。这些动作称为检测。"
diff --git a/applications/luci-app-voice-diag/po/zh-tw/voice_diag.po b/applications/luci-app-voice-diag/po/zh-tw/voice_diag.po
deleted file mode 100644 (file)
index 7926f79..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-14 10:45+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"
-
-msgid "Diagnostics"
-msgstr "診斷"
-
-msgid ""
-"The diagnostics available on your device depend on the modules that you have "
-"installed."
-msgstr "能否診斷您的設備端看您已安裝的模組"
-
-msgid ""
-"Under this menu are options that allow you to configure and perform tests on "
-"the voice operations of your system. These are known as diagnostics."
-msgstr "選單下有選項讓您能夠設定並執行測試您系統上的語音操作. 這些都是已知的診斷方法"
index 0ca74ae38aa8fb363ab7533107438238774bc2b0..f426acc537f4a1feaf40a163c93ccda3bfbef518 100644 (file)
@@ -7,9 +7,10 @@ PKG_LICENSE:=GPL-3.0+
 PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
 
 LUCI_TITLE:=VPN Bypass Web UI
-LUCI_DEPENDS:=+vpnbypass
+LUCI_DESCRIPTION:=Provides Web UI for VPNBypass service.
+LUCI_DEPENDS:=+luci +vpnbypass
 LUCI_PKGARCH:=all
-PKG_RELEASE:=1
+PKG_RELEASE:=4
 
 include ../../luci.mk
 
index b35a8e4e0291fc462ecd64de9858a3e37315c440..6545154c2cc22d826fcfd9819292cbad8ec47a36 100644 (file)
@@ -4,19 +4,11 @@ m = Map("vpnbypass", translate("VPN Bypass Settings"))
 s = m:section(NamedSection, "config", "vpnbypass")
 
 -- General options
-e = s:option(Flag, "enabled", translate("Enable/start service"))
+e = s:option(Flag, "enabled", translate("Start VPNBypass service"))
 e.rmempty = false
-
-function e.cfgvalue(self, section)
-       return self.map:get(section, "enabled") == "1" and luci.sys.init.enabled("vpnbypass") and self.enabled or self.disabled
-end
-
 function e.write(self, section, value)
-       if value == "1" then
-               luci.sys.call("/etc/init.d/vpnbypass enable >/dev/null")
-               luci.sys.call("/etc/init.d/vpnbypass start >/dev/null")
-       else
-               luci.sys.call("/etc/init.d/vpnbypass stop >/dev/null")
+       if value ~= "1" then
+               luci.sys.init.stop("vpnbypass")
        end
        return Flag.write(self, section, value)
 end
@@ -38,7 +30,7 @@ p2.optional = false
 -- Local Subnets
 r1 = s:option(DynamicList, "localsubnet", translate("Local IP Addresses to Bypass"), translate("Local IP addresses or subnets with direct internet access (outside of the VPN tunnel)"))
 r1.datatype    = "ip4addr"
--- r1.placeholder = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr") .. "/" .. uci.cursor():get("network", "lan", "netmask"))
+-- r1.placeholder = luci.ip.new(m.uci:get("network", "lan", "ipaddr"), m.uci:get("network", "lan", "netmask"))
 r1.addremove = false
 r1.optional = false
 
@@ -56,6 +48,6 @@ s4.anonymous = true
 di = s4:option(DynamicList, "ipset", translate("Domains to Bypass"),
     translate("Domains to be accessed directly (outside of the VPN tunnel), see ")
                .. [[<a href="]] .. readmeURL .. [[#bypass-domains-formatsyntax" target="_blank">]]
-    .. translate("README") .. [[</a>]] .. translate(" for syntax"))
+    .. translate("README") .. [[</a> ]] .. translate("for syntax"))
 
 return m, d
index 9f3fa2a679f486cc070c28b241c156825bf27292..4fa07f999947f9e718001ebe26b2201071ac78ba 100644 (file)
@@ -18,9 +18,6 @@ msgstr "Domínios para evitar a VPN"
 msgid "Domains to be accessed directly (outside of the VPN tunnel), see"
 msgstr ""
 
-msgid "Enable/start service"
-msgstr ""
-
 msgid "Local IP Addresses to Bypass"
 msgstr ""
 
@@ -52,6 +49,9 @@ msgstr "Portas remotas para evitar a VPN"
 msgid "Remote ports to trigger VPN Bypass"
 msgstr "Portas remotas para disparar o VPN Bypass"
 
+msgid "Start VPNBypass service"
+msgstr ""
+
 msgid "VPN Bypass"
 msgstr "VPN Bypass"
 
diff --git a/applications/luci-app-vpnbypass/po/ru/vpnbypass.po b/applications/luci-app-vpnbypass/po/ru/vpnbypass.po
new file mode 100644 (file)
index 0000000..d41cfac
--- /dev/null
@@ -0,0 +1,72 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: vpnbypass\n"
+"POT-Creation-Date: 2018-01-01 21:00+0300\n"
+"PO-Revision-Date: 2018-01-22 13:17+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"
+
+msgid "Domains to Bypass"
+msgstr "Домены, для<br />обхода блокировки"
+
+msgid "Domains to be accessed directly (outside of the VPN tunnel), see"
+msgstr "Домены должны быть доступны напрямую (вне VPN-туннеля), см."
+
+msgid "Local IP Addresses to Bypass"
+msgstr "Локальный IP-адрес<br />обхода VPN"
+
+msgid ""
+"Local IP addresses or subnets with direct internet access (outside of the "
+"VPN tunnel)"
+msgstr ""
+"Локальные IP-адреса или подсети с прямым доступом в интернет (вне VPN-"
+"туннеля)."
+
+msgid "Local Ports to Bypass"
+msgstr "Локальные порты для запуска обхода VPN"
+
+msgid "Local ports to trigger VPN Bypass"
+msgstr "Локальные порты<br />для обхода VPN"
+
+msgid "README"
+msgstr "Описание"
+
+msgid "Remote IP Addresses to Bypass"
+msgstr "Удаленные IP-адреса<br />обхода VPN"
+
+msgid ""
+"Remote IP addresses or subnets which will be accessed directly (outside of "
+"the VPN tunnel)"
+msgstr ""
+"Удаленные IP-адреса или подсети, которые будут доступны напрямую (вне "
+"туннеля VPN)."
+
+msgid "Remote Ports to Bypass"
+msgstr "Удаленные порты<br />для обхода VPN"
+
+msgid "Remote ports to trigger VPN Bypass"
+msgstr "Удаленные порты для запуска обхода VPN"
+
+msgid "Start VPNBypass service"
+msgstr ""
+
+msgid "VPN Bypass"
+msgstr "Обход VPN"
+
+msgid "VPN Bypass Settings"
+msgstr "Настройка обхода VPN"
+
+msgid "for syntax"
+msgstr "для синтаксиса"
+
+#~ msgid "Enable/start service"
+#~ msgstr "Включение / Запуск сервиса"
index fd92b5e8a85131260aef3cf74e4405615493d1e8..c14c02fe9fec0dcf2bf43952bb914070c27ee207 100644 (file)
@@ -7,9 +7,6 @@ msgstr ""
 msgid "Domains to be accessed directly (outside of the VPN tunnel), see"
 msgstr ""
 
-msgid "Enable/start service"
-msgstr ""
-
 msgid "Local IP Addresses to Bypass"
 msgstr ""
 
@@ -41,6 +38,9 @@ msgstr ""
 msgid "Remote ports to trigger VPN Bypass"
 msgstr ""
 
+msgid "Start VPNBypass service"
+msgstr ""
+
 msgid "VPN Bypass"
 msgstr ""
 
index a1539171fc4f8ded06af7846ff47f9cafb7e811a..72c55a6c81ebc47e3f239486a68a850c10ce5d4d 100644 (file)
@@ -17,9 +17,6 @@ msgstr "要绕过的域"
 msgid "Domains to be accessed directly (outside of the VPN tunnel), see"
 msgstr "要直接访问的域(不使用 VPN 隧道),请参见"
 
-msgid "Enable/start service"
-msgstr "启用/启动服务"
-
 msgid "Local IP Addresses to Bypass"
 msgstr "要绕过的本地 IP 地址"
 
@@ -51,6 +48,9 @@ msgstr "要绕过的远程端口"
 msgid "Remote ports to trigger VPN Bypass"
 msgstr "触发 VPN 绕过的远程端口"
 
+msgid "Start VPNBypass service"
+msgstr ""
+
 msgid "VPN Bypass"
 msgstr "VPN 绕过"
 
@@ -59,3 +59,6 @@ msgstr "VPN 绕过设置"
 
 msgid "for syntax"
 msgstr "对于语法"
+
+#~ msgid "Enable/start service"
+#~ msgstr "启用/启动服务"
index 90ba85f7cea830096e2671d317e515e860285ae0..9eb3812110109bf1a36b2ee6318aeff939c736a3 100644 (file)
@@ -17,9 +17,6 @@ msgstr "要繞過的域"
 msgid "Domains to be accessed directly (outside of the VPN tunnel), see"
 msgstr "要直接訪問的域(不使用 VPN 隧道),請參見"
 
-msgid "Enable/start service"
-msgstr "啟用/啟動服務"
-
 msgid "Local IP Addresses to Bypass"
 msgstr "要繞過的本地 IP 位址"
 
@@ -51,6 +48,9 @@ msgstr "要繞過的遠端埠"
 msgid "Remote ports to trigger VPN Bypass"
 msgstr "觸發 VPN 繞過的遠端埠"
 
+msgid "Start VPNBypass service"
+msgstr ""
+
 msgid "VPN Bypass"
 msgstr "VPN 繞過"
 
@@ -59,3 +59,6 @@ msgstr "VPN 繞過設定"
 
 msgid "for syntax"
 msgstr "對於語法"
+
+#~ msgid "Enable/start service"
+#~ msgstr "啟用/啟動服務"
index 83b95e2015831462f26b55a60431fa0d66ff5400..af3e89aaff544aa1026b74ed123c386b70909cff 100644 (file)
@@ -1,31 +1,33 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: watchcat\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2013-10-06 11:15+0300\n"
+"PO-Revision-Date: 2018-01-15 16:09+0300\n"
+"Language-Team: http://cyber-place.ru\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-Poedit-SourceCharset: UTF-8\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"
 
 msgid "Forced reboot delay"
-msgstr "Задержка принудительной перезагрузки"
+msgstr "Задержка<br />принудительной<br />перезагрузки"
 
 msgid "Host address to ping"
-msgstr "Ð\90дÑ\80еÑ\81 Ñ\85оÑ\81Ñ\82а Ð´Ð»Ñ\8f Ð¾проса"
+msgstr "Ð\90дÑ\80еÑ\81 Ñ\85оÑ\81Ñ\82а Ð´Ð»Ñ\8f Ð¿Ð¸Ð½Ð³-запроса"
 
 msgid ""
 "How often to check internet connection. Default unit is seconds, you can you "
 "use the suffix 'm' for minutes, 'h' for hours or 'd' for days"
 msgstr ""
-"Ð\9aак Ñ\87аÑ\81Ñ\82о Ð¿Ñ\80овеÑ\80Ñ\8fÑ\82Ñ\8c Ð¸Ð½Ñ\82еÑ\80неÑ\82-соединение. По умолчанию значение в секундах, "
+"Ð\9aак Ñ\87аÑ\81Ñ\82о Ð¿Ñ\80овеÑ\80Ñ\8fÑ\82Ñ\8c Ð\98нÑ\82еÑ\80неÑ\82 соединение. По умолчанию значение в секундах, "
 "вы можете использовать суффикс 'm' для указания минут, 'h' - часов, 'd' - "
-"дней"
+"дней."
 
 msgid ""
 "In periodic mode, it defines the reboot period. In internet mode, it defines "
@@ -33,11 +35,11 @@ msgid ""
 "engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' "
 "for hours or 'd' for days"
 msgstr ""
-"В периодическом режиме, данная настройка определяет период перезагрузки. В "
-"инÑ\82еÑ\80неÑ\82\80ежиме, Ð´Ð°Ð½Ð½Ð°Ñ\8f Ð½Ð°Ñ\81Ñ\82Ñ\80ойка Ð¾Ð¿Ñ\80еделÑ\8fеÑ\82 Ð¼Ð°ÐºÑ\81ималÑ\8cнÑ\8bй Ð¿ÐµÑ\80иод Ð²Ñ\80емени Ð±ÐµÐ· "
-"доÑ\81Ñ\82Ñ\83па Ð² Ð¸Ð½Ñ\82еÑ\80неÑ\82, Ð¿Ð¾Ñ\81ле ÐºÐ¾Ñ\82оÑ\80ого Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82во Ð¿ÐµÑ\80езагÑ\80Ñ\83жаеÑ\82Ñ\81Ñ\8f. Ð\9fо Ñ\83молÑ\87аниÑ\8e "
-"знаÑ\87ение Ð² Ñ\81екÑ\83ндаÑ\85, Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c Ñ\81Ñ\83Ñ\84Ñ\84икÑ\81 'm' Ð´Ð»Ñ\8f Ñ\83казаниÑ\8f Ð¼Ð¸Ð½Ñ\83Ñ\82, "
-"'h' - часов, 'd' - дней"
+"В периодическом режиме, это значение задает период перезагрузки. В режиме "
+"пеÑ\80езагÑ\80Ñ\83зки Ð¿Ñ\80и Ð¿Ð¾Ñ\82еÑ\80е Ð\98нÑ\82еÑ\80неÑ\82а, Ð´Ð°Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ\87ение Ð¾Ð¿Ñ\80еделÑ\8fеÑ\82 Ð¼Ð°ÐºÑ\81ималÑ\8cнÑ\8bй "
+"пеÑ\80иод Ð²Ñ\80емени Ð±ÐµÐ· Ð´Ð¾Ñ\81Ñ\82Ñ\83па Ð² Ð\98нÑ\82еÑ\80неÑ\82, Ð¿Ð¾Ñ\81ле ÐºÐ¾Ñ\82оÑ\80ого Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82во "
+"пеÑ\80езагÑ\80Ñ\83жаеÑ\82Ñ\81Ñ\8f. Ð\9fо Ñ\83молÑ\87аниÑ\8e Ð·Ð½Ð°Ñ\87ение Ð² Ñ\81екÑ\83ндаÑ\85, Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¸Ñ\81полÑ\8cзоваÑ\82Ñ\8c "
+"суффикс 'm' для указания минут, 'h' - часов, 'd' - дней."
 
 msgid "Operating mode"
 msgstr "Режим работы"
@@ -46,29 +48,27 @@ msgid "Period"
 msgstr "Период"
 
 msgid "Ping host"
-msgstr "ХоÑ\81Ñ\82 Ð¾проса"
+msgstr "ХоÑ\81Ñ\82 Ð¿Ð¸Ð½Ð³-запроса"
 
 msgid "Ping period"
-msgstr "Ð\9fеÑ\80иод Ð¾проса"
+msgstr "Ð\9fеÑ\80иод Ð¿Ð¸Ð½Ð³-запроса"
 
 msgid "Watchcat"
 msgstr "Watchcat"
 
-#, fuzzy
 msgid ""
 "Watchcat allows configuring a periodic reboot when the Internet connection "
 "has been lost for a certain period of time."
 msgstr ""
-"Watchcat позволяет настроить периодическую перезагрузку устройства и/или "
-"перезагрузку при потере интернет-соединения на определённое время."
+"Watchcat позволяет настроить периодическую перезагрузку, при потере Интернет "
+"соединения на определенное время."
 
-#, fuzzy
 msgid ""
 "When rebooting the system, the watchcat will trigger a soft reboot. Entering "
 "a non zero value here will trigger a delayed hard reboot if the soft reboot "
 "fails. Enter a number of seconds to enable, use 0 to disable"
 msgstr ""
-"Ð\9fÑ\80и Ð½ÐµÐ¾Ð±Ñ\85одимоÑ\81Ñ\82и Ð¿ÐµÑ\80езагÑ\80Ñ\83зке Ñ\81иÑ\81Ñ\82емÑ\8b, watchcat Ð²Ñ\8bзовеÑ\82 Ð¿Ñ\80огÑ\80аммнÑ\83Ñ\8e "
-"пеÑ\80езагÑ\80Ñ\83зкÑ\83. Ð\9fÑ\80и Ñ\83Ñ\81Ñ\82ановке Ð½ÐµÐ½Ñ\83левого Ð·Ð½Ð°Ñ\87ениÑ\8f, Ð±Ñ\83деÑ\82 Ð²Ñ\8bполнена Ð¾Ñ\82ложеннаÑ\8f "
-"аппаÑ\80аÑ\82наÑ\8f Ð¿ÐµÑ\80езагÑ\80Ñ\83зка Ð¿Ñ\80и Ð½ÐµÑ\83даÑ\87ной Ð¿Ñ\80огÑ\80аммной. Ð£Ñ\81Ñ\82ановиÑ\82е ÐºÐ¾Ð»Ð¸Ñ\87еÑ\81Ñ\82во "
-"секунд для отложенной аппаратной перезагрузки или значение 0 для программной."
+"Ð\9fÑ\80и Ð¿ÐµÑ\80езагÑ\80Ñ\83зке Ñ\81иÑ\81Ñ\82емÑ\8b, watchcat Ð²Ñ\8bзовеÑ\82 Ð¿Ñ\80огÑ\80аммнÑ\83Ñ\8e Ð¿ÐµÑ\80езагÑ\80Ñ\83зкÑ\83. Ð\92вод "
+"ненÑ\83левого Ð·Ð½Ð°Ñ\87ениÑ\8f, Ð²Ñ\8bзовеÑ\82 Ð¾Ñ\82ложеннÑ\83Ñ\8e Ð°Ð¿Ð¿Ð°Ñ\80аÑ\82нÑ\83Ñ\8e Ð¿ÐµÑ\80езагÑ\80Ñ\83зкÑ\83, ÐµÑ\81ли "
+"пÑ\80огÑ\80аммнаÑ\8f Ð¿ÐµÑ\80езагÑ\80Ñ\83зка Ð½Ðµ Ñ\83даÑ\81Ñ\82Ñ\81Ñ\8f. Ð\92ведиÑ\82е ÐºÐ¾Ð»Ð¸Ñ\87еÑ\81Ñ\82во Ñ\81екÑ\83нд, Ñ\87Ñ\82обÑ\8b "
+"включить. Используйте '0', чтобы отключить."
index 1d301219a8cab61e4b63917d2979e082dde5f6ce..07730225b03805d895e66e516aab58444f5fba3c 100644 (file)
@@ -12,8 +12,9 @@
 --
 -- Author: Nils Koenig <openwrt@newk.it>
 
-local fs = require "nixio.fs"
+local fs  = require "nixio.fs"
 local sys = require "luci.sys"
+local uci = require("luci.model.uci").cursor()
 
 function time_validator(self, value, desc)
     if value ~= nil then
@@ -110,7 +111,7 @@ modules.wrap = "off"
 modules.rows = 10
 
 function modules.cfgvalue(self, section)
-    mod = uci.get("wifi_schedule", section, "modules")
+    mod = uci:get("wifi_schedule", section, "modules")
     if mod == nil then
         mod = ""
     end
@@ -121,7 +122,7 @@ function modules.write(self, section, value)
     if value then
         value_list = value:gsub("\r\n", " ")
         ListValue.write(self, section, value_list)
-        uci.set("wifi_schedule", section, "modules", value_list)
+        uci:set("wifi_schedule", section, "modules", value_list)
     end
 end
 -- END Modules
diff --git a/applications/luci-app-wifischedule/po/ru/wifischedule.po b/applications/luci-app-wifischedule/po/ru/wifischedule.po
new file mode 100644 (file)
index 0000000..8eb3966
--- /dev/null
@@ -0,0 +1,116 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: wifischedule\n"
+"POT-Creation-Date: 2017-11-30 15:30+0300\n"
+"PO-Revision-Date: 2018-01-22 13:18+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"
+
+msgid "Activate wifi"
+msgstr "Включить Wi-Fi"
+
+msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi"
+msgstr "Не удалось найти файл /usr/bin/wifi_schedule.sh или /sbin/wifi"
+
+msgid "Could not find required programm /usr/bin/iwinfo"
+msgstr "Не удалось найти требуемую программу /usr/bin/iwinfo"
+
+msgid "Cron Jobs"
+msgstr "Cron задания"
+
+msgid "Day(s) of Week"
+msgstr "День (дни) недели"
+
+msgid "Defines a schedule when to turn on and off wifi."
+msgstr "Определяет расписание включения и выключения Wi-Fi."
+
+msgid "Determine Modules Automatically"
+msgstr "Автоматическое определение модулей"
+
+msgid "Disable wifi gracefully"
+msgstr "Отключить Wi-Fi корректно"
+
+msgid "Disabled wifi forced"
+msgstr "Отключить Wi-Fi принудительно"
+
+msgid "Enable"
+msgstr "Включить"
+
+msgid "Enable Wifi Schedule"
+msgstr "Включить Wi-Fi планировщик"
+
+msgid "Enable logging"
+msgstr "Включить ведение системного журнала"
+
+msgid "Force disabling wifi even if stations associated"
+msgstr "Принудительно отключить Wi-Fi даже если имеются подключенные клиенты"
+
+msgid "Friday"
+msgstr "Пятница"
+
+msgid "Global Settings"
+msgstr "Основные настройки"
+
+msgid "Monday"
+msgstr "Понедельник"
+
+msgid "Saturday"
+msgstr "Суббота"
+
+msgid "Schedule"
+msgstr "Планировщик"
+
+msgid "Schedule events"
+msgstr "Планировщик событий"
+
+msgid "Start Time"
+msgstr "Время начала"
+
+msgid "Start WiFi"
+msgstr "Время включения Wi-Fi"
+
+msgid "Stop Time"
+msgstr "Время окончания"
+
+msgid "Stop WiFi"
+msgstr "Время отключения Wi-Fi"
+
+msgid "Sunday"
+msgstr "Воскресенье"
+
+msgid "The value %s is invalid"
+msgstr "Значение %s является недействительным"
+
+msgid "Thursday"
+msgstr "Четверг"
+
+msgid "Tuesday"
+msgstr "Вторник"
+
+msgid "Unload Modules (experimental; saves more power)"
+msgstr ""
+"Модули не загружаются (экспериментальная опция; экономит больше энергии)"
+
+msgid "View Cron Jobs"
+msgstr "Показать сron задания"
+
+msgid "View Logfile"
+msgstr "Показать системный журнал"
+
+msgid "Wednesday"
+msgstr "Среда"
+
+msgid "Wifi Schedule"
+msgstr "Wi-Fi планировщик"
+
+msgid "Wifi Schedule Logfile"
+msgstr "Системный журнал Wi-Fi планировщика"
index 92cdcf27000b7bd28a343e7748e365063014c0d0..ae315bdfe3e86f7a6bd2515b21e679069e77ad95 100644 (file)
@@ -7,7 +7,7 @@
 include $(TOPDIR)/rules.mk
 
 LUCI_TITLE:=WireGuard Status
-LUCI_DEPENDS:=+wireguard-tools +kmod-wireguard
+LUCI_DEPENDS:=+wireguard-tools +kmod-wireguard +luci-proto-wireguard
 LUCI_PKGARCH:=all
 
 PKG_MAINTAINER:=Dan Luedtke <mail@danrl.com>
diff --git a/applications/luci-app-wireguard/po/ru/wireguard.po b/applications/luci-app-wireguard/po/ru/wireguard.po
new file mode 100644 (file)
index 0000000..202a49e
--- /dev/null
@@ -0,0 +1,74 @@
+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"
+
+msgid "Allowed IPs"
+msgstr "Разрешенные IP-адреса"
+
+msgid "Collecting data..."
+msgstr "Сбор данных..."
+
+msgid "Configuration"
+msgstr "Настройка config файла"
+
+msgid "Data Received"
+msgstr "Полученные данные"
+
+msgid "Data Transmitted"
+msgstr "Переданные данные"
+
+msgid "Endpoint"
+msgstr "Конечная точка"
+
+msgid "Firewall Mark"
+msgstr "Метка межсетевого экрана"
+
+msgid "Interface"
+msgstr "Интерфейс"
+
+msgid "Interface does not have a public key!"
+msgstr "Интерфейс не имеет Публичного Ключа!"
+
+msgid "Latest Handshake"
+msgstr "Последний Хендшейк"
+
+msgid "Listen Port"
+msgstr "Порт для входящих соединений"
+
+msgid "Never"
+msgstr "Никогда"
+
+msgid "Peer"
+msgstr "Узел"
+
+msgid "Persistent Keepalive"
+msgstr "Постоянные Проверки Активности"
+
+msgid "Public Key"
+msgstr "Публичный Ключ"
+
+msgid "WireGuard Status"
+msgstr "Состояние WireGuard"
+
+msgid "h ago"
+msgstr "час назад"
+
+msgid "m ago"
+msgstr "минуту назад"
+
+msgid "over a day ago"
+msgstr "более суток назад"
+
+msgid "s ago"
+msgstr "секунду назад"
index dbbfdde1280b8ff0a9fc6e821d9a940cd3277506..43ab84ab2a958a429b5c1824c7c05fa0cf03bcc2 100644 (file)
@@ -1,6 +1,6 @@
 module("luci.controller.wol", package.seeall)
 
 function index()
-       entry({"admin", "services", "wol"}, cbi("wol"), _("Wake on LAN"), 90)
-       entry({"mini", "services", "wol"}, cbi("wol"), _("Wake on LAN"), 90)
+       entry({"admin", "services", "wol"}, form("wol"), _("Wake on LAN"), 90)
+       entry({"mini", "services", "wol"}, form("wol"), _("Wake on LAN"), 90)
 end
index ec6a1be2a8a4b0a0e50f305a12afaa59c6006353..43b87dda9c09e91261543441e826d3354c4428ed 100644 (file)
@@ -1,7 +1,9 @@
 -- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
 -- Licensed to the public under the Apache License 2.0.
 
+local utl = require "luci.util"
 local sys = require "luci.sys"
+local ipc = require "luci.ip"
 local fs  = require "nixio.fs"
 
 m = SimpleForm("wol", translate("Wake on LAN"),
@@ -58,7 +60,8 @@ end
 
 function host.write(self, s, val)
        local host = luci.http.formvalue("cbid.wol.1.mac")
-       if host and #host > 0 and host:match("^[a-fA-F0-9:]+$") then
+       local mac = ipc.checkmac(host)
+       if mac then
                local cmd
                local util = luci.http.formvalue("cbid.wol.1.binary") or (
                        has_ewk and "/usr/bin/etherwake" or "/usr/bin/wol"
@@ -67,16 +70,16 @@ function host.write(self, s, val)
                if util == "/usr/bin/etherwake" then
                        local iface = luci.http.formvalue("cbid.wol.1.iface")
                        local broadcast = luci.http.formvalue("cbid.wol.1.broadcast")
-                       cmd = "%s -D%s %s %q" %{
-                               util, (iface ~= "" and " -i %q" % iface or ""),
-                               (broadcast == "1" and " -b" or ""), host
+                       cmd = "%s -D%s %s %q 2>&1" %{
+                               util, (iface ~= "" and " -i %s" % utl.shellquote(iface) or ""),
+                               (broadcast == "1" and " -b" or ""), mac
                        }
                else
-                       cmd = "%s -v %q" %{ util, host }
+                       cmd = "%s -v %q" %{ util, mac }
                end
 
                local msg = "<p><strong>%s</strong><br /><br /><code>%s<br /><br />" %{
-                       translate("Starting WoL utility:"), cmd
+                       translate("Starting WoL utility:"), utl.pcdata(cmd)
                }
 
                local p = io.popen(cmd .. " 2>&1")
index 9d3e08d5634f3b999ae8aebd552e73c50d02a130..4d977a1500991dfbd56b533a07ed5438b0cd1665 100644 (file)
@@ -1,46 +1,45 @@
-# Generated from applications/luci-wol/luasrc/model/cbi/wol.lua
-#
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: wol\n"
-"Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-19 00:29+0200\n"
-"PO-Revision-Date: 2012-08-15 12:07+0300\n"
-"Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"PO-Revision-Date: 2018-01-14 11:43+0300\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "Broadcast on all interfaces"
 msgstr "Использовать широковещательную передачу на все интерфейсы"
 
 msgid "Choose the host to wake up or enter a custom MAC address to use"
-msgstr "Выберите хост, который необходимо разбудить, или введите его MAC-адрес"
+msgstr ""
+"Задать хост, который необходимо разбудить.<br />Можно использовать MAC-адрес "
+"или имя хоста."
 
 msgid "Host to wake up"
-msgstr "ХоÑ\81Ñ\82, ÐºÐ¾Ñ\82оÑ\80Ñ\8bй Ð½ÐµÐ¾Ð±Ñ\85одимо Ñ\80азбÑ\83диÑ\82Ñ\8c"
+msgstr "Ð\92Ñ\8bбÑ\80аÑ\82Ñ\8c Ñ\85оÑ\81Ñ\82"
 
 msgid "Network interface to use"
-msgstr "Ð\98Ñ\81полÑ\8cзÑ\83емÑ\8bй Ñ\81еÑ\82евой интерфейс"
+msgstr "Ð\92Ñ\8bбÑ\80аÑ\82Ñ\8c интерфейс"
 
 msgid "Send to broadcast address"
-msgstr ""
+msgstr "Отправить на<br />широковещательный<br />адрес"
 
-#, fuzzy
 msgid ""
 "Sometimes only one of the two tools works. If one fails, try the other one"
 msgstr ""
-"Ð\98ногда Ñ\82олÑ\8cко Ð¾Ð´Ð½Ð° Ð¸Ð· Ð´Ð²Ñ\83Ñ\85 Ñ\83Ñ\82илиÑ\82 Ñ\80абоÑ\82аеÑ\82. Ð\92 Ñ\81лÑ\83Ñ\87ае Ð¾Ñ\88ибки, Ð¿Ð¾Ð¿Ñ\80обÑ\83йÑ\82е "
-"иÑ\81полÑ\8cзоваÑ\82Ñ\8c Ð´Ñ\80Ñ\83гÑ\83Ñ\8e"
+"Ð\98ногда Ñ\80абоÑ\82аеÑ\82 Ñ\82олÑ\8cко Ð¾Ð´Ð¸Ð½ Ð¸Ð· Ð´Ð²Ñ\83Ñ\85 Ð¸Ð½Ñ\81Ñ\82Ñ\80Ñ\83менÑ\82ов. Ð\95Ñ\81ли Ð¾Ð´Ð¸Ð½ Ñ\82еÑ\80пиÑ\82 Ð½ÐµÑ\83даÑ\87Ñ\83, "
+"попÑ\80обÑ\83йÑ\82е Ð´Ñ\80Ñ\83гой."
 
 msgid "Specifies the interface the WoL packet is sent on"
-msgstr "Ð\9eпÑ\80еделÑ\8fеÑ\82 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81, Ð¿Ð¾ ÐºÐ¾Ñ\82оÑ\80омÑ\83 Ð±Ñ\83дÑ\83Ñ\82 Ð¿Ð¾Ñ\81ланÑ\8b Ð¿Ð°ÐºÐµÑ\82Ñ\8b WoL"
+msgstr "Ð\97адаÑ\82Ñ\8c Ñ\81еÑ\82евой Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81, Ð¿Ð¾ ÐºÐ¾Ñ\82оÑ\80омÑ\83 Ð±Ñ\83дÑ\83Ñ\82 Ð¿Ð¾Ñ\81ланÑ\8b Ð¿Ð°ÐºÐµÑ\82Ñ\8b WoL."
 
 msgid "Starting WoL utility:"
 msgstr "Запуск WoL утилиты:"
@@ -51,12 +50,14 @@ msgstr "Wake on LAN"
 msgid ""
 "Wake on LAN is a mechanism to remotely boot computers in the local network."
 msgstr ""
-"Пробуждение по LAN (Wake on LAN, WoL) - технология, позволяющая удалённо "
-"«разбудить» (включить) компьютер посредством отправки через локальную сеть "
-"специальным образом сформированного пакета данных."
+"Пробуждение по LAN (Wake on LAN, WoL) - технология позволяющая удалённо "
+"'разбудить', включить компьютер.<br />Осуществляется это путем отправки "
+"через локальную сеть, специальным образом сформированного пакета данных.<br /"
+">Материнская плата компьютера должна иметь поддержку WoL и соответственно "
+"настроенный биос."
 
 msgid "Wake up host"
 msgstr "Разбудить хост"
 
 msgid "WoL program"
-msgstr "Ð\9fÑ\80огÑ\80амма WoL"
+msgstr "УÑ\82илиÑ\82а WoL"
diff --git a/build/check-controllers.sh b/build/check-controllers.sh
new file mode 100755 (executable)
index 0000000..573e6f8
--- /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 containt 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
index 1bfc8ed7d7c3c5b82fe9c6c86fc3422d6a779f03..e1e4eda91b49c9d739f3e9770bf733b471e16fbe 100644 (file)
@@ -33,7 +33,7 @@ config 'defaults' 'ssidscheme'
 
 config 'defaults' 'interface'
        option 'netmask' '255.255.255.255'
-       option 'dns' '85.214.20.141 213.73.91.35 194.150.168.168 2001:4ce8::53 2001:910:800::12'
+       option 'dns' '85.214.20.141 194.150.168.168 2001:4ce8::53 2001:910:800::12'
 
 config 'dhcp' 'dhcp'
        option leasetime '5m'
index 6f395a1332153704043c1e46bf0867a4e5b0eefd..9b08acc25662d1b6691724f50b6b9f2657ab83ea 100644 (file)
@@ -31,7 +31,7 @@ config 'defaults' 'ssidscheme'
 
 config 'defaults' 'interface'
        option 'netmask' '255.255.255.255'
-       option 'dns' '85.214.20.141 213.73.91.35 194.150.168.168 2001:4ce8::53 2001:910:800::12'
+       option 'dns' '85.214.20.141 194.150.168.168 2001:4ce8::53 2001:910:800::12'
 
 config 'dhcp' 'dhcp'
        option 'leasetime' '5m'
diff --git a/contrib/package/community-profiles/files/etc/config/profile_hannover b/contrib/package/community-profiles/files/etc/config/profile_hannover
deleted file mode 100644 (file)
index 008b6c7..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-config 'community' 'profile'
-       option 'name' 'Freifunk Hannover'
-       option 'homepage' 'http://hannover.freifunk.net'
-       option 'ssid' 'hannover.freifunk.net'
-       option 'mesh_network' '10.2.0.0/16'
-       option 'splash_network' '10.104.0.0/16'
-       option 'splash_prefix' '27'
-       option 'latitude' '52.38427'
-       option 'longitude' '9.74359'
-
-config 'defaults' 'wifi_iface'
-       option 'bssid' 'CA:FF:EE:CA:FF:EE'
index 9bdb603239a09906a71178726633ee211ac535de..84bbdfe528691459ab7b02502036d67f19e045f5 100644 (file)
@@ -1,7 +1,7 @@
 config 'community' 'profile'
        option 'name' 'Freifunk Potsdam'
        option 'homepage' 'http://potsdam.freifunk.net'
-       option 'ssid' 'Freifunk-Potsdam-XXX-YYY'
+       option 'ssid' 'freifunk-potsdam.de'
        option 'mesh_network' '10.22.0.0/16'
        option 'splash_network' '192.168.22.0/24'
        option 'splash_prefix' '24'
@@ -11,7 +11,7 @@ config 'community' 'profile'
 
 config 'defaults' 'interface'
        option 'netmask' '255.255.0.0'
-       option 'dns' '85.214.20.141 213.73.91.35 194.150.168.168'
+       option 'dns' '85.214.20.141 194.150.168.168'
        option 'delegate' '0'
 
 config 'defaults' 'wifi_device'
index ecc6f9bc43f1b440e8532388d09836e6c406a1c3..c028a666144e949952f4afdf3bc31484241825d4 100644 (file)
@@ -7,4 +7,4 @@ config 'community' 'profile'
        option 'splash_prefix' '28'
 
 config 'defaults' 'interface'
-       option 'dns' '213.73.91.35 216.87.84.211'
+       option 'dns' '216.87.84.211'
index 2b9336fb0643aff9f96ae5ac59f3f7859ee5e8f6..f7128b6411610e0afa95c730bdc012ba835388f1 100644 (file)
@@ -15,6 +15,7 @@ define Package/freifunk-common
   CATEGORY:=LuCI
   SUBMENU:=9. Freifunk
   TITLE:=Freifunk common files
+  DEPENDS:=+libuci-lua
 endef
 
 define Package/freifunk-common/description
diff --git a/contrib/package/freifunk-p2pblock/Makefile b/contrib/package/freifunk-p2pblock/Makefile
deleted file mode 100644 (file)
index df7bd9b..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#
-# Copyright (C) 2009 Andreas Seidler <tetzlav@subsignal.org>
-# Copyright (C) 2012 Jo-Philipp Wich <jow@openwrt.org>
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=freifunk-p2pblock
-PKG_RELEASE:=3
-
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/freifunk-p2pblock
-  SECTION:=luci
-  CATEGORY:=LuCI
-  SUBMENU:=9. Freifunk
-  TITLE:=Freifunk p2pblock Addon
-  DEPENDS:=+iptables-mod-filter +iptables-mod-ipp2p +l7-protocols +iptables-mod-conntrack-extra @BROKEN
-endef
-
-define Package/freifunk-p2pblock/description
-  Simple Addon for Freifunk which use iptables layer7-, ipp2p- and recent-modules 
-  to block p2p/filesharing traffic
-endef
-
-define Build/Prepare
-       mkdir -p $(PKG_BUILD_DIR)
-endef
-
-define Build/Configure
-endef
-
-define Build/Compile
-endef
-
-define Package/freifunk-p2pblock/install
-       $(INSTALL_DIR) $(1)/etc/init.d
-       $(INSTALL_BIN) ./files/freifunk-p2pblock.init $(1)/etc/init.d/freifunk-p2pblock
-       $(INSTALL_DIR) $(1)/etc/config
-       $(INSTALL_DATA) ./files/freifunk-p2pblock.config $(1)/etc/config/freifunk_p2pblock
-endef
-
-$(eval $(call BuildPackage,freifunk-p2pblock))
diff --git a/contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.config b/contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.config
deleted file mode 100644 (file)
index 291260e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-config 'settings' 'p2pblock'
-       option 'portrange' '1024:65535'
-       option 'layer7' 'edonkey bittorrent fasttrack'
-       option 'ipp2p' 'edk dc kazaa gnu bit ares soul winmx apple'
-       option 'blocktime' '60'
-       option 'whitelist' ''
diff --git a/contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.init b/contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.init
deleted file mode 100644 (file)
index 5ca60c8..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/bin/sh /etc/rc.common
-
-START=82
-ME="freifunk-p2pblock"
-LOCK='/var/run/p2pblock.lock'
-
-# helper-scripts
-ipt_add() {
-       logger -t "$ME" "set 'iptables -I $1'"
-       iptables -I $1
-       echo "iptables -D $1" >> $LOCK
-}
-
-start() {
-       /etc/init.d/freifunk-p2pblock enabled || return
-
-       if [ ! -s "$LOCK" ]; then
-               logger -s -t "$ME" 'starting p2pblock...'
-
-               config_load network
-               config_get wan wan ifname
-
-               if [ -n "$wan" ]; then
-                       config_load freifunk_p2pblock
-                       config_get layer7 p2pblock layer7
-                       config_get ipp2p p2pblock ipp2p
-                       config_get portrange p2pblock portrange
-                       config_get blocktime p2pblock blocktime
-                       config_get whitelist p2pblock whitelist
-
-                       # load modules
-                       insmod ipt_ipp2p 2>&-
-                       insmod ipt_layer7 2>&-
-                       insmod ipt_recent ip_list_tot=400 ip_pkt_list_tot=3 2>&-
-
-                       # create new p2p-chain
-                       iptables -N p2pblock
-                       # pipe all incoming FORWARD with source-/destination-port 1024-65535 throu p2p-chain
-                       ipt_add "FORWARD -i $wan -p tcp --sport $portrange --dport $portrange -j p2pblock"
-                       ipt_add "FORWARD -i $wan -p udp --sport $portrange --dport $portrange -j p2pblock"
-
-                       # if p2p-traffic blocked 3 packages to a destination ip then block all traffic within the next 180 sec (port 1024-65535)
-                       ipt_add "p2pblock -m recent --rdest --rcheck --name P2PBLOCK --seconds $blocktime --hitcount 3 -j DROP"
-                       ipt_add "p2pblock -m recent --rdest --rcheck --name P2PBLOCK --seconds $blocktime --hitcount 3 -m limit --limit 1/minute -j LOG --log-prefix P2PBLOCK-DROP:"
-
-                       # create layer7-rules
-                       for proto in $layer7; do
-                               ipt_add "p2pblock -m layer7 --l7proto $proto -m recent --rdest --set --name P2PBLOCK"
-                               ipt_add "p2pblock -m layer7 --l7proto $proto -m limit --limit 1/minute -j LOG --log-prefix P2PBLOCK-seen-$proto:"
-                       done
-
-                       # create ipp2p-rules
-                       for proto in $ipp2p; do
-                               ipt_add "p2pblock -m ipp2p --$proto -m recent --rdest --set --name P2PBLOCK"
-                               ipt_add "p2pblock -m ipp2p --$proto -m limit --limit 1/minute -j LOG --log-prefix P2PBLOCK-seen-$proto:"
-                       done
-
-                       # insert whitelisted ips
-                       for ip in $whitelist; do
-                               ipt_add "p2pblock -d $ip -j RETURN"
-                       done
-
-                       logger -s -t "$ME" 'Done.'; return 0
-               else
-                       logger -s -t "$ME" 'No wan interface present.'; return 0
-               fi
-       else
-               logger -s -t "$ME" 'WARNING! already running - Aborting!'; return 2
-       fi
-}
-
-stop() {
-       if [ -s "$LOCK" ]; then
-               logger -s -t "$ME" 'stopping p2pblock...'
-
-               # unset all rules in $LOCK-file
-               cat $LOCK | sed -ne '1!G;h;$p' | while read line; do
-                       logger -t "$ME" "unset $line"
-                       while eval $line 2>&-; do :; done
-               done; : > "$LOCK"
-
-               # flush and delete the p2p-chain
-               iptables -F p2pblock
-               iptables -X p2pblock
-               logger -s -t "$ME" 'Done.'; return 0
-
-       else
-               logger -s -t "$ME" 'WARNING! not running - Aborting!'; return 2
-
-       fi
-}
-
-restart() {
-       stop; sleep 1; start
-}
diff --git a/contrib/package/lucihttp/Makefile b/contrib/package/lucihttp/Makefile
new file mode 100644 (file)
index 0000000..4089944
--- /dev/null
@@ -0,0 +1,54 @@
+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:=2018-05-18
+PKG_SOURCE_VERSION:=cb119deddee5f0f8f1da883b20c60aea7611b175
+PKG_MIRROR_HASH:=573a20817c73344b17c8fa1b8112f14af9dccc25fef017ae072ecd09140cf9e1
+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
+  ABI_VERSION:=$(PKG_VERSION)
+  TITLE:=LuCI HTTP utility library
+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 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))
index c762b9b0e3b0623fa3b97f370a122f82eda9f113..5e3f3c211a9a54a79dedb6270f4245c52168bda6 100644 (file)
        </li>
 
        <li>
-               <a href="modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="modules/luci.http.date.html">luci.http.date</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>
+               <a href="modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
        </tr>
 
        <tr>
-               <td class="name"><a href="modules/luci.http.protocol.html">luci.http.protocol</a></td>
-               <td class="summary"></td>
-       </tr>
-
-       <tr>
-               <td class="name"><a href="modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a></td>
+               <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.protocol.date.html">luci.http.protocol.date</a></td>
+               <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.protocol.mime.html">luci.http.protocol.mime</a></td>
+               <td class="name"><a href="modules/luci.http.mime.html">luci.http.mime</a></td>
                <td class="summary"></td>
        </tr>
 
index 4ae88fe612a6cdc7a7c60e5da17fffb3f9d2bff9..e4b12e676eb22740e7516ebf9e61c1a2b01164e0 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
@@ -321,7 +317,6 @@ Create a CBI form model dispatching target.</td>
        <td class="summary">
  
 Fetch or create a dispatching node without setting the target module or 
 enabling the node.</td>
        </tr>
 
@@ -332,6 +327,13 @@ enabling the node.</td>
 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">
@@ -857,8 +859,8 @@ Create a CBI form model dispatching target.
 
  
 Fetch or create a dispatching node without setting the target module or 
-enabling the node.
+enabling the node. 
+
 
 
 <h3>Parameters</h3>
@@ -909,6 +911,38 @@ Dispatch an HTTP request.
 
 
 
+</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>
 
 
index ea04fc236e21cbb49b0d1d94bb76cb153430b1fa..d75863fa6e9d66ad71dbae1a175e878af0ecb23a 100644 (file)
        <li><strong>luci.http</strong></li>
        
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
@@ -256,7 +252,6 @@ Get the value of a certain HTTP-Cookie.</td>
        <td class="summary">
  
 Get the value of a certain HTTP environment variable 
 or the environment table itself.</td>
        </tr>
 
@@ -267,6 +262,20 @@ or the environment table itself.</td>
 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">
@@ -310,6 +319,44 @@ Splice data from a filedescriptor to the client.</td>
 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">
@@ -377,7 +424,6 @@ Encoded HTTP query string
 
  
 Close the HTTP-Connection. 
 
 
 
@@ -527,8 +573,8 @@ String containing cookie data
 
  
 Get the value of a certain HTTP environment variable 
-or the environment table itself.
+or the environment table itself. 
+
 
 
 <h3>Parameters</h3>
@@ -583,6 +629,135 @@ Send a HTTP-Header.
 
 
 
+</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>
 
 
@@ -759,6 +934,243 @@ Set the HTTP status code and status message.
 
 
 
+</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>
 
 
@@ -771,7 +1183,8 @@ Set the HTTP status code and 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.
+If the content chunk is nil this function will automatically invoke close. 
+
 
 
 <h3>Parameters</h3>
index 57063bbcf92b32a57fc8e0f5f672b133759cd8b6..e6e93ad3d628897d307e2a2332f50cd2b37e60b6 100644 (file)
@@ -341,7 +341,7 @@ Ltn12 source function
 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
+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 
@@ -556,7 +556,7 @@ The decoded string
 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
+in the params table within the given message object. Multiple parameter 
 values are stored as tables, ordinary ones as strings.
 
 
index 0111cb200f958c54c3c22922d01e8ededb6dc94f..3f0738bf18d022930a7171db450b12c77897738d 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li><strong>luci.i18n</strong></li>
index ce8c567952c230c469d2f3a85513e66593391d1e..50633a7735a82981a5024b33b795cf2a0164cac1 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
@@ -256,6 +252,30 @@ Checks whether the CIDR instance is an IPv6 link local address
        <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>
 
@@ -322,6 +342,20 @@ Derive broadcast address of CIDR instance.</td>
 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">
@@ -405,6 +439,10 @@ Checks whether the CIDR instance is an IPv4 address range
                cidr:is6
        </a>
        
+       <li><a href="#cidr.ismac">
+               cidr:ismac
+       </a>
+       
 </ul>
 
 </dd>
@@ -499,6 +537,10 @@ Checks whether the CIDR instance is an IPv6 address range
                cidr:is4
        </a>
        
+       <li><a href="#cidr.ismac">
+               cidr:ismac
+       </a>
+       
 </ul>
 
 </dd>
@@ -566,13 +608,108 @@ end</pre>
 
 
 
+<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</li> 
+<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> 
 
 
@@ -595,7 +732,8 @@ The comparisation follows these rules:
 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</pre>
+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>
 
 
 
@@ -629,7 +767,8 @@ print(addr:lower(luci.ip.new("192.168.200.1"))) -- true</pre>
  
 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</li> 
+<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> 
 
 
@@ -652,7 +791,8 @@ The comparisation follows these rules:
 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</pre>
+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>
 
 
 
@@ -709,7 +849,11 @@ 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</pre>
+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>
 
 
 
@@ -752,8 +896,8 @@ else the current prefix size is returned.
        
        <li>
          mask: Either a number containing the number of bits (<code>0..32</code> 
-       for IPv4, <code>0..128</code> for IPv6) or a string containing a valid 
-       netmask (optional)
+       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>
@@ -800,8 +944,8 @@ optional mask parameter.
        
        <li>
          mask: Either a number containing the number of bits (<code>0..32</code> 
-       for IPv4, <code>0..128</code> for IPv6) or a string containing a valid 
-       netmask (optional)
+       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>
@@ -837,7 +981,7 @@ CIDR instance representing the network address
 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 and <code>128</code> for IPv6
+set to <code>32</code> for IPv4, <code>128</code> for IPv6 or <code>48</code> for MAC addresses
 
 
 
@@ -877,8 +1021,8 @@ prefix size can be overridden by the optional mask parameter.
        
        <li>
          mask: Either a number containing the number of bits (<code>0..32</code> 
-       for IPv4, <code>0..128</code> for IPv6) or a string containing a valid 
-       netmask (optional)
+       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>
@@ -913,8 +1057,8 @@ 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 instances, it will return nothing in this 
-case. 
+This function has no effect on IPv6 or MAC address instances, it will return 
+nothing in this case. 
 
 
 
@@ -922,9 +1066,8 @@ case.
 <ul>
        
        <li>
-         mask: Either a number containing the number of bits (<code>0..32</code> 
-       for IPv4, <code>0..128</code> for IPv6) or a string containing a valid 
-       netmask (optional)
+         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>
@@ -960,8 +1103,8 @@ 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 or IPv6 instances which are not a 
-mapped address, it will return nothing in this case. 
+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. 
 
 
 
@@ -985,6 +1128,74 @@ Return a new CIDR instance representing the IPv4 address if this
 
 
 
+<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>
 
@@ -1014,7 +1225,11 @@ 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</pre>
+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>
 
 
 
@@ -1059,30 +1274,40 @@ address space, the result is set to the highest possible address.
 
 <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" 
+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(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 
+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" 
+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" 
  
-addr:add(256, true)          -- true 
-print(addr)                  -- "fe80::221:63f:fe75:ab17/64 
+mac:add(256, true)             -- true 
+print(mac)                     -- "00:14:22:01:24:45" 
  
-addr:add("ffff::", true)     -- false (overflow) 
-print(addr)                  -- "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/64"</pre>
+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 succeeded
+       <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 
@@ -1099,7 +1324,7 @@ print(addr)                  -- "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/64"</pr
 <dd>
 
  
-Subtract given amount from CIDR instance. If the result would under, the lowest
+Subtract given amount from CIDR instance. If the result would under, the lowest 
 possible address is returned. 
 
 
@@ -1142,16 +1367,26 @@ addr:sub(256, true)          -- true
 print(addr)                  -- "fe80::221:63f:fe75:a917/64" 
  
 addr:sub("ffff::", true)     -- false (underflow) 
-print(addr)                  -- "::/64"</pre>
+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 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
+        this instance minus the subtracted amount or the lowest address if 
            the subtraction underflowed.</li></ul>
 
 
@@ -1177,7 +1412,10 @@ Calculate the lowest possible host address within this CIDR instance.
 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"</pre>
+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>
 
 
 
@@ -1208,7 +1446,10 @@ Calculate the highest possible host address within this CIDR instance.
 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"</pre>
+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>
 
 
 
@@ -1229,8 +1470,9 @@ Returns a new CIDR instance representing the highest host address
  
 Convert CIDR instance into string representation. 
  
-If the prefix size of instance is less than 32 for IPv4 or 128 for IPv6, the 
-address is returned in the form "address/prefix" otherwise just "address". 
+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. 
index 549a55307e7f09ab2bdbd368b9a9528056290d6b..fc13e31e58d3fb1875bc62f6468c97f33ca729c7 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
@@ -231,6 +227,34 @@ Construct a new IPv4 luci.ip.cidr instance.</td>
 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">
@@ -334,6 +358,10 @@ address/mask range.
                IPv6
        </a>
        
+       <li><a href="#MAC">
+               MAC
+       </a>
+       
 </ul>
 
 </dd>
@@ -389,6 +417,10 @@ A <code>luci.ip.cidr</code> object representing the given IPv4 range.
                IPv6
        </a>
        
+       <li><a href="#MAC">
+               MAC
+       </a>
+       
 </ul>
 
 </dd>
@@ -444,6 +476,252 @@ A <code>luci.ip.cidr</code> object representing the given IPv6 range.
                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>
@@ -787,7 +1065,7 @@ A neighbour entry is a table containing the following fields:
 </tr> 
 <tr> 
   <td><code>mac</code></td> 
-  <td>String containing the associated MAC address</td> 
+  <td>MAC address <code>luci.ip.cidr</code> instance</td> 
 </tr> 
 <tr> 
   <td><code>router</code></td> 
@@ -905,8 +1183,8 @@ described below is returned, else an empty table.
 </tr> 
 <tr> 
   <td><code>mac</code></td> 
-  <td>String containing the link local address of the device in 
-      dotted hex notation</td> 
+  <td>MAC address <code>luci.ip.cidr</code> instance representing the device ethernet 
+      address</td> 
 </tr> 
 </table>
 
index 761bd6e7ea6e4fcd7f8b96ebd57a811f382b25f5..db2d1da3f46c2d5de6d8ab5c2050b27b716b24e5 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index f82eb406c7ef747960de42d4f2b2af98c2661a5d..79deb933d7bfcf03cda400ede667bfb3b2932f28 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index e8e145f43732aa60165d754cd75f435259c0dbf9..709cb9afc56986886072c310519959108aae255e 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 921153c98781457e362374aac768251909c919f1..a0af3187b74210d5b5ca87e86695fe77ac963626 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index c84d1eb0eb54235709d47c61360d68046b9978b6..77a81fd468b37d0bbe3a07920b3fa9285a8a0e1d 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
@@ -309,6 +305,13 @@ Get an option or list and return values as table.</td>
 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">
@@ -365,6 +368,13 @@ Set given values as list.</td>
 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">
@@ -631,8 +641,8 @@ Delete all sections of a given type that match certain criteria.
        </li>
        
        <li>
-         comparator: Function that will be called for each section and 
-returns a boolean whether to delete the current section (optional)
+         comparator: Function that will be called for each section and returns 
+                                       a boolean whether to delete the current section (optional)
        </li>
        
 </ul>
@@ -903,8 +913,8 @@ Get an option or list and return values as table.
 
 
 <h3>Return value:</h3>
-table.  If the option was not found, you will simply get 
-               an empty table.
+table.         If the option was not found, you will simply get an empty 
+                                       table.
 
 
 
@@ -936,6 +946,29 @@ Save directory
 
 
 
+<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>
 
@@ -1222,7 +1255,8 @@ has the same effect as deleting the option.
        </li>
        
        <li>
-         value: value or table. Raw values will become a single item table.
+         value: Value or table. Non-table values will be set as single 
+                                       item UCI list.
        </li>
        
 </ul>
@@ -1264,6 +1298,38 @@ Set the directory for uncommited changes.
 
 
 
+<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
 
@@ -1278,10 +1344,11 @@ Boolean whether operation succeeded
 <dd>
 
  
-Create a sub-state of this cursor. The sub-state is tied to the parent 
+Create a sub-state of this cursor. 
  
-curser, means it the parent unloads or loads configs, the sub state will 
-do so as well.
+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. 
+
 
 
 
index f7cb020482ef66c5b9b99d1c7a520845bdaffff3..18065788bd342f7845631540c5e263725ee1e1c3 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 203779ce7a337c1f2957d25477d9d059c9a3c0d4..7348f1932b0956159ba73e990874de17445f8811 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 860c5fba26f4cbe37a28f1f30abd03a650557e7b..6342a51d57b152625f4542cdf9044e75c605794d 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 596fb7cd1ed164dcc5a32487d243823f1d9ef613..e2c51f9531e49aaf314d12a05e4c68ec7243d9a0 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 122afcc2a9ba1c7cd596c42fdc9ceabe86307c6d..5928281cf48ec5c4dc93469f1eba427daf907335 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 09cef175f9379bbfbe50638fadccae16fdb19f7e..e7802bb244bcbcd59da63e18cbf2ad76a57f9375 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 9c4f0a54019e27f60c3ec1f5b4392ec6da9fc0ff..ffe09bdc209a0c6e59d3e5296e52170ebaea898c 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 37126dd924c90daed1e49a8ee35d958277612220..04f8bf02b23a94ccab0de5b36c31e4794c5b4af4 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index eb1f6b31d777cdfb0c7cad86395cab887d55a2ef..6c893244c12c21f08d56a91b79461405ed3e02b2 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 847230bbbda4fbb443ea0ccf5e1f3a481c07749b..d3d45a1800a849d0174ece8c760bb04c4d7b39df 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
@@ -274,13 +270,6 @@ This is a coroutine-safe drop-in replacement for Lua's "xpcall"-function
  </td>
        </tr>
 
-       <tr>
-       <td class="name" nowrap><a href="#dtable">dtable</a>&nbsp;()</td>
-       <td class="summary">
-Create a dynamic table which automatically creates subtables.</td>
-       </tr>
-
        <tr>
        <td class="name" nowrap><a href="#dumptable">dumptable</a>&nbsp;(t, maxdepth)</td>
        <td class="summary">
@@ -349,7 +338,6 @@ Returns the absolute path to LuCI base directory.</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>
 
@@ -379,7 +367,6 @@ Restore data previously serialized with serialize_data().</td>
        <td class="summary">
  
 Recursively serialize given data to lua code, suitable for restoring 
 with loadstring().</td>
        </tr>
 
@@ -391,12 +378,18 @@ 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>
 
@@ -405,7 +398,6 @@ the provided callback function.</td>
        <td class="summary">
  
 Splits given string on a defined separator sequence and return a table 
 containing the resulting substrings.</td>
        </tr>
 
@@ -428,7 +420,6 @@ Strip HTML tags from given string.</td>
        <td class="summary">
  
 Create a new or get an already existing thread local store associated with 
 the current active coroutine.</td>
        </tr>
 
@@ -453,6 +444,20 @@ Issue an ubus call.</td>
 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">
@@ -549,7 +554,8 @@ 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.
+with other objects of this class. Any return values will be ignored. 
+
 
 
 <h3>Parameters</h3>
@@ -629,7 +635,7 @@ Cloned table value
 <dd>
 
  
-Count the occurrences of given substring in given string.
+Count the occurrences of given substring in given string. 
 
 
 
@@ -728,8 +734,8 @@ Checks whether the given table contains the given value.
 
 
 <h3>Return value:</h3>
-number indicating the first index at which the given value occurs 
-                       within table or false.
+Number indicating the first index at which the given value occurs 
+                                       within table or false.
 
 
 
@@ -766,7 +772,7 @@ This is a coroutine-safe drop-in replacement for Lua's "pcall"-function
 
 <h3>Return value:</h3>
 A boolean whether the function call succeeded and the returns 
-                               values of the function or the error object
+                                       values of the function or the error object
 
 
 
@@ -807,30 +813,7 @@ This is a coroutine-safe drop-in replacement for Lua's "xpcall"-function
 
 <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="dtable"></a><strong>dtable</strong>&nbsp;()</dt>
-<dd>
-
-Create a dynamic table which automatically creates subtables. 
-
-
-
-
-
-
-
-
-<h3>Return value:</h3>
-Dynamic Table
+                                       values of either the function or the error handler
 
 
 
@@ -944,8 +927,8 @@ Iterator
 
  
 Return the current runtime bytecode of the given data. The byte code 
-will be stripped before it is returned.
+will be stripped before it is returned. 
+
 
 
 <h3>Parameters</h3>
@@ -976,11 +959,12 @@ String value containing the bytecode of the given data
 <dd>
 
  
-Return a matching iterator for the given value. The iterator will return 
+Return a matching iterator for the given value. 
  
-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.
+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>
@@ -1094,7 +1078,8 @@ Sorted table containing the keys
  
 Return a key, value iterator for the given table. 
  
-The table pairs are sorted by key.
+The table pairs are sorted by key. 
+
 
 
 <h3>Parameters</h3>
@@ -1149,9 +1134,11 @@ String containing the directory path
 
  
 Parse certain units from the given string and return the canonical integer 
+value or 0 if the unit is unknown. 
  
-value or 0 if the unit is unknown. Upper- or lower case is irrelevant. 
+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) 
@@ -1163,7 +1150,8 @@ Recognized units are:
  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)
+ o "gib"       - one si gigabyte (1000*1000*1000) 
+
 
 
 <h3>Parameters</h3>
@@ -1304,8 +1292,8 @@ Value containing the restored data structure
 
  
 Recursively serialize given data to lua code, suitable for restoring 
-with loadstring().
+with loadstring(). 
+
 
 
 <h3>Parameters</h3>
@@ -1381,13 +1369,45 @@ String containing the JSON if called without write callback
 
 
 
+<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.
+the provided callback function. 
+
 
 
 <h3>Parameters</h3>
@@ -1423,11 +1443,13 @@ Function value containing the corresponding iterator
 
  
 Splits given string on a defined separator sequence and return a table 
+containing the resulting substrings. 
  
-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.
+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>
@@ -1471,10 +1493,11 @@ Table containing the resulting substrings
 <dd>
 
  
-Strips unnescessary lua bytecode from given string. Information like line 
+Strips unnescessary lua bytecode from given string. 
  
-numbers and debugging numbers will be discarded. Original version by 
-Peter Cawley (http://lua-users.org/lists/lua-l/2008-02/msg01158.html)
+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>
@@ -1538,9 +1561,11 @@ String with HTML tags stripped of
 
  
 Create a new or get an already existing thread local store associated with 
+the current active coroutine. 
  
-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.
+A thread local store is private a table object 
+whose values can't be accessed from outside of the running coroutine. 
+
 
 
 
@@ -1636,7 +1661,8 @@ Table containin the ubus result
  
 Update values in given table with the values from the second given table. 
  
-Both table are - in fact - merged together.
+Both table are - in fact - merged together. 
+
 
 
 <h3>Parameters</h3>
@@ -1667,13 +1693,100 @@ Always nil
 
 
 
+<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.
+The table pairs are sorted by value. 
+
 
 
 <h3>Parameters</h3>
index 48bedc80afb76a1646fe3ea035f548282e764d1a..7d98747c2fd61f7d06a26bc1303154d741867dd7 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 6158a77b6032dbd2bc1be464a339dfeafe34babe..7d2f48b1e5ae1d162fb5549e50f6cdc4a593829e 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index d9e67ea5b32666795224cfc75f0edc0e1eb92dea..7a7500a773586117005760f00c8d16ce63bf3819 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index d8a17f78b40a5c15ead7f15376fc6fd6dab635ad..22dd7934917fc403a418602b8e5f602c72f21d7f 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
  <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
+ <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 
  <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 pratical purposes.</li>
+ 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
+ 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> 
index 7d258fc195debd65ed7fc1daaeeb2bad2a22990c..185099125d1940080e72b3babe30b82c8fe9d81b 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index a91b1eec4d02a64034bbff8ce236f2f2dde3a500..c84d318955d02cb60025064c601ef92bbea6252b 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 3d99a6482f848f263343f9a9629911fe0f20660c..5d6098a9f5fd69b80f530dd4f0cb8150f9a517e7 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 1717980841eb46eaf86bd5de833abc5c8d602747..6410ffb42edec98c658e13b4ccc99a8f838181b6 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
        <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
+       <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.
@@ -402,7 +398,7 @@ true
        <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
+       <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.
@@ -461,7 +457,7 @@ true
  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
+       <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.
@@ -584,7 +580,7 @@ boolean
  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
+       <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.
@@ -628,7 +624,7 @@ Line-based Iterator
        
        <li>This function uses the low-level read function of the descriptor.
        
-       <li>If the length parameter is omitted, this function returns all data
+       <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.
        
index fd82879129fe174aa1a708de623121ac861a4ed3..48e6fcd8b86d55947cade2f2e46495320d4e0c5f 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index b29c29d3357dca37fec39e9b7b7b66e9e775b77b..419736363c3bf1bd3f19a95e918f017698be3b5e 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 79a74584d4228174483d3fb59d8815a909b681a2..b91fe28c1dec102eb7fb2e0641eb033fa061dc97 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 40d0a0636e7dba1fbb3b98b8277039c225969259..c9d34591c2e0595fad8439b37e08da98e800d3bf 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
@@ -1274,7 +1270,7 @@ true
 
 
 <h3>Usage:</h3>
-It is normally not possible to rename files across fileystems.
+It is normally not possible to rename files across filesystems.
 
 
 
index 8ee0f62dc774fe821e536143ada619c828824451..65294a6582b602ac1a239337df4b8b4558eb7740 100644 (file)
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.html">luci.http.protocol</a>
+               <a href="../modules/luci.http.conditionals.html">luci.http.conditionals</a>
        </li>
 
        <li>
-               <a href="../modules/luci.http.protocol.conditionals.html">luci.http.protocol.conditionals</a>
+               <a href="../modules/luci.http.date.html">luci.http.date</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>
+               <a href="../modules/luci.http.mime.html">luci.http.mime</a>
        </li>
 
        <li>
index 1e7fd1bc856e9803ca09373da76e75430162b54b..b8bd428b2838ef9a8cede83dc227ff0538a362b2 100644 (file)
@@ -7,7 +7,7 @@
 include $(TOPDIR)/rules.mk
 
 LUCI_TITLE:=HTTP(S) client library
-LUCI_DEPENDS:=+luci-base +luci-lib-nixio
+LUCI_DEPENDS:=+luci-base +luci-lib-nixio +luci-lib-httpprotoutils
 
 include ../../luci.mk
 
index c76cc542ed9be19515a2ed5f2d53172206fdeba9..3e8d7277d7ac76312c9566f226cc56f9dcc898bb 100644 (file)
@@ -7,8 +7,8 @@ local nixio = require "nixio"
 local ltn12 = require "luci.ltn12"
 local util = require "luci.util"
 local table = require "table"
-local http = require "luci.http.protocol"
-local date = require "luci.http.protocol.date"
+local http = require "luci.http"
+local date = require "luci.http.date"
 
 local type, pairs, ipairs, tonumber = type, pairs, ipairs, tonumber
 local unpack = unpack
diff --git a/libs/luci-lib-httpprotoutils/Makefile b/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/libs/luci-lib-httpprotoutils/luasrc/http/conditionals.lua b/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/libs/luci-lib-httpprotoutils/luasrc/http/conditionals.luadoc b/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/libs/luci-lib-httpprotoutils/luasrc/http/date.lua b/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/libs/luci-lib-httpprotoutils/luasrc/http/date.luadoc b/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/libs/luci-lib-httpprotoutils/luasrc/http/mime.lua b/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/libs/luci-lib-httpprotoutils/luasrc/http/mime.luadoc b/libs/luci-lib-httpprotoutils/luasrc/http/mime.luadoc
new file mode 100644 (file)
index 0000000..7751e2b
--- /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 containg 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
+]]
+
index b91966c5369c78ba94065a31721176b68920a15b..854a0c09c2e646323ae77456191adad7e7324d23 100644 (file)
@@ -1,5 +1,5 @@
 /*
-Copyright 2015 Jo-Philipp Wich <jow@openwrt.org>
+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.
@@ -42,6 +42,16 @@ limitations under the License.
 #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;
 
@@ -49,11 +59,11 @@ typedef struct {
        union {
                struct in_addr v4;
                struct in6_addr v6;
+               struct ether_addr mac;
+               uint8_t u8[16];
        } addr;
-       int len;
-       int bits;
-       int family;
-       bool exact;
+       uint16_t family;
+       int16_t bits;
 } cidr_t;
 
 struct dump_filter {
@@ -70,6 +80,8 @@ struct dump_filter {
        cidr_t src;
        cidr_t dst;
        struct ether_addr mac;
+       bool from_exact;
+       bool dst_exact;
 };
 
 struct dump_state {
@@ -95,29 +107,68 @@ static cidr_t *L_checkcidr (lua_State *L, int index, cidr_t *p)
        return NULL;
 }
 
-static bool parse_mask(int family, const char *mask, int *bits)
+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;
-       struct in_addr m;
-       struct in6_addr m6;
+       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))
+       if (family == AF_INET && inet_pton(AF_INET, mask, &m.v4))
        {
-               for (*bits = 0, m.s_addr = ntohl(m.s_addr);
-                        *bits < 32 && (m.s_addr << *bits) & 0x80000000;
+               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, &m6))
+       else if ((family == AF_INET6 && inet_pton(AF_INET6, mask, &m.v6)) ||
+                (family == AF_PACKET && parse_mac(mask, &m.mac)))
        {
                for (*bits = 0;
-                        *bits < 128 && (m6.s6_addr[*bits / 8] << (*bits % 8)) & 128;
+                        *bits < AF_BITS(family) && (m.u8[*bits / 8] << (*bits % 8)) & 128;
                         ++*bits);
        }
        else
        {
                *bits = strtoul(mask, &e, 10);
 
-               if (e == mask || *e != 0 || *bits > ((family == AF_INET) ? 32 : 128))
+               if (e == mask || *e != 0 || *bits > AF_BITS(family))
                        return false;
        }
 
@@ -127,7 +178,6 @@ static bool parse_mask(int family, const char *mask, int *bits)
 static bool parse_cidr(const char *dest, cidr_t *pp)
 {
        char *p, buf[INET6_ADDRSTRLEN * 2 + 2];
-       uint8_t bitlen = 0;
 
        strncpy(buf, dest, sizeof(buf) - 1);
 
@@ -137,17 +187,11 @@ static bool parse_cidr(const char *dest, cidr_t *pp)
                *p++ = 0;
 
        if (inet_pton(AF_INET, buf, &pp->addr.v4))
-       {
-               bitlen = 32;
                pp->family = AF_INET;
-               pp->len = sizeof(struct in_addr);
-       }
        else if (inet_pton(AF_INET6, buf, &pp->addr.v6))
-       {
-               bitlen = 128;
                pp->family = AF_INET6;
-               pp->len = sizeof(struct in6_addr);
-       }
+       else if (parse_mac(buf, &pp->addr.mac))
+               pp->family = AF_PACKET;
        else
                return false;
 
@@ -158,12 +202,45 @@ static bool parse_cidr(const char *dest, cidr_t *pp)
        }
        else
        {
-               pp->bits = bitlen;
+               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;
@@ -220,17 +297,21 @@ static void L_setaddr(struct lua_State *L, const char *name,
        if (family == AF_INET)
        {
                p->family = AF_INET;
-               p->bits = (bits < 0) ? 32 : bits;
-               p->len = sizeof(p->addr.v4);
+               p->bits = (bits < 0) ? AF_BITS(AF_INET) : bits;
                p->addr.v4 = *(struct in_addr *)addr;
        }
-       else
+       else if (family == AF_INET6)
        {
                p->family = AF_INET6;
-               p->bits = (bits < 0) ? 128 : bits;
-               p->len = sizeof(p->addr.v6);
+               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);
@@ -254,6 +335,7 @@ static void L_setdev(struct lua_State *L, const char *name,
 
 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))
@@ -264,13 +346,15 @@ static int L_checkbits(lua_State *L, int index, cidr_t *p)
        {
                bits = lua_tointeger(L, index);
 
-               if (bits < 0 || bits > ((p->family == AF_INET) ? 32 : 128))
+               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), &bits))
+               if (!parse_mask(p->family, lua_tostring(L, index), &s16))
                        return luaL_error(L, "Invalid netmask format");
+
+               bits = s16;
        }
        else
        {
@@ -293,20 +377,26 @@ static int _cidr_new(lua_State *L, int index, int family, bool mask)
                if (family == AF_INET6)
                {
                        cidr.family = AF_INET6;
-                       cidr.bits = 128;
-                       cidr.len = sizeof(cidr.addr.v6);
                        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
+               else if (family == AF_INET)
                {
                        cidr.family = AF_INET;
-                       cidr.bits = 32;
-                       cidr.len = sizeof(cidr.addr.v4);
                        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
        {
@@ -346,6 +436,62 @@ 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);
@@ -424,6 +570,34 @@ static int cidr_is6linklocal(lua_State *L)
        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);
@@ -432,7 +606,7 @@ static int _cidr_cmp(lua_State *L)
        if (a->family != b->family)
                return (a->family - b->family);
 
-       return memcmp(&a->addr.v6, &b->addr.v6, a->len);
+       return memcmp(&a->addr.v6, &b->addr.v6, AF_BYTES(a->family));
 }
 
 static int cidr_lower(lua_State *L)
@@ -475,24 +649,24 @@ static void _apply_mask(cidr_t *p, int bits, bool inv)
 
        if (bits <= 0)
        {
-               memset(&p->addr.v6, inv * 0xFF, p->len);
+               memset(&p->addr.u8, inv * 0xFF, AF_BYTES(p->family));
        }
-       else if (p->family == AF_INET && bits <= 32)
+       else if (p->family == AF_INET && bits <= AF_BITS(AF_INET))
        {
                if (inv)
-                       p->addr.v4.s_addr |= ntohl((1 << (32 - bits)) - 1);
+                       p->addr.v4.s_addr |= ntohl((1 << (AF_BITS(AF_INET) - bits)) - 1);
                else
-                       p->addr.v4.s_addr &= ntohl(~((1 << (32 - bits)) - 1));
+                       p->addr.v4.s_addr &= ntohl(~((1 << (AF_BITS(AF_INET) - bits)) - 1));
        }
-       else if (p->family == AF_INET6 && bits <= 128)
+       else if (bits <= AF_BITS(p->family))
        {
-               for (i = 0; i < sizeof(p->addr.v6.s6_addr); i++)
+               for (i = 0; i < AF_BYTES(p->family); i++)
                {
                        b = (bits > 8) ? 8 : bits;
                        if (inv)
-                               p->addr.v6.s6_addr[i] |= ~((uint8_t)(0xFF << (8 - b)));
+                               p->addr.u8[i] |= ~((uint8_t)(0xFF << (8 - b)));
                        else
-                               p->addr.v6.s6_addr[i] &= (uint8_t)(0xFF << (8 - b));
+                               p->addr.u8[i] &= (uint8_t)(0xFF << (8 - b));
                        bits -= b;
                }
        }
@@ -507,7 +681,7 @@ static int cidr_network(lua_State *L)
                return 0;
 
        *p2 = *p1;
-       p2->bits = (p1->family == AF_INET) ? 32 : 128;
+       p2->bits = AF_BITS(p1->family);
        _apply_mask(p2, bits, false);
 
        luaL_getmetatable(L, LUCI_IP_CIDR);
@@ -524,7 +698,7 @@ static int cidr_host(lua_State *L)
                return 0;
 
        *p2 = *p1;
-       p2->bits = (p1->family == AF_INET) ? 32 : 128;
+       p2->bits = AF_BITS(p1->family);
 
        luaL_getmetatable(L, LUCI_IP_CIDR);
        lua_setmetatable(L, -2);
@@ -539,7 +713,7 @@ static int cidr_mask(lua_State *L)
        if (!(p2 = lua_newuserdata(L, sizeof(*p2))))
                return 0;
 
-       p2->bits = (p1->family == AF_INET) ? 32 : 128;
+       p2->bits = AF_BITS(p1->family);
        p2->family = p1->family;
 
        memset(&p2->addr.v6.s6_addr, 0xFF, sizeof(p2->addr.v6.s6_addr));
@@ -556,14 +730,14 @@ static int cidr_broadcast(lua_State *L)
        cidr_t *p2;
        int bits = L_checkbits(L, 2, p1);
 
-       if (p1->family == AF_INET6)
+       if (p1->family != AF_INET)
                return 0;
 
        if (!(p2 = lua_newuserdata(L, sizeof(*p2))))
                return 0;
 
        *p2 = *p1;
-       p2->bits = (p1->family == AF_INET) ? 32 : 128;
+       p2->bits = AF_BITS(AF_INET);
        _apply_mask(p2, bits, true);
 
        luaL_getmetatable(L, LUCI_IP_CIDR);
@@ -583,7 +757,7 @@ static int cidr_mapped4(lua_State *L)
                return 0;
 
        p2->family = AF_INET;
-       p2->bits = (p1->bits > 32) ? 32 : p1->bits;
+       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);
@@ -591,6 +765,72 @@ static int cidr_mapped4(lua_State *L)
        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);
@@ -603,15 +843,15 @@ static int cidr_contains(lua_State *L)
                _apply_mask(&a, p1->bits, false);
                _apply_mask(&b, p1->bits, false);
 
-               rv = !memcmp(&a.addr.v6, &b.addr.v6, a.len);
+               rv = !memcmp(&a.addr.v6, &b.addr.v6, AF_BYTES(a.family));
        }
 
        lua_pushboolean(L, rv);
        return 1;
 }
 
-#define S6_BYTE(a, i) \
-       (a)->addr.v6.s6_addr[sizeof((a)->addr.v6.s6_addr) - (i) - 1]
+#define BYTE(a, i) \
+       (a)->addr.u8[AF_BYTES((a)->family) - (i) - 1]
 
 static int _cidr_add_sub(lua_State *L, bool add)
 {
@@ -625,45 +865,45 @@ static int _cidr_add_sub(lua_State *L, bool add)
 
        if (p1->family == p2->family)
        {
-               if (p1->family == AF_INET6)
+               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 < sizeof(r.addr.v6.s6_addr); i++)
+                       for (i = 0, carry = 0; i < AF_BYTES(p1->family); i++)
                        {
                                if (add)
                                {
-                                       S6_BYTE(&r, i) = S6_BYTE(p1, i) + S6_BYTE(p2, i) + carry;
-                                       carry = (S6_BYTE(p1, i) + S6_BYTE(p2, i) + carry) / 256;
+                                       BYTE(&r, i) = BYTE(p1, i) + BYTE(p2, i) + carry;
+                                       carry = (BYTE(p1, i) + BYTE(p2, i) + carry) / 256;
                                }
                                else
                                {
-                                       S6_BYTE(&r, i) = (S6_BYTE(p1, i) - S6_BYTE(p2, i) - carry);
-                                       carry = (S6_BYTE(p1, i) < (S6_BYTE(p2, i) + carry));
+                                       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.v6, add * 0xFF, sizeof(r.addr.v6));
+                               memset(&r.addr.u8, add * 0xFF, AF_BYTES(r.family));
                                ok = false;
                        }
                }
-               else
-               {
-                       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
        {
@@ -705,22 +945,22 @@ static int cidr_minhost(lua_State *L)
 
        _apply_mask(&r, r.bits, false);
 
-       if (r.family == AF_INET6 && r.bits < 128)
+       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 = 128;
+               r.bits = AF_BITS(r.family);
 
-               for (i = 0, carry = 1; i < sizeof(r.addr.v6.s6_addr); i++)
+               for (i = 0, carry = 1; i < AF_BYTES(r.family); i++)
                {
-                       rest = (S6_BYTE(&r, i) + carry) > 255;
-                       S6_BYTE(&r, i) += carry;
+                       rest = (BYTE(&r, i) + carry) > 255;
+                       BYTE(&r, i) += carry;
                        carry = rest;
                }
        }
-       else if (r.family == AF_INET && r.bits < 32)
-       {
-               r.bits = 32;
-               r.addr.v4.s_addr = htonl(ntohl(r.addr.v4.s_addr) + 1);
-       }
 
        if (!(p = lua_newuserdata(L, sizeof(*p))))
                return 0;
@@ -739,14 +979,14 @@ static int cidr_maxhost(lua_State *L)
 
        _apply_mask(&r, r.bits, true);
 
-       if (r.family == AF_INET && r.bits < 32)
+       if (r.family == AF_INET && r.bits < AF_BITS(AF_INET))
        {
-               r.bits = 32;
+               r.bits = AF_BITS(AF_INET);
                r.addr.v4.s_addr = htonl(ntohl(r.addr.v4.s_addr) - 1);
        }
-       else if (r.family == AF_INET6)
+       else
        {
-               r.bits = 128;
+               r.bits = AF_BITS(r.family);
        }
 
        if (!(p = lua_newuserdata(L, sizeof(*p))))
@@ -766,31 +1006,17 @@ static int cidr_gc (lua_State *L)
 
 static int cidr_tostring (lua_State *L)
 {
-       char buf[INET6_ADDRSTRLEN];
        cidr_t *p = L_checkcidr(L, 1, NULL);
-
-       if ((p->family == AF_INET && p->bits < 32) ||
-           (p->family == AF_INET6 && p->bits < 128))
-       {
-               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;
+       return format_cidr(L, p);
 }
 
 /*
  * route functions
  */
 
-static bool diff_prefix(int family, void *addr, int bits, cidr_t *p)
+static bool diff_prefix(int family, void *addr, int bits, bool exact, cidr_t *p)
 {
-       uint8_t i, b, r;
+       uint8_t i, b, r, *a;
        uint32_t m;
 
        if (!p->family)
@@ -799,28 +1025,27 @@ static bool diff_prefix(int family, void *addr, int bits, cidr_t *p)
        if (!addr || p->family != family || p->bits > bits)
                return true;
 
-       if (family == AF_INET6)
+       if (family == AF_INET)
        {
-               for (i = 0, r = p->bits; i < sizeof(struct in6_addr); i++)
+               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 ((((struct in6_addr *)addr)->s6_addr[i] & b) !=
-                           (p->addr.v6.s6_addr[i] & b))
+                       if ((a[i] & b) != (p->addr.u8[i] & b))
                                return true;
 
                        r -= ((r > 8) ? 8 : r);
                }
        }
-       else
-       {
-               m = p->bits ? htonl(~((1 << (32 - p->bits)) - 1)) : 0;
 
-               if ((((struct in_addr *)addr)->s_addr & m) != (p->addr.v4.s_addr & m))
-                       return true;
-       }
-
-       return (p->exact && p->bits != bits);
+       return (exact && p->bits != bits);
 }
 
 static int cb_dump_route(struct nl_msg *msg, void *arg)
@@ -848,7 +1073,7 @@ static int cb_dump_route(struct nl_msg *msg, void *arg)
        dst   = tb[RTA_DST]     ? RTA_DATA(tb[RTA_DST])     : &def;
        gw    = tb[RTA_GATEWAY] ? RTA_DATA(tb[RTA_GATEWAY]) : NULL;
 
-       bitlen = (rt->rtm_family == AF_INET6) ? 128 : 32;
+       bitlen = AF_BITS(rt->rtm_family);
 
        if ((f->type   && rt->rtm_type     != f->type)   ||
            (f->family && rt->rtm_family   != f->family) ||
@@ -857,10 +1082,14 @@ static int cb_dump_route(struct nl_msg *msg, void *arg)
                (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) ||
-           diff_prefix(rt->rtm_family, dst,  rt->rtm_dst_len, &f->dst)  ||
-           diff_prefix(rt->rtm_family, gw,   bitlen, &f->gw)            ||
-           diff_prefix(rt->rtm_family, src,  bitlen, &f->src))
+           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)
@@ -988,7 +1217,8 @@ static int _route_dump(lua_State *L, struct dump_filter *filter)
        nlmsg_append(msg, &rtm, sizeof(rtm), 0);
 
        if (filter->get)
-               nla_put(msg, RTA_DST, filter->dst.len, &filter->dst.addr.v6);
+               nla_put(msg, RTA_DST, AF_BYTES(filter->dst.family),
+                       &filter->dst.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);
@@ -1063,10 +1293,10 @@ static int route_dump(lua_State *L)
                        filter.dst = p;
 
                if ((s = L_getstr(L, 1, "from_exact")) != NULL && parse_cidr(s, &p))
-                       filter.from = p, filter.from.exact = true;
+                       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;
+                       filter.dst = p, filter.dst_exact = true;
        }
 
        return _route_dump(L, &filter);
@@ -1107,12 +1337,12 @@ static int cb_dump_neigh(struct nl_msg *msg, void *arg)
        mac = tb[NDA_LLADDR] ? RTA_DATA(tb[NDA_LLADDR]) : NULL;
        dst = tb[NDA_DST]    ? RTA_DATA(tb[NDA_DST])    : NULL;
 
-       bitlen = (nd->ndm_family == AF_INET) ? 32 : 128;
+       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, &f->dst) ||
+           diff_prefix(nd->ndm_family, dst, bitlen, false, &f->dst) ||
            diff_macaddr(mac, &f->mac))
                goto out;
 
@@ -1140,15 +1370,7 @@ static int cb_dump_neigh(struct nl_msg *msg, void *arg)
                L_setaddr(s->L, "dest", nd->ndm_family, dst, -1);
 
        if (mac)
-       {
-               snprintf(buf, sizeof(buf), "%02x:%02x:%02x:%02x:%02x:%02x",
-                        mac->ether_addr_octet[0], mac->ether_addr_octet[1],
-                        mac->ether_addr_octet[2], mac->ether_addr_octet[3],
-                        mac->ether_addr_octet[4], mac->ether_addr_octet[5]);
-
-               lua_pushstring(s->L, buf);
-               lua_setfield(s->L, -2, "mac");
-       }
+               L_setaddr(s->L, "mac", AF_PACKET, mac, -1);
 
        s->index++;
 
@@ -1241,7 +1463,7 @@ out:
 
 static int cb_dump_link(struct nl_msg *msg, void *arg)
 {
-       char *p, *addr, buf[48];
+       char buf[48];
        struct dump_state *s = arg;
        struct nlmsghdr *hdr = nlmsg_hdr(msg);
        struct ifinfomsg *ifm = NLMSG_DATA(hdr);
@@ -1266,19 +1488,8 @@ static int cb_dump_link(struct nl_msg *msg, void *arg)
        if (tb[IFLA_MASTER])
                L_setdev(s->L, "master", tb[IFLA_MASTER]);
 
-       if (tb[IFLA_ADDRESS])
-       {
-               len  = nla_len(tb[IFLA_ADDRESS]);
-               addr = nla_get_string(tb[IFLA_ADDRESS]);
-
-               if ((len * 3) <= sizeof(buf))
-               {
-                       for (p = buf, i = 0; i < len; i++)
-                               p += sprintf(p, "%s%02x", (i ? ":" : ""), (uint8_t)*addr++);
-
-                       L_setstr(s->L, "mac", buf);
-               }
-       }
+       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;
@@ -1333,13 +1544,18 @@ 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          },
+       { "link",                       link_get          },
 
        { }
 };
@@ -1351,6 +1567,9 @@ static const luaL_reg ip_cidr_methods[] = {
        { "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        },
@@ -1360,7 +1579,9 @@ static const luaL_reg ip_cidr_methods[] = {
        { "mask",                       cidr_mask         },
        { "broadcast",          cidr_broadcast    },
        { "mapped4",            cidr_mapped4      },
-       { "contains",       cidr_contains     },
+       { "tomac",                      cidr_tomac        },
+       { "tolinklocal",        cidr_tolinklocal  },
+       { "contains",           cidr_contains     },
        { "add",                        cidr_add          },
        { "sub",                        cidr_sub          },
        { "minhost",            cidr_minhost      },
index e32ae72f40b1a88573efbd88d812da2da4bf6946..b1ecae1453957408b117b5ea37beee9b1b9f1c47 100644 (file)
@@ -27,6 +27,7 @@ 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
 ]]
 
 ---[[
@@ -47,6 +48,7 @@ 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
 ]]
 
 ---[[
@@ -67,12 +69,112 @@ 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
 ]]
 
 ---[[
-Determine the route leading to the given destination.
+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()`.
@@ -178,7 +280,7 @@ end`</li>
 ---[[
 Fetch all routes, optionally matching the given criteria.
 @class function
-@sort 5
+@sort 9
 @name routes
 @param filter  <p>Table containing one or more of the possible filter
 critera described below (optional)</p><table>
@@ -258,7 +360,7 @@ end`</li>
 ---[[
 Fetches entries from the IPv4 ARP and IPv6 neighbour kernel table
 @class function
-@sort 6
+@sort 10
 @name neighbors
 @param filter  <p>Table containing one or more of the possible filter
 critera described below (optional)</p><table>
@@ -306,7 +408,7 @@ A neighbour entry is a table containing the following fields:
 </tr>
 <tr>
   <td>`mac`</td>
-  <td>String containing the associated MAC address</td>
+  <td>MAC address `luci.ip.cidr` instance</td>
 </tr>
 <tr>
   <td>`router`</td>
@@ -367,7 +469,7 @@ end)`</li>
 ---[[
 Fetch basic device information
 @class function
-@sort 7
+@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
@@ -403,8 +505,8 @@ described below is returned, else an empty table.
 </tr>
 <tr>
   <td>`mac`</td>
-  <td>String containing the link local address of the device in
-      dotted hex notation</td>
+  <td>MAC address `luci.ip.cidr` instance representing the device ethernet
+      address</td>
 </tr>
 </table>
 @usage <ul>
@@ -430,6 +532,7 @@ Checks whether the CIDR instance is an IPv4 address range
 @sort 1
 @name cidr.is4
 @see cidr.is6
+@see cidr.ismac
 @return `true` if the CIDR is an IPv4 range, else `false`
 ]]
 
@@ -470,6 +573,7 @@ Checks whether the CIDR instance is an IPv6 address range
 @sort 4
 @name cidr.is6
 @see cidr.is4
+@see cidr.ismac
 @return `true` if the CIDR is an IPv6 range, else `false`
 ]]
 
@@ -501,14 +605,52 @@ if addr:is6mapped4() then
 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</li>
+<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 7
+@sort 10
 @name cidr.lower
 @param addr A `luci.ip.cidr` instance or a string convertable by
        `luci.ip.new()` to compare against.
@@ -518,7 +660,8 @@ The comparisation follows these rules:
 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("192.168.200.1"))) -- true
+print(addr:lower(luci.ip.new("00:14:22:01:23:45"))) -- true`
 @see cidr.higher
 @see cidr.equal
 ]]
@@ -526,11 +669,12 @@ print(addr:lower(luci.ip.new("192.168.200.1"))) -- true`
 ---[[
 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</li>
+<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 8
+@sort 11
 @name cidr.higher
 @param addr A `luci.ip.cidr` instance or a string convertable by
        `luci.ip.new()` to compare against.
@@ -540,7 +684,8 @@ The comparisation follows these rules:
 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("192.168.200.1"))) -- false
+print(addr:higher(luci.ip.new("00:14:22:01:23:45"))) -- false`
 @see cidr.lower
 @see cidr.equal
 ]]
@@ -549,7 +694,7 @@ print(addr:higher(luci.ip.new("192.168.200.1"))) -- false`
 Checks whether this CIDR instance is equal to the given argument.
 
 @class function
-@sort 9
+@sort 12
 @name cidr.equal
 @param addr A `luci.ip.cidr` instance or a string convertable by
        `luci.ip.new()` to compare against.
@@ -562,7 +707,11 @@ 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`
+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
 ]]
@@ -573,11 +722,11 @@ 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 10
+@sort 13
 @name cidr.prefix
 @param mask Either a number containing the number of bits (`0..32`
-       for IPv4, `0..128` for IPv6) or a string containing a valid
-       netmask (optional)
+       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
@@ -597,11 +746,11 @@ with all host parts masked out. The used prefix size can be overridden by the
 optional mask parameter.
 
 @class function
-@sort 11
+@sort 14
 @name cidr.network
 @param mask Either a number containing the number of bits (`0..32`
-       for IPv4, `0..128` for IPv6) or a string containing a valid
-       netmask (optional)
+       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"
@@ -616,10 +765,10 @@ 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 and `128` for IPv6.
+set to `32` for IPv4, `128` for IPv6 or `48` for MAC addresses.
 
 @class function
-@sort 12
+@sort 15
 @name cidr.host
 @return CIDR instance representing the host address
 @usage `local range = luci.ip.new("172.19.37.45/16")
@@ -634,11 +783,11 @@ 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 13
+@sort 16
 @name cidr.mask
 @param mask Either a number containing the number of bits (`0..32`
-       for IPv4, `0..128` for IPv6) or a string containing a valid
-       netmask (optional)
+       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"
@@ -652,15 +801,14 @@ 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 instances, it will return nothing in this
-case.
+This function has no effect on IPv6 or MAC address instances, it will return
+nothing in this case.
 
 @class function
-@sort 14
+@sort 17
 @name cidr.broadcast
-@param mask Either a number containing the number of bits (`0..32`
-       for IPv4, `0..128` for IPv6) or a string containing a valid
-       netmask (optional)
+@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")
@@ -675,11 +823,11 @@ 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 or IPv6 instances which are not a
-mapped address, it will return nothing in this case.
+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 15
+@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.
@@ -687,11 +835,47 @@ mapped address, it will return nothing in this case.
 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 16
+@sort 21
 @name cidr.contains
 @param addr A `luci.ip.cidr` instance or a string convertable by
        `luci.ip.new()` to test.
@@ -704,7 +888,11 @@ 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`
+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`
 ]]
 
 ---[[
@@ -712,7 +900,7 @@ 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 17
+@sort 22
 @name cidr.add
 @param amount A numeric value between 0 and 0xFFFFFFFF, a
        `luci.ip.cidr` instance or a string convertable by
@@ -726,32 +914,42 @@ address space, the result is set to the highest possible address.
         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"
+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(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
+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"
+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"
 
-addr:add(256, true)          -- true
-print(addr)                  -- "fe80::221:63f:fe75:ab17/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"
 
-addr:add("ffff::", true)     -- false (overflow)
-print(addr)                  -- "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/64"`
+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"`
 ]]
 
 ---[[
-Substract given amount from CIDR instance. If the result would under, the lowest
+Subtract given amount from CIDR instance. If the result would under, the lowest
 possible address is returned.
 
 @class function
-@sort 18
+@sort 23
 @name cidr.sub
 @param amount A numeric value between 0 and 0xFFFFFFFF, a
        `luci.ip.cidr` instance or a string convertable by
@@ -759,11 +957,11 @@ possible address is returned.
 @param inplace If `true`, modify this instance instead of returning
        a new derived CIDR instance.
 @return <ul>
-       <li>When substracting inplace: Return `true` if the substraction
-           succeded or `false` when the substraction underflowed.</li>
+       <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 substracted amount or the lowest address if
-           the substraction underflowed.</li></ul>
+        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"
@@ -782,14 +980,24 @@ addr:sub(256, true)          -- true
 print(addr)                  -- "fe80::221:63f:fe75:a917/64"
 
 addr:sub("ffff::", true)     -- false (underflow)
-print(addr)                  -- "::/64"`
+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 19
+@sort 24
 @name cidr.minhost
 @return Returns a new CIDR instance representing the lowest host address
        within this range.
@@ -797,14 +1005,17 @@ Calculate the lowest possible host address within this CIDR instance.
 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"`
+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 20
+@sort 25
 @name cidr.maxhost
 @return Returns a new CIDR instance representing the highest host address
        within this range.
@@ -812,20 +1023,24 @@ Calculate the highest possible host address within this CIDR instance.
 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"`
+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 or 128 for IPv6, the
-address is returned in the form "address/prefix" otherwise just "address".
+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 21
+@sort 26
 @name cidr.string
 @return Returns a string representing the range or address of this CIDR instance
 ]]
index f7b57f916c1e7c7d62a30dd62a1fa5e52ee4c7b5..6d4d752b19809fe6a841d924a5cabf1b215da52b 100644 (file)
@@ -181,13 +181,18 @@ function Encoder.parse_iter(self, obj)
        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
+       ['function'] = Encoder.parse_iter,
+       ['userdata'] = Encoder.parse_udata,
 }
 
 
index ee3e3a216c06d302d76d00883dd40779d3a37423..9860cf0919595f365d346d38c90b9cecd8f330d6 100644 (file)
@@ -33,7 +33,7 @@ module "nixio.README"
 -- <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 ommiting
+-- <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
@@ -41,10 +41,10 @@ module "nixio.README"
 -- <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 ommitted for pratical purposes.</li>
+-- 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 ommiting prefixes or suffixes. (e.g.  waitpid
+-- 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>
index 7123393bf4b7bdf4b9effcab50dc3554be0c9f64..c970534ed0d70f550df3ca52c815fe9bb86bdb3b 100644 (file)
@@ -71,7 +71,7 @@ module "nixio.Socket"
 
 --- Send a message on the socket.
 -- This function is identical to sendto except for the missing destination
--- paramters. See the sendto description for a detailed description.
+-- parameters. See the sendto description for a detailed description.
 -- @class function
 -- @name Socket.send
 -- @param buffer       Buffer holding the data to be written.
@@ -167,4 +167,4 @@ module "nixio.Socket"
 -- "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
\ No newline at end of file
+-- @return Value
index 6e407ff2ca14a67e546887b8d9654feef4f8de3f..6d1d5ea8c6b5d37159f50c2d5877091d6efedfd3 100644 (file)
@@ -24,15 +24,15 @@ module "nixio.UnifiedIO"
 -- @class function
 -- @name UnifiedIO.readall
 -- @usage This function uses the low-level read function of the descriptor.
--- @usage If the length parameter is ommited, this function returns all data
+-- @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 occured
+-- @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 occured
+-- @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
@@ -40,10 +40,10 @@ module "nixio.UnifiedIO"
 -- @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 occured
+-- @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 occured
+-- @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
@@ -56,7 +56,7 @@ module "nixio.UnifiedIO"
 -- 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 ommited, this function uses the nixio
+-- @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.
@@ -69,7 +69,7 @@ module "nixio.UnifiedIO"
 -- @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 ommited, the iterator returns data
+-- @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.
@@ -94,15 +94,15 @@ module "nixio.UnifiedIO"
 -- @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 ommited, data is copied
+-- @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 occured
+-- @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 occured
+-- @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.
@@ -111,19 +111,19 @@ module "nixio.UnifiedIO"
 -- @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 ommited, data is copied
+-- @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 occured
+-- @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 occured
+-- @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
\ No newline at end of file
+-- @return     true
index 5d08719e960abc4639f024d0fbccd0de686e5677..ef495f260a82f3bf3a19d43cfb471d50179da99d 100644 (file)
@@ -47,7 +47,7 @@ module "nixio.fs"
 -- @name nixio.fs.rename
 -- @param      src     Source path
 -- @param      dest Destination path
--- @usage      It is normally not possible to rename files accross fileystems.
+-- @usage      It is normally not possible to rename files across filesystems.
 -- @return     true
 
 --- Remove an empty directory.
@@ -262,4 +262,4 @@ module "nixio.fs"
 -- omit the basename even if source and destination basename are equal. 
 -- @param      src     Source path
 -- @param      dest Destination path
--- @return     true
\ No newline at end of file
+-- @return     true
index 1b434d76de53d409383eabccfb57a3115b458d0e..1a0d69a054510bad87e793fc180572cf4454fee2 100644 (file)
@@ -118,7 +118,7 @@ module "nixio"
 -- @param flag1 First Flag ["append", "creat", "excl", "nonblock", "ndelay",
 -- "sync", "trunc", "rdonly", "wronly", "rdwr"]
 -- @param ...  More Flags [-"-]
--- @return flag to be used as second paramter to open
+-- @return flag to be used as second parameter to open
 
 --- Duplicate a file descriptor.
 -- @class function
@@ -167,7 +167,7 @@ module "nixio"
 
 --- 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 occured.
+-- 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.
@@ -303,7 +303,7 @@ module "nixio"
 --- Set or unset a environment variable.
 -- @class function
 -- @name nixio.setenv
--- @usage The environment variable will be unset if value is ommited.
+-- @usage The environment variable will be unset if value is omitted.
 -- @param variable     Variable
 -- @param value                Value (optional)
 -- @return true
diff --git a/luci.mk b/luci.mk
index 0b2ec4e7000cf87f6e0d3c257cd0b534814e8d3e..cc39c0f4c8eb62086f8fdb1762e06d1a976cb357 100644 (file)
--- a/luci.mk
+++ b/luci.mk
@@ -96,6 +96,7 @@ define Package/$(PKG_NAME)
   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
 
index 6393195e59d6cd9b975684bb71cef8576f3abc17..7f7d7e772f571a7a1ccee2f59953762df128ceba 100644 (file)
@@ -12,7 +12,7 @@ LUCI_TYPE:=mod
 LUCI_BASENAME:=base
 
 LUCI_TITLE:=LuCI core libraries
-LUCI_DEPENDS:=+lua +libuci-lua +luci-lib-nixio +luci-lib-ip +rpcd +libubus-lua +luci-lib-jsonc
+LUCI_DEPENDS:=+lua +luci-lib-nixio +luci-lib-ip +rpcd +libubus-lua +luci-lib-jsonc +liblucihttp-lua
 
 PKG_SOURCE:=LuaSrcDiet-0.12.1.tar.bz2
 PKG_SOURCE_URL:=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/luasrcdiet
index b334703bdfb421964a57d6c7e64f4abda64f5dd1..6c35372cddd7560b6d76690f8dc1e0ac04b6e999 100644 (file)
@@ -23,6 +23,62 @@ 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.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 cbi_validators = {
 
        'integer': function()
@@ -53,69 +109,14 @@ var cbi_validators = {
 
        'ip4addr': function()
        {
-               if (this.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})(\/(\S+))?$/))
-               {
-                       return (RegExp.$1 >= 0) && (RegExp.$1 <= 255) &&
-                              (RegExp.$2 >= 0) && (RegExp.$2 <= 255) &&
-                              (RegExp.$3 >= 0) && (RegExp.$3 <= 255) &&
-                              (RegExp.$4 >= 0) && (RegExp.$4 <= 255) &&
-                              ((RegExp.$6.indexOf('.') < 0)
-                                 ? ((RegExp.$6 >= 0) && (RegExp.$6 <= 32))
-                                 : (cbi_validators.ip4addr.apply(RegExp.$6)))
-                       ;
-               }
-
-               return false;
+               var m = this.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})|\/(\d{1,2}))?$/);
+               return !!(m && IPv4(m[1]) && (m[2] ? IPv4(m[2]) : (m[3] ? cbi_validators.ip4prefix.apply(m[3]) : true)));
        },
 
        'ip6addr': function()
        {
-               if( this.match(/^([a-fA-F0-9:.]+)(\/(\d+))?$/) )
-               {
-                       if( !RegExp.$2 || ((RegExp.$3 >= 0) && (RegExp.$3 <= 128)) )
-                       {
-                               var addr = RegExp.$1;
-
-                               if( addr == '::' )
-                               {
-                                       return true;
-                               }
-
-                               if( addr.indexOf('.') > 0 )
-                               {
-                                       var off = addr.lastIndexOf(':');
-
-                                       if( !(off && cbi_validators.ip4addr.apply(addr.substr(off+1))) )
-                                               return false;
-
-                                       addr = addr.substr(0, off) + ':0:0';
-                               }
-
-                               if( addr.indexOf('::') >= 0 )
-                               {
-                                       var colons = 0;
-                                       var fill = '0';
-
-                                       for( var i = 1; i < (addr.length-1); i++ )
-                                               if( addr.charAt(i) == ':' )
-                                                       colons++;
-
-                                       if( colons > 7 )
-                                               return false;
-
-                                       for( var i = 0; i < (7 - colons); i++ )
-                                               fill += ':0';
-
-                                       if (addr.match(/^(.*?)::(.*?)$/))
-                                               addr = (RegExp.$1 ? RegExp.$1 + ':' : '') + fill +
-                                                      (RegExp.$2 ? ':' + RegExp.$2 : '');
-                               }
-
-                               return (addr.match(/^(?:[a-fA-F0-9]{1,4}:){7}[a-fA-F0-9]{1,4}$/) != null);
-                       }
-               }
-
-               return false;
+               var m = this.match(/^([0-9a-fA-F:.]+)(?:\/(\d{1,3}))?$/);
+               return !!(m && IPv6(m[1]) && (m[2] ? cbi_validators.ip6prefix.apply(m[2]) : true));
        },
 
        'ip4prefix': function()
@@ -136,50 +137,35 @@ var cbi_validators = {
 
        'cidr4': function()
        {
-               if (this.match(/^(\S+)\/(\S+)$/))
-               {
-                       ip = RegExp.$1;
-                       mask = RegExp.$2;
-                       return cbi_validators.ip4addr.apply(ip) &&
-                               cbi_validators.ip4prefix.apply(mask);
-               }
-               return false;
+               var m = this.match(/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\/(\d{1,2})$/);
+               return !!(m && IPv4(m[1]) && cbi_validators.ip4prefix.apply(m[2]));
        },
 
        'cidr6': function()
        {
-               if (this.match(/^(\S+)\/(\S+)$/))
-               {
-                       ip = RegExp.$1;
-                       mask = RegExp.$2;
-                       return cbi_validators.ip6addr.apply(ip) &&
-                               cbi_validators.ip6prefix.apply(mask);
-               }
-               return false;
+               var m = this.match(/^([0-9a-fA-F:.]+)\/(\d{1,3})$/);
+               return !!(m && IPv6(m[1]) && cbi_validators.ip6prefix.apply(m[2]));
        },
 
        'ipnet4': function()
        {
-               if (this.match(/^(\S+)\/(\S+)$/))
-               {
-                       ip = RegExp.$1;
-                       net = RegExp.$2;
-                       return cbi_validators.ip4addr.apply(ip) &&
-                               cbi_validators.ip4addr.apply(net);
-               }
-               return false;
+               var m = this.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 !!(m && IPv4(m[1]) && IPv4(m[2]));
        },
 
        'ipnet6': function()
        {
-               if (this.match(/^(\S+)\/(\S+)$/))
-               {
-                       ip = RegExp.$1;
-                       net = RegExp.$2;
-                       return cbi_validators.ip6addr.apply(ip) &&
-                               cbi_validators.ip6addr.apply(net);
-               }
-               return false;
+               var m = this.match(/^([0-9a-fA-F:.]+)\/([0-9a-fA-F:.]+)$/);
+               return !!(m && IPv6(m[1]) && IPv6(m[2]));
+       },
+
+       'ip6hostid': function()
+       {
+               if (this == "eui64" || this == "random")
+                       return true;
+
+               var v6 = IPv6(this);
+               return !(!v6 || v6[0] || v6[1] || v6[2] || v6[3]);
        },
 
        'ipmask': function()
@@ -232,12 +218,13 @@ var cbi_validators = {
                        ((ipv4only == 1) && cbi_validators.ip4addr.apply(this));
        },
 
-       'hostname': function()
+       'hostname': function(strict)
        {
                if (this.length <= 253)
-                       return (this.match(/^[a-zA-Z0-9]+$/) != null ||
+                       return (this.match(/^[a-zA-Z0-9_]+$/) != null ||
                                (this.match(/^[a-zA-Z0-9_][a-zA-Z0-9_\-.]*[a-zA-Z0-9]$/) &&
-                                this.match(/[^0-9.]/)));
+                                this.match(/[^0-9.]/))) &&
+                              (!strict || !this.match(/^_/));
 
                return false;
        },
index 3385f8f230ae5c1cb7edaeac17557cf054f5dbdf..de4476cdd32412a7bbf45e8c507a5f8025820acc 100644 (file)
@@ -39,7 +39,7 @@ XHR = function()
                        this._xmlHttp.abort();
        }
 
-       this.get = function(url,data,callback)
+       this.get = function(url,data,callback,timeout)
        {
                this.reinit();
 
@@ -56,6 +56,9 @@ XHR = function()
 
                xhr.open('GET', url, true);
 
+               if (!isNaN(timeout))
+                       xhr.timeout = timeout;
+
                xhr.onreadystatechange = function()
                {
                        if (xhr.readyState == 4) {
@@ -76,7 +79,7 @@ XHR = function()
                xhr.send(null);
        }
 
-       this.post = function(url,data,callback)
+       this.post = function(url,data,callback,timeout)
        {
                this.reinit();
 
@@ -90,6 +93,10 @@ XHR = function()
                }
 
                xhr.open('POST', url, true);
+
+               if (!isNaN(timeout))
+                       xhr.timeout = timeout;
+
                xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
                xhr.send(code);
        }
@@ -168,7 +175,7 @@ XHR.get = function(url, data, callback)
        (new XHR()).get(url, data, callback);
 }
 
-XHR.poll = function(interval, url, data, callback)
+XHR.poll = function(interval, url, data, callback, post)
 {
        if (isNaN(interval) || interval < 1)
                interval = 5;
@@ -181,22 +188,38 @@ XHR.poll = function(interval, url, data, callback)
                        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.get(e.url, e.data, e.callback);
+                                       e.xhr[post ? 'post' : 'get'](e.url, e.data, e.callback, e.interval * 1000 - 5);
                        }
 
                        XHR._t++;
                };
        }
 
-       XHR._q.push({
+       var e = {
                interval: interval,
                callback: callback,
                url:      url,
                data:     data,
                xhr:      new XHR()
-       });
+       };
 
+       XHR._q.push(e);
        XHR.run();
+
+       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()
index 21843950394081c1e0959038be660b28e628ba4f..4728642118c5d3794a3b5f9d7f25389bcf5c8743 100644 (file)
@@ -388,21 +388,21 @@ function Map.parse(self, readinput, ...)
 
        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")
-                       for i, config in ipairs(self.parsechain) do
-                               self.uci:commit(config)
-
-                               -- Refresh data because commit changes section names
-                               self.uci:load(config)
+                       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 then
-                               self.uci:apply(self.parsechain)
+                       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
index df23aaf13591b730bca7c309aaee0cdc49f2e4fd..99113e0b7a65b7317019b46d5d9a01cdd0ba839b 100644 (file)
@@ -169,8 +169,13 @@ function ipmask6(val)
 end
 
 function ip6hostid(val)
-       if val and val:match("^[a-fA-F0-9:]+$") and (#val > 2) then
-               return (ip6addr("2001:db8:0:0" .. val) or ip6addr("2001:db8:0:0:" .. 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
@@ -191,32 +196,16 @@ function portrange(val)
 end
 
 function macaddr(val)
-       if val and val:match(
-               "^[a-fA-F0-9]+:[a-fA-F0-9]+:[a-fA-F0-9]+:" ..
-                "[a-fA-F0-9]+:[a-fA-F0-9]+:[a-fA-F0-9]+$"
-       ) then
-               local parts = util.split( val, ":" )
-
-               for i = 1,6 do
-                       parts[i] = tonumber( parts[i], 16 )
-                       if parts[i] < 0 or parts[i] > 255 then
-                               return false
-                       end
-               end
-
-               return true
-       end
-
-       return false
+       return ip.checkmac(val) and true or false
 end
 
-function hostname(val)
+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 true
+               return (not strict or not val:match("^_"))
        end
        return false
 end
diff --git a/modules/luci-base/luasrc/controller/admin/servicectl.lua b/modules/luci-base/luasrc/controller/admin/servicectl.lua
deleted file mode 100644 (file)
index 1d73eb4..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
--- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
--- Licensed to the public under the Apache License 2.0.
-
-module("luci.controller.admin.servicectl", package.seeall)
-
-function index()
-       entry({"servicectl"}, alias("servicectl", "status")).sysauth = "root"
-       entry({"servicectl", "status"}, call("action_status")).leaf = true
-       entry({"servicectl", "restart"}, post("action_restart")).leaf = true
-end
-
-function action_status()
-       local data = nixio.fs.readfile("/var/run/luci-reload-status")
-       if data then
-               luci.http.write("/etc/config/")
-               luci.http.write(data)
-       else
-               luci.http.write("finish")
-       end
-end
-
-function action_restart(args)
-       local uci = require "luci.model.uci".cursor()
-       if args then
-               local service
-               local services = { }
-
-               for service in args:gmatch("[%w_-]+") do
-                       services[#services+1] = service
-               end
-
-               local command = uci:apply(services, true)
-               if nixio.fork() == 0 then
-                       local i = nixio.open("/dev/null", "r")
-                       local o = nixio.open("/dev/null", "w")
-
-                       nixio.dup(i, nixio.stdin)
-                       nixio.dup(o, nixio.stdout)
-
-                       i:close()
-                       o:close()
-
-                       nixio.exec("/bin/sh", unpack(command))
-               else
-                       luci.http.write("OK")
-                       os.exit(0)
-               end
-       end
-end
index e4f77f18d89d27cfcf525e5d40e5f08d905adfdb..2c58b0ab3d9220d76f7b0a1e7196b0da622949f6 100644 (file)
@@ -75,11 +75,16 @@ function error404(message)
        http.status(404, "Not Found")
        message = message or "Not Found"
 
-       require("luci.template")
-       if not util.copcall(luci.template.render, "error404") then
+       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
 
@@ -113,7 +118,8 @@ function httpdispatch(request, prefix)
                end
        end
 
-       for node in pathinfo:gmatch("[^/]+") do
+       local node
+       for node in pathinfo:gmatch("[^/%z]+") do
                r[#r+1] = node
        end
 
@@ -136,8 +142,7 @@ local function require_post_security(target)
 
                                if (type(required_val) == "string" and
                                    request_val ~= required_val) or
-                                  (required_val == true and
-                                   (request_val == nil or request_val == ""))
+                                  (required_val == true and request_val == nil)
                                then
                                        return false
                                end
@@ -177,6 +182,7 @@ local function session_retrieve(sid, allowed_users)
           (not allowed_users or
            util.contains(allowed_users, sdat.values.username))
        then
+               uci:set_session_id(sid)
                return sid, sdat.values
        end
 
@@ -191,6 +197,9 @@ local function session_setup(user, pass, allowed_users)
                        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
@@ -199,8 +208,14 @@ local function session_setup(user, pass, allowed_users)
                                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
@@ -337,15 +352,23 @@ function dispatch(request)
                   ifattr      = function(...) return _ifattr(...) end;
                   attr        = function(...) return _ifattr(true, ...) end;
                   url         = build_url;
-               }, {__index=function(table, key)
+               }, {__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(table, key) or _G[key]
+                               return rawget(tbl, key) or _G[key]
                        end
                end})
        end
@@ -358,7 +381,7 @@ function dispatch(request)
                "https://github.com/openwrt/luci/issues"
        )
 
-       if track.sysauth then
+       if track.sysauth and not ctx.authsession then
                local authen = track.sysauth_authenticator
                local _, sid, sdat, default_user, allowed_users
 
@@ -406,7 +429,9 @@ function dispatch(request)
                                return
                        end
 
-                       http.header("Set-Cookie", 'sysauth=%s; path=%s' %{ sid, build_url() })
+                       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
 
@@ -420,6 +445,13 @@ function dispatch(request)
                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
@@ -641,6 +673,23 @@ function node(...)
        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
@@ -782,7 +831,16 @@ local function _cbi(self, ...)
 
        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
@@ -827,6 +885,8 @@ local function _cbi(self, ...)
        local pageaction = true
        local parsechain = { }
 
+       local is_rollback, time_remaining = uci:rollback_pending()
+
        for i, res in ipairs(maps) do
                if res.apply_needed and res.parsechain then
                        local c
@@ -854,6 +914,7 @@ local function _cbi(self, ...)
                res:render({
                        firstmap   = (i == 1),
                        applymap   = applymap,
+                       confirmmap = (is_rollback and time_remaining or nil),
                        redirect   = redirect,
                        messages   = messages,
                        pageaction = pageaction,
@@ -875,7 +936,7 @@ end
 function cbi(model, config)
        return {
                type = "cbi",
-               post = { ["cbi.submit"] = "1" },
+               post = { ["cbi.submit"] = true },
                config = config,
                model = model,
                target = _cbi
@@ -903,6 +964,7 @@ local function _form(self, ...)
        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
@@ -921,7 +983,7 @@ end
 function form(model)
        return {
                type = "cbi",
-               post = { ["cbi.submit"] = "1" },
+               post = { ["cbi.submit"] = true },
                model = model,
                target = _form
        }
index 743463c74f98ab5ee77927b9a4dec8544775ab4d..ddf534b3e1e8f140b7a0f37f1eadbb29d93a586f 100644 (file)
@@ -116,8 +116,8 @@ Create a new dispatching node and define common parameters.
 
 ---[[
 Fetch or create a dispatching node without setting the target module or
-
 enabling the node.
+
 @class function
 @name get
 @param ...             Virtual path
@@ -133,6 +133,15 @@ Fetch or create a new dispatching node.
 @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
 
index 9cc9857867a430d00c67be669249685fa483daf2..f4ede4b8a5771ea3b7eacb301993f09d1ddee912 100644 (file)
@@ -1,18 +1,21 @@
 -- 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 ltn12 = require "luci.ltn12"
-local protocol = require "luci.http.protocol"
 local util  = require "luci.util"
-local string = require "string"
 local coroutine = require "coroutine"
 local table = require "table"
+local lhttp = require "lucihttp"
+local nixio = require "nixio"
+local ltn12 = require "luci.ltn12"
 
-local ipairs, pairs, next, type, tostring, error =
-       ipairs, pairs, next, type, tostring, error
+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()
@@ -28,7 +31,7 @@ function Request.__init__(self, env, sourcein, sinkerr)
        self.message = {
                env = env,
                headers = {},
-               params = protocol.urldecode_params(env.QUERY_STRING or ""),
+               params = urldecode_params(env.QUERY_STRING or ""),
        }
 
        self.parsed_input = false
@@ -73,10 +76,7 @@ function Request.content(self)
 end
 
 function Request.getcookie(self, name)
-  local c = string.gsub(";" .. (self:getenv("HTTP_COOKIE") or "") .. ";", "%s*;%s*", ";")
-  local p = ";" .. name .. "=(.-);"
-  local i, j, value = c:find(p)
-  return value and urldecode(value)
+       return lhttp.header_attribute("cookie; " .. (self:getenv("HTTP_COOKIE") or ""), name)
 end
 
 function Request.getenv(self, name)
@@ -90,40 +90,34 @@ end
 function Request.setfilehandler(self, callback)
        self.filehandler = callback
 
-       -- If input has already been parsed then any files are either in temporary files
-       -- or are in self.message.params[key]
-       if self.parsed_input then
-               for param, value in pairs(self.message.params) do
-               repeat
-                       -- We're only interested in files
-                       if (not value["file"]) then break end
-                       -- If we were able to write to temporary file
-                       if (value["fd"]) then 
-                               fd = value["fd"]
-                               local eof = false
-                               repeat  
-                                       filedata = fd:read(1024)
-                                       if (filedata:len() < 1024) then
-                                               eof = true
-                                       end
-                                       callback({ name=value["name"], file=value["file"] }, filedata, eof)
-                               until (eof)
-                               fd:close()
-                               value["fd"] = nil
-                       -- We had to read into memory
-                       else
-                               -- There should only be one numbered value in table - the data
-                               for k, v in ipairs(value) do
-                                       callback({ name=value["name"], file=value["file"] }, v, true)
+       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
-               until true
                end
        end
 end
 
 function Request._parse_input(self)
-       protocol.parse_message_body(
+       parse_message_body(
                 self.input,
                 self.message,
                 self.filehandler
@@ -254,23 +248,307 @@ function redirect(url)
 end
 
 function build_querystring(q)
-       local s = { "?" }
+       local s, n, k, v = {}, 1, nil, nil
 
        for k, v in pairs(q) do
-               if #s > 1 then s[#s+1] = "&" end
-
-               s[#s+1] = urldecode(k)
-               s[#s+1] = "="
-               s[#s+1] = urldecode(v)
+               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 = protocol.urldecode
+urldecode = util.urldecode
 
-urlencode = protocol.urlencode
+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 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)
+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
index 8a325db21a4b5fca7214496f9dbb29aa36803c59..f8121230b60642c7eae9148f964d378f59acb927 100644 (file)
@@ -6,25 +6,24 @@ module "luci.http"
 ---[[
 Close the HTTP-Connection.
 
-
-@class function
-@name close
+@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
+@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
+@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
@@ -33,8 +32,8 @@ Get a certain HTTP input value or a table of all input values.
 ---[[
 Get a table of all HTTP input values with a certain prefix.
 
-@class function
-@name formvaluetable
+@class                 function
+@name                  formvaluetable
 @param prefix  Prefix
 @return                        Table of all HTTP input values with given prefix
 ]]
@@ -42,18 +41,18 @@ Get a table of all HTTP input values with a certain prefix.
 ---[[
 Get the value of a certain HTTP-Cookie.
 
-@class function
-@name getcookie
+@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
+
+@class                 function
+@name                  getenv
 @param name            Environment variable
 @return                        HTTP environment value or environment table
 ]]
@@ -61,41 +60,41 @@ or the environment table itself.
 ---[[
 Set a handler function for incoming user file uploads.
 
-@class function
-@name setfilehandler
+@class                 function
+@name                  setfilehandler
 @param callback        Handler function
 ]]
 
 ---[[
 Send a HTTP-Header.
 
-@class function
-@name header
-@param key     Header key
-@param value Header value
+@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
+@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
+@class                 function
+@name                  source
+@return                        HTTP LTN12 source
 ]]
 
 ---[[
 Set the HTTP status code and status message.
 
-@class function
-@name status
+@class                 function
+@name                  status
 @param code            Status code
 @param message Status message
 ]]
@@ -105,8 +104,9 @@ 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
+
+@class                 function
+@name                  write
 @param content Content chunk
 @param src_err Error object from source (optional)
 @see close
@@ -115,51 +115,146 @@ If the content chunk is nil this function will automatically invoke close.
 ---[[
 Splice data from a filedescriptor to the client.
 
-@class function
-@name splice
-@param fp      File descriptor
-@param size    Bytes to splice (optional)
+@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
+@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
+@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
+@see                   urlencode
 ]]
 
 ---[[
 Return the URL-encoded equivalent of a string.
 
+@class                 function
+@name                  urlencode
 @param str             Source string
 @return                        URL-encoded string
-@see urldecode
+@see                   urldecode
 ]]
 
 ---[[
 Send the given data as JSON encoded string.
 
-@class function
-@name write_json
+@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 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)
+
+@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/modules/luci-base/luasrc/http/protocol.lua b/modules/luci-base/luasrc/http/protocol.lua
deleted file mode 100644 (file)
index 0a8b2fb..0000000
+++ /dev/null
@@ -1,649 +0,0 @@
--- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich <jow@openwrt.org>
--- Licensed to the public under the Apache License 2.0.
-
--- This class contains several functions useful for http message- and content
--- decoding and to retrive form data from raw http messages.
-module("luci.http.protocol", package.seeall)
-
-local ltn12 = require("luci.ltn12")
-
-HTTP_MAX_CONTENT      = 1024*8         -- 8 kB maximum content size
-
--- the "+" sign to " " - and return the decoded string.
-function urldecode( str, no_plus )
-
-       local function __chrdec( hex )
-               return string.char( tonumber( hex, 16 ) )
-       end
-
-       if type(str) == "string" then
-               if not no_plus then
-                       str = str:gsub( "+", " " )
-               end
-
-               str = str:gsub( "%%([a-fA-F0-9][a-fA-F0-9])", __chrdec )
-       end
-
-       return str
-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 params = tbl or { }
-
-       if url:find("?") then
-               url = url:gsub( "^.+%?([^?]+)", "%1" )
-       end
-
-       for pair in url:gmatch( "[^&;]+" ) do
-
-               -- find key and value
-               local key = urldecode( pair:match("^([^=]+)")     )
-               local val = urldecode( pair:match("^[^=]+=(.+)$") )
-
-               -- store
-               if type(key) == "string" and key:len() > 0 then
-                       if type(val) ~= "string" then val = "" end
-
-                       if not params[key] then
-                               params[key] = val
-                       elseif type(params[key]) ~= "table" then
-                               params[key] = { params[key], val }
-                       else
-                               table.insert( params[key], val )
-                       end
-               end
-       end
-
-       return params
-end
-
-function urlencode( str )
-
-       local function __chrenc( chr )
-               return string.format(
-                       "%%%02x", string.byte( chr )
-               )
-       end
-
-       if type(str) == "string" then
-               str = str:gsub(
-                       "([^a-zA-Z0-9$_%-%.%~])",
-                       __chrenc
-               )
-       end
-
-       return str
-end
-
--- separated by "&". Tables are encoded as parameters with multiple values by
--- repeating the parameter name with each value.
-function urlencode_params( tbl )
-       local enc = ""
-
-       for k, v in pairs(tbl) do
-               if type(v) == "table" then
-                       for i, v2 in ipairs(v) do
-                               enc = enc .. ( #enc > 0 and "&" or "" ) ..
-                                       urlencode(k) .. "=" .. urlencode(v2)
-                       end
-               else
-                       enc = enc .. ( #enc > 0 and "&" or "" ) ..
-                               urlencode(k) .. "=" .. urlencode(v)
-               end
-       end
-
-       return enc
-end
-
--- (Internal function)
--- Initialize given parameter and coerce string into table when the parameter
--- already exists.
-local function __initval( tbl, key )
-       if tbl[key] == nil then
-               tbl[key] = ""
-       elseif type(tbl[key]) == "string" then
-               tbl[key] = { tbl[key], "" }
-       else
-               table.insert( tbl[key], "" )
-       end
-end
-
--- (Internal function)
--- Initialize given file parameter.
-local function __initfileval( tbl, key, filename, fd )
-       if tbl[key] == nil then
-               tbl[key] = { file=filename, fd=fd, name=key, "" }
-       else
-               table.insert( tbl[key], "" )
-       end
-end
-
--- (Internal function)
--- Append given data to given parameter, either by extending the string value
--- or by appending it to the last string in the parameter's value table.
-local function __appendval( tbl, key, chunk )
-       if type(tbl[key]) == "table" then
-               tbl[key][#tbl[key]] = tbl[key][#tbl[key]] .. chunk
-       else
-               tbl[key] = tbl[key] .. chunk
-       end
-end
-
--- (Internal function)
--- Finish the value of given parameter, either by transforming the string value
--- or - in the case of multi value parameters - the last element in the
--- associated values table.
-local function __finishval( tbl, key, handler )
-       if handler then
-               if type(tbl[key]) == "table" then
-                       tbl[key][#tbl[key]] = handler( tbl[key][#tbl[key]] )
-               else
-                       tbl[key] = handler( tbl[key] )
-               end
-       end
-end
-
-
--- Table of our process states
-local process_states = { }
-
--- Extract "magic", the first line of a http message.
--- Extracts the message type ("get", "post" or "response"), the requested uri
--- or the status code if the line descripes a http response.
-process_states['magic'] = function( msg, chunk, err )
-
-       if chunk ~= nil then
-               -- ignore empty lines before request
-               if #chunk == 0 then
-                       return true, nil
-               end
-
-               -- Is it a request?
-               local method, uri, http_ver = chunk:match("^([A-Z]+) ([^ ]+) HTTP/([01]%.[019])$")
-
-               -- Yup, it is
-               if method then
-
-                       msg.type           = "request"
-                       msg.request_method = method:lower()
-                       msg.request_uri    = uri
-                       msg.http_version   = tonumber( http_ver )
-                       msg.headers        = { }
-
-                       -- We're done, next state is header parsing
-                       return true, function( chunk )
-                               return process_states['headers']( msg, chunk )
-                       end
-
-               -- Is it a response?
-               else
-
-                       local http_ver, code, message = chunk:match("^HTTP/([01]%.[019]) ([0-9]+) ([^\r\n]+)$")
-
-                       -- Is a response
-                       if code then
-
-                               msg.type           = "response"
-                               msg.status_code    = code
-                               msg.status_message = message
-                               msg.http_version   = tonumber( http_ver )
-                               msg.headers        = { }
-
-                               -- We're done, next state is header parsing
-                               return true, function( chunk )
-                                       return process_states['headers']( msg, chunk )
-                               end
-                       end
-               end
-       end
-
-       -- Can't handle it
-       return nil, "Invalid HTTP message magic"
-end
-
-
--- Extract headers from given string.
-process_states['headers'] = function( msg, chunk )
-
-       if chunk ~= nil then
-
-               -- Look for a valid header format
-               local hdr, val = chunk:match( "^([A-Za-z][A-Za-z0-9%-_]+): +(.+)$" )
-
-               if type(hdr) == "string" and hdr:len() > 0 and
-                  type(val) == "string" and val:len() > 0
-               then
-                       msg.headers[hdr] = val
-
-                       -- Valid header line, proceed
-                       return true, nil
-
-               elseif #chunk == 0 then
-                       -- Empty line, we won't accept data anymore
-                       return false, nil
-               else
-                       -- Junk data
-                       return nil, "Invalid HTTP header received"
-               end
-       else
-               return nil, "Unexpected EOF"
-       end
-end
-
-
--- data line by line with the trailing \r\n stripped of.
-function header_source( sock )
-       return ltn12.source.simplify( function()
-
-               local chunk, err, part = sock:receive("*l")
-
-               -- Line too long
-               if chunk == nil then
-                       if err ~= "timeout" then
-                               return nil, part
-                                       and "Line exceeds maximum allowed length"
-                                       or  "Unexpected EOF"
-                       else
-                               return nil, err
-                       end
-
-               -- Line ok
-               elseif chunk ~= nil then
-
-                       -- Strip trailing CR
-                       chunk = chunk:gsub("\r$","")
-
-                       return chunk, nil
-               end
-       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.
--- 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)
-function mimedecode_message_body( src, msg, filecb )
-
-       if msg and msg.env.CONTENT_TYPE then
-               msg.mime_boundary = msg.env.CONTENT_TYPE:match("^multipart/form%-data; boundary=(.+)$")
-       end
-
-       if not msg.mime_boundary then
-               return nil, "Invalid Content-Type found"
-       end
-
-
-       local tlen   = 0
-       local inhdr  = false
-       local field  = nil
-       local store  = nil
-       local lchunk = nil
-
-       local function parse_headers( chunk, field )
-
-               local stat
-               repeat
-                       chunk, stat = chunk:gsub(
-                               "^([A-Z][A-Za-z0-9%-_]+): +([^\r\n]+)\r\n",
-                               function(k,v)
-                                       field.headers[k] = v
-                                       return ""
-                               end
-                       )
-               until stat == 0
-
-               chunk, stat = chunk:gsub("^\r\n","")
-
-               -- End of headers
-               if stat > 0 then
-                       if field.headers["Content-Disposition"] then
-                               if field.headers["Content-Disposition"]:match("^form%-data; ") then
-                                       field.name = field.headers["Content-Disposition"]:match('name="(.-)"')
-                                       field.file = field.headers["Content-Disposition"]:match('filename="(.+)"$')
-                               end
-                       end
-
-                       if not field.headers["Content-Type"] then
-                               field.headers["Content-Type"] = "text/plain"
-                       end
-
-                       if field.name and field.file and filecb then
-                               __initval( msg.params, field.name )
-                               __appendval( msg.params, field.name, field.file )
-
-                               store = filecb
-                       elseif field.name and field.file then
-                               local nxf = require "nixio"
-                               local fd = nxf.mkstemp(field.name)
-                               __initfileval ( msg.params, field.name, field.file, fd )
-                               if fd then
-                                       store = function(hdr, buf, eof)
-                                               fd:write(buf)
-                                               if (eof) then
-                                                       fd:seek(0, "set")
-                                               end
-                                       end
-                               else
-                                       store = function( hdr, buf, eof )
-                                               __appendval( msg.params, field.name, buf )
-                                       end
-                               end
-                       elseif field.name then
-                               __initval( msg.params, field.name )
-
-                               store = function( hdr, buf, eof )
-                                       __appendval( msg.params, field.name, buf )
-                               end
-                       else
-                               store = nil
-                       end
-
-                       return chunk, true
-               end
-
-               return chunk, false
-       end
-
-       local function snk( chunk )
-
-               tlen = tlen + ( chunk and #chunk or 0 )
-
-               if msg.env.CONTENT_LENGTH and tlen > tonumber(msg.env.CONTENT_LENGTH) + 2 then
-                       return nil, "Message body size exceeds Content-Length"
-               end
-
-               if chunk and not lchunk then
-                       lchunk = "\r\n" .. chunk
-
-               elseif lchunk then
-                       local data = lchunk .. ( chunk or "" )
-                       local spos, epos, found
-
-                       repeat
-                               spos, epos = data:find( "\r\n--" .. msg.mime_boundary .. "\r\n", 1, true )
-
-                               if not spos then
-                                       spos, epos = data:find( "\r\n--" .. msg.mime_boundary .. "--\r\n", 1, true )
-                               end
-
-
-                               if spos then
-                                       local predata = data:sub( 1, spos - 1 )
-
-                                       if inhdr then
-                                               predata, eof = parse_headers( predata, field )
-
-                                               if not eof then
-                                                       return nil, "Invalid MIME section header"
-                                               elseif not field.name then
-                                                       return nil, "Invalid Content-Disposition header"
-                                               end
-                                       end
-
-                                       if store then
-                                               store( field, predata, true )
-                                       end
-
-
-                                       field = { headers = { } }
-                                       found = found or true
-
-                                       data, eof = parse_headers( data:sub( epos + 1, #data ), field )
-                                       inhdr = not eof
-                               end
-                       until not spos
-
-                       if found then
-                               -- We found at least some boundary. Save
-                               -- the unparsed remaining data for the
-                               -- next chunk.
-                               lchunk, data = data, nil
-                       else
-                               -- There was a complete chunk without a boundary. Parse it as headers or
-                               -- append it as data, depending on our current state.
-                               if inhdr then
-                                       lchunk, eof = parse_headers( data, field )
-                                       inhdr = not eof
-                               else
-                                       -- We're inside data, so append the data. Note that we only append
-                                       -- lchunk, not all of data, since there is a chance that chunk
-                                       -- contains half a boundary. Assuming that each chunk is at least the
-                                       -- boundary in size, this should prevent problems
-                                       store( field, lchunk, false )
-                                       lchunk, chunk = chunk, nil
-                               end
-                       end
-               end
-
-               return true
-       end
-
-       return ltn12.pump.all( src, snk )
-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 tlen   = 0
-       local lchunk = nil
-
-       local function snk( chunk )
-
-               tlen = tlen + ( chunk and #chunk or 0 )
-
-               if msg.env.CONTENT_LENGTH and tlen > tonumber(msg.env.CONTENT_LENGTH) + 2 then
-                       return nil, "Message body size exceeds Content-Length"
-               elseif tlen > HTTP_MAX_CONTENT then
-                       return nil, "Message body size exceeds maximum allowed length"
-               end
-
-               if not lchunk and chunk then
-                       lchunk = chunk
-
-               elseif lchunk then
-                       local data = lchunk .. ( chunk or "&" )
-                       local spos, epos
-
-                       repeat
-                               spos, epos = data:find("^.-[;&]")
-
-                               if spos then
-                                       local pair = data:sub( spos, epos - 1 )
-                                       local key  = pair:match("^(.-)=")
-                                       local val  = pair:match("=([^%s]*)%s*$")
-
-                                       if key and #key > 0 then
-                                               __initval( msg.params, key )
-                                               __appendval( msg.params, key, val )
-                                               __finishval( msg.params, key, urldecode )
-                                       end
-
-                                       data = data:sub( epos + 1, #data )
-                               end
-                       until not spos
-
-                       lchunk = data
-               end
-
-               return true
-       end
-
-       return ltn12.pump.all( src, snk )
-end
-
--- version, message headers and resulting CGI environment variables from the
--- given ltn12 source.
-function parse_message_header( src )
-
-       local ok   = true
-       local msg  = { }
-
-       local sink = ltn12.sink.simplify(
-               function( chunk )
-                       return process_states['magic']( msg, chunk )
-               end
-       )
-
-       -- Pump input data...
-       while ok do
-
-               -- get data
-               ok, err = ltn12.pump.step( src, sink )
-
-               -- error
-               if not ok and err then
-                       return nil, err
-
-               -- eof
-               elseif not ok then
-
-                       -- Process get parameters
-                       if ( msg.request_method == "get" or msg.request_method == "post" ) and
-                          msg.request_uri:match("?")
-                       then
-                               msg.params = urldecode_params( msg.request_uri )
-                       else
-                               msg.params = { }
-                       end
-
-                       -- Populate common environment variables
-                       msg.env = {
-                               CONTENT_LENGTH    = msg.headers['Content-Length'];
-                               CONTENT_TYPE      = msg.headers['Content-Type'] or msg.headers['Content-type'];
-                               REQUEST_METHOD    = msg.request_method:upper();
-                               REQUEST_URI       = msg.request_uri;
-                               SCRIPT_NAME       = msg.request_uri:gsub("?.+$","");
-                               SCRIPT_FILENAME   = "";         -- XXX implement me
-                               SERVER_PROTOCOL   = "HTTP/" .. string.format("%.1f", msg.http_version);
-                               QUERY_STRING      = msg.request_uri:match("?")
-                                       and msg.request_uri:gsub("^.+?","") or ""
-                       }
-
-                       -- Populate HTTP_* environment variables
-                       for i, hdr in ipairs( {
-                               'Accept',
-                               'Accept-Charset',
-                               'Accept-Encoding',
-                               'Accept-Language',
-                               'Connection',
-                               'Cookie',
-                               'Host',
-                               'Referer',
-                               'User-Agent',
-                       } ) do
-                               local var = 'HTTP_' .. hdr:upper():gsub("%-","_")
-                               local val = msg.headers[hdr]
-
-                               msg.env[var] = val
-                       end
-               end
-       end
-
-       return msg
-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 )
-       -- Is it multipart/mime ?
-       if msg.env.REQUEST_METHOD == "POST" and msg.env.CONTENT_TYPE and
-          msg.env.CONTENT_TYPE:match("^multipart/form%-data")
-       then
-
-               return mimedecode_message_body( src, msg, filecb )
-
-       -- Is it application/x-www-form-urlencoded ?
-       elseif msg.env.REQUEST_METHOD == "POST" and msg.env.CONTENT_TYPE and
-              msg.env.CONTENT_TYPE:match("^application/x%-www%-form%-urlencoded")
-       then
-               return urldecode_message_body( src, msg, filecb )
-
-
-       -- Unhandled encoding
-       -- If a file callback is given then feed it chunk by chunk, else
-       -- store whole buffer in message.content
-       else
-
-               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
-end
-
-statusmsg = {
-       [200] = "OK",
-       [206] = "Partial Content",
-       [301] = "Moved Permanently",
-       [302] = "Found",
-       [304] = "Not Modified",
-       [400] = "Bad Request",
-       [403] = "Forbidden",
-       [404] = "Not Found",
-       [405] = "Method Not Allowed",
-       [408] = "Request Time-out",
-       [411] = "Length Required",
-       [412] = "Precondition Failed",
-       [416] = "Requested range not satisfiable",
-       [500] = "Internal Server Error",
-       [503] = "Server Unavailable",
-}
diff --git a/modules/luci-base/luasrc/http/protocol.luadoc b/modules/luci-base/luasrc/http/protocol.luadoc
deleted file mode 100644 (file)
index 67a60d9..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
----[[
-LuCI http protocol class.
-
-This class contains several functions useful for http message- and content
-decoding and to retrive form data from raw http messages.
-]]
-module "luci.http.protocol"
-
----[[
-Decode an urlencoded string - optionally without decoding
-
-the "+" sign to " " - and return the decoded string.
-@class function
-@name urldecode
-@param str             Input string in x-www-urlencoded format
-@param no_plus Don't decode "+" signs to spaces
-@return                        The decoded string
-@see                           urlencode
-]]
-
----[[
-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 given string to x-www-urlencoded format.
-
-@class function
-@name urlencode
-@param str     String to encode
-@return                String containing the encoded data
-@see                   urldecode
-]]
-
----[[
-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
-]]
-
----[[
-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.
-@class function
-@name header_source
-@param sock    Readable network socket
-@return                Ltn12 source function
-]]
-
----[[
-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 withing 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)
-@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 withing 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 an http message header including information like protocol
-
-version, message headers and resulting CGI environment variables from the
-given ltn12 source.
-@class function
-@name parse_message_header
-@param src     Ltn12 source function
-@return                HTTP message object
-@see                   parse_message_body
-]]
-
----[[
-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
-]]
-
----[[
-Table containing human readable messages for several http status codes.
-
-@class table
-]]
-
diff --git a/modules/luci-base/luasrc/http/protocol/conditionals.lua b/modules/luci-base/luasrc/http/protocol/conditionals.lua
deleted file mode 100644 (file)
index d31a4e3..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
--- 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.protocol.conditionals", package.seeall)
-
-local date = require("luci.http.protocol.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/modules/luci-base/luasrc/http/protocol/conditionals.luadoc b/modules/luci-base/luasrc/http/protocol/conditionals.luadoc
deleted file mode 100644 (file)
index 9cfe02d..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
----[[
-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.protocol.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/modules/luci-base/luasrc/http/protocol/date.lua b/modules/luci-base/luasrc/http/protocol/date.lua
deleted file mode 100644 (file)
index e440219..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
--- 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.protocol.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/modules/luci-base/luasrc/http/protocol/date.luadoc b/modules/luci-base/luasrc/http/protocol/date.luadoc
deleted file mode 100644 (file)
index d6f1c8d..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
----[[
-LuCI http protocol implementation - date helper class.
-
-This class contains functions to parse, compare and format http dates.
-]]
-module "luci.http.protocol.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/modules/luci-base/luasrc/http/protocol/mime.lua b/modules/luci-base/luasrc/http/protocol/mime.lua
deleted file mode 100644 (file)
index 2b99d8e..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
--- 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.protocol.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/modules/luci-base/luasrc/http/protocol/mime.luadoc b/modules/luci-base/luasrc/http/protocol/mime.luadoc
deleted file mode 100644 (file)
index 195b5fc..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
----[[
-LuCI http protocol implementation - mime helper class.
-
-This class provides functions to guess mime types from file extensions and
-vice versa.
-]]
-module "luci.http.protocol.mime"
-
----[[
-MIME mapping table containg 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
-]]
-
index e653b0346558d81322e9c9c5fcdf05f2c3301188..e27ea528957e451fde0c4b61b351917351c6588d 100644 (file)
@@ -20,12 +20,14 @@ module "luci.model.ipkg"
 
 -- Internal action function
 local function _action(cmd, ...)
-       local pkg = ""
+       local cmdline = { ipkg, cmd }
+
+       local k, v
        for k, v in pairs({...}) do
-               pkg = pkg .. " '" .. v:gsub("'", "") .. "'"
+               cmdline[#cmdline+1] = util.shellquote(v)
        end
 
-       local c = "%s %s %s >/tmp/opkg.stdout 2>/tmp/opkg.stderr" %{ ipkg, cmd, pkg }
+       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")
@@ -74,17 +76,17 @@ local function _parselist(rawdata)
 end
 
 -- Internal lookup function
-local function _lookup(act, pkg)
-       local cmd = ipkg .. " " .. act
+local function _lookup(cmd, pkg)
+       local cmdline = { ipkg, cmd }
        if pkg then
-               cmd = cmd .. " '" .. pkg:gsub("'", "") .. "'"
+               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(cmd .. (" >%s 2>/dev/null" % tmpfile))
+       os.execute("%s >%s 2>/dev/null" %{ table.concat(cmdline, " "), tmpfile })
 
        local data = _parselist(io.lines(tmpfile))
        os.remove(tmpfile)
@@ -123,9 +125,12 @@ end
 
 -- List helper
 local function _list(action, pat, cb)
-       local fd = io.popen(ipkg .. " " .. action ..
-               (pat and (" '%s'" % pat:gsub("'", "")) or ""))
+       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
index d9ef4089c8204d99c5a901c167f382cb385f57b4..d5029ec90461b1c2be6719ad48e8ba904be2d514 100644 (file)
@@ -6,14 +6,12 @@ local type, next, pairs, ipairs, loadfile, table, select
 
 local tonumber, tostring, math = tonumber, tostring, math
 
-local require = require
+local pcall, require, setmetatable = pcall, require, setmetatable
 
 local nxo = require "nixio"
 local nfs = require "nixio.fs"
 local ipc = require "luci.ip"
-local sys = require "luci.sys"
 local utl = require "luci.util"
-local dsp = require "luci.dispatcher"
 local uci = require "luci.model.uci"
 local lng = require "luci.i18n"
 local jsc = require "luci.jsonc"
@@ -108,6 +106,58 @@ function _set(c, s, o, v)
        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
@@ -118,61 +168,113 @@ function _wifi_iface(x)
        return false
 end
 
-function _wifi_state(key, val, field)
-       local radio, radiostate, ifc, ifcstate
-
-       if not next(_ubuswificache) then
-               _ubuswificache = utl.ubus("network.wireless", "status", {}) or {}
+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
+       }
 
-               -- workaround extended section format
-               for radio, radiostate in pairs(_ubuswificache) do
-                       for ifc, ifcstate in pairs(radiostate.interfaces) do
-                               if ifcstate.section and ifcstate.section:sub(1, 1) == '@' then
-                                       local s = _uci:get_all('wireless.%s' % ifcstate.section)
-                                       if s then
-                                               ifcstate.section = s['.name']
-                                       end
+       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
+end
 
-       for radio, radiostate in pairs(_ubuswificache) do
-               for ifc, ifcstate in pairs(radiostate.interfaces) do
-                       if ifcstate[key] == val then
-                               return ifcstate[field]
-                       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_lookup(ifn)
-       -- got a radio#.network# pseudo iface, locate the corresponding section
-       local radio, ifnidx = ifn:match("^(%w+)%.network(%d+)$")
-       if radio and ifnidx then
-               local sid = nil
-               local num = 0
+function _wifi_sid_by_ifname(ifn)
+       local sid = _wifi_sid_by_netid(ifn)
+       if sid then
+               return sid
+       end
 
-               ifnidx = tonumber(ifnidx)
-               _uci:foreach("wireless", "wifi-iface",
-                       function(s)
-                               if s.device == radio then
-                                       num = num + 1
-                                       if num == ifnidx then
-                                               sid = s['.name']
-                                               return false
-                                       end
-                               end
-                       end)
+       local _, _, netstate = _wifi_state_by_ifname(ifn)
+       if netstate and type(netstate.section) == "string" then
+               return netstate.section
+       end
+end
 
-               return sid
+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
 
-       -- looks like wifi, try to locate the section via ubus state
-       elseif _wifi_iface(ifn) then
-               return _wifi_state("ifname", ifn, "section")
+                       _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
@@ -228,7 +330,7 @@ function init(cursor)
                        if i.family == "packet" then
                                _interfaces[name].flags   = i.flags
                                _interfaces[name].stats   = i.data
-                               _interfaces[name].macaddr = i.addr
+                               _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
@@ -441,6 +543,9 @@ 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)
 
@@ -524,20 +629,8 @@ function get_interface(self, i)
        if _interfaces[i] or _wifi_iface(i) then
                return interface(i)
        else
-               local ifc
-               local num = { }
-               _uci:foreach("wireless", "wifi-iface",
-                       function(s)
-                               if s.device then
-                                       num[s.device] = num[s.device] and num[s.device] + 1 or 1
-                                       if s['.name'] == i then
-                                               ifc = interface(
-                                                       "%s.network%d" %{s.device, num[s.device] })
-                                               return false
-                                       end
-                               end
-                       end)
-               return ifc
+               local netid = _wifi_netid_by_sid(i)
+               return netid and interface(netid)
        end
 end
 
@@ -644,7 +737,7 @@ function get_wifidevs(self)
 end
 
 function get_wifinet(self, net)
-       local wnet = _wifi_lookup(net)
+       local wnet = _wifi_sid_by_ifname(net)
        if wnet then
                return wifinet(wnet)
        end
@@ -660,7 +753,7 @@ function add_wifinet(self, net, options)
 end
 
 function del_wifinet(self, net)
-       local wnet = _wifi_lookup(net)
+       local wnet = _wifi_sid_by_ifname(net)
        if wnet then
                _uci:delete("wireless", wnet)
                return true
@@ -784,22 +877,7 @@ function protocol.ifname(self)
                ifname = self:_ubus("device")
        end
        if not ifname then
-               local num = { }
-               _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 net
-                                       for net in utl.imatch(s.network) do
-                                               if net == self.sid then
-                                                       ifname = "%s.network%d" %{ s.device, num[s.device] }
-                                                       return false
-                                               end
-                                       end
-                               end
-                       end)
+               ifname = _wifi_netid_by_netname(self.sid)
        end
        return ifname
 end
@@ -923,7 +1001,15 @@ function protocol.ip6addrs(self)
 
        if type(addrs) == "table" then
                for n, addr in ipairs(addrs) do
-                       rv[#rv+1] = "%s1/%d" %{ addr.address, addr.mask }
+                       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
 
@@ -981,24 +1067,17 @@ function protocol.is_empty(self)
        if self:is_floating() then
                return false
        else
-               local rv = true
+               local empty = true
 
                if (self:_get("ifname") or ""):match("%S+") then
-                       rv = false
+                       empty = false
                end
 
-               _uci:foreach("wireless", "wifi-iface",
-                       function(s)
-                               local n
-                               for n in utl.imatch(s.network) do
-                                       if n == self.sid then
-                                               rv = false
-                                               return false
-                                       end
-                               end
-                       end)
+               if empty and _wifi_netid_by_netname(self.sid) then
+                       empty = false
+               end
 
-               return rv
+               return empty
        end
 end
 
@@ -1006,7 +1085,7 @@ 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_lookup(ifname)
+               local wif = _wifi_sid_by_ifname(ifname)
                if wif then
                        _append("wireless", wif, "network", self.sid)
 
@@ -1021,7 +1100,7 @@ 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_lookup(ifname)
+               local wif = _wifi_sid_by_ifname(ifname)
                if wif then _filter("wireless", wif, "network", self.sid) end
 
                -- remove the interface
@@ -1043,21 +1122,7 @@ function protocol.get_interface(self)
                        ifn = ifn:match("^[^:/]+")
                        return ifn and interface(ifn, self)
                end
-               ifn = nil
-               _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 net
-                                       for net in utl.imatch(s.network) do
-                                               if net == self.sid then
-                                                       ifn = "%s.network%d" %{ s.device, num[s.device] }
-                                                       return false
-                                               end
-                                       end
-                               end
-                       end)
+               ifn = _wifi_netid_by_netname(self.sid)
                return ifn and interface(ifn, self)
        end
 end
@@ -1077,18 +1142,17 @@ function protocol.get_interfaces(self)
                        ifaces[#ifaces+1] = nfs[ifn]
                end
 
-               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 net
                                        for net in utl.imatch(s.network) do
                                                if net == self.sid then
-                                                       ifn = "%s.network%d" %{ s.device, num[s.device] }
-                                                       wfs[ifn] = interface(ifn, self)
+                                                       ifn = _wifi_netid_by_sid(s[".name"])
+                                                       if ifn then
+                                                               wfs[ifn] = interface(ifn, self)
+                                                       end
                                                end
                                        end
                                end
@@ -1119,7 +1183,7 @@ function protocol.contains_interface(self, ifname)
                        end
                end
 
-               local wif = _wifi_lookup(ifname)
+               local wif = _wifi_sid_by_ifname(ifname)
                if wif then
                        local n
                        for n in utl.imatch(_uci:get("wireless", wif, "network")) do
@@ -1134,17 +1198,18 @@ function protocol.contains_interface(self, ifname)
 end
 
 function protocol.adminlink(self)
-       return dsp.build_url("admin", "network", "network", self.sid)
+       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_lookup(ifname)
+       local wif = _wifi_sid_by_ifname(ifname)
        if wif then
                self.wif    = wifinet(wif)
-               self.ifname = _wifi_state("section", wif, "ifname")
+               self.ifname = self.wif:ifname()
        end
 
        self.ifname  = self.ifname or ifname
@@ -1168,8 +1233,7 @@ function interface.name(self)
 end
 
 function interface.mac(self)
-       local mac = self:_ubus("macaddr")
-       return mac and mac:upper()
+       return ipc.checkmac(self:_ubus("macaddr"))
 end
 
 function interface.ipaddrs(self)
@@ -1209,7 +1273,7 @@ function interface.get_i18n(self)
                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()
+                       self.wif:active_ssid() or self.wif:active_bssid() or self.wif:id() or "?"
                }
        else
                return "%s: %q" %{ self:get_type_i18n(), self:name() }
@@ -1332,9 +1396,14 @@ end
 
 wifidev = utl.class()
 
-function wifidev.__init__(self, dev)
-       self.sid    = dev
-       self.iwinfo = dev and sys.wifi.getiwinfo(dev) or { }
+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)
@@ -1359,7 +1428,7 @@ function wifidev.hwmodes(self)
 end
 
 function wifidev.get_i18n(self)
-       local t = "Generic"
+       local t = self.iwinfo.hardware_name or "Generic"
        if self.iwinfo.type == "wl" then
                t = "Broadcom"
        end
@@ -1387,7 +1456,7 @@ function wifidev.get_wifinet(self, net)
        if _uci:get("wireless", net) == "wifi-iface" then
                return wifinet(net)
        else
-               local wnet = _wifi_lookup(net)
+               local wnet = _wifi_sid_by_ifname(net)
                if wnet then
                        return wifinet(wnet)
                end
@@ -1421,7 +1490,7 @@ 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_lookup(net)
+               net = _wifi_sid_by_ifname(net)
        end
 
        if net and _uci:get("wireless", net, "device") == self.sid then
@@ -1435,49 +1504,50 @@ end
 
 wifinet = utl.class()
 
-function wifinet.__init__(self, net, data)
-       self.sid = net
-
-       local n = 0
-       local num = { }
-       local netid, sid
-       _uci:foreach("wireless", "wifi-iface",
-               function(s)
-                       n = n + 1
-                       if s.device then
-                               num[s.device] = num[s.device] and num[s.device] + 1 or 1
-                               if s['.name'] == self.sid then
-                                       sid = "@wifi-iface[%d]" % n
-                                       netid = "%s.network%d" %{ s.device, num[s.device] }
-                                       return false
-                               end
-                       end
-               end)
+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
-               local _, k, r, i
-               for k, r in pairs(_ubuswificache) do
-                       if type(r) == "table" and
-                          type(r.interfaces) == "table"
-                       then
-                               for _, i in ipairs(r.interfaces) do
-                                       if type(i) == "table" and i.section == sid then
-                                               self._ubusdata = {
-                                                       radio = k,
-                                                       dev = r,
-                                                       net = i
-                                               }
-                                       end
+               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 dev = _wifi_state("section", self.sid, "ifname") or netid
+       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.netid  = netid
-       self.wdev   = dev
-       self.iwinfo = dev and sys.wifi.getiwinfo(dev) or { }
+       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, ...)
@@ -1664,7 +1734,8 @@ function wifinet.get_i18n(self)
 end
 
 function wifinet.adminlink(self)
-       return dsp.build_url("admin", "network", "wireless", self.netid)
+       local stat, dsp = pcall(require, "luci.dispatcher")
+       return dsp and dsp.build_url("admin", "network", "wireless", self.netid)
 end
 
 function wifinet.get_network(self)
index 577c6cde08eaa6e10887c97b26fed000f3289070..461ba9d5a38efae2c042829dce83d5aaeec13749 100644 (file)
@@ -2,13 +2,12 @@
 -- Licensed to the public under the Apache License 2.0.
 
 local os    = require "os"
-local uci   = require "uci"
 local util  = require "luci.util"
 local table = require "table"
 
 
 local setmetatable, rawget, rawset = setmetatable, rawget, rawset
-local require, getmetatable = require, getmetatable
+local require, getmetatable, assert = require, getmetatable, assert
 local error, pairs, ipairs = error, pairs, ipairs
 local type, tostring, tonumber, unpack = type, tostring, tonumber, unpack
 
@@ -20,217 +19,472 @@ local type, tostring, tonumber, unpack = type, tostring, tonumber, unpack
 -- reloaded.
 module "luci.model.uci"
 
-cursor = uci.cursor
+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
 
-APIVERSION = uci.APIVERSION
+
+function cursor()
+       return _M
+end
 
 function cursor_state()
-       return cursor(nil, "/var/state")
+       return _M
 end
 
+function substate(self)
+       return self
+end
 
-inst = cursor()
-inst_state = cursor_state()
 
-local Cursor = getmetatable(inst)
+function get_confdir(self)
+       return "/etc/config"
+end
 
-function Cursor.apply(self, configlist, command)
-       configlist = self:_affected(configlist)
-       if command then
-               return { "/sbin/luci-reload", unpack(configlist) }
-       else
-               return os.execute("/sbin/luci-reload %s >/dev/null 2>&1"
-                       % table.concat(configlist, " "))
-       end
+function get_savedir(self)
+       return "/tmp/.uci"
 end
 
+function get_session_id(self)
+       return session_id
+end
 
--- returns a boolean whether to delete the current section (optional)
-function Cursor.delete_all(self, config, stype, comparator)
-       local del = {}
+function set_confdir(self, directory)
+       return false
+end
 
-       if type(comparator) == "table" then
-               local tbl = comparator
-               comparator = function(section)
-                       for k, v in pairs(tbl) do
-                               if section[k] ~= v then
-                                       return false
+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 = call("changes", { config = config })
+       local res = {}
+
+       if type(rv) == "table" and type(rv.changes) == "table" then
+               local package, changes
+               for package, changes in pairs(rv.changes) do
+                       res[package] = {}
+
+                       local _, change
+                       for _, change in ipairs(changes) do
+                               local operation, section, option, value = unpack(change)
+                               if option and value and operation ~= "add" then
+                                       res[package][section] = res[package][section] or { }
+
+                                       if operation == "list-add" then
+                                               local v = res[package][section][option]
+                                               if type(v) == "table" then
+                                                       v[#v+1] = value or ""
+                                               elseif v ~= nil then
+                                                       res[package][section][option] = { v, value }
+                                               else
+                                                       res[package][section][option] = { value }
+                                               end
+                                       else
+                                               res[package][section][option] = value or ""
+                                       end
+                               else
+                                       res[package][section] = res[package][section] or {}
+                                       res[package][section][".type"] = option or ""
                                end
                        end
-                       return true
                end
        end
 
-       local function helper (section)
+       return res
+end
 
-               if not comparator or comparator(section) then
-                       del[#del+1] = section[".name"]
-               end
-       end
 
-       self:foreach(config, stype, helper)
+function revert(self, config)
+       local _, err = call("revert", { config = config })
+       return (err == nil), ERRSTR[err]
+end
 
-       for i, j in ipairs(del) do
-               self:delete(config, j)
-       end
+function commit(self, config)
+       local _, err = call("commit", { config = config })
+       return (err == nil), ERRSTR[err]
 end
 
-function Cursor.section(self, config, type, name, values)
-       local stat = true
-       if name then
-               stat = self:set(config, name, type)
+function apply(self, rollback)
+       local _, err
+
+       if rollback then
+               local conf = require "luci.config"
+               local timeout = tonumber(conf and conf.apply and conf.apply.rollback or "") or 0
+
+               _, err = call("apply", {
+                       timeout  = (timeout > 30) and timeout or 30,
+                       rollback = true
+               })
+
+               if not err then
+                       util.ubus("session", "set", {
+                               ubus_rpc_session = session_id,
+                               values = { rollback = os.time() + timeout }
+                       })
+               end
        else
-               name = self:add(config, type)
-               stat = name and true
-       end
+               _, 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 stat and values then
-               stat = self:tset(config, name, values)
+               if not err then
+                       _, err = call("apply", { rollback = false })
+               end
        end
 
-       return stat and name
+       return (err == nil), ERRSTR[err]
 end
 
-function Cursor.tset(self, config, section, values)
-       local stat = true
-       for k, v in pairs(values) do
-               if k:sub(1, 1) ~= "." then
-                       stat = stat and self:set(config, section, k, v)
-               end
+function confirm(self)
+       local _, err = call("confirm", {})
+       if not err then
+               util.ubus("session", "set", {
+                       ubus_rpc_session = session_id,
+                       values = { rollback = 0 }
+               })
        end
-       return stat
+       return (err == nil), ERRSTR[err]
 end
 
-function Cursor.get_bool(self, ...)
-       local val = self:get(...)
-       return ( val == "1" or val == "true" or val == "yes" or val == "on" )
+function rollback(self)
+       local _, err = call("rollback", {})
+       if not err then
+               util.ubus("session", "set", {
+                       ubus_rpc_session = session_id,
+                       values = { rollback = 0 }
+               })
+       end
+       return (err == nil), ERRSTR[err]
 end
 
-function Cursor.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 } )
+function rollback_pending(self)
+       local deadline, err = util.ubus("session", "get", {
+               ubus_rpc_session = session_id,
+               keys = { "rollback" }
+       })
+
+       if type(deadline) == "table" and
+          type(deadline.values) == "table" and
+          type(deadline.values.rollback) == "number" and
+          deadline.values.rollback > os.time()
+       then
+               return true, deadline.values.rollback - os.time()
        end
-       return {}
+
+       return false, ERRSTR[err]
 end
 
-function Cursor.get_first(self, conf, stype, opt, def)
-       local rv = def
 
-       self:foreach(conf, stype,
-               function(s)
-                       local val = not opt and s['.name'] or s[opt]
+function foreach(self, config, stype, callback)
+       if type(callback) == "function" then
+               local rv, err = call("get", {
+                       config = config,
+                       type   = stype
+               })
 
-                       if type(def) == "number" then
-                               val = tonumber(val)
-                       elseif type(def) == "boolean" then
-                               val = (val == "1" or val == "true" or
-                                      val == "yes" or val == "on")
-                       end
+               if type(rv) == "table" and type(rv.values) == "table" then
+                       local sections = { }
+                       local res = false
+                       local index = 1
 
-                       if val ~= nil then
-                               rv = val
-                               return false
+                       local _, section
+                       for _, section in pairs(rv.values) do
+                               section[".index"] = section[".index"] or index
+                               sections[index] = section
+                               index = index + 1
                        end
-               end)
 
-       return rv
+                       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
 
-function Cursor.set_list(self, config, section, option, value)
-       if config and section and option then
-               if not value or #value == 0 then
-                       return self:delete(config, section, option)
+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
-               return self:set(
-                       config, section, option,
-                       ( type(value) == "table" and value or { value } )
-               )
+       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
-       return false
 end
 
--- Return a list of initscripts affected by configuration changes.
-function Cursor._affected(self, configlist)
-       configlist = type(configlist) == "table" and configlist or {configlist}
+function get(self, ...)
+       return _get(self, "get", ...)
+end
 
-       local c = cursor()
-       c:load("ucitrack")
+function get_state(self, ...)
+       return _get(self, "state", ...)
+end
 
-       -- Resolve dependencies
-       local reloadlist = {}
+function get_all(self, config, section)
+       local rv, err = call("get", {
+               config  = config,
+               section = section
+       })
 
-       local function _resolve_deps(name)
-               local reload = {name}
-               local deps = {}
+       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
 
-               c:foreach("ucitrack", name,
-                       function(section)
-                               if section.affects then
-                                       for i, aff in ipairs(section.affects) do
-                                               deps[#deps+1] = aff
-                                       end
-                               end
-                       end)
+function get_bool(self, ...)
+       local val = self:get(...)
+       return (val == "1" or val == "true" or val == "yes" or val == "on")
+end
 
-               for i, dep in ipairs(deps) do
-                       for j, add in ipairs(_resolve_deps(dep)) do
-                               reload[#reload+1] = add
-                       end
-               end
+function get_first(self, config, stype, option, default)
+       local rv = default
 
-               return reload
-       end
+       self:foreach(config, stype, function(s)
+               local val = not option and s[".name"] or s[option]
 
-       -- Collect initscripts
-       for j, config in ipairs(configlist) do
-               for i, e in ipairs(_resolve_deps(config)) do
-                       if not util.contains(reloadlist, e) then
-                               reloadlist[#reloadlist+1] = e
-                       end
+               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
-       end
 
-       return reloadlist
-end
+               if val ~= nil then
+                       rv = val
+                       return false
+               end
+       end)
 
--- curser, means it the parent unloads or loads configs, the sub state will
--- do so as well.
-function Cursor.substate(self)
-       Cursor._substates = Cursor._substates or { }
-       Cursor._substates[self] = Cursor._substates[self] or cursor_state()
-       return Cursor._substates[self]
+       return rv
 end
 
-local _load = Cursor.load
-function Cursor.load(self, ...)
-       if Cursor._substates and Cursor._substates[self] then
-               _load(Cursor._substates[self], ...)
+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 _load(self, ...)
+       return { }
 end
 
-local _unload = Cursor.unload
-function Cursor.unload(self, ...)
-       if Cursor._substates and Cursor._substates[self] then
-               _unload(Cursor._substates[self], ...)
+
+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
-       return _unload(self, ...)
 end
 
 
+function add(self, config, stype)
+       return self:section(config, stype)
+end
 
+function set(self, config, section, option, value)
+       if value == nil 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] = value }
+               })
+               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
index 49093c7930128f1e6de6f739662b96adcc43fe74..d798b00338a5585f6afd36dee81f67d54c084773 100644 (file)
@@ -14,224 +14,277 @@ module "luci.model.uci"
 ---[[
 Create a new UCI-Cursor.
 
-@class function
-@name cursor
-@return        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
+@class                         function
+@name                          cursor_state
+@return                                UCI cursor
 ]]
 
 ---[[
-Applies UCI configuration changes
+Applies UCI configuration changes.
 
-@class function
-@name Cursor.apply
-@param configlist              List of UCI configurations
-@param command                 Don't apply only return the command
+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
+@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)
+@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
+@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
+@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
+@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.
+@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
+@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. Raw values will become a single item table.
-@return                        Boolean whether operation succeeded
+@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
+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.
 
-curser, 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
+@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
+@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
+@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
+@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
+@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
+@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
+@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
+@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
+@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
+@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
+@class                         function
+@name                          Cursor.save
+@param config          UCI config
+@return                                Boolean whether operation succeeded
+@see                           Cursor.load
+@see                           Cursor.unload
 ]]
 
 ---[[
@@ -243,57 +296,74 @@ 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
+@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
+@return                                Boolean whether operation succeeded
 ]]
 
 ---[[
 Get the configuration directory.
 
-@class function
-@name Cursor.get_confdir
-@return                        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
+@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
+@class                         function
+@name                          Cursor.set_confdir
 @param directory       UCI configuration directory
-@return                        Boolean whether operation succeeded
+@return                                Boolean whether operation succeeded
 ]]
 
 ---[[
 Set the directory for uncommited changes.
 
-@class function
-@name Cursor.set_savedir
+@class                         function
+@name                          Cursor.set_savedir
 @param directory       UCI changes directory
-@return                        Boolean whether operation succeeded
+@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
+@class                         function
+@name                          Cursor.unload
+@param config          UCI config
+@return                                Boolean whether operation succeeded
+@see                           Cursor.load
+@see                           Cursor.save
 ]]
 
index 115c54d54a7b1310469e1f1f07c0430e9b32e580..823e20770c2d90635436a7c54be3c5e2618c6068 100644 (file)
@@ -7,6 +7,7 @@ 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"
@@ -86,10 +87,10 @@ end
 function httpget(url, stream, target)
        if not target then
                local source = stream and io.popen or luci.util.exec
-               return source("wget -qO- '"..url:gsub("'", "").."'")
+               return source("wget -qO- %s" % luci.util.shellquote(url))
        else
-               return os.execute("wget -qO '%s' '%s'" %
-                       {target:gsub("'", ""), url:gsub("'", "")})
+               return os.execute("wget -qO %s %s" %
+                       {luci.util.shellquote(target), luci.util.shellquote(url)})
        end
 end
 
@@ -137,17 +138,22 @@ local function _nethints(what, callback)
 
        luci.ip.neighbors(nil, function(neigh)
                if neigh.mac and neigh.family == 4 then
-                       _add(what, neigh.mac:upper(), neigh.dest:string(), nil, nil)
+                       _add(what, neigh.mac:string(), neigh.dest:string(), nil, nil)
                elseif neigh.mac and neigh.family == 6 then
-                       _add(what, neigh.mac:upper(), nil, neigh.dest:string(), nil)
+                       _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, ip = e:match("^([a-f0-9]%S+) (%S+)")
-                       if mac and ip then
-                               _add(what, mac:upper(), ip, nil, nil)
+                       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
@@ -157,8 +163,9 @@ local function _nethints(what, callback)
                        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:upper(), ip, nil, name ~= "*" and name)
+                                               _add(what, mac, ip, nil, name ~= "*" and name)
                                        end
                                end
                        end
@@ -168,7 +175,10 @@ local function _nethints(what, callback)
        cur:foreach("dhcp", "host",
                function(s)
                        for mac in luci.util.imatch(s.mac) do
-                               _add(what, mac:upper(), s.ip, nil, s.name)
+                               mac = luci.ip.checkmac(mac)
+                               if mac then
+                                       _add(what, mac, s.ip, nil, s.name)
+                               end
                        end
                end)
 
@@ -433,55 +443,30 @@ function user.checkpasswd(username, pass)
 end
 
 function user.setpasswd(username, password)
-       if password then
-               password = password:gsub("'", [['"'"']])
-       end
-
-       if username then
-               username = username:gsub("'", [['"'"']])
-       end
-
-       return os.execute(
-               "(echo '" .. password .. "'; sleep 1; echo '" .. password .. "') | " ..
-               "passwd '" .. username .. "' >/dev/null 2>&1"
-       )
+       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)
-       local stat, iwinfo = pcall(require, "iwinfo")
-
-       if ifname then
-               local d, n = ifname:match("^(%w+)%.network(%d+)")
-               local wstate = luci.util.ubus("network.wireless", "status") or { }
-
-               d = d or ifname
-               n = n and tonumber(n) or 1
-
-               if type(wstate[d]) == "table" and
-                  type(wstate[d].interfaces) == "table" and
-                  type(wstate[d].interfaces[n]) == "table" and
-                  type(wstate[d].interfaces[n].ifname) == "string"
-               then
-                       ifname = wstate[d].interfaces[n].ifname
-               else
-                       ifname = d
-               end
+       ntm.init()
 
-               local t = stat and iwinfo.type(ifname)
-               local x = t and iwinfo[t] or { }
-               return setmetatable({}, {
-                       __index = function(t, k)
-                               if k == "ifname" then
-                                       return ifname
-                               elseif x[k] then
-                                       return x[k](ifname)
-                               end
-                       end
-               })
+       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
 
 
index 48ae5747c0292b2d8d364894a6b8a9983ac109e3..47cb901a5b46f7b0149233c5876e932a89184e06 100644 (file)
@@ -51,7 +51,7 @@ TZ = {
        { 'Africa/Nouakchott', 'GMT0' },
        { 'Africa/Ouagadougou', 'GMT0' },
        { 'Africa/Porto-Novo', 'WAT-1' },
-       { 'Africa/Sao Tome', 'GMT0' },
+       { 'Africa/Sao Tome', 'WAT-1' },
        { 'Africa/Tripoli', 'EET-2' },
        { 'Africa/Tunis', 'CET-1' },
        { 'Africa/Windhoek', 'CAT-2' },
@@ -85,7 +85,7 @@ TZ = {
        { '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<-03>,M10.3.0/0,M2.3.0/0' },
+       { 'America/Campo Grande', '<-04>4<-03>,M11.1.0/0,M2.3.0/0' },
        { 'America/Cancun', 'EST5' },
        { 'America/Caracas', '<-04>4' },
        { 'America/Cayenne', '<-03>3' },
@@ -94,7 +94,7 @@ TZ = {
        { 'America/Chihuahua', 'MST7MDT,M4.1.0,M10.5.0' },
        { 'America/Costa Rica', 'CST6' },
        { 'America/Creston', 'MST7' },
-       { 'America/Cuiaba', '<-04>4<-03>,M10.3.0/0,M2.3.0/0' },
+       { 'America/Cuiaba', '<-04>4<-03>,M11.1.0/0,M2.3.0/0' },
        { 'America/Curacao', 'AST4' },
        { 'America/Danmarkshavn', 'GMT0' },
        { 'America/Dawson', 'PST8PDT,M3.2.0,M11.1.0' },
@@ -181,7 +181,7 @@ TZ = {
        { 'America/Santarem', '<-03>3' },
        { 'America/Santiago', '<-04>4<-03>,M8.2.6/24,M5.2.6/24' },
        { 'America/Santo Domingo', 'AST4' },
-       { 'America/Sao Paulo', '<-03>3<-02>,M10.3.0/0,M2.3.0/0' },
+       { 'America/Sao Paulo', '<-03>3<-02>,M11.1.0/0,M2.3.0/0' },
        { 'America/Scoresbysund', '<-01>1<+00>,M3.5.0/0,M10.5.0/1' },
        { 'America/Sitka', 'AKST9AKDT,M3.2.0,M11.1.0' },
        { 'America/St Barthelemy', 'AST4' },
@@ -202,7 +202,7 @@ TZ = {
        { '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', '<+11>-11' },
+       { 'Antarctica/Casey', '<+08>-8' },
        { 'Antarctica/Davis', '<+07>-7' },
        { 'Antarctica/DumontDUrville', '<+10>-10' },
        { 'Antarctica/Macquarie', '<+11>-11' },
@@ -239,8 +239,8 @@ TZ = {
        { '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.6/1,M10.5.6/1' },
-       { 'Asia/Hebron', 'EET-2EEST,M3.5.6/1,M10.5.6/1' },
+       { 'Asia/Gaza', 'EET-2EEST,M3.4.6/1,M10.5.6/1' },
+       { 'Asia/Hebron', 'EET-2EEST,M3.4.6/1,M10.5.6/1' },
        { 'Asia/Ho Chi Minh', '<+07>-7' },
        { 'Asia/Hong Kong', 'HKT-8' },
        { 'Asia/Hovd', '<+07>-7' },
index 95ff46df15eeda415a808a1f6e5087caf23bd0ae..06a9ad41546ef5d7fc6b849af5ce7684cb9e560a 100644 (file)
@@ -4,6 +4,7 @@
 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 = { }
@@ -31,7 +32,7 @@ local function dhcp_leases_common(family)
                                        if family == 4 and not ip:match(":") then
                                                rv[#rv+1] = {
                                                        expires  = (expire ~= 0) and os.difftime(expire, os.time()),
-                                                       macaddr  = mac,
+                                                       macaddr  = ipc.checkmac(mac) or "00:00:00:00:00:00",
                                                        ipaddr   = ip,
                                                        hostname = (name ~= "*") and name
                                                }
@@ -74,19 +75,9 @@ local function dhcp_leases_common(family)
                                                hostname = (name ~= "-") and name
                                        }
                                elseif ip and iaid == "ipv4" and family == 4 then
-                                       local mac, mac1, mac2, mac3, mac4, mac5, mac6
-                                       if duid and type(duid) == "string" then
-                                                mac1, mac2, mac3, mac4, mac5, mac6 = duid:match("^(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)$")
-                                       end
-                                       if not (mac1 and mac2 and mac3 and mac4 and mac5 and mac6) then
-                                               mac = "FF:FF:FF:FF:FF:FF"
-                                       else
-                                               mac = mac1..":"..mac2..":"..mac3..":"..mac4..":"..mac5..":"..mac6
-                                       end
                                        rv[#rv+1] = {
                                                expires  = (expire >= 0) and os.difftime(expire, os.time()),
-                                               macaddr  = duid,
-                                               macaddr  = mac:lower(),
+                                               macaddr  = ipc.checkmac(duid:gsub("^(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)$", "%1:%2:%3:%4:%5:%6")) or "00:00:00:00:00:00",
                                                ipaddr   = ip,
                                                hostname = (name ~= "-") and name
                                        }
@@ -196,7 +187,9 @@ function switch_status(devs)
        local switches = { }
        for dev in devs:gmatch("[^%s,]+") do
                local ports = { }
-               local swc = io.popen("swconfig dev %q show" % dev, "r")
+               local swc = io.popen("swconfig dev %s show"
+                       % luci.util.shellquote(dev), "r")
+
                if swc then
                        local l
                        repeat
index 0e7334be87dc769c943ab5e464c52018c6bb928c..ce42af2fb00509779d1ef5feb9c124eb083a91cc 100644 (file)
@@ -10,6 +10,7 @@ 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
@@ -160,10 +161,33 @@ 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
@@ -383,16 +407,6 @@ function clone(object, deep)
 end
 
 
-function dtable()
-        return setmetatable({}, { __index =
-                function(tbl, key)
-                        return rawget(tbl, key)
-                         or rawget(rawset(tbl, key, dtable()), key)
-                end
-        })
-end
-
-
 -- Serialize the contents of a table value.
 function _serialize_table(t, seen)
        assert(not seen[t], "Recursion detected.")
@@ -617,6 +631,20 @@ function execl(command)
        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"
+}
+
 function ubus(object, method, data)
        if not _ubus_connection then
                _ubus_connection = _ubus.connect()
@@ -627,7 +655,8 @@ function ubus(object, method, data)
                if type(data) ~= "table" then
                        data = { }
                end
-               return _ubus_connection:call(object, method, data)
+               local rv, err = _ubus_connection:call(object, method, data)
+               return rv, err, ubus_codes[err]
        elseif object then
                return _ubus_connection:signatures(object)
        else
@@ -652,10 +681,11 @@ end
 function checklib(fullpathexe, wantedlib)
        local fs = require "nixio.fs"
        local haveldd = fs.access('/usr/bin/ldd')
-       if not haveldd then
+       local haveexe = fs.access(fullpathexe)
+       if not haveldd or not haveexe then
                return false
        end
-       local libs = exec("/usr/bin/ldd " .. fullpathexe)
+       local libs = exec(string.format("/usr/bin/ldd %s", shellquote(fullpathexe)))
        if not libs then
                return false
        end
index 805eeb7f8effb98aa4f307d25485466b08ccc9b9..c4f28d039a635297e1b58704a025deeca76e3d72 100644 (file)
@@ -15,126 +15,164 @@ 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
+
+@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
+@class                         function
+@name                          instanceof
+@param object          Object instance
 @param class           Class object to test against
-@return                        Boolean indicating whether the object is an instance
+@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.
 
-the current active coroutine. A thread local store is private a table object
+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
+
+@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
+@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
+@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
+@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
+@class                         function
+@name                          striptags
+@param value           String containing the HTML text
+@return                                String with HTML tags stripped of
 ]]
 
 ---[[
-Splits given string on a defined separator sequence and return a table
+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
+]]
 
-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.
-@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
+---[[
+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
+@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
+@class                         function
+@name                          trim
+@param str                     String value containing whitespace padded data
+@return                                String value with leading and trailing space removed
 ]]
 
 ---[[
-Count the occurences of given substring in given string.
+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 occurences
+@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
+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.
 
-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.
-@class function
-@name imatch
-@param val             The value to scan (table, string or nil)
-@return                        Iterator which returns one token per call
+@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.
 
-value or 0 if the unit is unknown. Upper- or lower case is irrelevant.
+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)
@@ -147,232 +185,229 @@ Recognized units are:
  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
+
+@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
+@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
+@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.
+@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
+
+@class                         function
+@name                          update
 @param t                       Table which should be updated
-@param updates Table containing the values to update
-@return                        Always nil
+@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
+@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
-]]
-
----[[
-Create a dynamic table which automatically creates subtables.
-
-@class function
-@name dtable
-@return        Dynamic Table
+@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
+
+@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
+@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
+
+@class                         function
+@name                          get_bytecode
+@param val                     Value to return as bytecode
+@return                                String value containing the bytecode of the given data
 ]]
 
 ---[[
-Strips unnescessary lua bytecode from given string. Information like line
+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)
 
-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
+@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
+
+@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
+
+@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
+
+@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
+@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
+@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
+@class                         function
+@name                          execi
+@param command         String containing the command to execute
+@return                                Iterator
 ]]
 
 ---[[
 Issue an ubus call.
 
-@class function
-@name ubus
+@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
+@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
+@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
+@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
+@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
+@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/modules/luci-base/luasrc/view/cbi/apply_widget.htm b/modules/luci-base/luasrc/view/cbi/apply_widget.htm
new file mode 100644 (file)
index 0000000..543ef0b
--- /dev/null
@@ -0,0 +1,181 @@
+<% export("cbi_apply_widget", function(redirect_ok) -%>
+<style type="text/css">
+       #cbi_apply_status {
+               display: flex;
+               flex-wrap: wrap;
+               min-height: 32px;
+               align-items: center;
+               margin: 1.5em 0 1.5em 0;
+       }
+
+       #cbi_apply_status > h4,
+       #cbi_apply_status > p,
+       #cbi_apply_status > div {
+               flex-basis: 100%;
+       }
+
+       #cbi_apply_status > img {
+               margin-right: 1em;
+               flex-basis: 32px;
+       }
+
+       #cbi_apply_status + script + .cbi-section {
+               margin-top: -1em;
+       }
+
+       .alert-message.notice {
+               background: linear-gradient(#fff 0%, #eee 100%);
+       }
+</style>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+       var xhr = new XHR(),
+           stat, indicator,
+           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)%>;
+
+       function uci_rollback(checked) {
+               if (checked) {
+                       stat.classList.remove('notice');
+                       stat.classList.add('warning');
+                       stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' +
+                                        '<%:Failed to confirm apply within %ds, waiting for rollback…%>'.format(uci_apply_rollback);
+
+                       var call = function(r) {
+                               if (r.status === 204) {
+                                       stat.innerHTML = '<h4><%:Configuration has been rolled back!%></h4>' +
+                                               '<p><%:The device could not be reached within %d seconds after applying the pending changes, which caused the configuration to be rolled back for safety reasons. If you believe that the configuration changes are correct nonetheless, perform an unchecked configuration apply. Alternatively, you can dismiss this warning and edit changes before attempting to apply again, or revert all pending changes to keep the currently working configuration state.%></p>'.format(uci_apply_rollback) +
+                                               '<div class="right">' +
+                                                       '<input type="button" class="btn" onclick="this.parentNode.parentNode.style.display=\'none\'" value="<%:Dismiss%>" /> ' +
+                                                       '<input type="button" class="btn" onclick="uci_revert()" value="<%:Revert changes%>" /> ' +
+                                                       '<input type="button" class="btn danger" onclick="uci_apply(false)" value="<%:Apply unchecked%>" />' +
+                                               '</div>';
+
+                                       return;
+                               }
+
+                               xhr.post('<%=url("admin/uci/confirm")%>', uci_apply_auth, call, uci_apply_timeout * 1000);
+                       };
+
+                       call({ status: 0 });
+               }
+               else {
+                       stat.classList.remove('notice');
+                       stat.classList.add('warning');
+                       stat.innerHTML = '<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();
+
+               stat = document.getElementById('cbi_apply_status');
+               stat.style.display = '';
+               stat.classList.remove('warning');
+               stat.classList.add('notice');
+
+               indicator = document.querySelector('.uci_change_indicator');
+
+               var call = function(r) {
+                       if (Date.now() >= deadline) {
+                               uci_rollback(checked);
+                               return;
+                       }
+                       else if (r && (r.status === 200 || r.status === 204)) {
+                               if (indicator)
+                                       indicator.style.display = 'none';
+
+                               stat.innerHTML = '<%:Configuration has been applied.%>';
+
+                               window.clearTimeout(tt);
+                               window.setTimeout(function() {
+                                       stat.style.display = 'none';
+                                       <% if redirect_ok then %>location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>');<% end %>
+                               }, uci_apply_display * 1000);
+
+                               return;
+                       }
+
+                       xhr.post('<%=url("admin/uci/confirm")%>', uci_apply_auth, call, uci_apply_timeout * 1000);
+               };
+
+               var tick = function() {
+                       var now = Date.now();
+
+                       stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' +
+                                        '<%:Waiting for configuration to get applied… %ds%>'.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) {
+               stat = document.getElementById('cbi_apply_status');
+               stat.style.display = '';
+               stat.classList.remove('warning');
+               stat.classList.add('notice');
+               stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' +
+                                '<%:Starting configuration apply…%>';
+
+               xhr.post('<%=url("admin/uci")%>/' + (checked ? 'apply_rollback' : 'apply_unchecked'), uci_apply_auth, function(r) {
+                       if (r.status === (checked ? 200 : 204)) {
+                               uci_confirm(checked, Date.now() + uci_apply_rollback * 1000);
+                       }
+                       else if (checked && r.status === 204) {
+                               stat.innerHTML = '<%:There are no changes to apply.%>';
+                               window.setTimeout(function() {
+                                       stat.style.display = 'none';
+                                       <% if redirect_ok then %>location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>');<% end %>
+                               }, uci_apply_display * 1000);
+                       }
+                       else {
+                               stat.classList.add('warning');
+                               stat.classList.remove('notice');
+                               stat.innerHTML = '<%_Apply request failed with status <code>%h</code>%>'.format(r.responseText || r.statusText || r.status);
+                       }
+               });
+       }
+
+       function uci_revert() {
+               stat = document.getElementById('cbi_apply_status');
+               stat.style.display = '';
+               stat.classList.remove('warning');
+               stat.classList.add('notice');
+               stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' +
+                                '<%:Reverting configuration…%>';
+
+               xhr.post('<%=url("admin/uci/revert")%>', uci_apply_auth, function(r) {
+                       if (r.status === 200) {
+                               stat.innerHTML = '<%:Changes have been reverted.%>';
+                               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 {
+                               stat.classList.add('warning');
+                               stat.classList.remove('notice');
+                               stat.innerHTML = '<%_Revert request failed with status <code>%h</code>%>'.format(r.statusText || r.status);
+                       }
+               });
+       }
+//]]></script>
+<%-    end) %>
diff --git a/modules/luci-base/luasrc/view/cbi/apply_xhr.htm b/modules/luci-base/luasrc/view/cbi/apply_xhr.htm
deleted file mode 100644 (file)
index daa57c1..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<% export("cbi_apply_xhr", function(id, configs, redirect) -%>
-<fieldset class="cbi-section" id="cbi-apply-<%=id%>">
-       <legend><%:Applying changes%></legend>
-       <script type="text/javascript">//<![CDATA[
-               var apply_xhr = new XHR();
-
-               apply_xhr.post('<%=url('servicectl/restart', table.concat(configs, ","))%>', { token: '<%=token%>' },
-                       function() {
-                               var checkfinish = function() {
-                                       apply_xhr.get('<%=url('servicectl/status')%>', null,
-                                               function(x) {
-                                                       if( x.responseText == 'finish' )
-                                                       {
-                                                               var e = document.getElementById('cbi-apply-<%=id%>-status');
-                                                               if( e )
-                                                               {
-                                                                       e.innerHTML = '<%:Configuration applied.%>';
-                                                                       window.setTimeout(function() {
-                                                                               e.parentNode.style.display = 'none';
-                                                                               <% if redirect then %>location.href='<%=redirect%>';<% end %>
-                                                                       }, 1000);
-                                                               }
-                                                       }
-                                                       else
-                                                       {
-                                                               var e = document.getElementById('cbi-apply-<%=id%>-status');
-                                                               if( e && x.responseText ) e.innerHTML = x.responseText;
-
-                                                               window.setTimeout(checkfinish, 1000);
-                                                       }
-                                               }
-                                       );
-                               }
-
-                               window.setTimeout(checkfinish, 1000);
-                       }
-               );
-       //]]></script>
-
-       <img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
-       <span id="cbi-apply-<%=id%>-status"><%:Waiting for changes to be applied...%></span>
-</fieldset>
-<%-    end) %>
index a18120141d5a929e75d76f8e65358b60c5457293..2abc975e8d39e728318e6c2babcecd04493cb488 100644 (file)
@@ -2,6 +2,7 @@
 <%+cbi/valueheader%>
        <input class="cbi-input-text" type="text"<%= attr("value", v) .. attr("name", cbid) .. attr("id", cbid) %> />
        <script type="text/javascript">
+cbi_init()
 cbi_browser_init('<%=cbid%>', '<%=resource%>', '<%=url('admin/filebrowser')%>'<%=self.default_path and ", '"..self.default_path.."'"%>);
        </script>
 <%+cbi/valuefooter%>
index a79beebba725a1bbb0432d52117ebc5880744476..806b1b5f409d1aad43ff471eed30a8eeb8c0d9a3 100644 (file)
@@ -22,9 +22,9 @@
        <script type="text/javascript">
                function callback(path) {
                        if( window.opener ) {
-                               var input = window.opener.document.getElementById('<%=luci.http.formvalue('field')%>');
+                               var input = window.opener.document.getElementById(decodeURIComponent('<%=luci.http.urlencode(luci.http.formvalue('field'))%>'));
                                if( input ) {
-                                       input.value = path;
+                                       input.value = decodeURIComponent(path);
                                        window.close();
                                }
                        }
                        end
                end
 
-               local filepath = table.concat( path, '/' )
-               local filestat = nixio.fs.stat( filepath )
-               local baseurl  = luci.dispatcher.build_url('admin', 'filebrowser')
+               local filestat = nixio.fs.stat(table.concat(path, '/'))
+               local baseurl  = { 'admin', 'filebrowser' }
 
                if filestat and filestat.type == "reg" then
-                       table.remove( path, #path )
-                       filepath = table.concat( path, '/' ) .. '/'
-               elseif not ( filestat and filestat.type == "dir" ) then
-                       path     = { '' }
-                       filepath = '/'
+                       path[#path] = ''
+               elseif not (filestat and filestat.type == "dir") then
+                       path = { '', '' }
                else
-                       filepath = filepath .. '/'
+                       path[#path+1] = ''
                end
 
-               local entries = nixio.util.consume((nixio.fs.dir(filepath)))
+               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">
+       <div id="path">
                Location:
                <% for i, dir in ipairs(path) do %>
                        <% if i == 1 then %>
-                               <a href="<%=baseurl%>?field=<%=field%>">(root)</a>
+                               <a href="<%=url(unpack(baseurl))%>?field=<%=luci.http.urlencode(field)%>">(root)</a>
                        <% elseif next(path, i) then %>
-                               <% baseurl = baseurl .. '/' .. dir %>
-                               / <a href="<%=baseurl%>?field=<%=field%>"><%=dir%></a>
+                               <% baseurl[#baseurl+1] = luci.http.urlencode(dir) %>
+                               / <a href="<%=url(unpack(baseurl))%>?field=<%=luci.http.urlencode(field)%>"><%=pcdata(dir)%></a>
                        <% else %>
-                               <% baseurl = baseurl .. '/' .. dir %>
-                               / <%=dir%>
+                               <% baseurl[#baseurl+1] = luci.http.urlencode(dir) %>
+                               / <%=pcdata(dir)%>
                        <% end %>
                <% end %>
        </div>
 
        <div id="listing">
                <ul>
-                       <% for _, e in luci.util.vspairs(entries) do
-                           local stat = nixio.fs.stat(filepath..e)
-                               if stat and stat.type == 'dir' then
-                       -%>
+                       <% for _, e in ipairs(entries) do if e.type == 'dir' then -%>
                                <li class="dir">
                                        <img src="<%=resource%>/cbi/folder.gif" alt="<%:Directory%>" />
-                                       <a href="<%=baseurl%>/<%=e%>?field=<%=field%>"><%=e%>/</a>
+                                       <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 luci.util.vspairs(entries) do
-                           local stat = nixio.fs.stat(filepath..e)
-                               if stat and stat.type ~= 'dir' then
-                       -%>
+                       <% 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('<%=filepath..e%>')"><%=e%></a>
+                                       <a href="#" onclick="callback('<%=luci.http.urlencode(e.path)%>')"><%=pcdata(e.name)%></a>
                                </li>
                        <% end end -%>
                </ul>
index 5cb31511f69e2b34ae63cb402ce13aa50605df10..b4260707ef1293326139e67b090aa9ce014967f6 100644 (file)
        end
 -%>
 
-<ul style="margin:0; list-style-type:none; text-align:left">
-       <% if self.allowlocal then %>
-       <li style="padding:0.5em">
-               <input class="cbi-input-radio" data-update="click change"<%=attr("type", self.widget or "radio") .. attr("id", cbid .. "_empty") .. attr("name", cbid) .. attr("value", "") .. ifattr(checked[""], "checked", "checked")%> /> &#160;
-               <label<%=attr("for", cbid .. "_empty")%>></label>
-               <label<%=attr("for", cbid .. "_empty")%> style="background-color:<%=fwm.zone.get_color()%>" class="zonebadge">
-                       <strong><%:Device%></strong>
-                       <% if self.allowany and self.allowlocal then %>(<%:input%>)<% end %>
-               </label>
-       </li>
-       <% end %>
-       <% if self.allowany then %>
-       <li style="padding:0.5em">
-               <input class="cbi-input-radio" data-update="click change"<%=attr("type", self.widget or "radio") .. attr("id", cbid .. "_any") .. attr("name", cbid) .. attr("value", "*") .. ifattr(checked["*"], "checked", "checked")%> /> &#160;
-               <label<%=attr("for", cbid .. "_any")%>></label>
-               <label<%=attr("for", cbid .. "_any")%> style="background-color:<%=fwm.zone.get_color()%>" class="zonebadge">
-                       <strong><%:Any zone%></strong>
-                       <% if self.allowany and self.allowlocal then %>(<%:forward%>)<% end %>
-               </label>
-       </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 style="padding:0.5em">
-               <input class="cbi-input-radio" data-update="click change"<%=attr("type", self.widget or "radio") .. attr("id", cbid .. "." .. zone:name()) .. attr("name", cbid) .. attr("value", zone:name()) .. ifattr(checked[zone:name()], "checked", "checked")%> /> &#160;
-               <label<%=attr("for", cbid .. "." .. zone:name())%>></label>
-               <label<%=attr("for", cbid .. "." .. zone:name())%> 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()%>:
+<span>
+       <ul style="margin:0; list-style-type:none; text-align:left">
+               <% if self.allowlocal then %>
+               <li style="padding:0.5em">
+                       <input class="cbi-input-radio" data-update="click change"<%=attr("type", self.widget or "radio") .. attr("id", cbid .. "_empty") .. attr("name", cbid) .. attr("value", "") .. ifattr(checked[""], "checked", "checked")%> /> &#160;
+                       <label<%=attr("for", cbid .. "_empty")%>></label>
+                       <label<%=attr("for", cbid .. "_empty")%> style="background-color:<%=fwm.zone.get_color()%>" class="zonebadge">
+                               <strong><%:Device%></strong>
+                               <% if self.allowany and self.allowlocal then %>(<%:input%>)<% end %>
+                       </label>
+               </li>
+               <% end %>
+               <% if self.allowany then %>
+               <li style="padding:0.5em">
+                       <input class="cbi-input-radio" data-update="click change"<%=attr("type", self.widget or "radio") .. attr("id", cbid .. "_any") .. attr("name", cbid) .. attr("value", "*") .. ifattr(checked["*"], "checked", "checked")%> /> &#160;
+                       <label<%=attr("for", cbid .. "_any")%>></label>
+                       <label<%=attr("for", cbid .. "_any")%> style="background-color:<%=fwm.zone.get_color()%>" class="zonebadge">
+                               <strong><%:Any zone%></strong>
+                               <% if self.allowany and self.allowlocal then %>(<%:forward%>)<% end %>
+                       </label>
+               </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 style="padding:0.5em">
+                       <input class="cbi-input-radio" data-update="click change"<%=attr("type", self.widget or "radio") .. attr("id", cbid .. "." .. zone:name()) .. attr("name", cbid) .. attr("value", zone:name()) .. ifattr(checked[zone:name()], "checked", "checked")%> /> &#160;
+                       <label<%=attr("for", cbid .. "." .. zone:name())%>></label>
+                       <label<%=attr("for", cbid .. "." .. zone:name())%> style="background-color:<%=zone:get_color()%>" class="zonebadge">
+                               <strong><%=zone:name()%>:</strong>
                                <%
-                                       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())%> style="width:16px; height:16px; vertical-align:middle" 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 %>
-               </label>
-       </li>
-       <% end end %>
+                                       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())%> style="width:16px; height:16px; vertical-align:middle" 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 %>
+                       </label>
+               </li>
+               <% end end %>
 
-       <% if self.widget ~= "checkbox" and not self.nocreate then %>
-       <li style="padding:0.5em">
-               <input class="cbi-input-radio" data-update="click change" type="radio"<%=attr("id", cbid .. "_new") .. attr("name", cbid) .. attr("value", "-") .. ifattr(not selected, "checked", "checked")%> /> &#160;
-               <label<%=attr("for", cbid .. "_new")%>></label>
-               <div onclick="document.getElementById('<%=cbid%>_new').checked=true" class="zonebadge" style="background-color:<%=fwm.zone.get_color()%>">
-                       <em><%:unspecified -or- create:%>&#160;</em>
-                       <input type="text"<%=attr("name", cbid .. ".newzone") .. ifattr(not selected, "value", luci.http.formvalue(cbid .. ".newzone") or self.default)%> onfocus="document.getElementById('<%=cbid%>_new').checked=true" />
-               </div>
-       </li>
-       <% end %>
-</ul>
+               <% if self.widget ~= "checkbox" and not self.nocreate then %>
+               <li style="padding:0.5em">
+                       <input class="cbi-input-radio" data-update="click change" type="radio"<%=attr("id", cbid .. "_new") .. attr("name", cbid) .. attr("value", "-") .. ifattr(not selected, "checked", "checked")%> /> &#160;
+                       <label<%=attr("for", cbid .. "_new")%>></label>
+                       <div onclick="document.getElementById('<%=cbid%>_new').checked=true" class="zonebadge" style="background-color:<%=fwm.zone.get_color()%>">
+                               <em><%:unspecified -or- create:%>&#160;</em>
+                               <input type="text"<%=attr("name", cbid .. ".newzone") .. ifattr(not selected, "value", luci.http.formvalue(cbid .. ".newzone") or self.default)%> onfocus="document.getElementById('<%=cbid%>_new').checked=true" />
+                       </div>
+               </li>
+               <% end %>
+       </ul>
+</span>
 
 <%+cbi/valuefooter%>
index 4d332fd07a36bd27fced6dcd76475f90a96c2447..e6acfb0697c043df477c50dcb95239dbf34beff8 100644 (file)
@@ -1,6 +1,6 @@
        <%- if pageaction then -%>
        <div class="cbi-page-actions">
-               <% if redirect then %>
+               <% if redirect and not flow.hidebackbtn then %>
                <div style="float:left">
                        <input class="cbi-button cbi-button-link" type="button" value="<%:Back to Overview%>" onclick="location.href='<%=pcdata(redirect)%>'" />
                </div>
index e3210add634ea0659f4cfcc8bc851ff9b1254e4f..69ef3615a28665925cd84946e86da6ec140fd488 100644 (file)
@@ -2,12 +2,23 @@
        <div class="errorbox"><%=pcdata(msg)%></div>
 <%- end end -%>
 
-<%-+cbi/apply_xhr-%>
-
 <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 firstmap and applymap then cbi_apply_xhr(self.config, parsechain, redirect) end -%>
+       <%- if firstmap and (applymap or confirmmap) then -%>
+               <%+cbi/apply_widget%>
+               <% cbi_apply_widget(redirect) %>
+               <div class="alert-message" id="cbi_apply_status" style="display:none"></div>
+               <script type="text/javascript">
+                       document.addEventListener("DOMContentLoaded", function() {
+                               <% if confirmmap then -%>
+                                       uci_confirm(true, Date.now() + <%=confirmmap%> * 1000);
+                               <%- else -%>
+                                       uci_apply(true);
+                               <%- end %>
+                       });
+               </script>
+       <%- end -%>
 
        <% if self.tabbed then %>
                <ul class="cbi-tabmenu map">
index 78f5c5a544b440c39b05eae7a452d77bd797aaea..3b758d70ee487997814d9e6d4f1288a50fe32d4c 100644 (file)
@@ -52,7 +52,8 @@
                <%- if not self.cancel then -%><%-:Cancel-%><%-else-%><%=self.cancel%><%end-%>
        " />
 <% end %>
-               <script type="text/javascript">cbi_d_update();</script>
        </div>
 </form>
 <% end %>
+
+<script type="text/javascript">cbi_init();</script>
index 26d13f9372929918873d48e43bfd63914a79753f..3cb87563f130bb3c4d6a34b1b2274a53529458da 100644 (file)
@@ -35,7 +35,7 @@ end
                                <%- else -%>
                                        <th>&#160;</th>
                                <%- end -%>
-                       <%- end -%>
+                       <%- count = count +1; end -%>
                        <%- for i, k in pairs(self.children) do if not k.optional then -%>
                                <th class="cbi-section-table-cell"<%=width(k)%>>
                                <%- if k.titleref then -%><a title="<%=self.titledesc or translate('Go to relevant configuration page')%>" class="cbi-title-ref" href="<%=k.titleref%>"><%- end -%>
@@ -44,7 +44,7 @@ end
                                </th>
                        <%- count = count + 1; end; end; if self.sortable then -%>
                                <th class="cbi-section-table-cell"><%:Sort%></th>
-                       <%- end; if self.extedit or self.addremove then -%>
+                       <%- count = count + 1; end; if self.extedit or self.addremove then -%>
                                <th class="cbi-section-table-cell">&#160;</th>
                        <%- count = count + 1; end -%>
                        </tr>
index bc74226830a9a411b9975179071b6c17faea63bf..a762f6038b79fd4a55e683f80a9f51f8bf8f1c6f 100644 (file)
@@ -7,5 +7,5 @@
 <%+header%>
 <h2 name="content">404 <%:Not Found%></h2>
 <p><%:Sorry, the object you requested was not found.%></p>
-<tt><%:Unable to dispatch%>: <%=luci.http.request.env.PATH_INFO%></tt>
+<tt><%:Unable to dispatch%>: <%=url(unpack(luci.dispatcher.context.request))%></tt>
 <%+footer%>
index f6b0f5706a698a36806961324dc6a29b5bd02de0..b3ec9b761705e2fe1c8fca5237362b3d152e1497 100644 (file)
@@ -6,7 +6,7 @@
 
 <%+header%>
 
-<form method="post" action="<%=pcdata(luci.http.getenv("REQUEST_URI"))%>">
+<form method="post" action="<%=pcdata(FULL_REQUEST_URI)%>">
        <%- if fuser then %>
        <div class="errorbox"><%:Invalid username and/or password! Please try again.%></div>
        <% end -%>
index e69534b3bab65ffe819fc98b3fcf6529b38fd939..22889f5dbeb0849d7a68470d0cbe650748e45d6e 100644 (file)
@@ -222,9 +222,6 @@ msgstr "Concentrador d'accés"
 msgid "Access Point"
 msgstr "Punt d'accés"
 
-msgid "Action"
-msgstr "Acció"
-
 msgid "Actions"
 msgstr "Accions"
 
@@ -299,6 +296,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Permet-les totes menys les llistades"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Permet només les llistades"
 
@@ -406,11 +406,11 @@ msgstr "Configuració d'antena"
 msgid "Any zone"
 msgstr "Qualsevol zona"
 
-msgid "Apply"
-msgstr "Aplica"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Aplicant els canvis"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -572,9 +572,6 @@ msgstr ""
 "Repositoris específics de la distribució/compilació. Aquest fitxer NO es "
 "preservarà durant les actualitzacions del microprogramari del sistema."
 
-msgid "Buttons"
-msgstr "Botons"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -596,16 +593,24 @@ msgstr "Canvis"
 msgid "Changes applied."
 msgstr "Canvis aplicats."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "Canvia la paraula clau de l'administrador per accedir al dispositiu"
 
 msgid "Channel"
 msgstr "Canal"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Comprovació"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -681,12 +686,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Configuració"
 
-msgid "Configuration applied."
-msgstr "S'ha aplicat la configuració."
-
 msgid "Configuration files will be kept."
 msgstr "Es mantindran els fitxers de configuració."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Confirmació"
 
@@ -705,6 +713,12 @@ msgstr ""
 msgid "Connections"
 msgstr "Connexions"
 
+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 ""
+
 msgid "Country"
 msgstr "País"
 
@@ -746,6 +760,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -870,6 +889,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "Diagnòstics"
 
@@ -904,6 +926,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr "Descarta les respostes RFC1918 des de dalt"
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "Mostrant només els paquets que contenen"
 
@@ -1015,6 +1040,11 @@ msgstr "Emergència"
 msgid "Enable"
 msgstr "Habilita"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Habilita l'<abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1072,6 +1102,9 @@ msgstr "Activa/Desactiva"
 msgid "Enabled"
 msgstr "Habilitat"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1150,6 +1183,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "Fitxer"
 
@@ -1251,6 +1287,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Reenvia el trànsit difós"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Mode de reenviament"
 
@@ -1336,9 +1375,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr "Penja"
 
@@ -1929,9 +1965,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1949,12 +1982,12 @@ msgstr "Memòria"
 msgid "Memory usage (%)"
 msgstr "Ús de Memòria (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Mètrica"
 
-msgid "Minimum hold time"
-msgstr ""
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2160,6 +2193,9 @@ msgstr "Avís"
 msgid "Nslookup"
 msgstr "Nslookup"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "D'acord"
 
@@ -2172,6 +2208,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr ""
 
@@ -2399,9 +2438,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr "Ruta a la clau privada"
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2753,6 +2789,15 @@ msgstr "Mostra/amaga la contrasenya"
 msgid "Revert"
 msgstr "Reverteix"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr "Arrel"
 
@@ -2831,9 +2876,6 @@ msgstr "Desa"
 msgid "Save & Apply"
 msgstr "Desa i aplica"
 
-msgid "Save &#38; Apply"
-msgstr "Desa i aplica"
-
 msgid "Scan"
 msgstr "Escaneja"
 
@@ -2922,6 +2964,9 @@ msgstr "Mida"
 msgid "Size (.ipk)"
 msgstr "Mida (.ipk)"
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Salta"
 
@@ -2964,9 +3009,6 @@ msgstr "Origen"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Especifica el directori a que el dispositiu està adjuntat"
 
@@ -3005,6 +3047,9 @@ msgstr "Inici"
 msgid "Start priority"
 msgstr "Prioritat d'inici"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "Arrencada"
 
@@ -3066,6 +3111,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3155,6 +3203,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3181,9 +3239,6 @@ msgstr ""
 "<br />Fes clic a \"Procedeix\" a continuació per començar el procés "
 "d'escriptura a la memòria flaix."
 
-msgid "The following changes have been committed"
-msgstr "S'han comès els següents canvis"
-
 msgid "The following changes have been reverted"
 msgstr "S&#39;han desfet els següents canvis"
 
@@ -3263,8 +3318,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "No hi ha arrendaments actius."
 
-msgid "There are no pending changes to apply!"
-msgstr "No hi ha canvis pendents per aplicar!"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "No hi ha canvis pendents per revertir!"
@@ -3314,7 +3369,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3347,9 +3402,6 @@ msgstr ""
 "Aquesta llista mostra una vista general sobre els processos corrent al "
 "sistema actualment i el seu estat."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 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 "
@@ -3538,9 +3590,9 @@ msgstr ""
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 ""
 
@@ -3647,6 +3699,9 @@ msgstr "Esperant que s'apliquin els canvis..."
 msgid "Waiting for command to complete..."
 msgstr "Esperant que s'acabi l'ordre..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr "Esperant el dispositiu..."
 
@@ -3840,6 +3895,9 @@ msgstr "obert"
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3885,6 +3943,30 @@ msgstr "sí"
 msgid "« Back"
 msgstr "« Enrere"
 
+#~ 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"
 
index bff89c88456e50cadf942c0c23294fe90bab492d..924d0e6769d5bb31aa5ad2a979a6c61940feaebb 100644 (file)
@@ -217,9 +217,6 @@ msgstr "Přístupový koncentrátor"
 msgid "Access Point"
 msgstr "Přístupový bod"
 
-msgid "Action"
-msgstr "Akce"
-
 msgid "Actions"
 msgstr "Akce"
 
@@ -295,6 +292,9 @@ msgstr "Povolit <abbr title=\"Secure Shell\">SSH</abbr> autentizaci heslem"
 msgid "Allow all except listed"
 msgstr "Povolit vše mimo uvedené"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Povolit pouze uvedené"
 
@@ -402,11 +402,11 @@ msgstr "Konfigurace antén"
 msgid "Any zone"
 msgstr "Libovolná zóna"
 
-msgid "Apply"
-msgstr "Použít"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Probíhá uplatňování nastavení"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -565,9 +565,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Tlačítka"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -589,16 +586,24 @@ msgstr "Změny"
 msgid "Changes applied."
 msgstr "Změny aplikovány."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "Změní administrátorské heslo pro přístup k zařízení"
 
 msgid "Channel"
 msgstr "Kanál"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Kontrola"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -675,12 +680,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Nastavení"
 
-msgid "Configuration applied."
-msgstr "Nastavení uplatněno."
-
 msgid "Configuration files will be kept."
 msgstr "Konfigurační soubory budou zachovány."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Ověření"
 
@@ -699,6 +707,12 @@ msgstr ""
 msgid "Connections"
 msgstr "Připojení"
 
+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 ""
+
 msgid "Country"
 msgstr "Země"
 
@@ -740,6 +754,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -866,6 +885,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "Diagnostika"
 
@@ -900,6 +922,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr "Vyřadit upstream RFC1918 odpovědi"
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "Zobrazeny pouze balíčky obsahující"
 
@@ -1015,6 +1040,11 @@ msgstr "Záchrana"
 msgid "Enable"
 msgstr "Povolit"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Povolit <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1072,6 +1102,9 @@ msgstr "Povolit/Zakázat"
 msgid "Enabled"
 msgstr "Povoleno"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1152,6 +1185,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "Soubor"
 
@@ -1253,6 +1289,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Přeposílat broadcasty"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Režim přeposílání"
 
@@ -1336,9 +1375,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Handler"
-
 msgid "Hang Up"
 msgstr "Zavěsit"
 
@@ -1937,9 +1973,6 @@ msgstr "Nejvyšší povolená velikost EDNS.0 UDP paketů"
 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"
 
-msgid "Maximum hold time"
-msgstr "Maximální doba držení"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1957,12 +1990,12 @@ msgstr "Paměť"
 msgid "Memory usage (%)"
 msgstr "Využití paměti (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrika"
 
-msgid "Minimum hold time"
-msgstr "Minimální čas zápůjčky"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2168,6 +2201,9 @@ msgstr "Oznámení"
 msgid "Nslookup"
 msgstr "Nslookup"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2180,6 +2216,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr "Vypnutí prodlevy"
 
@@ -2408,9 +2447,6 @@ msgstr "Cesta k certifikátu klienta"
 msgid "Path to Private Key"
 msgstr "Cesta k privátnímu klíči"
 
-msgid "Path to executable which handles the button event"
-msgstr "Cesta ke spustitelnému souboru, který obsluhuje událost tlačítka"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2778,6 +2814,15 @@ msgstr "Odhalit/skrýt heslo"
 msgid "Revert"
 msgstr "Vrátit zpět"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr "Root"
 
@@ -2855,9 +2900,6 @@ msgstr "Uložit"
 msgid "Save & Apply"
 msgstr "Uložit & použít"
 
-msgid "Save &#38; Apply"
-msgstr "Uložit &#38; použít"
-
 msgid "Scan"
 msgstr "Skenovat"
 
@@ -2948,6 +2990,9 @@ msgstr "Velikost"
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Přeskočit"
 
@@ -2993,9 +3038,6 @@ msgstr "Zdroj"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3036,6 +3078,9 @@ msgstr "Start"
 msgid "Start priority"
 msgstr "Priorita spouštění"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "Po spuštění"
 
@@ -3100,6 +3145,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3195,6 +3243,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3220,9 +3278,6 @@ msgstr ""
 "souboru s originálním souborem pro zajištění integrity dat.<br /> Kliknutím "
 "na \"Pokračovat\" spustíte proceduru flashování."
 
-msgid "The following changes have been committed"
-msgstr "Následující změny byly provedeny"
-
 msgid "The following changes have been reverted"
 msgstr "Následující změny byly vráceny"
 
@@ -3304,8 +3359,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "Nejsou žádné aktivní zápůjčky."
 
-msgid "There are no pending changes to apply!"
-msgstr "Nejsou zde žádné nevyřízené změny k aplikaci!"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "Nejsou zde žádné nevyřízené změny k navrácení!"
@@ -3356,7 +3411,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3389,9 +3444,6 @@ msgstr ""
 "V tomto seznamu vidíte přehled aktuálně běžících systémových procesů a "
 "jejich stavy."
 
-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 "This page gives an overview over currently active network connections."
 msgstr "Tato stránka zobrazuje přehled aktivních síťových spojení."
 
@@ -3578,9 +3630,9 @@ msgstr "Použít směrovací tabulku"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 "
@@ -3690,6 +3742,9 @@ msgstr "Čekání na realizaci změn..."
 msgid "Waiting for command to complete..."
 msgstr "Čekání na dokončení příkazu..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3881,6 +3936,9 @@ msgstr ""
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3926,6 +3984,45 @@ msgstr "ano"
 msgid "« Back"
 msgstr "« Zpět"
 
+#~ 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"
 
index eb9221f1631a5472f39ec9f57a5ebf73ad73b316..4271d8e901ffb02104f20644a05679b64abdee0e 100644 (file)
@@ -3,21 +3,21 @@ msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-26 17:57+0200\n"
-"PO-Revision-Date: 2017-10-17 22:46+0200\n"
+"PO-Revision-Date: 2018-01-09 08:01+0100\n"
 "Last-Translator: JoeSemler <josef.semler@gmail.com>\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.4\n"
+"X-Generator: Poedit 1.8.11\n"
 "Language-Team: \n"
 
 msgid "%.1f dB"
 msgstr ""
 
 msgid "%s is untagged in multiple VLANs!"
-msgstr ""
+msgstr "%s darf nicht ohne VLAN-Tag in mehreren VLAN-Gruppen vorkommen!"
 
 msgid "(%d minute window, %d second interval)"
 msgstr "(%d Minuten Abschnitt, %d Sekunden Intervall)"
@@ -68,7 +68,7 @@ msgid "6-octet identifier as a hex string - no colons"
 msgstr "sechstellige hexadezimale ID (ohne Doppelpunkte)"
 
 msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r: Schnelle Client-Übergabe"
 
 msgid "802.11w Association SA Query maximum timeout"
 msgstr "Maximales Timeout für Quelladressprüfungen (SA Query)"
@@ -160,6 +160,8 @@ 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."
 
 msgid "A43C + J43 + A43"
 msgstr ""
@@ -218,9 +220,6 @@ msgstr "Access Concentrator"
 msgid "Access Point"
 msgstr "Access Point"
 
-msgid "Action"
-msgstr "Aktion"
-
 msgid "Actions"
 msgstr "Aktionen"
 
@@ -258,7 +257,7 @@ msgid "Additional Hosts files"
 msgstr "Zusätzliche Hosts-Dateien"
 
 msgid "Additional servers file"
-msgstr ""
+msgstr "Zusätzliche Nameserver-Datei"
 
 msgid "Address"
 msgstr "Adresse"
@@ -273,7 +272,7 @@ msgid "Advanced Settings"
 msgstr "Erweiterte Einstellungen"
 
 msgid "Aggregate Transmit Power(ACTATP)"
-msgstr ""
+msgstr "Vollständige Sendeleistung (ACTATP)"
 
 msgid "Alert"
 msgstr "Alarm"
@@ -294,6 +293,9 @@ msgstr "Erlaube Anmeldung per Passwort"
 msgid "Allow all except listed"
 msgstr "Alle außer gelistete erlauben"
 
+msgid "Allow legacy 802.11b rates"
+msgstr "Veraltete 802.11b Raten erlauben"
+
 msgid "Allow listed only"
 msgstr "Nur gelistete erlauben"
 
@@ -324,6 +326,8 @@ msgid ""
 "Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
 "\">Tunneling Comparison</a> on SIXXS"
 msgstr ""
+"Siehe auch <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
+"\">Tunneling Comparison</a> bei SIXXS."
 
 msgid "Always announce default router"
 msgstr "Immer Defaultrouter ankündigen"
@@ -405,11 +409,11 @@ msgstr "Antennenkonfiguration"
 msgid "Any zone"
 msgstr "Beliebige Zone"
 
-msgid "Apply"
-msgstr "Anwenden"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Änderungen werden angewandt"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -577,9 +581,6 @@ msgstr ""
 "Konfiguriert die distributionsspezifischen Paket-Repositories. Diese "
 "Konfiguration wird bei Upgrades NICHT gesichert."
 
-msgid "Buttons"
-msgstr "Knöpfe"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 "CA-Zertifikat (wird beim ersten Verbindungsaufbau automatisch gespeichert "
@@ -603,16 +604,24 @@ msgstr "Änderungen"
 msgid "Changes applied."
 msgstr "Änderungen angewendet."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "Ändert das Administratorpasswort für den Zugriff auf dieses Gerät"
 
 msgid "Channel"
 msgstr "Kanal"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Prüfen"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr "Dateisysteme prüfen"
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -695,12 +704,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Konfiguration"
 
-msgid "Configuration applied."
-msgstr "Konfiguration angewendet."
-
 msgid "Configuration files will be kept."
 msgstr "Konfigurationsdateien sichern"
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Bestätigung"
 
@@ -719,6 +731,12 @@ msgstr "TLS zwingend vorraussetzen und abbrechen wenn TLS fehlschlägt."
 msgid "Connections"
 msgstr "Verbindungen"
 
+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 ""
+
 msgid "Country"
 msgstr "Land"
 
@@ -762,6 +780,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr "Eigene Repositories"
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -789,10 +812,10 @@ msgid "DHCPv6 client"
 msgstr "DHCPv6 Client"
 
 msgid "DHCPv6-Mode"
-msgstr ""
+msgstr "DHCPv6-Modus"
 
 msgid "DHCPv6-Service"
-msgstr ""
+msgstr "DHCPv6-Dienst"
 
 msgid "DNS"
 msgstr "DNS"
@@ -886,6 +909,9 @@ msgstr "Das Gerät startet neu..."
 msgid "Device unreachable"
 msgstr "Das Gerät ist nicht erreichbar"
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "Diagnosen"
 
@@ -909,7 +935,7 @@ msgid "Disable DNS setup"
 msgstr "DNS-Verarbeitung deaktivieren"
 
 msgid "Disable Encryption"
-msgstr ""
+msgstr "Verschlüsselung deaktivieren"
 
 msgid "Disabled"
 msgstr "Deaktiviert"
@@ -920,6 +946,9 @@ msgstr "Deaktiviert (Standard)"
 msgid "Discard upstream RFC1918 responses"
 msgstr "Eingehende RFC1918-Antworten verwerfen"
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "Nur Pakete mit folgendem Inhalt anzeigen"
 
@@ -1037,6 +1066,11 @@ msgstr "Notfall"
 msgid "Enable"
 msgstr "Aktivieren"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr> aktivieren"
 
@@ -1095,6 +1129,9 @@ msgstr "Aktivieren/Deaktivieren"
 msgid "Enabled"
 msgstr "Aktiviert"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1178,6 +1215,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "Datei"
 
@@ -1284,6 +1324,9 @@ msgstr "Fehlerkorrektursekunden (FECS)"
 msgid "Forward broadcast traffic"
 msgstr "Broadcasts weiterleiten"
 
+msgid "Forward mesh peer traffic"
+msgstr "Mesh-Nachbar-Traffic weiterleiten"
+
 msgid "Forwarding mode"
 msgstr "Weiterleitungstyp"
 
@@ -1331,7 +1374,7 @@ msgid "Generate Config"
 msgstr "Konfiguration generieren"
 
 msgid "Generate PMK locally"
-msgstr ""
+msgstr "PMK lokal generieren"
 
 msgid "Generate archive"
 msgstr "Sicherung erstellen"
@@ -1371,9 +1414,6 @@ msgstr "HE.net Benutzername"
 msgid "HT mode (802.11n)"
 msgstr "HT-Modus (802.11n)"
 
-msgid "Handler"
-msgstr "Handler"
-
 msgid "Hang Up"
 msgstr "Auflegen"
 
@@ -1820,6 +1860,12 @@ msgid ""
 "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."
 
 msgid ""
 "List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
@@ -1828,6 +1874,12 @@ msgid ""
 "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."
 
 msgid "List of SSH key files for auth"
 msgstr "Liste der SSH Schlüssel zur Authentifikation"
@@ -1983,9 +2035,6 @@ msgstr "Maximal zulässige Größe von EDNS.0 UDP Paketen"
 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)"
 
-msgid "Maximum hold time"
-msgstr "Maximalzeit zum Halten der Verbindung"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -2006,12 +2055,12 @@ msgstr "Hauptspeicher"
 msgid "Memory usage (%)"
 msgstr "Speichernutzung (%)"
 
+msgid "Mesh Id"
+msgstr "Mesh-ID"
+
 msgid "Metric"
 msgstr "Metrik"
 
-msgid "Minimum hold time"
-msgstr "Minimalzeit zum Halten der Verbindung"
-
 msgid "Mirror monitor port"
 msgstr "Spiegel-Monitor-Port"
 
@@ -2062,7 +2111,7 @@ msgstr ""
 "Laufwerke und Speicher zur Verwendung eingebunden werden."
 
 msgid "Mount filesystems not specifically configured"
-msgstr ""
+msgstr "Nicht explizit konfigurierte Dateisysteme einhängen"
 
 msgid "Mount options"
 msgstr "Mount-Optionen"
@@ -2218,6 +2267,9 @@ msgstr "Notiz"
 msgid "Nslookup"
 msgstr "DNS-Auflösung"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2230,6 +2282,9 @@ msgstr "Chiffriertes Gruppenpasswort"
 msgid "Obfuscated Password"
 msgstr "Chiffriertes Passwort"
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr "Verzögerung für Ausschalt-Zustand"
 
@@ -2475,9 +2530,6 @@ msgstr "Pfad zu Client-Zertifikat"
 msgid "Path to Private Key"
 msgstr "Pfad zum Privaten Schlüssel"
 
-msgid "Path to executable which handles the button event"
-msgstr "Ausführbare Datei welche das Schalter-Ereignis verarbeitet"
-
 msgid "Path to inner CA-Certificate"
 msgstr "Pfad zum inneren CA-Zertifikat"
 
@@ -2617,10 +2669,10 @@ msgid "Quality"
 msgstr "Qualität"
 
 msgid "R0 Key Lifetime"
-msgstr ""
+msgstr "R0-Schlüsselgültigkeit"
 
 msgid "R1 Key Holder"
-msgstr ""
+msgstr "R1-Schlüsselinhaber"
 
 msgid "RFC3947 NAT-T mode"
 msgstr ""
@@ -2856,6 +2908,15 @@ msgstr "Passwort zeigen/verstecken"
 msgid "Revert"
 msgstr "Verwerfen"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr "Root"
 
@@ -2934,9 +2995,6 @@ msgstr "Speichern"
 msgid "Save & Apply"
 msgstr "Speichern & Anwenden"
 
-msgid "Save &#38; Apply"
-msgstr "Speichern &#38; Anwenden"
-
 msgid "Scan"
 msgstr "Scan"
 
@@ -3032,6 +3090,9 @@ msgstr "Größe"
 msgid "Size (.ipk)"
 msgstr "Größe (.ipk)"
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Überspringen"
 
@@ -3078,9 +3139,6 @@ msgstr "Quelle"
 msgid "Source routing"
 msgstr "Quell-Routing"
 
-msgid "Specifies the button state to handle"
-msgstr "Gibt den zu behandelnden Tastenstatus an"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Nennt das Verzeichnis, an welches das Gerät angebunden ist"
 
@@ -3127,6 +3185,9 @@ msgstr "Start"
 msgid "Start priority"
 msgstr "Startpriorität"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "Systemstart"
 
@@ -3195,6 +3256,9 @@ msgstr ""
 "Der Switch %q hat eine unbekannte Struktur, die VLAN Settings könnten "
 "unpassend sein."
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3242,7 +3306,7 @@ msgid "Target"
 msgstr "Ziel"
 
 msgid "Target network"
-msgstr ""
+msgstr "Zielnetzwerk"
 
 msgid "Terminate"
 msgstr "Beenden"
@@ -3298,6 +3362,16 @@ msgstr ""
 "Die Konfigurationsdatei konnte aufgrund der folgenden Fehler nicht geladen "
 "werden:"
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3319,9 +3393,6 @@ msgstr ""
 "Integrität sicherzustellen.<br /> Klicken Sie \"Fortfahren\" um die Flash-"
 "Prozedur zu starten."
 
-msgid "The following changes have been committed"
-msgstr "Die folgenden Änderungen wurden angewendet"
-
 msgid "The following changes have been reverted"
 msgstr "Die folgenden Änderungen wurden verworfen"
 
@@ -3412,8 +3483,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "Es gibt z.Z. keine aktiven Leases."
 
-msgid "There are no pending changes to apply!"
-msgstr "Es gibt keine ausstehenen Änderungen anzuwenden!"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "Es gibt keine ausstehenen Änderungen zurückzusetzen!"
@@ -3468,15 +3539,15 @@ 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 "
+"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."
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 "Dies ist die lokale, vom Broker zugewiesene IPv6-Adresse, sie endet "
-"üblicherweise mit <code>:2</code>"
+"üblicherweise mit <code>...:2/64</code>"
 
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
@@ -3509,10 +3580,6 @@ msgstr ""
 "Diese Tabelle gibt eine Übersicht über aktuell laufende Systemprozesse und "
 "deren Status."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-"Diese Seite ermöglicht die Konfiguration benutzerdefinierter Tastenaktionen"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "Diese Seite gibt eine Übersicht über aktive Netzwerkverbindungen."
 
@@ -3700,9 +3767,9 @@ msgstr "Benutze Routing-Tabelle"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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. "
@@ -3817,6 +3884,9 @@ msgstr "Änderungen werden angewandt..."
 msgid "Waiting for command to complete..."
 msgstr "Der Befehl wird ausgeführt..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr "Warte auf Gerät..."
 
@@ -3832,6 +3902,8 @@ 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."
 
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
@@ -4011,6 +4083,9 @@ msgstr "offen"
 msgid "overlay"
 msgstr "Overlay"
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr "Relay-Modus"
 
@@ -4056,6 +4131,50 @@ msgstr "ja"
 msgid "« Back"
 msgstr "« Zurück"
 
+#~ msgid "Apply"
+#~ msgstr "Anwenden"
+
+#~ msgid "Applying changes"
+#~ msgstr "Änderungen werden angewandt"
+
+#~ msgid "Configuration applied."
+#~ msgstr "Konfiguration angewendet."
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "Speichern &#38; Anwenden"
+
+#~ msgid "The following changes have been committed"
+#~ msgstr "Die folgenden Änderungen wurden angewendet"
+
+#~ msgid "There are no pending changes to apply!"
+#~ msgstr "Es gibt keine ausstehenen Änderungen anzuwenden!"
+
+#~ msgid "Action"
+#~ msgstr "Aktion"
+
+#~ msgid "Buttons"
+#~ msgstr "Knöpfe"
+
+#~ msgid "Handler"
+#~ msgstr "Handler"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Maximalzeit zum Halten der Verbindung"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Minimalzeit zum Halten der Verbindung"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Ausführbare Datei welche das Schalter-Ereignis verarbeitet"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Gibt den zu behandelnden Tastenstatus an"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr ""
+#~ "Diese Seite ermöglicht die Konfiguration benutzerdefinierter "
+#~ "Tastenaktionen"
+
 #~ msgid "Leasetime"
 #~ msgstr "Laufzeit"
 
index ca8240f457ee0d3c73c32e755c77956fb22d5c08..60d62f3dd6c3643880a2ead958e1b94269a3461f 100644 (file)
@@ -220,9 +220,6 @@ msgstr "Συγκεντρωτής Πρόσβασης "
 msgid "Access Point"
 msgstr "Σημείο Πρόσβασης"
 
-msgid "Action"
-msgstr "Ενέργεια"
-
 msgid "Actions"
 msgstr "Ενέργειες"
 
@@ -299,6 +296,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Να επιτρέπονται όλες, εκτός από αυτές στη λίστα"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Να επιτρέπονται μόνο αυτές στην λίστα"
 
@@ -409,11 +409,11 @@ msgstr ""
 msgid "Any zone"
 msgstr "Οιαδήποτε ζώνη"
 
-msgid "Apply"
-msgstr "Εφαρμογή"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Εφαρμογή αλλαγών"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -574,9 +574,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Κουμπιά"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -598,16 +595,24 @@ msgstr "Αλλαγές"
 msgid "Changes applied."
 msgstr "Αλλαγές εφαρμόστηκαν."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "Αλλάζει τον κωδικό διαχειριστή για πρόσβαση στη συσκευή"
 
 msgid "Channel"
 msgstr "Κανάλι"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Έλεγχος"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -684,12 +689,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Παραμετροποίηση"
 
-msgid "Configuration applied."
-msgstr "Η Παραμετροποίηση εφαρμόστηκε."
-
 msgid "Configuration files will be kept."
 msgstr "Τα αρχεία παραμετροποίησης θα διατηρηθούν."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Επιβεβαίωση"
 
@@ -708,6 +716,12 @@ msgstr ""
 msgid "Connections"
 msgstr "Συνδέσεις"
 
+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 ""
+
 msgid "Country"
 msgstr "Χώρα"
 
@@ -749,6 +763,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -875,6 +894,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "Διαγνωστικά"
 
@@ -909,6 +931,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr "Αγνόησε τις απαντήσεις ανοδικής ροής RFC1918"
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "Εμφάνιση μόνο πακέτων που περιέχουν"
 
@@ -1027,6 +1052,11 @@ msgstr "Έκτακτη ανάγκη"
 msgid "Enable"
 msgstr "Ενεργοποίηση"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Ενεργοποίηση <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1084,6 +1114,9 @@ msgstr "Ενεργοποίηση/Απενεργοποίηση"
 msgid "Enabled"
 msgstr "Ενεργοποιημένο"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1165,6 +1198,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "Αρχείο"
 
@@ -1267,6 +1303,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Προώθηση κίνησης broadcast"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Μέθοδος προώθησης"
 
@@ -1350,9 +1389,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr "Κρέμασμα"
 
@@ -1944,9 +1980,6 @@ msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 "Μέγιστος αριθμός δευτερολέπτων αναμονής ώστε το modem να καταστεί έτοιμο"
 
-msgid "Maximum hold time"
-msgstr "Μέγιστος χρόνος κράτησης"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1964,12 +1997,12 @@ msgstr "Μνήμη"
 msgid "Memory usage (%)"
 msgstr "Χρήση Μνήμης (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Μέτρο"
 
-msgid "Minimum hold time"
-msgstr "Ελάχιστος χρόνος κράτησης"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2176,6 +2209,9 @@ msgstr "Επισήμανση"
 msgid "Nslookup"
 msgstr ""
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "Εντάξει"
 
@@ -2188,6 +2224,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr ""
 
@@ -2415,9 +2454,6 @@ msgstr "Διαδρομή για Πιστοποιητικό-Πελάτη"
 msgid "Path to Private Key"
 msgstr "Διαδρομή για Ιδιωτικό Κλειδί"
 
-msgid "Path to executable which handles the button event"
-msgstr "Διαδρομή για το εκτελέσιμο που χειρίζεται το γεγονός του κουμπιού"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2770,6 +2806,15 @@ msgstr ""
 msgid "Revert"
 msgstr "Αναίρεση"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr "Root"
 
@@ -2849,9 +2894,6 @@ msgstr "Αποθήκευση"
 msgid "Save & Apply"
 msgstr "Αποθήκευση & Εφαρμογή"
 
-msgid "Save &#38; Apply"
-msgstr "Αποθήκευση &#38; Εφαρμογή"
-
 msgid "Scan"
 msgstr "Σάρωση"
 
@@ -2940,6 +2982,9 @@ msgstr "Μέγεθος"
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Παράκαμψη"
 
@@ -2982,9 +3027,6 @@ msgstr "Πηγή"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3025,6 +3067,9 @@ msgstr "Αρχή"
 msgid "Start priority"
 msgstr "Προτεραιότητα εκκίνησης"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "Εκκίνηση"
 
@@ -3086,6 +3131,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3173,6 +3221,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3195,9 +3253,6 @@ msgid ""
 "\"Proceed\" below to start the flash procedure."
 msgstr ""
 
-msgid "The following changes have been committed"
-msgstr "Οι παρακάτω αλλαγές έχουν υποβληθεί"
-
 msgid "The following changes have been reverted"
 msgstr "Οι παρακάτω αλλαγές έχουν αναιρεθεί"
 
@@ -3270,7 +3325,7 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "Δεν υπάρχουν ενεργά leases."
 
-msgid "There are no pending changes to apply!"
+msgid "There are no changes to apply."
 msgstr ""
 
 msgid "There are no pending changes to revert!"
@@ -3316,7 +3371,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3349,9 +3404,6 @@ msgstr ""
 "Αυτή η λίστα δίνει μία εικόνα των τρέχοντων εργασιών συστήματος και της "
 "κατάστασής τους."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 "Αυτή η σελίδα δίνει μία εικόνα για τις τρέχουσες ενεργές συνδέσεις δικτύου."
@@ -3534,9 +3586,9 @@ msgstr ""
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 ""
 
@@ -3641,6 +3693,9 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3833,6 +3888,9 @@ msgstr ""
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3878,6 +3936,36 @@ msgstr "ναι"
 msgid "« Back"
 msgstr "« Πίσω"
 
+#~ 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"
 
index 6db22b6e66c8d89e8c4b24781614a06358c78bba..5340e83eb4a576c68b93ea185ca7f04d9467ddba 100644 (file)
@@ -220,9 +220,6 @@ msgstr "Access Concentrator"
 msgid "Access Point"
 msgstr "Access Point"
 
-msgid "Action"
-msgstr "Action"
-
 msgid "Actions"
 msgstr "Actions"
 
@@ -294,6 +291,9 @@ msgstr "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
 msgid "Allow all except listed"
 msgstr "Allow all except listed"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Allow listed only"
 
@@ -400,11 +400,11 @@ msgstr ""
 msgid "Any zone"
 msgstr "Any zone"
 
-msgid "Apply"
-msgstr "Apply"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Applying changes"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -563,9 +563,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Buttons"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -587,16 +584,24 @@ msgstr "Changes"
 msgid "Changes applied."
 msgstr "Changes applied."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "Changes the administrator password for accessing the device"
 
 msgid "Channel"
 msgstr "Channel"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Check"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -671,12 +676,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Configuration"
 
-msgid "Configuration applied."
-msgstr "Configuration applied."
-
 msgid "Configuration files will be kept."
 msgstr "Configuration files will be kept."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Confirmation"
 
@@ -695,6 +703,12 @@ msgstr ""
 msgid "Connections"
 msgstr "Connections"
 
+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 ""
+
 msgid "Country"
 msgstr "Country"
 
@@ -736,6 +750,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -863,6 +882,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "Diagnostics"
 
@@ -895,6 +917,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr ""
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr ""
 
@@ -1006,6 +1031,11 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1063,6 +1093,9 @@ msgstr "Enable/Disable"
 msgid "Enabled"
 msgstr "Enabled"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1141,6 +1174,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1242,6 +1278,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1325,9 +1364,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Handler"
-
 msgid "Hang Up"
 msgstr "Hang Up"
 
@@ -1912,9 +1948,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr "Maximum hold time"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1932,12 +1965,12 @@ msgstr "Memory"
 msgid "Memory usage (%)"
 msgstr "Memory usage (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metric"
 
-msgid "Minimum hold time"
-msgstr "Minimum hold time"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2143,6 +2176,9 @@ msgstr ""
 msgid "Nslookup"
 msgstr ""
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2155,6 +2191,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr ""
 
@@ -2382,9 +2421,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr "Path to Private Key"
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2736,6 +2772,15 @@ msgstr ""
 msgid "Revert"
 msgstr "Revert"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr ""
 
@@ -2814,9 +2859,6 @@ msgstr "Save"
 msgid "Save & Apply"
 msgstr "Save & Apply"
 
-msgid "Save &#38; Apply"
-msgstr ""
-
 msgid "Scan"
 msgstr "Scan"
 
@@ -2904,6 +2946,9 @@ msgstr "Size"
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Skip"
 
@@ -2946,9 +2991,6 @@ msgstr "Source"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Specifies the button state to handle"
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -2987,6 +3029,9 @@ msgstr "Start"
 msgid "Start priority"
 msgstr "Start priority"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr ""
 
@@ -3048,6 +3093,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3133,6 +3181,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3155,9 +3213,6 @@ msgid ""
 "\"Proceed\" below to start the flash procedure."
 msgstr ""
 
-msgid "The following changes have been committed"
-msgstr ""
-
 msgid "The following changes have been reverted"
 msgstr "The following changes have been reverted"
 
@@ -3230,7 +3285,7 @@ msgstr ""
 msgid "There are no active leases."
 msgstr ""
 
-msgid "There are no pending changes to apply!"
+msgid "There are no changes to apply."
 msgstr ""
 
 msgid "There are no pending changes to revert!"
@@ -3276,7 +3331,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3307,9 +3362,6 @@ msgstr ""
 "This list gives an overview over currently running system processes and "
 "their status."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "This page gives an overview over currently active network connections."
 
@@ -3491,9 +3543,9 @@ msgstr ""
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 ""
 
@@ -3600,6 +3652,9 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3790,6 +3845,9 @@ msgstr ""
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3835,6 +3893,33 @@ msgstr ""
 msgid "« Back"
 msgstr "« Back"
 
+#~ 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"
 
index 088bdbd104198fd1627b28c2afd8d2e6212f82ea..66811e74ce82b75e2e7729893abafb7cfcf40a9e 100644 (file)
@@ -222,9 +222,6 @@ msgstr "Concentrador de acceso"
 msgid "Access Point"
 msgstr "Punto de Acceso"
 
-msgid "Action"
-msgstr "Acción"
-
 msgid "Actions"
 msgstr "Acciones"
 
@@ -300,6 +297,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Permitir a todos excepto a los de la lista"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Permitir a los pertenecientes en la lista"
 
@@ -406,11 +406,11 @@ msgstr "Configuración de la antena"
 msgid "Any zone"
 msgstr "Cualquier zona"
 
-msgid "Apply"
-msgstr "Aplicar"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Aplicando cambios"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -570,9 +570,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Botones"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -594,16 +591,24 @@ msgstr "Cambios"
 msgid "Changes applied."
 msgstr "Cambios aplicados."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "Cambie la contraseña del administrador para acceder al dispositivo"
 
 msgid "Channel"
 msgstr "Canal"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Comprobar"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -680,12 +685,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Configuración"
 
-msgid "Configuration applied."
-msgstr "Configuración establecida."
-
 msgid "Configuration files will be kept."
 msgstr "Se mantendrán los ficheros de configuración."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Confirmación"
 
@@ -704,6 +712,12 @@ msgstr ""
 msgid "Connections"
 msgstr "Conexiones"
 
+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 ""
+
 msgid "Country"
 msgstr "País"
 
@@ -745,6 +759,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -872,6 +891,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "Diagnósticos"
 
@@ -906,6 +928,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr "Descartar respuestas RFC1918 salientes"
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "Mostrar sólo paquete que contienen"
 
@@ -1021,6 +1046,11 @@ msgstr "Emergencia"
 msgid "Enable"
 msgstr "Activar"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Activar <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1078,6 +1108,9 @@ msgstr "Activar/Desactivar"
 msgid "Enabled"
 msgstr "Activado"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1159,6 +1192,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "Fichero"
 
@@ -1260,6 +1296,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Retransmitir tráfico de propagación"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Modo de retransmisión"
 
@@ -1346,9 +1385,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Manejador"
-
 msgid "Hang Up"
 msgstr "Suspender"
 
@@ -1951,9 +1987,6 @@ msgstr "Tamaño máximo de paquetes EDNS.0 paquetes UDP"
 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"
 
-msgid "Maximum hold time"
-msgstr "Pausa máxima de transmisión"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1971,12 +2004,12 @@ msgstr "Memoria"
 msgid "Memory usage (%)"
 msgstr "Uso de memoria (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Métrica"
 
-msgid "Minimum hold time"
-msgstr "Pausa mínima de espera"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2182,6 +2215,9 @@ msgstr "Aviso"
 msgid "Nslookup"
 msgstr "NSLookup"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "Aceptar"
 
@@ -2194,6 +2230,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr "Retraso de desconexión"
 
@@ -2422,9 +2461,6 @@ msgstr "Camino al certificado de cliente"
 msgid "Path to Private Key"
 msgstr "Ruta a la Clave Privada"
 
-msgid "Path to executable which handles the button event"
-msgstr "Ruta al ejecutable que maneja el evento button"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2790,6 +2826,15 @@ msgstr "Mostrar/ocultar contraseña"
 msgid "Revert"
 msgstr "Anular"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr "Raíz"
 
@@ -2868,9 +2913,6 @@ msgstr "Guardar"
 msgid "Save & Apply"
 msgstr "Guardar y aplicar"
 
-msgid "Save &#38; Apply"
-msgstr "Guardar y aplicar"
-
 msgid "Scan"
 msgstr "Explorar"
 
@@ -2961,6 +3003,9 @@ msgstr "Tamaño"
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Saltar"
 
@@ -3006,9 +3051,6 @@ msgstr "Origen"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Especifica el estado de botón a manejar"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Especifica el directorio al que está enlazado el dispositivo"
 
@@ -3052,6 +3094,9 @@ msgstr "Arrancar"
 msgid "Start priority"
 msgstr "Prioridad de arranque"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "Arranque"
 
@@ -3117,6 +3162,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3215,6 +3263,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3240,9 +3298,6 @@ msgstr ""
 "coinciden con los del original.<br />Pulse \"Proceder\" para empezar el "
 "grabado."
 
-msgid "The following changes have been committed"
-msgstr "Se han hecho los siguientes cambios"
-
 msgid "The following changes have been reverted"
 msgstr "Se han anulado los siguientes cambios"
 
@@ -3326,8 +3381,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "Sin cesiones activas."
 
-msgid "There are no pending changes to apply!"
-msgstr "¡No hay cambios pendientes!"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "¡No hay cambios a anular!"
@@ -3381,10 +3436,10 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"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</code>"
+"terminar con <code>...:2/64</code>"
 
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
@@ -3414,9 +3469,6 @@ msgid ""
 "their status."
 msgstr "Procesos de sistema que se están ejecutando actualmente y su estado."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "Configuración de acciones personalizadas para los botones"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "Conexiones de red activas."
 
@@ -3603,9 +3655,9 @@ msgstr "Usar tabla de rutas"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 cesión. <em>Dirección "
@@ -3716,6 +3768,9 @@ msgstr "Esperando a que se realicen los cambios..."
 msgid "Waiting for command to complete..."
 msgstr "Esperando a que termine el comando..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3908,6 +3963,9 @@ msgstr "abierto"
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3953,6 +4011,48 @@ msgstr "sí"
 msgid "« Back"
 msgstr "« Volver"
 
+#~ 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"
 
index a94ffb3a88a73e3e38416a5aa66ebbc95992f646..17d124851857a789296f4ca58e2463ce552ec784 100644 (file)
@@ -225,9 +225,6 @@ msgstr "Concentrateur d'accès"
 msgid "Access Point"
 msgstr "Point d'accès"
 
-msgid "Action"
-msgstr "Action"
-
 msgid "Actions"
 msgstr "Actions"
 
@@ -302,6 +299,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Autoriser tout sauf ce qui est listé"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Autoriser seulement ce qui est listé"
 
@@ -412,11 +412,11 @@ msgstr "Configuration de l'antenne"
 msgid "Any zone"
 msgstr "N'importe quelle zone"
 
-msgid "Apply"
-msgstr "Appliquer"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Changements en cours"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -575,9 +575,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Boutons"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -599,16 +596,24 @@ msgstr "Changements"
 msgid "Changes applied."
 msgstr "Changements appliqués."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "Change le mot de passe administrateur pour accéder à l'équipement"
 
 msgid "Channel"
 msgstr "Canal"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Vérification"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -687,12 +692,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Configuration"
 
-msgid "Configuration applied."
-msgstr "Configuration appliquée."
-
 msgid "Configuration files will be kept."
 msgstr "Les fichiers de configuration seront préservés."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Confirmation"
 
@@ -711,6 +719,12 @@ msgstr ""
 msgid "Connections"
 msgstr "Connexions"
 
+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 ""
+
 msgid "Country"
 msgstr "Pays"
 
@@ -752,6 +766,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -879,6 +898,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "Diagnostics"
 
@@ -913,6 +935,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr "Jeter les réponses en RFC1918 amont"
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "N'afficher que les paquets contenant"
 
@@ -1031,6 +1056,11 @@ msgstr "Urgence"
 msgid "Enable"
 msgstr "Activer"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Activer le protocole <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1088,6 +1118,9 @@ msgstr "Activer/Désactiver"
 msgid "Enabled"
 msgstr "Activé"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1171,6 +1204,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "Fichier"
 
@@ -1272,6 +1308,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Transmettre le trafic de diffusion"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Mode de transmission"
 
@@ -1357,9 +1396,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Gestionnaire"
-
 msgid "Hang Up"
 msgstr "Signal (HUP)"
 
@@ -1965,9 +2001,6 @@ msgstr "Taille maximum autorisée des paquets UDP EDNS.0"
 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"
 
-msgid "Maximum hold time"
-msgstr "Temps de maintien maximum"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1985,12 +2018,12 @@ msgstr "Mémoire"
 msgid "Memory usage (%)"
 msgstr "Utilisation Mémoire (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrique"
 
-msgid "Minimum hold time"
-msgstr "Temps de maintien mimimum"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2196,6 +2229,9 @@ msgstr "Note"
 msgid "Nslookup"
 msgstr "Nslookup"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2208,6 +2244,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr "Durée éteinte"
 
@@ -2435,9 +2474,6 @@ msgstr "Chemin du certificat-client"
 msgid "Path to Private Key"
 msgstr "Chemin de la clé privée"
 
-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 "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2803,6 +2839,15 @@ msgstr "Montrer/cacher le mot de passe"
 msgid "Revert"
 msgstr "Revenir"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr "Racine"
 
@@ -2882,9 +2927,6 @@ msgstr "Sauvegarder"
 msgid "Save & Apply"
 msgstr "Sauvegarder et Appliquer"
 
-msgid "Save &#38; Apply"
-msgstr "Sauvegarder et appliquer"
-
 msgid "Scan"
 msgstr "Scan"
 
@@ -2975,6 +3017,9 @@ msgstr "Taille"
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Passer au suivant"
 
@@ -3021,9 +3066,6 @@ msgstr "Source"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Indique l'état du bouton à gérer"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Indique le répertoire auquel le périphérique est rattaché"
 
@@ -3064,6 +3106,9 @@ msgstr "Démarrer"
 msgid "Start priority"
 msgstr "Priorité de démarrage"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "Démarrage"
 
@@ -3129,6 +3174,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3227,6 +3275,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3250,9 +3308,6 @@ msgstr ""
 "assurer de son intégrité.<br /> Cliquez sur \"Continuer\" pour lancer la "
 "procédure d'écriture."
 
-msgid "The following changes have been committed"
-msgstr "Les changements suivants ont été appliqués"
-
 msgid "The following changes have been reverted"
 msgstr "Les changements suivants ont été annulés"
 
@@ -3339,8 +3394,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "Il n'y a aucun bail actif."
 
-msgid "There are no pending changes to apply!"
-msgstr "Il n'y a aucun changement en attente d'être appliqués !"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "Il n'y a aucun changement à annuler !"
@@ -3396,10 +3451,10 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"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</code>"
+"tunnels, elle se termine habituellement avec <code>...:2/64</code>"
 
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
@@ -3430,9 +3485,6 @@ msgstr ""
 "Cette liste donne une vue d'ensemble des processus en exécution et leur "
 "statut."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "Cette page permet la configuration d'actions spécifiques des boutons"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 "Cette page donne une vue d'ensemble des connexions réseaux actuellement "
@@ -3622,9 +3674,9 @@ msgstr "Utiliser la table de routage"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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. "
@@ -3735,6 +3787,9 @@ msgstr "En attente de l'application des changements..."
 msgid "Waiting for command to complete..."
 msgstr "En attente de la fin de la commande..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3926,6 +3981,9 @@ msgstr "ouvrir"
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3971,6 +4029,49 @@ msgstr "oui"
 msgid "« Back"
 msgstr "« Retour"
 
+#~ 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"
 
index 2997941335954931203ccb8f9bf06c6314114afc..793dc807157f28b10da2ea66924b7c409e316c9d 100644 (file)
@@ -213,9 +213,6 @@ msgstr "מרכז גישות"
 msgid "Access Point"
 msgstr "נקודת גישה"
 
-msgid "Action"
-msgstr "פעולה"
-
 msgid "Actions"
 msgstr "פעולות"
 
@@ -293,6 +290,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "אפשר הכל חוץ מהרשומים"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "אפשר רשומים בלבד"
 
@@ -401,11 +401,11 @@ msgstr "הגדרות אנטנה"
 msgid "Any zone"
 msgstr "כל תחום"
 
-msgid "Apply"
-msgstr "החל"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "מחיל הגדרות"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -565,9 +565,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "כפתורים"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -589,16 +586,24 @@ msgstr "שינויים"
 msgid "Changes applied."
 msgstr "השינויים הוחלו"
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "משנה את סיסמת המנהל לגישה למכשיר"
 
 msgid "Channel"
 msgstr "ערוץ"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "לבדוק"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -664,12 +669,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "הגדרות"
 
-msgid "Configuration applied."
-msgstr "הגדרות הוחלו"
-
 msgid "Configuration files will be kept."
 msgstr "קבצי ההגדרות ישמרו."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "אישור"
 
@@ -688,6 +696,12 @@ msgstr ""
 msgid "Connections"
 msgstr "חיבורים"
 
+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 ""
+
 msgid "Country"
 msgstr "מדינה"
 
@@ -729,6 +743,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -855,6 +874,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "אבחון"
 
@@ -887,6 +909,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr ""
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "מציג רק חבילות המכילות"
 
@@ -991,6 +1016,11 @@ msgstr "מצב חרום"
 msgid "Enable"
 msgstr "אפשר"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "אפשר <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1048,6 +1078,9 @@ msgstr ""
 msgid "Enabled"
 msgstr "אפשר"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1126,6 +1159,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1227,6 +1263,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1310,9 +1349,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr ""
 
@@ -1887,9 +1923,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1907,10 +1940,10 @@ msgstr ""
 msgid "Memory usage (%)"
 msgstr ""
 
-msgid "Metric"
+msgid "Mesh Id"
 msgstr ""
 
-msgid "Minimum hold time"
+msgid "Metric"
 msgstr ""
 
 msgid "Mirror monitor port"
@@ -2116,6 +2149,9 @@ msgstr ""
 msgid "Nslookup"
 msgstr ""
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr ""
 
@@ -2128,6 +2164,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr ""
 
@@ -2349,9 +2388,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr "נתיב למפתח הפרטי"
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2704,6 +2740,15 @@ msgstr ""
 msgid "Revert"
 msgstr ""
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr ""
 
@@ -2780,9 +2825,6 @@ msgstr ""
 msgid "Save & Apply"
 msgstr ""
 
-msgid "Save &#38; Apply"
-msgstr ""
-
 msgid "Scan"
 msgstr ""
 
@@ -2871,6 +2913,9 @@ msgstr ""
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr ""
 
@@ -2915,9 +2960,6 @@ msgstr "מקור"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -2956,6 +2998,9 @@ msgstr ""
 msgid "Start priority"
 msgstr ""
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "אתחול"
 
@@ -3020,6 +3065,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3105,6 +3153,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3122,9 +3180,6 @@ msgid ""
 "\"Proceed\" below to start the flash procedure."
 msgstr ""
 
-msgid "The following changes have been committed"
-msgstr ""
-
 msgid "The following changes have been reverted"
 msgstr ""
 
@@ -3191,7 +3246,7 @@ msgstr ""
 msgid "There are no active leases."
 msgstr ""
 
-msgid "There are no pending changes to apply!"
+msgid "There are no changes to apply."
 msgstr ""
 
 msgid "There are no pending changes to revert!"
@@ -3237,7 +3292,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3264,9 +3319,6 @@ msgid ""
 "their status."
 msgstr "רשימה זו מציגה סקירה של תהליכי המערכת הרצים כרגע ואת מצבם."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "דף זה מאפשר להגדיר פעולות מיוחדות עבור הלחצנים."
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "דף זה מציג סקירה של חיבורי הרשת הפעילים כרגע."
 
@@ -3449,9 +3501,9 @@ msgstr "השתמש בטבלת ניתוב"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 ""
 
@@ -3556,6 +3608,9 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3741,6 +3796,9 @@ msgstr ""
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3786,6 +3844,24 @@ msgstr "כן"
 msgid "« Back"
 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"
 
index 00b4d77d71d240487cbbfed7a77831a4df4d6a9d..a900733ae795b5068e232ecc38eaddc7ed83f535 100644 (file)
@@ -218,9 +218,6 @@ msgstr "Elérési központ"
 msgid "Access Point"
 msgstr "Hozzáférési pont"
 
-msgid "Action"
-msgstr "Művelet"
-
 msgid "Actions"
 msgstr "Műveletek"
 
@@ -296,6 +293,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Összes engedélyezése a felsoroltakon kívül"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Csak a felsoroltak engedélyezése"
 
@@ -405,11 +405,11 @@ msgstr "Antenna beállítások"
 msgid "Any zone"
 msgstr "Bármelyik zóna"
 
-msgid "Apply"
-msgstr "Alkalmaz"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Módosítások alkalmazása"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -569,9 +569,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Gombok"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -593,6 +590,9 @@ msgstr "Módosítások"
 msgid "Changes applied."
 msgstr "A módosítások alkalmazva."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 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"
@@ -600,10 +600,15 @@ msgstr ""
 msgid "Channel"
 msgstr "Csatorna"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Ellenőrzés"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -682,12 +687,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Beállítás"
 
-msgid "Configuration applied."
-msgstr "Beállítások alkalmazva."
-
 msgid "Configuration files will be kept."
 msgstr "A konfigurációs fájlok megmaradnak."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Megerősítés"
 
@@ -706,6 +714,12 @@ msgstr ""
 msgid "Connections"
 msgstr "Kapcsolatok"
 
+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 ""
+
 msgid "Country"
 msgstr "Ország"
 
@@ -747,6 +761,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -873,6 +892,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "Diagnosztika"
 
@@ -907,6 +929,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr "Beérkező RFC1918 DHCP válaszok elvetése. "
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "Csak azon csomagok megjelenítése, amelyek tartalmazzák"
 
@@ -1024,6 +1049,11 @@ msgstr "Vészhelyzet"
 msgid "Enable"
 msgstr "Engedélyezés"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr> engedélyezése"
 
@@ -1081,6 +1111,9 @@ msgstr "Engedélyezés/Letiltás"
 msgid "Enabled"
 msgstr "Engedélyezve"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1160,6 +1193,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "Fájl"
 
@@ -1263,6 +1299,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Broadcast forgalom továbbítás"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Továbbítás módja"
 
@@ -1346,9 +1385,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Kezelő"
-
 msgid "Hang Up"
 msgstr "Befejezés"
 
@@ -1954,9 +1990,6 @@ msgstr "EDNS.0 UDP csomagok maximális mérete"
 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)"
 
-msgid "Maximum hold time"
-msgstr "Maximális tartási idő"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1974,12 +2007,12 @@ msgstr "Memória"
 msgid "Memory usage (%)"
 msgstr "Memória használat (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrika"
 
-msgid "Minimum hold time"
-msgstr "Minimális tartási idő"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2185,6 +2218,9 @@ msgstr "Megjegyzés"
 msgid "Nslookup"
 msgstr "Nslookup"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2197,6 +2233,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr "Kikapcsolt állapot késleltetés"
 
@@ -2425,9 +2464,6 @@ msgstr "Kliens tanúsítvány elérési útja"
 msgid "Path to Private Key"
 msgstr "A privát kulcs elérési útja"
 
-msgid "Path to executable which handles the button event"
-msgstr "A gomb eseményeit kezelő végrehajtható állomány elérési útja"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2795,6 +2831,15 @@ msgstr "Jelszó mutatása/elrejtése"
 msgid "Revert"
 msgstr "Visszavonás"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr "Gyökérkönyvtár"
 
@@ -2873,9 +2918,6 @@ msgstr "Mentés"
 msgid "Save & Apply"
 msgstr "Mentés & Alkalmazás"
 
-msgid "Save &#38; Apply"
-msgstr "Mentés &#38; Alkalmazás"
-
 msgid "Scan"
 msgstr "Felderítés"
 
@@ -2966,6 +3008,9 @@ msgstr "Méret"
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Ugrás"
 
@@ -3011,9 +3056,6 @@ msgstr "Forrás"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Meghatározza a gomb kezelendő állapotát"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Megadja az eszköz csatlakozási könyvtárát."
 
@@ -3055,6 +3097,9 @@ msgstr "Indítás"
 msgid "Start priority"
 msgstr "Indítás prioritása"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "Rendszerindítás"
 
@@ -3120,6 +3165,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3216,6 +3264,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3242,9 +3300,6 @@ msgstr ""
 "ellenőrzéséhez.<br />Kattintson az alábbi \"Folytatás\" gombra a flash-elési "
 "eljárás elindításához."
 
-msgid "The following changes have been committed"
-msgstr "A következő módosítások lettek alkalmazva"
-
 msgid "The following changes have been reverted"
 msgstr "A következő módosítások lettek visszavonva"
 
@@ -3328,8 +3383,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "Nincsenek aktív bérletek."
 
-msgid "There are no pending changes to apply!"
-msgstr "Nincsenek alkalmazásra váró módosítások!"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "Nincsenek visszavonásra váró változtatások!"
@@ -3384,10 +3439,10 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"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</code>"
+"általában így végződik: <code>...:2/64</code>"
 
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
@@ -3419,9 +3474,6 @@ msgstr ""
 "Ez a lista a rendszerben jelenleg futó folyamatokról és azok állapotáról ad "
 "áttekintést."
 
-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 "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."
@@ -3609,9 +3661,9 @@ msgstr "Útválasztó tábla használata"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 "
@@ -3722,6 +3774,9 @@ msgstr "Várakozás a változtatások alkalmazására..."
 msgid "Waiting for command to complete..."
 msgstr "Várakozás a parancs befejezésére..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3915,6 +3970,9 @@ msgstr "nyitás"
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3960,6 +4018,48 @@ msgstr "igen"
 msgid "« Back"
 msgstr "« Vissza"
 
+#~ 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"
 
index b90ca79bf78b17451fad010883205c69240e3ee6..b90d9cf7b0639f7fbbb3e14f5264aa8cbfc0fece 100644 (file)
@@ -225,9 +225,6 @@ msgstr "Accesso Concentratore"
 msgid "Access Point"
 msgstr "Punto di Accesso"
 
-msgid "Action"
-msgstr "Azione"
-
 msgid "Actions"
 msgstr "Azioni"
 
@@ -306,6 +303,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Consenti tutti tranne quelli nell'elenco"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Consenti solo quelli nell'elenco"
 
@@ -414,11 +414,11 @@ msgstr "Configurazione dell'Antenna"
 msgid "Any zone"
 msgstr "Qualsiasi Zona"
 
-msgid "Apply"
-msgstr "Applica"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Applica modifiche"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -577,9 +577,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Pulsanti"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -601,16 +598,24 @@ msgstr "Modifiche"
 msgid "Changes applied."
 msgstr "Modifiche applicate."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "Cambia la password di amministratore per accedere al dispositivo"
 
 msgid "Channel"
 msgstr "Canale"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Verifica"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr "Controlla i filesystem prima di montare"
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -687,12 +692,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Configurazione"
 
-msgid "Configuration applied."
-msgstr "Configurazione salvata."
-
 msgid "Configuration files will be kept."
 msgstr "I file di configurazione verranno mantenuti."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Conferma"
 
@@ -711,6 +719,12 @@ msgstr ""
 msgid "Connections"
 msgstr "Connessioni"
 
+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 ""
+
 msgid "Country"
 msgstr "Nazione"
 
@@ -752,6 +766,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -879,6 +898,9 @@ msgstr "Dispositivo in riavvio..."
 msgid "Device unreachable"
 msgstr "Dispositivo irraggiungibile"
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "Diagnostica"
 
@@ -913,6 +935,9 @@ msgstr "Disabilitato (default)"
 msgid "Discard upstream RFC1918 responses"
 msgstr "Ignora risposte RFC1918 upstream"
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "Visualizza solo i pacchetti contenenti"
 
@@ -1027,6 +1052,11 @@ msgstr "Emergenza"
 msgid "Enable"
 msgstr "Abilita"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Abilita <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1084,6 +1114,9 @@ msgstr "Abilita/Disabilita"
 msgid "Enabled"
 msgstr "Abilitato"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1164,6 +1197,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "File"
 
@@ -1265,6 +1301,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Inoltra il traffico broadcast"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Modalità di Inoltro"
 
@@ -1350,9 +1389,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Gestore"
-
 msgid "Hang Up"
 msgstr "Hangup"
 
@@ -1954,9 +1990,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr "Tempo massimo di attesa"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1974,12 +2007,12 @@ msgstr "Memoria"
 msgid "Memory usage (%)"
 msgstr "Uso Memoria (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrica"
 
-msgid "Minimum hold time"
-msgstr "Velocità minima"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2185,6 +2218,9 @@ msgstr "Notifica"
 msgid "Nslookup"
 msgstr ""
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2197,6 +2233,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr ""
 
@@ -2425,9 +2464,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr "Percorso alla chiave privata"
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2782,6 +2818,15 @@ msgstr "Rivela/nascondi password"
 msgid "Revert"
 msgstr "Ripristina"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr ""
 
@@ -2860,9 +2905,6 @@ msgstr "Salva"
 msgid "Save & Apply"
 msgstr "Salva & applica"
 
-msgid "Save &#38; Apply"
-msgstr "Salva &#38; Applica"
-
 msgid "Scan"
 msgstr "Scan"
 
@@ -2950,6 +2992,9 @@ msgstr "Dimensione"
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Salta"
 
@@ -2996,9 +3041,6 @@ msgstr "Origine"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Specifica lo stato del pulsante da gestire"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Specifica la cartella a cui è collegato il dispositivo in"
 
@@ -3041,6 +3083,9 @@ msgstr "Inizio"
 msgid "Start priority"
 msgstr "Priorità di avvio"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "Avvio"
 
@@ -3106,6 +3151,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3202,6 +3250,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3223,9 +3281,6 @@ msgid ""
 "\"Proceed\" below to start the flash procedure."
 msgstr ""
 
-msgid "The following changes have been committed"
-msgstr ""
-
 msgid "The following changes have been reverted"
 msgstr "Le seguenti modifiche sono state annullate"
 
@@ -3298,8 +3353,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "Non ci sono contratti attivi."
 
-msgid "There are no pending changes to apply!"
-msgstr "Non ci sono cambiamenti pendenti da applicare!"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "Non ci sono cambiamenti pendenti da regredire"
@@ -3344,7 +3399,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3377,9 +3432,6 @@ msgstr ""
 "Questa lista da un riassunto dei processi correntemente attivi e del loro "
 "stato."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "Questa pagina ti da una riassunto delle connessioni al momento attive."
 
@@ -3566,9 +3618,9 @@ msgstr "Utilizzare tabella di instradamento"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 "
@@ -3683,6 +3735,9 @@ msgstr "In attesa delle modifiche da applicare ..."
 msgid "Waiting for command to complete..."
 msgstr "In attesa del comando da completare..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3877,6 +3932,9 @@ msgstr "apri"
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3922,6 +3980,39 @@ msgstr "Sì"
 msgid "« Back"
 msgstr "« Indietro"
 
+#~ msgid "Apply"
+#~ msgstr "Applica"
+
+#~ msgid "Applying changes"
+#~ msgstr "Applica modifiche"
+
+#~ msgid "Configuration applied."
+#~ msgstr "Configurazione salvata."
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "Salva &#38; Applica"
+
+#~ msgid "There are no pending changes to apply!"
+#~ msgstr "Non ci sono cambiamenti pendenti da applicare!"
+
+#~ msgid "Action"
+#~ msgstr "Azione"
+
+#~ msgid "Buttons"
+#~ msgstr "Pulsanti"
+
+#~ msgid "Handler"
+#~ msgstr "Gestore"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Tempo massimo di attesa"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Velocità minima"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Specifica lo stato del pulsante da gestire"
+
 #~ msgid "Leasetime"
 #~ msgstr "Tempo di contratto"
 
index 1d321f939407dc4be55089d56ba81bd4d376f825..c0cbb6b6d9534dd202102bc3b730b455729a3216 100644 (file)
@@ -3,18 +3,18 @@ msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2017-10-20 13:54+0900\n"
+"PO-Revision-Date: 2018-05-21 00:47+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.4\n"
+"X-Generator: Poedit 2.0.7\n"
 "Language-Team: \n"
 
 msgid "%.1f dB"
-msgstr ""
+msgstr "%.1f dB"
 
 msgid "%s is untagged in multiple VLANs!"
 msgstr "%s は複数のVLANにUntaggedしています!"
@@ -137,7 +137,7 @@ msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-アドレス"
 
 msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
-msgstr ""
+msgstr "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
 
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
@@ -220,9 +220,6 @@ msgstr "Access Concentrator"
 msgid "Access Point"
 msgstr "アクセスポイント"
 
-msgid "Action"
-msgstr "動作"
-
 msgid "Actions"
 msgstr "動作"
 
@@ -254,6 +251,8 @@ msgstr "追加"
 
 msgid "Add local domain suffix to names served from hosts files"
 msgstr ""
+"hosts ファイルにより解決される名前にローカルドメイン サフィックスを付加しま"
+"す。"
 
 msgid "Add new interface..."
 msgstr "インターフェースの新規作成..."
@@ -296,6 +295,9 @@ msgstr "<abbr title=\"Secure Shell\">SSH</abbr> パスワード認証を許可
 msgid "Allow all except listed"
 msgstr "リスト内の端末からのアクセスを禁止"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "リスト内の端末からのアクセスを許可"
 
@@ -404,11 +406,11 @@ msgstr "アンテナ設定"
 msgid "Any zone"
 msgstr "全てのゾーン"
 
-msgid "Apply"
-msgstr "適用"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr "適用リクエストはステータス <code>%h</code> により失敗しました"
 
-msgid "Applying changes"
-msgstr "変更を適用"
+msgid "Apply unchecked"
+msgstr "チェックなしの適用"
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -570,9 +572,6 @@ msgstr ""
 "ビルド / ディストリビューション固有のフィード定義です。このファイルは"
 "sysupgradeの際に引き継がれません。"
 
-msgid "Buttons"
-msgstr "ボタン"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr "CA証明書(空白の場合、初回の接続後に保存されます。)"
 
@@ -594,16 +593,26 @@ msgstr "変更"
 msgid "Changes applied."
 msgstr "変更が適用されました。"
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "デバイスの管理者パスワードを変更します"
 
 msgid "Channel"
 msgstr "チャネル"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+"チャンネル %d は、 %s 領域内では規制により利用できません。%d へ自動調整されま"
+"した。"
+
 msgid "Check"
 msgstr "チェック"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr "マウント前にファイルシステムをチェックする"
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -686,12 +695,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "設定"
 
-msgid "Configuration applied."
-msgstr "設定を適用しました。"
-
 msgid "Configuration files will be kept."
 msgstr "設定ファイルは保持されます。"
 
+msgid "Configuration has been applied."
+msgstr "設定が適用されました。"
+
+msgid "Configuration has been rolled back!"
+msgstr "設定はロールバックされました!"
+
 msgid "Confirmation"
 msgstr "確認"
 
@@ -710,6 +722,15 @@ msgstr "TLSが使用できないとき、サーバーへの接続は失敗しま
 msgid "Connections"
 msgstr "ネットワーク接続"
 
+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 アドレスや"
+"無線のセキュリティ認証情報などのネットワーク関連の設定を変更した場合、"
+"再接続が必要かもしれません。"
+
 msgid "Country"
 msgstr "国"
 
@@ -753,6 +774,13 @@ msgstr ""
 msgid "Custom feeds"
 msgstr "カスタム フィード"
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+"カスタム ファイル(証明書, スクリプト)がシステムに残るかもしれません。これを"
+"防ぐには、まず最初に factory-reset を行います。"
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -879,6 +907,9 @@ msgstr "デバイスを再起動中です..."
 msgid "Device unreachable"
 msgstr "デバイスに到達できません"
 
+msgid "Device unreachable!"
+msgstr "デバイスに到達できません!"
+
 msgid "Diagnostics"
 msgstr "診断機能"
 
@@ -913,6 +944,9 @@ msgstr "無効(デフォルト)"
 msgid "Discard upstream RFC1918 responses"
 msgstr "RFC1918の応答を破棄します"
 
+msgid "Dismiss"
+msgstr "警告の除去"
+
 msgid "Displaying only packages containing"
 msgstr "右記の文字列を含んだパッケージのみを表示中"
 
@@ -956,7 +990,7 @@ msgid "Domain whitelist"
 msgstr "ドメイン ホワイトリスト"
 
 msgid "Don't Fragment"
-msgstr ""
+msgstr "非フラグメント化"
 
 msgid ""
 "Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
@@ -1027,6 +1061,13 @@ msgstr "緊急"
 msgid "Enable"
 msgstr "有効"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+"<abbr title=\"Internet Group Management Protocol\">IGMP</abbr> スヌーピングの"
+"有効化"
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr>を有効にする"
 
@@ -1070,7 +1111,7 @@ msgid "Enable mirroring of outgoing packets"
 msgstr "送信パケットのミラーリングを有効化"
 
 msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
-msgstr ""
+msgstr "カプセル化されたパケットの DF (Don't Fragment) フラグを有効にします。"
 
 msgid "Enable this mount"
 msgstr "マウント設定を有効にする"
@@ -1084,6 +1125,9 @@ msgstr "有効/無効"
 msgid "Enabled"
 msgstr "有効"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr "ブリッジの IGMP スヌーピングを有効にします"
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1164,6 +1208,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr "%d 秒以内の適用を確認できませんでした。ロールバック中です..."
+
 msgid "File"
 msgstr "ファイル"
 
@@ -1257,7 +1304,7 @@ msgid "Force use of NAT-T"
 msgstr "NAT-Tの強制使用"
 
 msgid "Form token mismatch"
-msgstr ""
+msgstr "フォーム トークンの不一致"
 
 msgid "Forward DHCP traffic"
 msgstr "DHCPトラフィックを転送する"
@@ -1268,6 +1315,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "ブロードキャスト トラフィックを転送する"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "転送モード"
 
@@ -1353,9 +1403,6 @@ msgstr "HE.net ユーザー名"
 msgid "HT mode (802.11n)"
 msgstr "HT モード (802.11n)"
 
-msgid "Handler"
-msgstr "ハンドラ"
-
 msgid "Hang Up"
 msgstr "再起動"
 
@@ -1601,6 +1648,8 @@ msgstr "インストール"
 
 msgid "Install iputils-traceroute6 for IPv6 traceroute"
 msgstr ""
+"IPv6 の traceroute を使用するには、 iputils-traceroute6 をインストールしま"
+"す。"
 
 msgid "Install package %q"
 msgstr "%q パッケージをインストールします"
@@ -1664,7 +1713,7 @@ msgstr ""
 "ユーザー名かパスワード、もしくは両方が不正です!もう一度入力してください。"
 
 msgid "Isolate Clients"
-msgstr ""
+msgstr "クライアント間の分離"
 
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1759,6 +1808,8 @@ msgstr "割り当て数"
 
 msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
 msgstr ""
+"DNS サービスを、現在 DNS を提供しているサブネットのインターフェースに限定しま"
+"す。"
 
 msgid "Limit listening to these interfaces, and loopback."
 msgstr "待ち受けをこれらのインターフェースとループバックに制限します。"
@@ -1843,7 +1894,7 @@ msgid "Local IPv6 address"
 msgstr "ローカル IPv6 アドレス"
 
 msgid "Local Service Only"
-msgstr ""
+msgstr "ローカルサービスのみ"
 
 msgid "Local Startup"
 msgstr "ローカル スタートアップ"
@@ -1858,6 +1909,8 @@ msgid ""
 "Local domain specification. Names matching this domain are never forwarded "
 "and are resolved from DHCP or hosts files only"
 msgstr ""
+"ローカル ドメインの定義です。このドメインに一致する名前は転送が行われず、 "
+"DHCP または hosts ファイルのみにより解決されます。"
 
 msgid "Local domain suffix appended to DHCP names and hosts file entries"
 msgstr ""
@@ -1951,9 +2004,6 @@ msgstr "EDNS.0 UDP パケットサイズの許可される最大数"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "モデムが準備完了状態になるまでの最大待ち時間"
 
-msgid "Maximum hold time"
-msgstr "最大保持時間"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1973,12 +2023,12 @@ msgstr "メモリー"
 msgid "Memory usage (%)"
 msgstr "メモリ使用率 (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "メトリック"
 
-msgid "Minimum hold time"
-msgstr "最短保持時間"
-
 msgid "Mirror monitor port"
 msgstr "ミラー監視ポート"
 
@@ -2184,6 +2234,11 @@ msgstr "注意"
 msgid "Nslookup"
 msgstr "Nslookup"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+"キャッシュされる DNS エントリーの数です。(最大 10000 件。 0の場合はキャッ"
+"シュしません)"
+
 msgid "OK"
 msgstr "OK"
 
@@ -2196,6 +2251,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr "消灯時間"
 
@@ -2400,7 +2458,7 @@ msgid "Packets"
 msgstr "パケット"
 
 msgid "Part of zone %q"
-msgstr "ゾーン %qの一部"
+msgstr "ゾーン %q の一部"
 
 msgid "Password"
 msgstr "パスワード"
@@ -2429,9 +2487,6 @@ msgstr "クライアント証明書のパス"
 msgid "Path to Private Key"
 msgstr "秘密鍵のパス"
 
-msgid "Path to executable which handles the button event"
-msgstr "ボタンイベントをハンドルする実行ファイルのパス"
-
 msgid "Path to inner CA-Certificate"
 msgstr "CA 証明書のパス"
 
@@ -2801,6 +2856,15 @@ msgstr "パスワードを表示する/隠す"
 msgid "Revert"
 msgstr "元に戻す"
 
+msgid "Revert changes"
+msgstr "変更の取り消し"
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr "取り消しのリクエストはステータス <code>%h</code> により失敗しました"
+
+msgid "Reverting configuration…"
+msgstr "設定を元に戻しています..."
+
 msgid "Root"
 msgstr "ルート"
 
@@ -2879,9 +2943,6 @@ msgstr "保存"
 msgid "Save & Apply"
 msgstr "保存 & 適用"
 
-msgid "Save &#38; Apply"
-msgstr "保存 &#38; 適用"
-
 msgid "Scan"
 msgstr "スキャン"
 
@@ -2971,6 +3032,9 @@ msgstr "サイズ"
 msgid "Size (.ipk)"
 msgstr "サイズ (.ipk)"
 
+msgid "Size of DNS query cache"
+msgstr "DNS クエリ キャッシュのサイズ"
+
 msgid "Skip"
 msgstr "スキップ"
 
@@ -3016,9 +3080,6 @@ msgstr "送信元"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr "デバイスが接続するディレクトリを設定します"
 
@@ -3057,6 +3118,9 @@ msgstr "開始"
 msgid "Start priority"
 msgstr "優先順位"
 
+msgid "Starting configuration apply…"
+msgstr "設定の適用を開始しています..."
+
 msgid "Startup"
 msgstr "スタートアップ"
 
@@ -3097,10 +3161,10 @@ msgid "Submit"
 msgstr "送信"
 
 msgid "Suppress logging"
-msgstr ""
+msgstr "ログの抑制"
 
 msgid "Suppress logging of the routine operation of these protocols"
-msgstr ""
+msgstr "これらのプロトコルのルーチン的操作についてのログを抑制します。"
 
 msgid "Swap"
 msgstr "スワップ"
@@ -3121,6 +3185,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr "スイッチポート マスク"
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3215,6 +3282,22 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr "設定ファイルは以下のエラーにより読み込めませんでした:"
 
+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 ""
+"未適用の変更を適用後、デバイスは %d 秒以内に完了できなかった可能性がありま"
+"す。これは、安全上の理由によりロールバックされる設定に起因するものです。それ"
+"でも設定の変更が正しいと思う場合は、チェックなしの変更の適用を行ってくださ"
+"い。もしくは、再度適用を試行する前にこの警告を除去して設定内容の編集を行う"
+"か、現在動作している設定状況を維持するために未適用の変更を取り消してくだ"
+"さい。"
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3240,9 +3323,6 @@ msgstr ""
 "イズです。オリジナルファイルと比較し、整合性を確認してください。<br />\"続行"
 "\"ボタンをクリックすると、更新処理を開始します。"
 
-msgid "The following changes have been committed"
-msgstr "以下の変更が適用されました"
-
 msgid "The following changes have been reverted"
 msgstr "以下の変更が取り消されました"
 
@@ -3323,8 +3403,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "リース中のIPアドレスはありません。"
 
-msgid "There are no pending changes to apply!"
-msgstr "é\81©ç\94¨ã\81\8cæ\9cªå®\8cäº\86ã\81®å¤\89æ\9b´ã\81¯ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93ï¼\81"
+msgid "There are no changes to apply."
+msgstr "é\81©ç\94¨ã\81\99ã\82\8bå¤\89æ\9b´ã\81¯ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93ã\80\82"
 
 msgid "There are no pending changes to revert!"
 msgstr "復元が未完了の変更はありません!"
@@ -3347,13 +3427,16 @@ msgstr ""
 "サービスを有効にするために、管理者パスワードを設定してください。"
 
 msgid "This IPv4 address of the relay"
-msgstr ""
+msgstr "リレーの IPv4 アドレス"
 
 msgid ""
 "This file may contain lines like 'server=/domain/1.2.3.4' or "
 "'server=1.2.3.4' fordomain-specific or full upstream <abbr title=\"Domain "
 "Name System\">DNS</abbr> servers."
 msgstr ""
+"このファイルは、特定ドメイン用、または上位 <abbr title=\"Domain Name System"
+"\">DNS</abbr> サーバーのための 'server=/domain/1.2.3.4' や 'server=1.2.3.4' "
+"というような行を含めることができます。"
 
 msgid ""
 "This is a list of shell glob patterns for matching files and directories to "
@@ -3378,17 +3461,17 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 "プロバイダからアサインされた、ローカルのエンドポイント アドレスです。通常、"
-"<code>:2</code>が終端に設定されます。"
+"<code>...:2/64</code>が終端に設定されます。"
 
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
 "abbr> in the local network"
 msgstr ""
-"ローカル ネットワーク内のみの <abbr title=\"Dynamic Host Configuration "
-"Protocol\">DHCP</abbr>として使用する"
+"ã\81\93ã\82\8cã\81¯ã\83­ã\83¼ã\82«ã\83« ã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯å\86\85ã\81®ã\81¿ã\81® <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> です。"
 
 msgid "This is the plain username for logging into the account"
 msgstr ""
@@ -3413,9 +3496,6 @@ msgstr ""
 "このリストは現在システムで動作しているプロセスとそのステータスを表示していま"
 "す。"
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "このページでは、ボタンの動作を変更することができます。"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "このページでは、現在アクティブなネットワーク接続を表示します。"
 
@@ -3603,9 +3683,9 @@ msgstr "ルーティング テーブルの使用"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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-ア"
@@ -3717,6 +3797,9 @@ msgstr "変更を適用中です..."
 msgid "Waiting for command to complete..."
 msgstr "コマンド実行中です..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr "設定を適用中です... %d 秒"
+
 msgid "Waiting for device..."
 msgstr "デバイスを起動中です..."
 
@@ -3911,6 +3994,9 @@ msgstr "オープン"
 msgid "overlay"
 msgstr "オーバーレイ"
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr "リレー モード"
 
index cde3c04c1329a341d3960edc849423bcf22e3eb4..7f1bf22e03b44b02317de2e88922a47e075f48d9 100644 (file)
@@ -213,9 +213,6 @@ msgstr ""
 msgid "Access Point"
 msgstr ""
 
-msgid "Action"
-msgstr ""
-
 msgid "Actions"
 msgstr "관리 도구"
 
@@ -289,6 +286,9 @@ msgstr "<abbr title=\"Secure Shell\">SSH</abbr> 암호 인증을 허용합니다
 msgid "Allow all except listed"
 msgstr ""
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr ""
 
@@ -394,10 +394,10 @@ msgstr ""
 msgid "Any zone"
 msgstr ""
 
-msgid "Apply"
-msgstr "적용"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
+msgid "Apply unchecked"
 msgstr ""
 
 msgid ""
@@ -559,9 +559,6 @@ msgstr ""
 "Build/distribution 지정 feed 목록입니다.  이 파일의 내용은 sysupgrade 시 초기"
 "화됩니다."
 
-msgid "Buttons"
-msgstr ""
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -583,16 +580,24 @@ msgstr "변경 사항"
 msgid "Changes applied."
 msgstr ""
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "장비 접근을 위한 관리자 암호를 변경합니다"
 
 msgid "Channel"
 msgstr ""
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr ""
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -667,10 +672,13 @@ msgstr ""
 msgid "Configuration"
 msgstr "설정"
 
-msgid "Configuration applied."
+msgid "Configuration files will be kept."
 msgstr ""
 
-msgid "Configuration files will be kept."
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
 msgstr ""
 
 msgid "Confirmation"
@@ -691,6 +699,12 @@ msgstr ""
 msgid "Connections"
 msgstr "연결"
 
+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 ""
+
 msgid "Country"
 msgstr ""
 
@@ -734,6 +748,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr "Custom feed 들"
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -861,6 +880,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "진단"
 
@@ -895,6 +917,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr ""
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr ""
 
@@ -1004,6 +1029,11 @@ msgstr ""
 msgid "Enable"
 msgstr "활성화"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr> 활성화"
 
@@ -1061,6 +1091,9 @@ msgstr "활성/비활성"
 msgid "Enabled"
 msgstr "활성화됨"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1139,6 +1172,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1240,6 +1276,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1323,9 +1362,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr ""
 
@@ -1905,9 +1941,6 @@ msgstr "허용된 최대 EDNS.0 UDP 패킷 크기"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1925,10 +1958,10 @@ msgstr "메모리"
 msgid "Memory usage (%)"
 msgstr "메모리 사용량 (%)"
 
-msgid "Metric"
+msgid "Mesh Id"
 msgstr ""
 
-msgid "Minimum hold time"
+msgid "Metric"
 msgstr ""
 
 msgid "Mirror monitor port"
@@ -2134,6 +2167,9 @@ msgstr ""
 msgid "Nslookup"
 msgstr ""
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr ""
 
@@ -2146,6 +2182,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr ""
 
@@ -2375,9 +2414,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr ""
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2731,6 +2767,15 @@ msgstr "암호 보이기/숨기기"
 msgid "Revert"
 msgstr "변경 취소"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr ""
 
@@ -2809,9 +2854,6 @@ msgstr "저장"
 msgid "Save & Apply"
 msgstr "저장 & 적용"
 
-msgid "Save &#38; Apply"
-msgstr "저장 &#38; 적용"
-
 msgid "Scan"
 msgstr "Scan 하기"
 
@@ -2899,6 +2941,9 @@ msgstr "Size"
 msgid "Size (.ipk)"
 msgstr "크기 (.ipk)"
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr ""
 
@@ -2941,9 +2986,6 @@ msgstr ""
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -2982,6 +3024,9 @@ msgstr "시작"
 msgid "Start priority"
 msgstr "시작 우선순위"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "시작 프로그램"
 
@@ -3046,6 +3091,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr "스위치 VLAN"
 
@@ -3136,6 +3184,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3153,9 +3211,6 @@ msgid ""
 "\"Proceed\" below to start the flash procedure."
 msgstr ""
 
-msgid "The following changes have been committed"
-msgstr ""
-
 msgid "The following changes have been reverted"
 msgstr "다음의 변경 사항들이 취소되었습니다"
 
@@ -3226,7 +3281,7 @@ msgstr ""
 msgid "There are no active leases."
 msgstr ""
 
-msgid "There are no pending changes to apply!"
+msgid "There are no changes to apply."
 msgstr ""
 
 msgid "There are no pending changes to revert!"
@@ -3279,7 +3334,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3307,9 +3362,6 @@ msgid ""
 msgstr ""
 "이 목록은 현재 실행중인 시스템 프로세스와 해당 상태에 대한 개요를 보여줍니다."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "이 페이지는 현재 active 상태인 네트워크 연결을 보여줍니다."
 
@@ -3496,9 +3548,9 @@ msgstr "Routing table 사용"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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-주소"
@@ -3608,6 +3660,9 @@ msgstr "변경 사항이 적용되기를 기다리는 중입니다..."
 msgid "Waiting for command to complete..."
 msgstr "실행한 명령이 끝나기를 기다리는 중입니다..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3799,6 +3854,9 @@ msgstr ""
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3844,5 +3902,11 @@ msgstr ""
 msgid "« Back"
 msgstr ""
 
+#~ msgid "Apply"
+#~ msgstr "적용"
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "저장 &#38; 적용"
+
 #~ msgid "Leasetime"
 #~ msgstr "임대 시간"
index 74d3e19d7fd4518da395129ae30543539674dfcb..cadaf9b3b2b3169f68b456961f159b0126a176a0 100644 (file)
@@ -210,9 +210,6 @@ msgstr ""
 msgid "Access Point"
 msgstr "Pusat akses"
 
-msgid "Action"
-msgstr "Aksi"
-
 msgid "Actions"
 msgstr "Aksi"
 
@@ -284,6 +281,9 @@ msgstr "Membenarkan pengesahan kata laluan SSH"
 msgid "Allow all except listed"
 msgstr "Izinkan semua kecualian yang disenaraikan"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Izinkan senarai saja"
 
@@ -389,11 +389,11 @@ msgstr ""
 msgid "Any zone"
 msgstr ""
 
-msgid "Apply"
-msgstr "Melaksanakan"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Melaksanakan perubahan"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -549,9 +549,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Butang"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -573,16 +570,24 @@ msgstr "Laman"
 msgid "Changes applied."
 msgstr "Laman diterapkan."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr ""
 
 msgid "Channel"
 msgstr "Saluran"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr ""
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -649,10 +654,13 @@ msgstr ""
 msgid "Configuration"
 msgstr "Konfigurasi"
 
-msgid "Configuration applied."
+msgid "Configuration files will be kept."
 msgstr ""
 
-msgid "Configuration files will be kept."
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
 msgstr ""
 
 msgid "Confirmation"
@@ -673,6 +681,12 @@ msgstr ""
 msgid "Connections"
 msgstr ""
 
+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 ""
+
 msgid "Country"
 msgstr ""
 
@@ -714,6 +728,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -836,6 +855,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr ""
 
@@ -868,6 +890,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr ""
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr ""
 
@@ -976,6 +1001,11 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Mengaktifkan <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1033,6 +1063,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1111,6 +1144,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1212,6 +1248,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1295,9 +1334,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Kawalan"
-
 msgid "Hang Up"
 msgstr "Menutup"
 
@@ -1883,10 +1919,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-#, fuzzy
-msgid "Maximum hold time"
-msgstr "Memegang masa maksimum"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1904,13 +1936,12 @@ msgstr "Memori"
 msgid "Memory usage (%)"
 msgstr "Penggunaan Memori (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrik"
 
-#, fuzzy
-msgid "Minimum hold time"
-msgstr "Memegang masa minimum"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2116,6 +2147,9 @@ msgstr ""
 msgid "Nslookup"
 msgstr ""
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "Baik"
 
@@ -2128,6 +2162,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr ""
 
@@ -2354,9 +2391,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr "Path ke Kunci Swasta"
 
-msgid "Path to executable which handles the button event"
-msgstr "Path ke eksekusi yang mengendalikan acara butang"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2707,6 +2741,15 @@ msgstr ""
 msgid "Revert"
 msgstr "Kembali"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr ""
 
@@ -2785,9 +2828,6 @@ msgstr "Simpan"
 msgid "Save & Apply"
 msgstr "Simpan & Melaksanakan"
 
-msgid "Save &#38; Apply"
-msgstr ""
-
 msgid "Scan"
 msgstr "Scan"
 
@@ -2875,6 +2915,9 @@ msgstr "Saiz"
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Skip"
 
@@ -2917,10 +2960,6 @@ msgstr "Sumber"
 msgid "Source routing"
 msgstr ""
 
-#, fuzzy
-msgid "Specifies the button state to handle"
-msgstr "Menentukan state butang untuk melaku"
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -2959,6 +2998,9 @@ msgstr "Mula"
 msgid "Start priority"
 msgstr ""
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr ""
 
@@ -3020,6 +3062,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3108,6 +3153,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3129,9 +3184,6 @@ msgstr ""
 "integriti data.<br /> Klik butang terus di bawah untuk memulakan prosedur "
 "flash."
 
-msgid "The following changes have been committed"
-msgstr ""
-
 msgid "The following changes have been reverted"
 msgstr "Laman berikut telah kembali"
 
@@ -3204,7 +3256,7 @@ msgstr ""
 msgid "There are no active leases."
 msgstr ""
 
-msgid "There are no pending changes to apply!"
+msgid "There are no changes to apply."
 msgstr ""
 
 msgid "There are no pending changes to revert!"
@@ -3250,7 +3302,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3281,9 +3333,6 @@ msgstr ""
 "Senarai ini memberikan gambaran lebih pada proses sistem yang sedang "
 "berjalan dan statusnya."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "Laman ini membolehkan konfigurasi butang tindakan peribadi"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 "Laman ini memberikan gambaran lebih dari saat ini sambungan rangkaian yang "
@@ -3467,9 +3516,9 @@ msgstr ""
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 ""
 
@@ -3576,6 +3625,9 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3761,6 +3813,9 @@ msgstr ""
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3806,6 +3861,39 @@ msgstr ""
 msgid "« Back"
 msgstr "« Kembali"
 
+#~ 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"
 
index f1bfec4f59bfbf85129071cfa3224ee3c9d2c756..600d007247ce86b9c387df7a44367c383a354fb8 100644 (file)
@@ -219,9 +219,6 @@ msgstr "Tilgangskonsentrator"
 msgid "Access Point"
 msgstr "Aksesspunkt"
 
-msgid "Action"
-msgstr "Handling"
-
 msgid "Actions"
 msgstr "Handlinger"
 
@@ -293,6 +290,9 @@ msgstr "Tillat <abbr title=\"Secure Shell\">SSH</abbr> passord godkjenning"
 msgid "Allow all except listed"
 msgstr "Tillat alle unntatt oppførte"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Tillat kun oppførte"
 
@@ -398,11 +398,11 @@ msgstr "Antennekonfigurasjon"
 msgid "Any zone"
 msgstr "Alle soner"
 
-msgid "Apply"
-msgstr "Bruk"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Utfører endringer"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -561,9 +561,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Knapper"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -585,16 +582,24 @@ msgstr "Endringer"
 msgid "Changes applied."
 msgstr "Endringer utført."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "Endrer administrator passordet for tilgang til enheten"
 
 msgid "Channel"
 msgstr "Kanal"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Kontroller"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -671,12 +676,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Konfigurasjon"
 
-msgid "Configuration applied."
-msgstr "Konfigurasjons endring utført."
-
 msgid "Configuration files will be kept."
 msgstr "Konfigurasjonsfiler vil bli bevart."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Bekreftelse"
 
@@ -695,6 +703,12 @@ msgstr ""
 msgid "Connections"
 msgstr "Tilkoblinger"
 
+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 ""
+
 msgid "Country"
 msgstr "Land"
 
@@ -736,6 +750,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -862,6 +881,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "Nettverksdiagnostikk"
 
@@ -896,6 +918,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr "Forkast oppstrøms RFC1918 svar"
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "Viser bare pakker som inneholder"
 
@@ -1011,6 +1036,11 @@ msgstr "Krisesituasjon"
 msgid "Enable"
 msgstr "Aktiver"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Aktiver <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1068,6 +1098,9 @@ msgstr "Aktiver/Deaktiver"
 msgid "Enabled"
 msgstr "Aktivert"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1147,6 +1180,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "Fil"
 
@@ -1249,6 +1285,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Videresend kringkastingstrafikk"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Videresending modus"
 
@@ -1332,9 +1371,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Behandler"
-
 msgid "Hang Up"
 msgstr "Slå av"
 
@@ -1928,9 +1964,6 @@ msgstr "Maksimal tillatt størrelse på EDNS.0 UDP-pakker"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Maksimalt antall sekunder å vente på at modemet skal bli klart"
 
-msgid "Maximum hold time"
-msgstr "Maksimal holde tid"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1948,12 +1981,12 @@ msgstr "Minne"
 msgid "Memory usage (%)"
 msgstr "Minne forbruk (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrisk"
 
-msgid "Minimum hold time"
-msgstr "Minimum holde tid"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2159,6 +2192,9 @@ msgstr "Merk"
 msgid "Nslookup"
 msgstr "Nslookup"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2171,6 +2207,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr "Forsinkelse ved tilstand Av"
 
@@ -2400,9 +2439,6 @@ msgstr "Sti til klient-sertifikat"
 msgid "Path to Private Key"
 msgstr "Sti til privatnøkkel"
 
-msgid "Path to executable which handles the button event"
-msgstr "Sti til program som håndterer handling ved bruk av knapp"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2768,6 +2804,15 @@ msgstr "Vis/Skjul passord"
 msgid "Revert"
 msgstr "Tilbakestill"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr "Rot"
 
@@ -2846,9 +2891,6 @@ msgstr "Lagre"
 msgid "Save & Apply"
 msgstr "Lagre & Aktiver"
 
-msgid "Save &#38; Apply"
-msgstr "Lagre &#38; Aktiver"
-
 msgid "Scan"
 msgstr "Skann"
 
@@ -2939,6 +2981,9 @@ msgstr "Størrelse"
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Gå videre"
 
@@ -2984,9 +3029,6 @@ msgstr "Kilde"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Spesifiserer knappens handlemønster"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Hvor lagrings enheten blir tilsluttet filsystemet (f.eks. /mnt/sda1)"
 
@@ -3026,6 +3068,9 @@ msgstr "Start"
 msgid "Start priority"
 msgstr "Start prioritet"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "Oppstart"
 
@@ -3090,6 +3135,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3187,6 +3235,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3212,9 +3270,6 @@ msgstr ""
 "sammenlign dem med den opprinnelige filen for å sikre dataintegriteten.<br /"
 "> Klikk \"Fortsett\" nedenfor for å starte flash prosedyren."
 
-msgid "The following changes have been committed"
-msgstr "Følgende endringer er foretatt"
-
 msgid "The following changes have been reverted"
 msgstr "Følgende endringer er forkastet"
 
@@ -3297,8 +3352,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "Det er ingen aktive leieavtaler."
 
-msgid "There are no pending changes to apply!"
-msgstr "Det finnes ingen endringer som kan utføres!"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "Det finnes ingen endriger å reversere!"
@@ -3352,10 +3407,10 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"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</code>"
+"adressen ender vanligvis med <code>...:2/64</code>"
 
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
@@ -3384,10 +3439,6 @@ msgid ""
 "their status."
 msgstr "Denne listen gir en oversikt over kjørende prosesser og deres status."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-"Denne siden gir mulighet for å definerte egne knappers handlingsmønster"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 "Denne siden gir en oversikt over gjeldende aktive nettverkstilkoblinger."
@@ -3575,9 +3626,9 @@ msgstr "Bruk rutingtabellen"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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-"
@@ -3688,6 +3739,9 @@ msgstr "Venter på at endringer utføres..."
 msgid "Waiting for command to complete..."
 msgstr "Venter på at kommando fullføres..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3881,6 +3935,9 @@ msgstr "åpen"
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3926,6 +3983,49 @@ msgstr "ja"
 msgid "« Back"
 msgstr "« Tilbake"
 
+#~ 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>"
 
index 22902c499748d24593a88d18c8ea67e79f5570a0..390e489e29ffc3e232dc53b238ba33600eda3b8f 100644 (file)
@@ -3,8 +3,8 @@ msgstr ""
 "Project-Id-Version: LuCI\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-20 09:40+0200\n"
-"PO-Revision-Date: 2014-04-23 19:15+0200\n"
-"Last-Translator: goodgod261 <goodgod261@wp.pl>\n"
+"PO-Revision-Date: 2018-05-14 20:05+0200\n"
+"Last-Translator: Rixerx <krystian.kozak20@gmail.com>\n"
 "Language-Team: Polish\n"
 "Language: pl\n"
 "MIME-Version: 1.0\n"
@@ -18,7 +18,7 @@ msgid "%.1f dB"
 msgstr ""
 
 msgid "%s is untagged in multiple VLANs!"
-msgstr ""
+msgstr "%s jest nieotagowany w wielu grupach VLAN!"
 
 msgid "(%d minute window, %d second interval)"
 msgstr "(okno %d minut, interwał %d sekund)"
@@ -42,13 +42,13 @@ msgid "-- custom --"
 msgstr "-- własne --"
 
 msgid "-- match by device --"
-msgstr ""
+msgstr "-- dopasuj według urządzenia --"
 
 msgid "-- match by label --"
-msgstr ""
+msgstr "-- dopasuj po etykiecie --"
 
 msgid "-- match by uuid --"
-msgstr ""
+msgstr "-- dopasuj po uuid --"
 
 msgid "1 Minute Load:"
 msgstr "Obciążenie 1 min.:"
@@ -60,13 +60,13 @@ msgid "4-character hexadecimal ID"
 msgstr ""
 
 msgid "464XLAT (CLAT)"
-msgstr ""
+msgstr "464XLAT (CLAT)"
 
 msgid "5 Minute Load:"
 msgstr "Obciążenie 5 min.:"
 
 msgid "6-octet identifier as a hex string - no colons"
-msgstr ""
+msgstr "Identyfikator 6-oktetowy jako ciąg szesnastkowy - bez dwukropków"
 
 msgid "802.11r Fast Transition"
 msgstr ""
@@ -81,10 +81,10 @@ msgid "802.11w Management Frame Protection"
 msgstr ""
 
 msgid "802.11w maximum timeout"
-msgstr ""
+msgstr "802.11w maksymalny czas oczekiwania"
 
 msgid "802.11w retry timeout"
-msgstr ""
+msgstr "802.11w interwał ponawiania prób"
 
 msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
 msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
@@ -124,7 +124,7 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
 msgstr "Brama <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>"
 
 msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
-msgstr ""
+msgstr "Sufiks <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>(hex)"
 
 msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
 msgstr "Konfiguracja diod <abbr title=\"Light Emitting Diode\">LED</abbr>"
@@ -162,6 +162,8 @@ 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ą."
 
 msgid "A43C + J43 + A43"
 msgstr ""
@@ -170,7 +172,7 @@ msgid "A43C + J43 + A43 + V43"
 msgstr ""
 
 msgid "ADSL"
-msgstr ""
+msgstr "ADSL"
 
 msgid "AICCU (SIXXS)"
 msgstr ""
@@ -188,7 +190,7 @@ msgid "ATM (Asynchronous Transfer Mode)"
 msgstr ""
 
 msgid "ATM Bridges"
-msgstr "Mostki ATM"
+msgstr "Mosty ATM"
 
 # Nie wiem czy to powinno się tłumaczyć wg. mnie lepiej zostawić po angielsku
 msgid "ATM Virtual Channel Identifier (VCI)"
@@ -198,15 +200,14 @@ msgstr "Identyfikator kanału wirtualnego ATM (VCI)"
 msgid "ATM Virtual Path Identifier (VPI)"
 msgstr "Identyfikator ścieżki wirtualnej ATM (VPI)"
 
-# Jak zwykle zakręciłem...niech ktoś poprawi
 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 ""
-"Mostki ATM maskują za-kapsułkowane ramki Ethernet w połączeniach AAL5 jako "
-"wirtualne interfejsy w Linuksie. Interfejsy takie mogą być użyte w "
-"połączeniu z protokołami DHCP lub PPP do wdzwaniania się do sieci provider`a"
+"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."
 
 msgid "ATM device number"
 msgstr "Numer urządzenia ATM"
@@ -224,9 +225,6 @@ msgstr "Koncentrator dostępowy ATM"
 msgid "Access Point"
 msgstr "Punkt dostępowy"
 
-msgid "Action"
-msgstr "Akcja"
-
 msgid "Actions"
 msgstr "Akcje"
 
@@ -268,7 +266,7 @@ msgid "Additional Hosts files"
 msgstr "Dodatkowe pliki Hosts"
 
 msgid "Additional servers file"
-msgstr ""
+msgstr "Dodatkowe pliki serwera"
 
 msgid "Address"
 msgstr "Adres"
@@ -292,10 +290,10 @@ msgstr "Alarm"
 msgid ""
 "Allocate IP addresses sequentially, starting from the lowest available "
 "address"
-msgstr ""
+msgstr "Przydziel sekwencyjnie adresy IP, zaczynając od najmniejszego dostępnego"
 
 msgid "Allocate IP sequentially"
-msgstr ""
+msgstr "Przydzielaj adresy IP po kolei"
 
 msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
 msgstr "Pozwól na logowanie <abbr title=\"Secure Shell\">SSH</abbr>"
@@ -303,6 +301,9 @@ msgstr "Pozwól na logowanie <abbr title=\"Secure Shell\">SSH</abbr>"
 msgid "Allow all except listed"
 msgstr "Pozwól wszystkim oprócz wymienionych"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Pozwól tylko wymienionym"
 
@@ -310,16 +311,13 @@ msgid "Allow localhost"
 msgstr "Pozwól tylko sobie (localhost)"
 
 msgid "Allow remote hosts to connect to local SSH forwarded ports"
-msgstr ""
-"Pozwól zdalnym komputerom na połączenia SSH do lokalnych przekierowanych "
-"portów"
+msgstr "Zezwalaj zdalnym hostom na łączenie się z lokalnie przekazywanymi portami SSH"
 
 msgid "Allow root logins with password"
 msgstr "Zezwól na logowanie roota przy pomocy hasła"
 
-# Brak spacji...
 msgid "Allow the <em>root</em> user to login with password"
-msgstr "Pozwól użytkownikowi <em>root</em> na logowanie przy pomocy hasła"
+msgstr "Pozwól użytkownikowi <em>root</em> na logowanie się przy pomocy hasła"
 
 msgid ""
 "Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
@@ -327,7 +325,7 @@ msgstr ""
 "Pozwól na ruch wychodzący (odpowiedzi) z podsieci 127.0.0.0/8, np. usługi RBL"
 
 msgid "Allowed IPs"
-msgstr ""
+msgstr "Dozwolone adresy IP"
 
 msgid ""
 "Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
@@ -335,7 +333,7 @@ msgid ""
 msgstr ""
 
 msgid "Always announce default router"
-msgstr ""
+msgstr "Zawsze rozgłaszaj domyślny router"
 
 msgid "Annex"
 msgstr ""
@@ -441,7 +439,6 @@ msgstr "Uwierzytelnianie"
 msgid "Authentication Type"
 msgstr ""
 
-# Nawet M$ tego nie tłumaczy;)
 msgid "Authoritative"
 msgstr "Autorytatywny"
 
@@ -578,9 +575,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Przyciski"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -611,7 +605,7 @@ msgstr "Kanał"
 msgid "Check"
 msgstr "Sprawdź"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -627,8 +621,8 @@ msgid ""
 "interface to it."
 msgstr ""
 "Wybierz strefę firewalla którą chcesz przypisać do tego interfejsu. Wybierz "
-"<em>unspecified</em> aby usunąć interfejs z przypisanej strefy lub wybierz "
-"pole <em>create</em> aby zdefiniować nową strefę i przypisać ją do "
+"<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."
 
 msgid ""
@@ -644,7 +638,6 @@ msgstr "Szyfr"
 msgid "Cisco UDP encapsulation"
 msgstr ""
 
-# Przyciski nazywają sie "Twórz archiwum" i "Wykonaj reset" a nie Przywróć Ustawienia
 msgid ""
 "Click \"Generate archive\" to download a tar archive of the current "
 "configuration files. To reset the firmware to its initial state, click "
@@ -685,6 +678,7 @@ msgid ""
 "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."
 
 msgid "Configuration"
 msgstr "Konfiguracja"
@@ -742,7 +736,7 @@ msgid "Cron Log Level"
 msgstr "Poziom logowania Cron`a"
 
 msgid "Custom Interface"
-msgstr "Interfejs Niestandardowy"
+msgstr "Interfejs niestandardowy"
 
 msgid "Custom delegated IPv6-prefix"
 msgstr ""
@@ -755,7 +749,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
-# Spacji zabrało i napisy się skleiły
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -782,7 +780,7 @@ msgid "DHCPv6 Leases"
 msgstr "Dzierżawy DHCPv6"
 
 msgid "DHCPv6 client"
-msgstr ""
+msgstr "Klient DHCPv6"
 
 msgid "DHCPv6-Mode"
 msgstr ""
@@ -812,10 +810,10 @@ msgid "DS-Lite AFTR address"
 msgstr ""
 
 msgid "DSL"
-msgstr ""
+msgstr "DSL"
 
 msgid "DSL Status"
-msgstr ""
+msgstr "Status DSL"
 
 msgid "DSL line mode"
 msgstr ""
@@ -878,10 +876,10 @@ msgid "Device Configuration"
 msgstr "Konfiguracja urządzenia"
 
 msgid "Device is rebooting..."
-msgstr ""
+msgstr "Urządzenie jest uruchamiane ponownie ..."
 
 msgid "Device unreachable"
-msgstr ""
+msgstr "Urządzenie nieosiągalne"
 
 msgid "Diagnostics"
 msgstr "Diagnostyka"
@@ -903,16 +901,16 @@ msgstr ""
 "tym interfejsie."
 
 msgid "Disable DNS setup"
-msgstr "Wyłącz konfigurowanie DNS"
+msgstr "Wyłącz konfigurację DNS"
 
 msgid "Disable Encryption"
-msgstr ""
+msgstr "Wyłącz szyfrowanie"
 
 msgid "Disabled"
 msgstr "Wyłączony"
 
 msgid "Disabled (default)"
-msgstr ""
+msgstr "Wyłączone (domyślnie)"
 
 msgid "Discard upstream RFC1918 responses"
 msgstr "Odrzuć wychodzące odpowiedzi RFC1918"
@@ -1030,13 +1028,17 @@ msgstr "Edytuj ten interfejs"
 msgid "Edit this network"
 msgstr "Edytuj tą sieć"
 
-# dosłownie nagły wypadek
 msgid "Emergency"
 msgstr "Zagrożenie"
 
 msgid "Enable"
 msgstr "Włącz"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr "Włącz nasłuchiwanie <abbr title=\"Internet Group Management Protocol\">IGMP</abbr>"
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Włącz <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1044,7 +1046,7 @@ msgid "Enable HE.net dynamic endpoint update"
 msgstr "Włącz dynamiczną aktualizację punktu końcowego sieci HE.net"
 
 msgid "Enable IPv6 negotiation"
-msgstr ""
+msgstr "Włącz negocjację IPv6"
 
 msgid "Enable IPv6 negotiation on the PPP link"
 msgstr "Włącz negocjację IPv6 na łączu PPP"
@@ -1065,10 +1067,10 @@ msgid "Enable VLAN functionality"
 msgstr "Włącz funkcjonalność VLAN"
 
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
-msgstr ""
+msgstr "Włącz przycisk WPS, wymaga WPA(2)-PSK"
 
 msgid "Enable key reinstallation (KRACK) countermeasures"
-msgstr ""
+msgstr "Włącz środki zaradcze dotyczące ponownej instalacji kluczy (KRACK)"
 
 msgid "Enable learning and aging"
 msgstr "Włącz uczenie się i starzenie"
@@ -1094,19 +1096,22 @@ msgstr "Wlącz/Wyłącz"
 msgid "Enabled"
 msgstr "Włączony"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr "Włącz nasłuchiwanie IGMP na tym moście"
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
-msgstr ""
+msgstr "Aktywuje szybki roaming pomiędzy punktami dostępowymi, które należą "
+"do tej samej domeny"
 
 msgid "Enables the Spanning Tree Protocol on this bridge"
 msgstr ""
 "Włącz protokół <abbr title=\"Spanning Tree Protocol\">STP</abbr> na tym "
 "moście"
 
-# a może sposób kapsułkowania byłby lepszy?
 msgid "Encapsulation mode"
-msgstr "Sposób Enkapsulacji"
+msgstr "Sposób enkapsulacji"
 
 msgid "Encryption"
 msgstr "Szyfrowanie"
@@ -1133,7 +1138,7 @@ msgid "Ethernet Switch"
 msgstr "Switch Ethernet"
 
 msgid "Exclude interfaces"
-msgstr ""
+msgstr "Wyklucz interfejsy"
 
 msgid "Expand hosts"
 msgstr "Rozwiń hosty"
@@ -1157,13 +1162,13 @@ msgid "External R1 Key Holder List"
 msgstr ""
 
 msgid "External system log server"
-msgstr "Zewnętrzny serwer dla loga systemowego"
+msgstr "Zewnętrzny serwer dla logów systemowych"
 
 msgid "External system log server port"
-msgstr "Port zewnętrznego serwera dla loga systemowego"
+msgstr "Port zewnętrznego serwera dla logów systemowych"
 
 msgid "External system log server protocol"
-msgstr ""
+msgstr "Protokół zewnętrznego serwera dla logów systemowych"
 
 msgid "Extra SSH command options"
 msgstr ""
@@ -1215,7 +1220,6 @@ msgstr "Firewall"
 msgid "Firewall Mark"
 msgstr ""
 
-# Nie ma potrzeby pisania z dużej litery
 msgid "Firewall Settings"
 msgstr "Ustawienia firewalla"
 
@@ -1263,7 +1267,7 @@ msgid "Force TKIP and CCMP (AES)"
 msgstr "Wymuś TKIP i CCMP (AES)"
 
 msgid "Force link"
-msgstr ""
+msgstr "Wymuś połączenie"
 
 msgid "Force use of NAT-T"
 msgstr ""
@@ -1280,6 +1284,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Przekazuj broadcast`y"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Tryb przekazywania"
 
@@ -1322,10 +1329,10 @@ msgid "General options for opkg"
 msgstr ""
 
 msgid "Generate Config"
-msgstr ""
+msgstr "Wygeneruj konfigurację"
 
 msgid "Generate PMK locally"
-msgstr ""
+msgstr "Wygeneruj PMK lokalnie"
 
 msgid "Generate archive"
 msgstr "Twórz archiwum"
@@ -1354,7 +1361,7 @@ msgid "Group Password"
 msgstr ""
 
 msgid "Guest"
-msgstr ""
+msgstr "Gość"
 
 msgid "HE.net password"
 msgstr "Hasło HE.net"
@@ -1365,9 +1372,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Uchwyt"
-
 msgid "Hang Up"
 msgstr "Rozłącz"
 
@@ -1416,7 +1420,7 @@ msgid "Hostname"
 msgstr "Nazwa hosta"
 
 msgid "Hostname to send when requesting DHCP"
-msgstr "Nazwa hosta do wysłania podczas negocjacji DHCP"
+msgstr "Nazwa hosta wysyłana podczas negocjacji DHCP"
 
 msgid "Hostnames"
 msgstr "Nazwy hostów"
@@ -1619,7 +1623,7 @@ msgid "Install"
 msgstr "Instaluj"
 
 msgid "Install iputils-traceroute6 for IPv6 traceroute"
-msgstr ""
+msgstr "Zainstaluj iputils-traceroute6 w celu skorzystania z traceroute dla iPv6"
 
 msgid "Install package %q"
 msgstr "Instaluj pakiet %q"
@@ -1650,7 +1654,7 @@ msgid "Interface is shutting down..."
 msgstr "Interfejs jest wyłączany..."
 
 msgid "Interface name"
-msgstr ""
+msgstr "Nazwa interfejsu"
 
 msgid "Interface not present or not connected yet."
 msgstr "Interfejs nie istnieje lub nie jest jeszcze podłączony."
@@ -1684,7 +1688,7 @@ msgid "Invalid username and/or password! Please try again."
 msgstr "Niewłaściwy login i/lub hasło! Spróbuj ponownie."
 
 msgid "Isolate Clients"
-msgstr ""
+msgstr "Izoluj klientów"
 
 #, fuzzy
 msgid ""
@@ -1701,10 +1705,10 @@ msgid "Join Network"
 msgstr "Połącz z siecią"
 
 msgid "Join Network: Wireless Scan"
-msgstr "Przyłącz do sieci: Skanuj sieci WiFi"
+msgstr "Przyłącz do sieci: Skanuj sieci Wi-Fi"
 
 msgid "Joining Network: %q"
-msgstr ""
+msgstr "Przyłączanie do sieci: %q"
 
 msgid "Keep settings"
 msgstr "Zachowaj ustawienia"
@@ -1749,13 +1753,13 @@ msgid "Language and Style"
 msgstr "Wygląd i język"
 
 msgid "Latency"
-msgstr ""
+msgstr "Opoźnienie"
 
 msgid "Leaf"
 msgstr ""
 
 msgid "Lease time"
-msgstr ""
+msgstr "Czas dzierżawy"
 
 msgid "Lease validity time"
 msgstr "Czas ważności dzierżawy"
@@ -1782,7 +1786,7 @@ msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
 msgstr ""
 
 msgid "Limit listening to these interfaces, and loopback."
-msgstr ""
+msgstr "Ogranicz nasłuchiwanie do tych interfesjów, oraz loopbacku."
 
 msgid "Line Attenuation (LATN)"
 msgstr ""
@@ -1832,10 +1836,10 @@ msgid "List of hosts that supply bogus NX domain results"
 msgstr "Lista hostów które dostarczają zafałszowane wyniki NX domain"
 
 msgid "Listen Interfaces"
-msgstr ""
+msgstr "Nasłuchuj interfejs"
 
 msgid "Listen Port"
-msgstr ""
+msgstr "Nasłuchuj port"
 
 msgid "Listen only on the given interface or, if unspecified, on all"
 msgstr ""
@@ -1854,7 +1858,7 @@ msgid "Loading"
 msgstr "Ładowanie"
 
 msgid "Local IP address to assign"
-msgstr ""
+msgstr "Lokalny adres IP do przypisania"
 
 msgid "Local IPv4 address"
 msgstr "Lokalny adres IPv4"
@@ -1942,7 +1946,7 @@ msgid "MB/s"
 msgstr "MB/s"
 
 msgid "MD5"
-msgstr ""
+msgstr "MD5"
 
 msgid "MHz"
 msgstr "MHz"
@@ -1954,6 +1958,8 @@ 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:"
 
 msgid "Manual"
 msgstr ""
@@ -1973,9 +1979,6 @@ msgstr "Maksymalny dozwolony rozmiar pakietu EDNS.0 UDP"
 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"
 
-msgid "Maximum hold time"
-msgstr "Maksymalny czas podtrzymania"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1993,12 +1996,12 @@ msgstr "Pamięć"
 msgid "Memory usage (%)"
 msgstr "Użycie pamięci (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metryka"
 
-msgid "Minimum hold time"
-msgstr "Minimalny czas podtrzymania"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2015,7 +2018,7 @@ msgid "Mode"
 msgstr "Tryb"
 
 msgid "Model"
-msgstr ""
+msgstr "Model"
 
 msgid "Modem device"
 msgstr "Modem"
@@ -2082,7 +2085,7 @@ msgid "NAT64 Prefix"
 msgstr ""
 
 msgid "NCM"
-msgstr ""
+msgstr "NCM"
 
 msgid "NDP-Proxy"
 msgstr ""
@@ -2166,7 +2169,7 @@ msgid "Noise"
 msgstr "Szum"
 
 msgid "Noise Margin (SNR)"
-msgstr ""
+msgstr "Margines szumów (SNR)"
 
 msgid "Noise:"
 msgstr "Szum:"
@@ -2193,7 +2196,7 @@ msgid "Not connected"
 msgstr "Nie podłączony"
 
 msgid "Note: Configuration files will be erased."
-msgstr "UWAGA: Pliki konfiguracyjne zostaną usunięte."
+msgstr "Uwaga: Pliki konfiguracyjne zostaną usunięte."
 
 msgid "Note: interface name length"
 msgstr ""
@@ -2204,6 +2207,9 @@ msgstr "Spostrzeżenie"
 msgid "Nslookup"
 msgstr "Nslookup"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2255,7 +2261,7 @@ msgid "OpenConnect (CISCO AnyConnect)"
 msgstr ""
 
 msgid "Operating frequency"
-msgstr ""
+msgstr "Częstotliwość"
 
 msgid "Option changed"
 msgstr "Wartość zmieniona"
@@ -2264,7 +2270,7 @@ msgid "Option removed"
 msgstr "Usunięto wartość"
 
 msgid "Optional"
-msgstr ""
+msgstr "Opcjonalny"
 
 msgid "Optional, specify to override default server (tic.sixxs.net)"
 msgstr ""
@@ -2333,13 +2339,13 @@ msgid "Override MTU"
 msgstr "Nadpisz MTU"
 
 msgid "Override TOS"
-msgstr ""
+msgstr "Nadpisz TOS"
 
 msgid "Override TTL"
-msgstr ""
+msgstr "Nadpisz TTL"
 
 msgid "Override default interface name"
-msgstr ""
+msgstr "Nadpisz domyślną nazwę interfejsu"
 
 msgid "Override the gateway in DHCP responses"
 msgstr "Nadpisz adres bramy w odpowiedziach DHCP"
@@ -2373,7 +2379,7 @@ msgid "PIN"
 msgstr "PIN"
 
 msgid "PMK R1 Push"
-msgstr ""
+msgstr "PMK R1 Push"
 
 msgid "PPP"
 msgstr "PPP"
@@ -2388,7 +2394,7 @@ msgid "PPPoE"
 msgstr "PPPoE"
 
 msgid "PPPoSSH"
-msgstr ""
+msgstr "PPPoSSH"
 
 msgid "PPtP"
 msgstr "PPtP"
@@ -2421,13 +2427,13 @@ msgid "Password"
 msgstr "Hasło"
 
 msgid "Password authentication"
-msgstr "Identyfikacja hasłem"
+msgstr "Uwierzytelnianie hasłem"
 
 msgid "Password of Private Key"
 msgstr "Hasło lub klucz prywatny"
 
 msgid "Password of inner Private Key"
-msgstr ""
+msgstr "Wewnętrzne hasło klucza prywatnego"
 
 msgid "Password successfully changed!"
 msgstr "Pomyślnie zmieniono hasło!"
@@ -2439,24 +2445,19 @@ msgid "Path to CA-Certificate"
 msgstr "Ścieżka do certyfikatu CA"
 
 msgid "Path to Client-Certificate"
-msgstr "Ścieżka do certyfikatu Klienta"
+msgstr "Ścieżka do certyfikatu klienta"
 
 msgid "Path to Private Key"
 msgstr "Ścieżka do Klucza Prywatnego"
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-"Ścieżka do pliku wykonywalnego, który obsługuje zdarzenie dla danego "
-"przycisku"
-
 msgid "Path to inner CA-Certificate"
-msgstr ""
+msgstr "Ścieżka do wewnętrznego certyfikatu CA"
 
 msgid "Path to inner Client-Certificate"
-msgstr ""
+msgstr "Ścieżka do wewnętrznego certyfikatu Klienta"
 
 msgid "Path to inner Private Key"
-msgstr ""
+msgstr "Ścieżka do wewnętrznego klucza prywatnego "
 
 msgid "Peak:"
 msgstr "Szczyt:"
@@ -2504,7 +2505,7 @@ msgid "Port status:"
 msgstr "Status portu:"
 
 msgid "Power Management Mode"
-msgstr ""
+msgstr "Tryb zarządzania energią"
 
 msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
@@ -2529,16 +2530,16 @@ msgstr ""
 "wpisz 0 aby zignorować błędy"
 
 msgid "Prevent listening on these interfaces."
-msgstr ""
+msgstr "Zapobiegaj nasłuchiwaniu na tych interfejsach."
 
 msgid "Prevents client-to-client communication"
-msgstr "Zapobiegaj komunikacji klientów pomiędzy sobą"
+msgstr "Zabroń klientą na komunikacje między sobą"
 
 msgid "Prism2/2.5/3 802.11b Wireless Controller"
 msgstr "Kontroler bezprzewodowy Prism2/2.5/3 802.11b"
 
 msgid "Private Key"
-msgstr ""
+msgstr "Klucz prywatny"
 
 msgid "Proceed"
 msgstr "Wykonaj"
@@ -2547,7 +2548,7 @@ msgid "Processes"
 msgstr "Procesy"
 
 msgid "Profile"
-msgstr ""
+msgstr "Profil"
 
 msgid "Prot."
 msgstr "Prot."
@@ -2564,7 +2565,6 @@ msgstr "Protokół nowego interfejsu"
 msgid "Protocol support is not installed"
 msgstr "Wsparcie dla protokołu nie jest zainstalowane"
 
-# Opcja dotyczy włączenia serwera czasu, więc "podaj" nie jest właściwym tłumaczeniem w tym miejscu - obsy
 msgid "Provide NTP server"
 msgstr "Włącz serwer NTP"
 
@@ -2575,7 +2575,7 @@ msgid "Pseudo Ad-Hoc (ahdemo)"
 msgstr "Pseudo Ad-Hoc (ahdemo)"
 
 msgid "Public Key"
-msgstr ""
+msgstr "Klucz publiczny"
 
 msgid "Public prefix routed to this device for distribution to clients."
 msgstr ""
@@ -2684,10 +2684,10 @@ msgid "Realtime Traffic"
 msgstr "Ruch w czasie rzeczywistym"
 
 msgid "Realtime Wireless"
-msgstr "WiFi w czasie rzeczywistym"
+msgstr "Wi-Fi w czasie rzeczywistym"
 
 msgid "Reassociation Deadline"
-msgstr ""
+msgstr "Termin reasocjacji"
 
 msgid "Rebind protection"
 msgstr "Przypisz ochronę"
@@ -2735,7 +2735,7 @@ msgid "Remote IPv4 address"
 msgstr "Zdalny adres IPv4"
 
 msgid "Remote IPv4 address or FQDN"
-msgstr ""
+msgstr "Zdalny adres IPv4 lub FQDN"
 
 msgid "Remove"
 msgstr "Usuń"
@@ -2750,16 +2750,16 @@ msgid "Replace wireless configuration"
 msgstr "Zamień konfigurację WiFi"
 
 msgid "Request IPv6-address"
-msgstr ""
+msgstr "Zażądaj adresu IPv6"
 
 msgid "Request IPv6-prefix of length"
 msgstr ""
 
 msgid "Require TLS"
-msgstr ""
+msgstr "Wymagaj TLS"
 
 msgid "Required"
-msgstr ""
+msgstr "Wymagany"
 
 msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
 msgstr "Wymagany dla niektórych dostawców internetu, np. Charter z DOCSIS 3"
@@ -2869,16 +2869,16 @@ msgid "SIXXS-handle[/Tunnel-ID]"
 msgstr ""
 
 msgid "SNR"
-msgstr ""
+msgstr "SNR"
 
 msgid "SSH Access"
 msgstr "Dostęp SSH"
 
 msgid "SSH server address"
-msgstr ""
+msgstr "Adres serwera SSH"
 
 msgid "SSH server port"
-msgstr ""
+msgstr "Port serwera SSH"
 
 msgid "SSH username"
 msgstr ""
@@ -2951,6 +2951,8 @@ 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)."
 
 #, fuzzy
 msgid "Set up Time Synchronization"
@@ -2989,6 +2991,9 @@ msgstr "Rozmiar"
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Pomiń"
 
@@ -3005,7 +3010,7 @@ msgid "Software"
 msgstr "Oprogramowanie"
 
 msgid "Software VLAN"
-msgstr ""
+msgstr "VLAN programowy"
 
 msgid "Some fields are invalid, cannot save values!"
 msgstr "Wartości pewnych pól są niewłaściwe, nie mogę ich zachować!"
@@ -3034,9 +3039,6 @@ msgstr "Źródło"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Określa zachowanie w zależności od stanu przycisku"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Podaje katalog do którego jest podłączone urządzenie"
 
@@ -3143,6 +3145,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3278,7 +3283,7 @@ msgid "The following rules are currently active on this system."
 msgstr "Następujące zasady są obecnie aktywne w tym systemie."
 
 msgid "The given network name is not unique"
-msgstr "Podana sieć NIE jest unikalna"
+msgstr "Podana sieć nie jest unikalna"
 
 #, fuzzy
 msgid ""
@@ -3411,10 +3416,10 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"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</code>"
+"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
 msgid ""
@@ -3447,10 +3452,6 @@ msgstr ""
 "Poniższa lista przedstawia aktualnie uruchomione procesy systemowe i ich "
 "status."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-"Poniższa strona umożliwia konfigurację działania niestandardowych przycisków"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "Poniższa strona przedstawia aktualnie aktywne połączenia sieciowe."
 
@@ -3470,8 +3471,8 @@ msgid ""
 "To restore configuration files, you can upload a previously generated backup "
 "archive here."
 msgstr ""
-"Aby przywrócić pliki konfiguracyjne, można tutaj wczytać wcześniej utworzone "
-"archiwum kopii zapasowej."
+"Aby przywrócić pliki konfiguracyjne, możesz tutaj przesłać wcześniej utworzoną "
+"kopię zapasową."
 
 msgid "Tone"
 msgstr ""
@@ -3504,7 +3505,7 @@ msgid "Trigger"
 msgstr "Trigger"
 
 msgid "Trigger Mode"
-msgstr "Tryb Trigger"
+msgstr "Rodzaj Triggeru"
 
 msgid "Tunnel ID"
 msgstr "Numer identyfikacyjny tunelu"
@@ -3522,7 +3523,7 @@ msgid "Tunnel setup server"
 msgstr ""
 
 msgid "Tunnel type"
-msgstr ""
+msgstr "Typ tunelu"
 
 msgid "Tx-Power"
 msgstr "Moc nadawania"
@@ -3543,7 +3544,7 @@ msgid "USB Device"
 msgstr "Urządzenie USB"
 
 msgid "USB Ports"
-msgstr ""
+msgstr "Porty USB"
 
 msgid "UUID"
 msgstr "UUID"
@@ -3558,13 +3559,13 @@ msgid "Unknown"
 msgstr "Nieznany"
 
 msgid "Unknown Error, password not changed!"
-msgstr "Nieznany błąd, hasło nie zostało zmienione"
+msgstr "Nieznany błąd, hasło nie zostało zmienione!"
 
 msgid "Unmanaged"
 msgstr "Niezarządzalny"
 
 msgid "Unmount"
-msgstr ""
+msgstr "Odmontuj"
 
 msgid "Unsaved Changes"
 msgstr "Niezapisane zmiany"
@@ -3580,9 +3581,9 @@ msgid ""
 "Check \"Keep settings\" to retain the current configuration (requires a "
 "compatible firmware image)."
 msgstr ""
-"Prześlij zgodny z funkcją sysupgrade obraz tutaj, aby zastąpić aktualnie "
-"działające firmware. Zaznacz opcję \"Zachowaj ustawienia\", aby zachować "
-"bieżącą konfigurację (wymaga zgodnego obrazu firmware)."
+"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)."
 
 msgid "Upload archive..."
 msgstr "Załaduj archiwum..."
@@ -3615,16 +3616,16 @@ msgid "Use as external overlay (/overlay)"
 msgstr ""
 
 msgid "Use as root filesystem (/)"
-msgstr ""
+msgstr "Użyj jako systemu plików root (/)"
 
 msgid "Use broadcast flag"
 msgstr "Użyj flagi rozgłaszania"
 
 msgid "Use builtin IPv6-management"
-msgstr ""
+msgstr "Skorzystaj z wbudowanego zarządzania protokołem IPv6"
 
 msgid "Use custom DNS servers"
-msgstr "Użyj własnych serwerów DNS"
+msgstr "Użyj własne serwery DNS"
 
 msgid "Use default gateway"
 msgstr "Użyj domyślnej bramy"
@@ -3637,9 +3638,9 @@ msgstr "Użyj tabeli routingu"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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</"
@@ -3660,10 +3661,10 @@ msgid ""
 msgstr ""
 
 msgid "User certificate (PEM encoded)"
-msgstr ""
+msgstr "Certyfikat użytkownika (kodowany PEM)"
 
 msgid "User key (PEM encoded)"
-msgstr ""
+msgstr "Klucz użytkownika (kodowany PEM)"
 
 msgid "Username"
 msgstr "Nazwa użytkownika"
@@ -3672,7 +3673,7 @@ msgid "VC-Mux"
 msgstr "VC-Mux"
 
 msgid "VDSL"
-msgstr ""
+msgstr "VDSL"
 
 msgid "VLANs on %q"
 msgstr "Sieci VLAN na %q"
@@ -3690,7 +3691,7 @@ msgid "VPN Server"
 msgstr "Serwer VPN"
 
 msgid "VPN Server port"
-msgstr ""
+msgstr "Port serwera VPN"
 
 msgid "VPN Server's certificate SHA1 hash"
 msgstr ""
@@ -3699,7 +3700,7 @@ msgid "VPNC (CISCO 3000 (and others) VPN)"
 msgstr ""
 
 msgid "Vendor"
-msgstr ""
+msgstr "Producent"
 
 msgid "Vendor Class to send when requesting DHCP"
 msgstr "Klasa producenta do wysłania podczas żądania DHCP"
@@ -3738,14 +3739,13 @@ 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 (na tryb "
-"klienta) lub hostapd (dla trybów AP lub ad-hoc)"
+"Kodowanie WPA wymaga zainstalowanych modułów wpa_supplicant (tryb "
+"klienta) lub hostapd (tryb AP lub ad-hoc)"
 
 msgid ""
 "Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)"
 msgstr ""
 
-# obsy: Brzmi to lepiej niż "czekanie na wprowadzanie zmian.
 msgid "Waiting for changes to be applied..."
 msgstr "Trwa wprowadzenie zmian..."
 
@@ -3753,13 +3753,14 @@ msgid "Waiting for command to complete..."
 msgstr "Trwa wykonanie polecenia..."
 
 msgid "Waiting for device..."
-msgstr ""
+msgstr "Oczekiwanie na urządzenie..."
 
 msgid "Warning"
 msgstr "Ostrzeżenie"
 
 msgid "Warning: There are unsaved changes that will get lost on reboot!"
-msgstr ""
+msgstr "Ostrzeżenie: Istnieją niezapisane zmiany, które zostaną utracone "
+"po ponownym uruchomieniu urządzenia!"
 
 msgid ""
 "When using a PSK, the PMK can be generated locally without inter AP "
@@ -3773,7 +3774,7 @@ msgid "Whether to route only packets from delegated prefixes"
 msgstr ""
 
 msgid "Width"
-msgstr ""
+msgstr "Szerokość"
 
 msgid "WireGuard VPN"
 msgstr ""
@@ -3815,7 +3816,7 @@ msgid "Write received DNS requests to syslog"
 msgstr "Zapisz otrzymane żądania DNS do syslog'a"
 
 msgid "Write system log to file"
-msgstr ""
+msgstr "Zapisz log systemowy do pliku"
 
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
@@ -3838,6 +3839,9 @@ msgid ""
 "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 "any"
 msgstr "dowolny"
@@ -3849,13 +3853,13 @@ msgid "baseT"
 msgstr "baseT"
 
 msgid "bridged"
-msgstr "bridged"
+msgstr "zmostkowany"
 
 msgid "create:"
 msgstr "utwórz:"
 
 msgid "creates a bridge over specified interface(s)"
-msgstr "utwórz bridge na określonych interfejsach"
+msgstr "utwórz most na określonych interfejsach"
 
 msgid "dB"
 msgstr "dB"
@@ -3867,7 +3871,7 @@ msgid "disable"
 msgstr "wyłącz"
 
 msgid "disabled"
-msgstr ""
+msgstr "wyłączony"
 
 msgid "expired"
 msgstr "wygasły"
@@ -3895,7 +3899,7 @@ msgid "hidden"
 msgstr "ukryty"
 
 msgid "hybrid mode"
-msgstr ""
+msgstr "tryb hybrydowy"
 
 msgid "if target is a network"
 msgstr "jeżeli celem jest sieć"
@@ -3916,10 +3920,10 @@ msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
 msgstr "lokalny plik <abbr title=\"Domain Name System\">DNS</abbr>"
 
 msgid "minimum 1280, maximum 1480"
-msgstr ""
+msgstr "minimum 1280, maksimum 1480"
 
 msgid "minutes"
-msgstr ""
+msgstr "minuty"
 
 msgid "no"
 msgstr "nie"
@@ -3932,7 +3936,7 @@ msgid "none"
 msgstr "żaden"
 
 msgid "not present"
-msgstr ""
+msgstr "nieobecny"
 
 msgid "off"
 msgstr "wyłączone"
@@ -3946,6 +3950,9 @@ msgstr "otwarte"
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr "losowy"
+
 msgid "relay mode"
 msgstr ""
 
@@ -3953,7 +3960,7 @@ msgid "routed"
 msgstr "routowane"
 
 msgid "server mode"
-msgstr ""
+msgstr "tryb serwera"
 
 msgid "stateful-only"
 msgstr ""
@@ -3965,10 +3972,10 @@ msgid "stateless + stateful"
 msgstr ""
 
 msgid "tagged"
-msgstr "tagowane"
+msgstr "otagowane"
 
 msgid "time units (TUs / 1.024 ms) [1000-65535]"
-msgstr ""
+msgstr "jednostki czasu (TUs / 1.024 ms) [1000-65535]"
 
 msgid "unknown"
 msgstr "nieznane"
@@ -3983,7 +3990,7 @@ msgid "unspecified -or- create:"
 msgstr "nieokreślone -lub- utwórz:"
 
 msgid "untagged"
-msgstr "nietagowane"
+msgstr "nieotagowane"
 
 msgid "yes"
 msgstr "tak"
@@ -3991,6 +3998,34 @@ msgstr "tak"
 msgid "« Back"
 msgstr "« Wróć"
 
+#~ msgid "Action"
+#~ msgstr "Akcja"
+
+#~ msgid "Buttons"
+#~ msgstr "Przyciski"
+
+#~ msgid "Handler"
+#~ msgstr "Uchwyt"
+
+#~ msgid "Maximum hold time"
+#~ msgstr "Maksymalny czas podtrzymania"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Minimalny czas podtrzymania"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr ""
+#~ "Ścieżka do pliku wykonywalnego, który obsługuje zdarzenie dla danego "
+#~ "przycisku"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Określa zachowanie w zależności od stanu przycisku"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr ""
+#~ "Poniższa strona umożliwia konfigurację działania niestandardowych "
+#~ "przycisków"
+
 #~ msgid "Leasetime"
 #~ msgstr "Czas dzierżawy"
 
index eef8ebac3888b8a70425809b30d828aa3cc2f3fe..bbfb8cf8d910a9ebf58890844c663379843892b0 100644 (file)
@@ -241,9 +241,6 @@ msgstr "Concentrador de Acesso"
 msgid "Access Point"
 msgstr "Ponto de Acceso (AP)"
 
-msgid "Action"
-msgstr "Ação"
-
 msgid "Actions"
 msgstr "Ações"
 
@@ -322,6 +319,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Permitir todos, exceto os listados"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Permitir somente os listados"
 
@@ -434,11 +434,11 @@ msgstr "configuração de antena"
 msgid "Any zone"
 msgstr "Qualquer zona"
 
-msgid "Apply"
-msgstr "Aplicar"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Aplicar as alterações"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -609,9 +609,6 @@ msgstr ""
 "Fonte de pacotes específico da compilação/distribuição. Esta NÃO será "
 "preservada em qualquer atualização do sistema."
 
-msgid "Buttons"
-msgstr "Botões"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 "Certificado da CA; se em branco, será salvo depois da primeira conexão."
@@ -634,16 +631,24 @@ msgstr "Alterações"
 msgid "Changes applied."
 msgstr "Alterações aplicadas."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "Muda a senha do administrador para acessar este dispositivo"
 
 msgid "Channel"
 msgstr "Canal"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Verificar"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 "Execute a verificação do sistema de arquivos antes da montagem do dispositivo"
 
@@ -722,12 +727,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Configuração"
 
-msgid "Configuration applied."
-msgstr "Configuração aplicada."
-
 msgid "Configuration files will be kept."
 msgstr "Os arquivos de configuração serão mantidos."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Confirmação"
 
@@ -746,6 +754,12 @@ msgstr "A conexão para este servidor falhará quando o TLS não puder ser usado
 msgid "Connections"
 msgstr "Conexões"
 
+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 ""
+
 msgid "Country"
 msgstr "País"
 
@@ -789,6 +803,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr "Fontes de pacotes customizadas"
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -916,6 +935,9 @@ msgstr "O dispositivo está reiniciando..."
 msgid "Device unreachable"
 msgstr "Dispositivo não alcançável"
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "Diagnóstico"
 
@@ -951,6 +973,9 @@ msgid "Discard upstream RFC1918 responses"
 msgstr ""
 "Descartar respostas de servidores externos para redes privadas (RFC1918)"
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "Mostre somente os pacotes contendo"
 
@@ -1073,6 +1098,11 @@ msgstr "Emergência"
 msgid "Enable"
 msgstr "Ativar"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Ativar <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1130,6 +1160,9 @@ msgstr "Ativar/Desativar"
 msgid "Enabled"
 msgstr "Ativado"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1212,6 +1245,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "Arquivo"
 
@@ -1318,6 +1354,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Encaminhar tráfego broadcast"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Modo de encaminhamento"
 
@@ -1405,10 +1444,6 @@ msgstr ""
 "Modo <abbr title=\"High Throughput/Alta Taxa de Transferência\">HT</abbr>  "
 "(802.11n)"
 
-# Não sei que contexto isto está sendo usado
-msgid "Handler"
-msgstr "Responsável"
-
 msgid "Hang Up"
 msgstr "Suspender"
 
@@ -2051,10 +2086,6 @@ msgstr "Tamanho máximo permitido dos pacotes UDP EDNS.0"
 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"
 
-# Desconheço o uso
-msgid "Maximum hold time"
-msgstr "Tempo máximo de espera"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -2074,12 +2105,12 @@ msgstr "Memória"
 msgid "Memory usage (%)"
 msgstr "Uso da memória (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Métrica"
 
-msgid "Minimum hold time"
-msgstr "Tempo mínimo de espera"
-
 msgid "Mirror monitor port"
 msgstr "Porta de monitoramento do espelho"
 
@@ -2287,6 +2318,9 @@ msgstr "Aviso"
 msgid "Nslookup"
 msgstr "Nslookup"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2299,6 +2333,9 @@ msgstr "Senha Ofuscada do Grupo"
 msgid "Obfuscated Password"
 msgstr "Senha Ofuscada"
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr "Atraso no estado de desligado"
 
@@ -2540,9 +2577,6 @@ msgstr "Caminho para o Certificado do Cliente"
 msgid "Path to Private Key"
 msgstr "Caminho para a Chave Privada"
 
-msgid "Path to executable which handles the button event"
-msgstr "Caminho para o executável que trata o evento do botão"
-
 msgid "Path to inner CA-Certificate"
 msgstr "Caminho para os certificados CA interno"
 
@@ -2918,6 +2952,15 @@ msgstr "Relevar/esconder senha"
 msgid "Revert"
 msgstr "Reverter"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr "Raiz"
 
@@ -2999,9 +3042,6 @@ msgstr "Salvar"
 msgid "Save & Apply"
 msgstr "Salvar & Aplicar"
 
-msgid "Save &#38; Apply"
-msgstr "Save &#38; Aplicar"
-
 msgid "Scan"
 msgstr "Procurar"
 
@@ -3095,6 +3135,9 @@ msgstr "Tamanho"
 msgid "Size (.ipk)"
 msgstr "Tamanho (.ipk)"
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Pular"
 
@@ -3140,9 +3183,6 @@ msgstr "Origem"
 msgid "Source routing"
 msgstr "Roteamento pela origem"
 
-msgid "Specifies the button state to handle"
-msgstr "Especifica o estado do botão para ser tratado"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Especifica o diretório que o dispositivo está conectado"
 
@@ -3189,6 +3229,9 @@ msgstr "Iniciar"
 msgid "Start priority"
 msgstr "Prioridade de iniciação"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "Iniciação"
 
@@ -3256,6 +3299,9 @@ msgstr ""
 "O Switch %q tem uma topologia desconhecida - as configurações de VLAN podem "
 "não ser precisas."
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr "Switch VLAN"
 
@@ -3355,6 +3401,16 @@ msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 "O arquivo de configuração não pode ser carregado devido ao seguinte erro:"
 
+msgid ""
+"The device 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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3381,9 +3437,6 @@ msgstr ""
 "garantir a integridade dos dados. <br /> Clique em \"Proceder\" para iniciar "
 "o procedimetno de gravação."
 
-msgid "The following changes have been committed"
-msgstr "As seguintes mudanças foram aplicadas"
-
 msgid "The following changes have been reverted"
 msgstr "As seguintes alterações foram revertidas"
 
@@ -3469,8 +3522,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "Não existem alocações ativas."
 
-msgid "There are no pending changes to apply!"
-msgstr "Não existem modificações pendentes para aplicar!"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "Não existem modificações pendentes para reverter!"
@@ -3530,10 +3583,10 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"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</code>"
+"ele termina com <code>...:2/64</code>"
 
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
@@ -3566,10 +3619,6 @@ msgid ""
 msgstr ""
 "Esta lista fornece uma visão geral sobre os processos em execução no sistema."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-"Esta página permite a configuração de ações personalizadas para os botões"
-
 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."
 
@@ -3760,9 +3809,9 @@ msgstr "Use a tabela de roteamento"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 "
@@ -3878,6 +3927,9 @@ msgstr "Esperando a aplicação das mudanças..."
 msgid "Waiting for command to complete..."
 msgstr "Esperando o término do comando..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr "Esperando pelo dispositivo..."
 
@@ -4077,6 +4129,9 @@ msgstr "aberto"
 msgid "overlay"
 msgstr "sobreposição"
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr "modo retransmissor"
 
@@ -4122,6 +4177,51 @@ msgstr "sim"
 msgid "« Back"
 msgstr "« Voltar"
 
+#~ msgid "Apply"
+#~ msgstr "Aplicar"
+
+#~ msgid "Applying changes"
+#~ msgstr "Aplicar as alterações"
+
+#~ msgid "Configuration applied."
+#~ msgstr "Configuração aplicada."
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "Save &#38; Aplicar"
+
+#~ msgid "The following changes have been committed"
+#~ msgstr "As seguintes mudanças foram aplicadas"
+
+#~ msgid "There are no pending changes to apply!"
+#~ msgstr "Não existem modificações pendentes para aplicar!"
+
+#~ msgid "Action"
+#~ msgstr "Ação"
+
+#~ msgid "Buttons"
+#~ msgstr "Botões"
+
+# Não sei que contexto isto está sendo usado
+#~ msgid "Handler"
+#~ msgstr "Responsável"
+
+# Desconheço o uso
+#~ msgid "Maximum hold time"
+#~ msgstr "Tempo máximo de espera"
+
+#~ msgid "Minimum hold time"
+#~ msgstr "Tempo mínimo de espera"
+
+#~ msgid "Path to executable which handles the button event"
+#~ msgstr "Caminho para o executável que trata o evento do botão"
+
+#~ msgid "Specifies the button state to handle"
+#~ msgstr "Especifica o estado do botão para ser tratado"
+
+#~ msgid "This page allows the configuration of custom button actions"
+#~ msgstr ""
+#~ "Esta página permite a configuração de ações personalizadas para os botões"
+
 #~ msgid "Leasetime"
 #~ msgstr "Tempo de atribuição do DHCP"
 
index aadccccc39afaa01a75ca9489d6c50349c88645f..7e191809b8aff4812df1feca6b2539cae2956c73 100644 (file)
@@ -225,9 +225,6 @@ msgstr "Concentrador de Acesso"
 msgid "Access Point"
 msgstr "Access Point (AP)"
 
-msgid "Action"
-msgstr "Acção"
-
 msgid "Actions"
 msgstr "Acções"
 
@@ -304,6 +301,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Permitir todos, excepto os listados"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Permitir somente os listados"
 
@@ -411,11 +411,11 @@ msgstr "Configuração das Antenas"
 msgid "Any zone"
 msgstr "Qualquer zona"
 
-msgid "Apply"
-msgstr "Aplicar"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "A aplicar as alterações"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -574,9 +574,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Botões"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -598,16 +595,24 @@ msgstr "Alterações"
 msgid "Changes applied."
 msgstr "Alterações aplicadas."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "Altera a password de administrador para acesso ao dispositivo"
 
 msgid "Channel"
 msgstr "Canal"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Verificar"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -684,12 +689,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Configuração"
 
-msgid "Configuration applied."
-msgstr "Configuração aplicada."
-
 msgid "Configuration files will be kept."
 msgstr "Os ficheiros de configuração serão mantidos."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Confirmação"
 
@@ -708,6 +716,12 @@ msgstr ""
 msgid "Connections"
 msgstr "Ligações"
 
+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 ""
+
 msgid "Country"
 msgstr "País"
 
@@ -749,6 +763,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -876,6 +895,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "Diagnósticos"
 
@@ -910,6 +932,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr "Descartar respostas RFC1918 a montante"
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "Mostrar somente pacotes contendo"
 
@@ -1027,6 +1052,11 @@ msgstr "Emergência"
 msgid "Enable"
 msgstr "Ativar"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Ativar <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1084,6 +1114,9 @@ msgstr "Ativar/Desativar"
 msgid "Enabled"
 msgstr "Ativado"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1165,6 +1198,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "Ficheiro"
 
@@ -1266,6 +1302,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Encaminhar trafego de broadcast"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Modo de encaminhamento"
 
@@ -1350,9 +1389,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Handler"
-
 msgid "Hang Up"
 msgstr "Suspender"
 
@@ -1952,9 +1988,6 @@ msgstr ""
 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"
 
-msgid "Maximum hold time"
-msgstr "Tempo máximo de espera"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1972,12 +2005,12 @@ msgstr "Memória"
 msgid "Memory usage (%)"
 msgstr "Uso de memória (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Métrica"
 
-msgid "Minimum hold time"
-msgstr "Tempo de retenção mínimo"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2183,6 +2216,9 @@ msgstr "Reparo"
 msgid "Nslookup"
 msgstr "Nslookup"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2195,6 +2231,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr "Atraso do Off-State"
 
@@ -2422,9 +2461,6 @@ msgstr "Caminho para o Certificado de Cliente"
 msgid "Path to Private Key"
 msgstr "Caminho da Chave Privada"
 
-msgid "Path to executable which handles the button event"
-msgstr "Caminho do executável que lida com o botão de eventos"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2787,6 +2823,15 @@ msgstr "Revelar/esconder password"
 msgid "Revert"
 msgstr "Reverter"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr ""
 
@@ -2866,9 +2911,6 @@ msgstr "Salvar"
 msgid "Save & Apply"
 msgstr "Salvar & Aplicar"
 
-msgid "Save &#38; Apply"
-msgstr "Salvar &#38; Aplicar"
-
 msgid "Scan"
 msgstr "Procurar"
 
@@ -2957,6 +2999,9 @@ msgstr "Tamanho"
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Saltar"
 
@@ -2999,9 +3044,6 @@ msgstr "Origem"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -3040,6 +3082,9 @@ msgstr "Iniciar"
 msgid "Start priority"
 msgstr "Prioridade de inicialização"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr ""
 
@@ -3101,6 +3146,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3192,6 +3240,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3217,9 +3275,6 @@ msgstr ""
 "compare com o ficheiro original para assegurar a integração de dados.<br /> "
 "Click em \"Proceder\" para iniciar o procedimento."
 
-msgid "The following changes have been committed"
-msgstr "As seguintes alterações foram escritas"
-
 msgid "The following changes have been reverted"
 msgstr "Foram recuperadas as seguintes alterações "
 
@@ -3304,8 +3359,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "Não há concessões ativas."
 
-msgid "There are no pending changes to apply!"
-msgstr "Não há alterações pendentes para aplicar!"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "Não há alterações pendentes para reverter!"
@@ -3356,7 +3411,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3386,10 +3441,6 @@ msgid ""
 msgstr ""
 "Esta lista fornece uma visão geral sobre os processos em execução no sistema."
 
-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 "This page gives an overview over currently active network connections."
 msgstr "Esta página fornece informações sobre as ligações de rede ativas."
 
@@ -3573,9 +3624,9 @@ msgstr "Usar tabela de roteamento"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 ""
 
@@ -3682,6 +3733,9 @@ msgstr "A aguardar que as mudanças sejam aplicadas..."
 msgid "Waiting for command to complete..."
 msgstr "A aguardar que o comando termine..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3877,6 +3931,9 @@ msgstr "abrir"
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3922,6 +3979,46 @@ msgstr "sim"
 msgid "« Back"
 msgstr "« Voltar"
 
+#~ 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"
 
index 029b3958f939fec77e80d9919667c9ebc4be5a6d..a7d45e6f6dc390b9bc134fafc4e05d581eb4cbc9 100644 (file)
@@ -216,9 +216,6 @@ msgstr "Concentrator de Access "
 msgid "Access Point"
 msgstr "Punct de Acces"
 
-msgid "Action"
-msgstr "Actiune"
-
 msgid "Actions"
 msgstr "Actiune"
 
@@ -291,6 +288,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Permite toate cu exceptia celor listate"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Permite doar cele listate"
 
@@ -397,11 +397,11 @@ msgstr "Configurarea Antenei"
 msgid "Any zone"
 msgstr "Orice Zona"
 
-msgid "Apply"
-msgstr "Aplica"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Se aplica modificarile"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -557,9 +557,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Butoane"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -581,16 +578,24 @@ msgstr "Modificari"
 msgid "Changes applied."
 msgstr "Modificari aplicate."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "Schimba parola administratorului pentru accesarea dispozitivului"
 
 msgid "Channel"
 msgstr "Canal"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Verificare"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -659,12 +664,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Configurare"
 
-msgid "Configuration applied."
-msgstr "Configurarea aplicata."
-
 msgid "Configuration files will be kept."
 msgstr "Fisierele de configurare vor fi pastrate."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Confirmare"
 
@@ -683,6 +691,12 @@ msgstr ""
 msgid "Connections"
 msgstr "Conexiuni"
 
+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 ""
+
 msgid "Country"
 msgstr "Tara"
 
@@ -724,6 +738,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -846,6 +865,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "Diagnosticuri"
 
@@ -880,6 +902,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr ""
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr ""
 
@@ -982,6 +1007,11 @@ msgstr "Urgenta"
 msgid "Enable"
 msgstr "Activeaza"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Activeaza <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1039,6 +1069,9 @@ msgstr "Activeaza/Dezactiveaza"
 msgid "Enabled"
 msgstr "Activat"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1117,6 +1150,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "Fisier"
 
@@ -1219,6 +1255,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1302,9 +1341,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr ""
 
@@ -1884,9 +1920,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1904,12 +1937,12 @@ msgstr "Memorie"
 msgid "Memory usage (%)"
 msgstr "Utilizarea memoriei (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrica"
 
-msgid "Minimum hold time"
-msgstr ""
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2113,6 +2146,9 @@ msgstr "Notificare"
 msgid "Nslookup"
 msgstr ""
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2125,6 +2161,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr ""
 
@@ -2346,9 +2385,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr "Calea catre cheia privata"
 
-msgid "Path to executable which handles the button event"
-msgstr "Calea catre executabilul care se ocupa de evenimentul butonului"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2700,6 +2736,15 @@ msgstr "Arata / ascunde parola"
 msgid "Revert"
 msgstr ""
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr ""
 
@@ -2776,9 +2821,6 @@ msgstr "Salveaza"
 msgid "Save & Apply"
 msgstr "Salveaza si aplica"
 
-msgid "Save &#38; Apply"
-msgstr "Salveaza &#38; Aplica"
-
 msgid "Scan"
 msgstr "Scan"
 
@@ -2867,6 +2909,9 @@ msgstr "Marime"
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr ""
 
@@ -2909,9 +2954,6 @@ msgstr "Sursa"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -2950,6 +2992,9 @@ msgstr "Start"
 msgid "Start priority"
 msgstr ""
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "Pornire"
 
@@ -3011,6 +3056,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3096,6 +3144,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3113,9 +3171,6 @@ msgid ""
 "\"Proceed\" below to start the flash procedure."
 msgstr ""
 
-msgid "The following changes have been committed"
-msgstr ""
-
 msgid "The following changes have been reverted"
 msgstr ""
 
@@ -3181,8 +3236,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr ""
 
-msgid "There are no pending changes to apply!"
-msgstr "Nu exista modificari in asteptare de aplicat !"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "Nu exista modificari in asteptare de anulat !"
@@ -3229,7 +3284,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3256,9 +3311,6 @@ msgid ""
 "their status."
 msgstr ""
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 
@@ -3440,9 +3492,9 @@ msgstr ""
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 ""
 
@@ -3549,6 +3601,9 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3734,6 +3789,9 @@ msgstr ""
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3779,6 +3837,30 @@ msgstr "da"
 msgid "« Back"
 msgstr "« Inapoi"
 
+#~ 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"
 
index 9a3cf434fc49518a3fa706495c3fbfc052165b2f..91aacdeb49f2b98ad18309c185c2929e60baabb4 100644 (file)
@@ -1,25 +1,25 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: base\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2014-01-31 21:08+0200\n"
-"Last-Translator: Moon_dark <lenayxa@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2010-05-09 01:01+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-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"
-"X-Poedit-SourceCharset: UTF-8\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"
 
 msgid "%.1f dB"
-msgstr ""
+msgstr "%.1f dB"
 
 msgid "%s is untagged in multiple VLANs!"
-msgstr ""
+msgstr "%s is untagged in multiple VLANs!"
 
 msgid "(%d minute window, %d second interval)"
 msgstr "(%d минутное окно, %d секундный интервал)"
@@ -34,22 +34,22 @@ msgid "(no interfaces attached)"
 msgstr "(нет связанных интерфейсов)"
 
 msgid "-- Additional Field --"
-msgstr "-- Дополнительное поле --"
+msgstr "-- Дополнительно --"
 
 msgid "-- Please choose --"
-msgstr "-- Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð²Ñ\8bбеÑ\80иÑ\82е --"
+msgstr "-- Ð¡Ð´ÐµÐ»Ð°Ð¹Ñ\82е Ð²Ñ\8bбоÑ\80 --"
 
 msgid "-- custom --"
 msgstr "-- пользовательский --"
 
 msgid "-- match by device --"
-msgstr ""
+msgstr "-- проверка по устройству --"
 
 msgid "-- match by label --"
-msgstr ""
+msgstr "-- проверка по метке --"
 
 msgid "-- match by uuid --"
-msgstr ""
+msgstr "-- проверка по uuid --"
 
 msgid "1 Minute Load:"
 msgstr "Загрузка за 1 минуту:"
@@ -58,106 +58,106 @@ msgid "15 Minute Load:"
 msgstr "Загрузка за 15 минут:"
 
 msgid "4-character hexadecimal ID"
-msgstr ""
+msgstr "4-х значное шестнадцатеричное ID"
 
 msgid "464XLAT (CLAT)"
-msgstr ""
+msgstr "464XLAT (CLAT)"
 
 msgid "5 Minute Load:"
 msgstr "Загрузка за 5 минут:"
 
 msgid "6-octet identifier as a hex string - no colons"
-msgstr ""
+msgstr "6-октетный идентификатор в виде шестнадцатеричной строки-без двоеточий"
 
 msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r Быстрый Роуминг"
 
 msgid "802.11w Association SA Query maximum timeout"
-msgstr ""
+msgstr "802.11w Association SA Query максимальное время ожидания"
 
 msgid "802.11w Association SA Query retry timeout"
-msgstr ""
+msgstr "802.11w время ожидания повтора Association SA Query"
 
 msgid "802.11w Management Frame Protection"
-msgstr ""
+msgstr "802.11w Management Frame Protection"
 
 msgid "802.11w maximum timeout"
-msgstr ""
+msgstr "802.11w максимальное время ожидания"
 
 msgid "802.11w retry timeout"
-msgstr ""
+msgstr "802.11w время ожидания повтора"
 
 msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
-msgstr "<abbr title=\"Ð\91азовÑ\8bй Ð¸Ð´ÐµÐ½Ñ\82иÑ\84икаÑ\82оÑ\80 Ð¾Ð±Ñ\81лÑ\83живаниÑ\8f\">BSSID</abbr>"
+msgstr "<abbr title=\"Ð\98денÑ\82иÑ\84икаÑ\82оÑ\80 Ð\9dабоÑ\80а Ð\91азовÑ\8bÑ\85 Ð¡ÐµÑ\80виÑ\81ов\">BSSID</abbr>"
 
 msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
-msgstr "Порт запроса <abbr title=\"Система доменных имён\">DNS</abbr>"
+msgstr "<abbr title=\"Система доменных имён\">DNS</abbr> порт запроса"
 
 msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
-msgstr "Порт <abbr title=\"Система доменных имён\">DNS</abbr>-сервера"
+msgstr "<abbr title=\"Система доменных имен\">DNS</abbr> порт сервера"
 
 msgid ""
 "<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
 "order of the resolvfile"
 msgstr ""
-"<abbr title=\"Система доменных имён\">DNS</abbr> серверы будут опрошены в "
-"порядке, определенном в resolvfile файле"
+"<abbr title=\"Система доменных имен\">DNS</abbr> сервера будут опрошены в "
+"порядке, определенном в resolvfile файле."
 
 msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "<abbr title=\"Расширенный идентификатор обслуживания\">ESSID</abbr>"
 
 msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
-msgstr "<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 4\">IPv4</abbr>-адрес"
+msgstr "<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 4\">IPv4</abbr>-Ð\90дрес"
 
 msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Gateway"
-msgstr "<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 4\">IPv4</abbr>-адÑ\80еÑ\81 Ñ\88лÑ\8eза"
+msgstr "<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 4\">IPv4</abbr>-ШлÑ\8eз"
 
 msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
-msgstr "Маска сети <abbr title=\"Интернет протокол версии 4\">IPv4</abbr>"
+msgstr "<abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-Маска сети"
 
 msgid ""
 "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Address or Network "
 "(CIDR)"
 msgstr ""
-"<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 6\">IPv6</abbr>-адÑ\80еÑ\81 Ð¸Ð»Ð¸ Ñ\81еть (CIDR)"
+"<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 6\">IPv6</abbr>-Ð\90дÑ\80еÑ\81 Ð¸Ð»Ð¸ Ð¡еть (CIDR)"
 
 msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
-msgstr "<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 6\">IPv6</abbr>-адÑ\80еÑ\81 Ñ\88лÑ\8eза"
+msgstr "<abbr title=\"Ð\98нÑ\82еÑ\80неÑ\82 Ð¿Ñ\80оÑ\82окол Ð²ÐµÑ\80Ñ\81ии 6\">IPv6</abbr>-ШлÑ\8eз"
 
 msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
-msgstr ""
+msgstr "<abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-Суффикс (hex)"
 
 msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
-msgstr "Настройка <abbr title=\"Светодиод\">LED</abbr>"
+msgstr "Настройка <abbr title=\"Светодиод\">LED</abbr> индикации"
 
 msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
-msgstr "Название <abbr title=\"Светодиод\">LED</abbr>"
+msgstr "<abbr title=\"Светодиод\">LED</abbr> Имя"
 
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
-msgstr "<abbr title=\"УпÑ\80авление Ð´Ð¾Ñ\81Ñ\82Ñ\83пом Ðº Ð½Ð¾Ñ\81иÑ\82елÑ\8e\">MAC</abbr>-адрес"
+msgstr "<abbr title=\"УпÑ\80авление Ð´Ð¾Ñ\81Ñ\82Ñ\83пом Ðº Ð½Ð¾Ñ\81иÑ\82елÑ\8e\">MAC</abbr>-Ð\90дрес"
 
 msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
-msgstr ""
+msgstr "<abbr title=\"Уникальный идентификатор DHCP\">DUID</abbr>"
 
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
 msgstr ""
-"<abbr title=\"максимальное\">Макс.</abbr> кол-во аренд <abbr title="
-"\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии Ñ\83зла\">DHCP</abbr>"
+"<abbr title=\"максимальное\">Макс.</abbr> кол-во аренд<br /><abbr title="
+"\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ñ\83зла\">DHCP</abbr> Ð°Ñ\80ендÑ\8b"
 
 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>"
+"<abbr title=\"максимальный\">Макс.</abbr><abbr title=\"Extension Mechanisms "
+"for Domain Name System\">EDNS0</abbr> размер пакета"
 
 msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
 msgstr ""
-"<abbr title=\"максимальное\">Макс.</abbr> кол-во одновременных запросов"
+"<abbr title=\"максимальное\">Макс.</abbr> кол-во<br />одновременных<br /"
+">запросов"
 
-# Парный шифр используется для одноадресной передачи, а групповой - для широковещательной и мультикаста
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 msgstr "<abbr title='Парный: %s / Групповой: %s'>%s - %s</abbr>"
 
@@ -165,21 +165,23 @@ msgid ""
 "<br/>Note: you need to manually restart the cron service if the crontab file "
 "was empty before editing."
 msgstr ""
+"<br />Внимание: вы должны вручную перезапустить службу cron, если этот файл "
+"был пустым перед внесением ваших изменений."
 
 msgid "A43C + J43 + A43"
-msgstr ""
+msgstr "A43C + J43 + A43"
 
 msgid "A43C + J43 + A43 + V43"
-msgstr ""
+msgstr "A43C + J43 + A43 + V43"
 
 msgid "ADSL"
-msgstr ""
+msgstr "ADSL"
 
 msgid "AICCU (SIXXS)"
-msgstr ""
+msgstr "AICCU (SIXXS)"
 
 msgid "ANSI T1.413"
-msgstr ""
+msgstr "ANSI T1.413"
 
 msgid "APN"
 msgstr "APN"
@@ -188,34 +190,34 @@ msgid "ARP retry threshold"
 msgstr "Порог повтора ARP"
 
 msgid "ATM (Asynchronous Transfer Mode)"
-msgstr ""
+msgstr "ATM (Режим Асинхронной Передачи)"
 
 msgid "ATM Bridges"
-msgstr "Мосты ATM"
+msgstr "ATM Мосты"
 
 msgid "ATM Virtual Channel Identifier (VCI)"
-msgstr "Идентификатор виртуального канала ATM (VCI)"
+msgstr "ATM Идентификатор Виртуального Канала (VCI)"
 
 msgid "ATM Virtual Path Identifier (VPI)"
-msgstr "Идентификатор виртуального пути ATM (VPI)"
+msgstr "ATM Идентификатор Виртуального Пути(VPI)"
 
 msgid ""
 "ATM bridges expose encapsulated ethernet in AAL5 connections as virtual "
 "Linux network interfaces which can be used in conjunction with DHCP or PPP "
 "to dial into the provider network."
 msgstr ""
-"ATM-мосты выставляют инкапсулированный Ethernet в соединениях AAL5 в "
-"качестве виртуальных сетевых интерфейсов Linux, которые могут быть "
-"использованы в сочетании с DHCP или PPP для подключения к сети провайдера."
+"Мосты ATM предоставляют собой инкапсулированные ethernet соединения в AAL5, "
+"как виртуальные сетевые интерфейсы Linux, которые могут использоваться "
+"совместно с DHCP или PPP для набора номера в сети провайдера."
 
 msgid "ATM device number"
-msgstr "Номер устройства ATM"
+msgstr "ATM номер устройства"
 
 msgid "ATU-C System Vendor ID"
-msgstr ""
+msgstr "ATU-C System Vendor ID"
 
 msgid "AYIYA"
-msgstr ""
+msgstr "AYIYA"
 
 msgid "Access Concentrator"
 msgstr "Концентратор доступа"
@@ -223,9 +225,6 @@ msgstr "Концентратор доступа"
 msgid "Access Point"
 msgstr "Точка доступа"
 
-msgid "Action"
-msgstr "Действие"
-
 msgid "Actions"
 msgstr "Действия"
 
@@ -233,21 +232,19 @@ msgid "Activate this network"
 msgstr "Активировать эту сеть"
 
 msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
-msgstr ""
-"Активные маршруты <abbr title=\"Интернет протокол версии 4\">IPv4</abbr>"
+msgstr "Active <abbr title=\"Интернет протокол версии 4\">IPv4</abbr>-Маршруты"
 
 msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
-msgstr ""
-"Активные маршруты <abbr title=\"Интернет протокол версии 6\">IPv6</abbr>"
+msgstr "Active <abbr title=\"Интернет протокол версии 6\">IPv6</abbr>-Маршруты"
 
 msgid "Active Connections"
 msgstr "Активные соединения"
 
 msgid "Active DHCP Leases"
-msgstr "Активные аренды DHCP"
+msgstr "Активные DHCP аренды"
 
 msgid "Active DHCPv6 Leases"
-msgstr "Активные аренды DHCPv6"
+msgstr "Активные DHCPv6 аренды"
 
 msgid "Ad-Hoc"
 msgstr "Ad-Hoc"
@@ -257,16 +254,16 @@ msgstr "Добавить"
 
 msgid "Add local domain suffix to names served from hosts files"
 msgstr ""
-"Добавить суффикс локального домена к именам, полученным из файлов hosts"
+"Добавить локальный суффикс домена для имен из файла хостов (/etc/hosts)."
 
 msgid "Add new interface..."
-msgstr "Добавить новый интерфейс..."
+msgstr "Добавить новый интерфейс"
 
 msgid "Additional Hosts files"
-msgstr "Ð\94ополниÑ\82елÑ\8cнÑ\8bе Ñ\84айлÑ\8b hosts"
+msgstr "Ð\94ополниÑ\82елÑ\8cнÑ\8bй<br />hosts Ñ\84айл"
 
 msgid "Additional servers file"
-msgstr ""
+msgstr "Дополнительные<br />файлы серверов"
 
 msgid "Address"
 msgstr "Адрес"
@@ -278,30 +275,34 @@ msgid "Administration"
 msgstr "Управление"
 
 msgid "Advanced Settings"
-msgstr "РаÑ\81Ñ\88иÑ\80енные настройки"
+msgstr "Ð\94ополниÑ\82елÑ\8cные настройки"
 
 msgid "Aggregate Transmit Power(ACTATP)"
-msgstr ""
+msgstr "Aggregate Transmit Power(ACTATP)"
 
 msgid "Alert"
-msgstr "ТÑ\80евожнаÑ\8f Ñ\81иÑ\82Ñ\83аÑ\86иÑ\8f"
+msgstr "ТÑ\80евога"
 
 msgid ""
 "Allocate IP addresses sequentially, starting from the lowest available "
 "address"
 msgstr ""
+"Выделять IP адреса последовательно, начинать с меньшего доступного адреса."
 
 msgid "Allocate IP sequentially"
-msgstr ""
+msgstr "IP последовательно"
 
 msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
 msgstr ""
-"Разрешить <abbr title=\"Secure Shell\">SSH</abbr>-аутентификацию с помощью "
-"пароля"
+"Разрешить <abbr title=\"Secure Shell\">SSH</abbr> аутентификацию с помощью "
+"пароля."
 
 msgid "Allow all except listed"
 msgstr "Разрешить все, кроме перечисленных"
 
+msgid "Allow legacy 802.11b rates"
+msgstr "Разрешить использование<br />стандарта 802.11b"
+
 msgid "Allow listed only"
 msgstr "Разрешить только перечисленные"
 
@@ -310,93 +311,99 @@ msgstr "Разрешить локальный хост"
 
 msgid "Allow remote hosts to connect to local SSH forwarded ports"
 msgstr ""
-"Разрешить удалённым хостам подключаться к локальным перенаправленным портам "
-"SSH"
+"Разрешить удаленным хостам подключаться к локальным перенаправленным портам "
+"SSH."
 
 msgid "Allow root logins with password"
-msgstr "Разрешить пользователю root вход с помощью пароля"
+msgstr "Root входит по паролю"
 
 msgid "Allow the <em>root</em> user to login with password"
 msgstr ""
-"Разрешить пользователю <em>root</em> входить в систему с помощью пароля"
+"Разрешить пользователю <em>root</em> входить в систему с помощью пароля."
 
 msgid ""
 "Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
-msgstr "Разрешить ответы в диапазоне 127.0.0.0/8, например, для RBL-сервисов"
+msgstr ""
+"Разрешить ответы внешней сети в диапазоне 127.0.0.0/8, например, для RBL-"
+"сервисов."
 
 msgid "Allowed IPs"
-msgstr ""
+msgstr "Разрешенные IP-адреса"
 
 msgid ""
 "Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
 "\">Tunneling Comparison</a> on SIXXS"
 msgstr ""
+"Также смотрите <a href=\"https://www.sixxs.net/faq/connectivity/?"
+"faq=comparison\">Tunneling Comparison</a> on SIXXS"
 
 msgid "Always announce default router"
-msgstr ""
+msgstr "Объявлять всегда, как дефолтный маршрутизатор"
 
 msgid "Annex"
-msgstr ""
+msgstr "Annex"
 
 msgid "Annex A + L + M (all)"
-msgstr ""
+msgstr "Annex A + L + M (all)"
 
 msgid "Annex A G.992.1"
-msgstr ""
+msgstr "Annex A G.992.1"
 
 msgid "Annex A G.992.2"
-msgstr ""
+msgstr "Annex A G.992.2"
 
 msgid "Annex A G.992.3"
-msgstr ""
+msgstr "Annex A G.992.3"
 
 msgid "Annex A G.992.5"
-msgstr ""
+msgstr "Annex A G.992.5"
 
 msgid "Annex B (all)"
-msgstr ""
+msgstr "Annex B (all)"
 
 msgid "Annex B G.992.1"
-msgstr ""
+msgstr "Annex B G.992.1"
 
 msgid "Annex B G.992.3"
-msgstr ""
+msgstr "Annex B G.992.3"
 
 msgid "Annex B G.992.5"
-msgstr ""
+msgstr "Annex B G.992.5"
 
 msgid "Annex J (all)"
-msgstr ""
+msgstr "Annex J (all)"
 
 msgid "Annex L G.992.3 POTS 1"
-msgstr ""
+msgstr "Annex L G.992.3 POTS 1"
 
 msgid "Annex M (all)"
-msgstr ""
+msgstr "Annex M (all)"
 
 msgid "Annex M G.992.3"
-msgstr ""
+msgstr "Annex M G.992.3"
 
 msgid "Annex M G.992.5"
-msgstr ""
+msgstr "Annex M G.992.5"
 
 msgid "Announce as default router even if no public prefix is available."
 msgstr ""
+"Объявить маршрутизатором по умолчанию, даже если общедоступный префикс "
+"недоступен."
 
 msgid "Announced DNS domains"
-msgstr ""
+msgstr "Объявить DNS домены"
 
 msgid "Announced DNS servers"
-msgstr ""
+msgstr "Объявить DNS сервера"
 
 msgid "Anonymous Identity"
-msgstr ""
+msgstr "Анонимная идентификация"
 
 msgid "Anonymous Mount"
-msgstr ""
+msgstr "Неизвестный раздел"
 
 msgid "Anonymous Swap"
-msgstr ""
+msgstr "Неизвестный swap"
 
 msgid "Antenna 1"
 msgstr "Антенна 1"
@@ -405,20 +412,22 @@ msgid "Antenna 2"
 msgstr "Антенна 2"
 
 msgid "Antenna Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f антенн"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка антенн"
 
 msgid "Any zone"
 msgstr "Любая зона"
 
-msgid "Apply"
-msgstr "Принять"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Применение изменений"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
 msgstr ""
+"Задайте часть данной длины, каждому публичному IPv6-префиксу этого "
+"интерфейса."
 
 msgid "Assign interfaces..."
 msgstr "Назначить интерфейсы..."
@@ -426,48 +435,56 @@ msgstr "Назначить интерфейсы..."
 msgid ""
 "Assign prefix parts using this hexadecimal subprefix ID for this interface."
 msgstr ""
+"Назначьте префикс части, используя этот шестнадцатеричный ID вложенного "
+"исправления для этого интерфейса."
 
 msgid "Associated Stations"
 msgstr "Подключенные клиенты"
 
 msgid "Auth Group"
-msgstr ""
+msgstr "Группа аутентификации"
 
 msgid "Authentication"
 msgstr "Аутентификация"
 
 msgid "Authentication Type"
-msgstr ""
+msgstr "Тип аутентификации"
 
 msgid "Authoritative"
-msgstr "Ð\90вÑ\82оÑ\80иÑ\82еÑ\82нÑ\8bй"
+msgstr "Ð\9eÑ\81новной"
 
 msgid "Authorization Required"
-msgstr "ТÑ\80ебÑ\83еÑ\82Ñ\81Ñ\8f Ð°Ð²Ñ\82оÑ\80изаÑ\86иÑ\8f"
+msgstr "Ð\92Ñ\8bполниÑ\82е Ð°Ñ\83Ñ\82енÑ\82иÑ\84икаÑ\86иÑ\8e"
 
 msgid "Auto Refresh"
 msgstr "Автообновление"
 
 msgid "Automatic"
-msgstr ""
+msgstr "Автоматически"
 
 msgid "Automatic Homenet (HNCP)"
-msgstr ""
+msgstr "Автоматическая Homenet (HNCP)"
 
 msgid "Automatically check filesystem for errors before mounting"
 msgstr ""
+"Автоматическая проверка файловой системы раздела на ошибки, перед "
+"монтированием."
 
 msgid "Automatically mount filesystems on hotplug"
 msgstr ""
+"Автоматическое монтирование раздела, при подключении к системе во время ее "
+"работы, без выключения питания и остановки системы (hotplug)."
 
 msgid "Automatically mount swap on hotplug"
 msgstr ""
+"Автоматическое монтирование swap-а при подключении к системе во время ее "
+"работы без выключения питания и остановки системы (hotplug)."
 
 msgid "Automount Filesystem"
-msgstr ""
+msgstr "Hotplug раздела"
 
 msgid "Automount Swap"
-msgstr ""
+msgstr "Hotplug swap-а"
 
 msgid "Available"
 msgstr "Доступно"
@@ -479,13 +496,13 @@ msgid "Average:"
 msgstr "Средняя:"
 
 msgid "B43 + B43C"
-msgstr ""
+msgstr "B43 + B43C"
 
 msgid "B43 + B43C + V43"
-msgstr ""
+msgstr "B43 + B43C + V43"
 
 msgid "BR / DMR / AFTR"
-msgstr ""
+msgstr "BR / DMR / AFTR"
 
 msgid "BSSID"
 msgstr "BSSID"
@@ -494,19 +511,19 @@ msgid "Back"
 msgstr "Назад"
 
 msgid "Back to Overview"
-msgstr "Ð\9dазад Ðº Ð¾Ð±Ð·Ð¾Ñ\80Ñ\83"
+msgstr "Ð\9dазад Ð² Ð¼ÐµÐ½Ñ\8e"
 
 msgid "Back to configuration"
 msgstr "Назад к настройке"
 
 msgid "Back to overview"
-msgstr "Ð\9dазад Ðº Ð¾Ð±Ð·Ð¾Ñ\80Ñ\83"
+msgstr "назад Ð² Ð¼ÐµÐ½Ñ\8e"
 
 msgid "Back to scan results"
-msgstr "Назад к результатам сканирования"
+msgstr "Назад к результатам поиска"
 
 msgid "Backup / Flash Firmware"
-msgstr "РезеÑ\80внаÑ\8f ÐºÐ¾Ð¿Ð¸Ñ\8f / прошивка"
+msgstr "РезеÑ\80вное ÐºÐ¾Ð¿Ð¸Ñ\80ование / Ð\9fеÑ\80епрошивка"
 
 msgid "Backup / Restore"
 msgstr "Резервное копирование / Восстановление"
@@ -518,10 +535,10 @@ msgid "Bad address specified!"
 msgstr "Указан неправильный адрес!"
 
 msgid "Band"
-msgstr ""
+msgstr "Диапазон"
 
 msgid "Behind NAT"
-msgstr ""
+msgstr "За NAT-ом"
 
 msgid ""
 "Below is the determined list of files to backup. It consists of changed "
@@ -529,18 +546,19 @@ msgid ""
 "defined backup patterns."
 msgstr ""
 "Ниже приводится определённый список файлов для резервного копирования. Он "
-"состоит из изменённых конфигурационных файлов, отмеченных opkg, необходимых "
-"базовых файлов, а также шаблонов резервного копирования, определённых "
-"пользователем."
+"состоит из измененных config файлов, отмеченных opkg, необходимых базовых "
+"файлов, а также шаблонов резервного копирования, определенных пользователем."
 
 msgid "Bind interface"
-msgstr ""
+msgstr "Открытый интерфейс"
 
 msgid "Bind only to specific interfaces rather than wildcard address."
 msgstr ""
+"Соединение только с определенными интерфейсами, не использующими "
+"подстановочные адреса (wildcard)."
 
 msgid "Bind the tunnel to this interface (optional)."
-msgstr ""
+msgstr "Открытый туннель для этого интерфейса (необязательно)."
 
 msgid "Bitrate"
 msgstr "Скорость"
@@ -573,12 +591,12 @@ msgid ""
 "Build/distribution specific feed definitions. This file will NOT be "
 "preserved in any sysupgrade."
 msgstr ""
-
-msgid "Buttons"
-msgstr "Кнопки"
+"Build/distribution оригинальные feed-ы. Изменения в этом файле НЕ сохранятся "
+"при перепрошивке sysupgrade-совместимым образом."
 
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
+"CA сертификат; если отсутствует, будет сохранен после первого соединения."
 
 msgid "CPU usage (%)"
 msgstr "Загрузка ЦП (%)"
@@ -587,7 +605,7 @@ msgid "Cancel"
 msgstr "Отменить"
 
 msgid "Category"
-msgstr ""
+msgstr "Категория"
 
 msgid "Chain"
 msgstr "Цепочка"
@@ -598,20 +616,30 @@ msgstr "Изменения"
 msgid "Changes applied."
 msgstr "Изменения приняты."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
-msgstr "Изменить пароль администратора для доступа к устройству"
+msgstr "Изменить пароль администратора для доступа к устройству."
 
 msgid "Channel"
 msgstr "Канал"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Проверить"
 
-msgid "Check fileystems before mount"
-msgstr ""
+msgid "Check filesystems before mount"
+msgstr "Проверка"
 
 msgid "Check this option to delete the existing networks from this radio."
 msgstr ""
+"Проверьте эту опцию, чтобы удалить существующие сети беспроводного "
+"устройства."
 
 msgid "Checksum"
 msgstr "Контрольная сумма"
@@ -622,32 +650,34 @@ msgid ""
 "fill out the <em>create</em> field to define a new zone and attach the "
 "interface to it."
 msgstr ""
-"Укажите зону, которую вы хотите прикрепить к этому интерфейсу. Выберите "
-"<em>не определено</em>, чтобы удалить этот интерфейс из зоны, или заполните "
-"поле <em>Ñ\81оздаÑ\82Ñ\8c</em>, Ñ\87Ñ\82обÑ\8b Ð¾Ð¿Ñ\80еделиÑ\82Ñ\8c Ð½Ð¾Ð²Ñ\83Ñ\8e Ð·Ð¾Ð½Ñ\83 Ð¸ Ð¿Ñ\80икÑ\80епиÑ\82Ñ\8c Ðº Ð½ÐµÐ¹ Ñ\8dÑ\82оÑ\82 "
-"интерфейс."
+"Укажите зону, которую вы хотите прикрепить к этому интерфейсу.<br />Выберите "
+"<em>'не определено'</em>, чтобы удалить этот интерфейс из зоны, или "
+"заполниÑ\82е Ð¿Ð¾Ð»Ðµ <em>'Ñ\81оздаÑ\82Ñ\8c'</em>, Ñ\87Ñ\82обÑ\8b Ð¾Ð¿Ñ\80еделиÑ\82Ñ\8c Ð½Ð¾Ð²Ñ\83Ñ\8e Ð·Ð¾Ð½Ñ\83 Ð¸ Ð¿Ñ\80икÑ\80епиÑ\82Ñ\8c "
+"к Ð½ÐµÐ¹ Ñ\8dÑ\82оÑ\82 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81."
 
 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>, чтобы определить новую сеть."
+"Выберите интерфейс или интерфейсы, которые вы хотите прикрепить к данной "
+"беспроводной сети или заполните поле <em>создать</em>, чтобы создать новый "
+"интерфейс."
 
 msgid "Cipher"
-msgstr "ШиÑ\84Ñ\80ование"
+msgstr "Ð\90лгоÑ\80иÑ\82м Ñ\88иÑ\84Ñ\80ованиÑ\8f"
 
 msgid "Cisco UDP encapsulation"
-msgstr ""
+msgstr "формирование пакетов данных Cisco UDP "
 
 msgid ""
 "Click \"Generate archive\" to download a tar archive of the current "
 "configuration files. To reset the firmware to its initial state, click "
 "\"Perform reset\" (only possible with squashfs images)."
 msgstr ""
-"Нажмите \"Создать архив\", чтобы загрузить tar-архив текущих "
-"конфигурационных файлов. Для сброса настроек прошивки к исходному состоянию "
-"нажмите \"Выполнить сброс\" (возможно только для squashfs-образов)."
+"Нажмите 'Создать архив', чтобы загрузить tar-архив текущих config файлов "
+"прошивки устройства, таким образом вы сохраните его настройки. Для сброса "
+"настроек прошивки к исходному состоянию нажмите 'Выполнить сброс' (возможно "
+"только для squashfs-образов)."
 
 msgid "Client"
 msgstr "Клиент"
@@ -660,19 +690,19 @@ msgid ""
 "persist connection"
 msgstr ""
 "Завершать неактивное соединение после заданного интервала (сек.), "
-"используйте значение 0 для удержания неактивного соединения"
+"используйте значение 0 для удержания неактивного соединения."
 
 msgid "Close list..."
 msgstr "Закрыть список..."
 
 msgid "Collecting data..."
-msgstr "СбоÑ\80 Ð¸Ð½Ñ\84оÑ\80маÑ\86ии..."
+msgstr "СбоÑ\80 Ð´Ð°Ð½Ð½Ñ\8bÑ\85..."
 
 msgid "Command"
 msgstr "Команда"
 
 msgid "Common Configuration"
-msgstr "Ð\9eбÑ\89аÑ\8f ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86иÑ\8f"
+msgstr "Ð\9eбÑ\89ие Ð½Ð°Ñ\81Ñ\82Ñ\80ойки"
 
 msgid ""
 "Complicates key reinstallation attacks on the client side by disabling "
@@ -680,15 +710,22 @@ msgid ""
 "workaround might cause interoperability issues and reduced robustness of key "
 "negotiation especially in environments with heavy traffic load."
 msgstr ""
+"Усложняет атаки на переустановку ключа на стороне клиента, отключая "
+"ретрансляцию фреймов EAPOL-Key, которые используются для установки ключей. "
+"Может вызвать проблемы совместимости и снижение надежности согласования "
+"нового ключа, при наличии большого трафика."
 
 msgid "Configuration"
-msgstr "Конфигурация"
-
-msgid "Configuration applied."
-msgstr "Конфигурация применена."
+msgstr "Настройка config файла"
 
 msgid "Configuration files will be kept."
-msgstr "Конфигурационные файлы будут сохранены."
+msgstr "Config файлы будут сохранены."
+
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
 
 msgid "Confirmation"
 msgstr "Подтверждение пароля"
@@ -703,11 +740,17 @@ msgid "Connection Limit"
 msgstr "Ограничение соединений"
 
 msgid "Connection to server fails when TLS cannot be used"
-msgstr ""
+msgstr "Связь с сервером прерывается, когда TLS не может быть использован"
 
 msgid "Connections"
 msgstr "Соединения"
 
+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 ""
+
 msgid "Country"
 msgstr "Страна"
 
@@ -721,7 +764,7 @@ msgid "Cover the following interfaces"
 msgstr "Включить следующие интерфейсы"
 
 msgid "Create / Assign firewall-zone"
-msgstr "Создать / назначить зону сетевого экрана"
+msgstr "Создать / назначить<br />зону сетевого экрана"
 
 msgid "Create Interface"
 msgstr "Создать интерфейс"
@@ -733,27 +776,35 @@ msgid "Critical"
 msgstr "Критическая ситуация"
 
 msgid "Cron Log Level"
-msgstr "УÑ\80овенÑ\8c Ð²Ñ\8bвода Cron"
+msgstr "Ð\97апиÑ\81Ñ\8c Ñ\81обÑ\8bÑ\82ий Cron"
 
 msgid "Custom Interface"
 msgstr "Пользовательский интерфейс"
 
 msgid "Custom delegated IPv6-prefix"
-msgstr ""
+msgstr "Установленный пользователем IPv6-prefix"
 
 msgid ""
 "Custom feed definitions, e.g. private feeds. This file can be preserved in a "
 "sysupgrade."
 msgstr ""
+"Custom-ные feed-ы - это пользовательские feed-ы. Этот файл может быть "
+"сохранен при перепрошивке sysupgrade-совместимым образом."
 
 msgid "Custom feeds"
+msgstr "Список custom-ных feed-ов"
+
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
 msgstr ""
 
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
 msgstr ""
-"Настройка поведения <abbr title=\"Светодиод\">LED</abbr> если это возможно."
+"Настройка поведения светодиодной индикации <abbr title=\"Светодиод\">LED</"
+"abbr>s устройства, если это возможно."
 
 msgid "DHCP Leases"
 msgstr "Аренды DHCP"
@@ -774,49 +825,49 @@ msgid "DHCPv6 Leases"
 msgstr "Аренды DHCPv6"
 
 msgid "DHCPv6 client"
-msgstr ""
+msgstr "DHCPv6 клиент"
 
 msgid "DHCPv6-Mode"
-msgstr ""
+msgstr "DHCPv6-Режим"
 
 msgid "DHCPv6-Service"
-msgstr ""
+msgstr "DHCPv6-Сервис"
 
 msgid "DNS"
 msgstr "DNS"
 
 msgid "DNS forwardings"
-msgstr "Перенаправление запросов DNS"
+msgstr "Перенаправление<br />запросов DNS"
 
 msgid "DNS-Label / FQDN"
-msgstr ""
+msgstr "DNS-Label / FQDN"
 
 msgid "DNSSEC"
-msgstr ""
+msgstr "DNSSEC"
 
 msgid "DNSSEC check unsigned"
-msgstr ""
+msgstr "DNSSEC проверка без знака"
 
 msgid "DPD Idle Timeout"
-msgstr ""
+msgstr "DPD время простоя"
 
 msgid "DS-Lite AFTR address"
-msgstr ""
+msgstr "DS-Lite AFTR-адрес"
 
 msgid "DSL"
-msgstr ""
+msgstr "DSL"
 
 msgid "DSL Status"
-msgstr ""
+msgstr "Состояние DSL"
 
 msgid "DSL line mode"
-msgstr ""
+msgstr "DSL линейный режим"
 
 msgid "DUID"
 msgstr "DUID"
 
 msgid "Data Rate"
-msgstr ""
+msgstr "Скорость передачи данных"
 
 msgid "Debug"
 msgstr "Отладка"
@@ -828,10 +879,10 @@ msgid "Default gateway"
 msgstr "Шлюз по умолчанию"
 
 msgid "Default is stateless + stateful"
-msgstr ""
+msgstr "Значение по умолчанию - 'stateless + stateful'."
 
 msgid "Default route"
-msgstr ""
+msgstr "Маршрут по умолчанию"
 
 msgid "Default state"
 msgstr "Начальное состояние"
@@ -861,28 +912,31 @@ msgid "Design"
 msgstr "Тема"
 
 msgid "Destination"
-msgstr "Ð\9dазнаÑ\87ение"
+msgstr "Ð\9dапÑ\80авление"
 
 msgid "Device"
 msgstr "Устройство"
 
 msgid "Device Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f устройства"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка устройства"
 
 msgid "Device is rebooting..."
-msgstr ""
+msgstr "Перезагрузка..."
 
 msgid "Device unreachable"
+msgstr "Устройство недоступно"
+
+msgid "Device unreachable!"
 msgstr ""
 
 msgid "Diagnostics"
 msgstr "Диагностика"
 
 msgid "Dial number"
-msgstr ""
+msgstr "Dial номер"
 
 msgid "Directory"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f"
+msgstr "Ð\9fапка"
 
 msgid "Disable"
 msgstr "Отключить"
@@ -891,23 +945,26 @@ msgid ""
 "Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
 "this interface."
 msgstr ""
-"Ð\9eÑ\82клÑ\8eÑ\87иÑ\82Ñ\8c <abbr title=\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии Ñ\83зла\">DHCP</"
-"abbr> для этого интерфейса."
+"Ð\9eÑ\82клÑ\8eÑ\87иÑ\82Ñ\8c <abbr title=\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ñ\83зла\">DHCP</abbr> "
+"для этого интерфейса."
 
 msgid "Disable DNS setup"
-msgstr "Отключить настройку DNS"
+msgstr "Отключить DNS настройки"
 
 msgid "Disable Encryption"
-msgstr ""
+msgstr "Отключить шифрование"
 
 msgid "Disabled"
 msgstr "Отключено"
 
 msgid "Disabled (default)"
-msgstr ""
+msgstr "Отключено (по умолчанию)"
 
 msgid "Discard upstream RFC1918 responses"
-msgstr "Отбрасывать ответы RFC1918"
+msgstr "Отбрасывать ответы внешней сети RFC1918."
+
+msgid "Dismiss"
+msgstr ""
 
 msgid "Displaying only packages containing"
 msgstr "Показываются только пакеты, содержащие"
@@ -919,7 +976,7 @@ msgid "Distance to farthest network member in meters."
 msgstr "Расстояние до самого удалённого сетевого узла в метрах."
 
 msgid "Distribution feeds"
-msgstr ""
+msgstr "Список feed-ов дистрибутива"
 
 msgid "Diversity"
 msgstr "Разновидность антенн"
@@ -930,21 +987,21 @@ msgid ""
 "Forwarder for <abbr title=\"Network Address Translation\">NAT</abbr> "
 "firewalls"
 msgstr ""
-"Dnsmasq Ñ\81одеÑ\80жиÑ\82 Ð² Ñ\81ебе <abbr title=\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии узла"
+"Dnsmasq Ñ\81одеÑ\80жиÑ\82 Ð² Ñ\81ебе <abbr title=\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой Ð½Ð°Ñ\81Ñ\82Ñ\80ойки узла"
 "\">DHCP</abbr>-сервер и <abbr title=\"Служба доменных имён\">DNS</abbr>-"
 "прокси для сетевых экранов <abbr title=\"Преобразование сетевых адресов"
 "\">NAT</abbr>"
 
 msgid "Do not cache negative replies, e.g. for not existing domains"
-msgstr "Не кешировать отрицательные ответы, в т.ч. для несуществующих доменов"
+msgstr "Не кешировать отрицательные ответы, в т.ч. для несуществующих доменов."
 
 msgid "Do not forward requests that cannot be answered by public name servers"
 msgstr ""
 "Не перенаправлять запросы, которые не могут быть обработаны публичными DNS-"
-"серверами"
+"серверами."
 
 msgid "Do not forward reverse lookups for local networks"
-msgstr "Не перенаправлять обратные DNS-запросы для локальных сетей"
+msgstr "Не перенаправлять обратные DNS-запросы для локальных сетей."
 
 msgid "Domain required"
 msgstr "Требуется домен"
@@ -953,14 +1010,14 @@ msgid "Domain whitelist"
 msgstr "Белый список доменов"
 
 msgid "Don't Fragment"
-msgstr ""
+msgstr "Не фрагментировать"
 
 msgid ""
 "Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
 "<abbr title=\"Domain Name System\">DNS</abbr>-Name"
 msgstr ""
 "Не перенаправлять <abbr title=\"Служба доменных имён\">DNS</abbr>-запросы "
-"без <abbr title=\"Служба доменных имён\">DNS</abbr>-имени"
+"без <abbr title=\"Служба доменных имён\">DNS</abbr>-имени."
 
 msgid "Download and install package"
 msgstr "Загрузить и установить пакет"
@@ -969,25 +1026,24 @@ msgid "Download backup"
 msgstr "Загрузить резервную копию"
 
 msgid "Downstream SNR offset"
-msgstr ""
+msgstr "SNR offset внутренней сети"
 
 msgid "Dropbear Instance"
-msgstr "Dropbear"
+msgstr "Исключение Dropbear"
 
 msgid ""
 "Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
 "and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
 msgstr ""
 "Dropbear - это <abbr title=\"Secure Shell\">SSH</abbr>-сервер со встроенным "
-"<abbr title=\"Secure Copy\">SCP</abbr>"
+"<abbr title=\"Secure Copy\">SCP</abbr>."
 
 msgid "Dual-Stack Lite (RFC6333)"
-msgstr ""
+msgstr "Dual-Stack Lite (RFC6333)"
 
 msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
 msgstr ""
-"Динамический <abbr title=\"Протокол динамической конфигурации узла\">DHCP</"
-"abbr>"
+"Динамический <abbr title=\"Протокол динамической настройки узла\">DHCP</abbr>"
 
 msgid "Dynamic tunnel"
 msgstr "Динамический туннель"
@@ -1000,24 +1056,23 @@ msgstr ""
 "обслужены только клиенты с постоянно арендованными адресами."
 
 msgid "EA-bits length"
-msgstr ""
+msgstr "EA-bits длина"
 
 msgid "EAP-Method"
 msgstr "Метод EAP"
 
-# "Редактировать" длинно и не влазит по ширине в кнопку - текст наезжает на иконку
-#, fuzzy
 msgid "Edit"
-msgstr "РедакÑ\82иÑ\80овать"
+msgstr "Ð\98зменить"
 
 msgid ""
 "Edit the raw configuration data above to fix any error and hit \"Save\" to "
 "reload the page."
 msgstr ""
+"Изменить данные конфигурации raw выше, чтобы исправить любую ошибку и "
+"нажмите 'Сохранить', чтобы перезагрузить страницу."
 
-#, fuzzy
 msgid "Edit this interface"
-msgstr "РедакÑ\82иÑ\80овать этот интерфейс"
+msgstr "Ð\98зменить этот интерфейс"
 
 msgid "Edit this network"
 msgstr "Редактировать эту сеть"
@@ -1028,6 +1083,11 @@ msgstr "Чрезвычайная ситуация"
 msgid "Enable"
 msgstr "Включить"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Включить <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1035,7 +1095,7 @@ msgid "Enable HE.net dynamic endpoint update"
 msgstr "Включить динамическое обновление оконечной точки HE.net"
 
 msgid "Enable IPv6 negotiation"
-msgstr ""
+msgstr "Включить IPv6 negotiation"
 
 msgid "Enable IPv6 negotiation on the PPP link"
 msgstr "Включить IPv6-согласование на PPP-соединении"
@@ -1047,7 +1107,7 @@ msgid "Enable NTP client"
 msgstr "Включить NTP-клиент"
 
 msgid "Enable Single DES"
-msgstr ""
+msgstr "Включить Single DES"
 
 msgid "Enable TFTP server"
 msgstr "Включить TFTP-сервер"
@@ -1056,25 +1116,25 @@ msgid "Enable VLAN functionality"
 msgstr "Включить поддержку VLAN"
 
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
-msgstr ""
+msgstr "Включить WPS при нажатии на кнопку, в режиме WPA(2)-PSK"
 
 msgid "Enable key reinstallation (KRACK) countermeasures"
-msgstr ""
+msgstr "Включить защиту<br />от атаки KRACK"
 
 msgid "Enable learning and aging"
 msgstr "Включить изучение и устаревание (learning/aging)"
 
 msgid "Enable mirroring of incoming packets"
-msgstr ""
+msgstr "Включить отражение входящих пакетов"
 
 msgid "Enable mirroring of outgoing packets"
-msgstr ""
+msgstr "Включить отражение исходящих пакетов"
 
 msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
-msgstr ""
+msgstr "Включите флаг DF (не Фрагментировать) инкапсулирующих пакетов."
 
 msgid "Enable this mount"
-msgstr "Включить эту точку монтирования"
+msgstr "Включить эту<br />точку монтирования"
 
 msgid "Enable this swap"
 msgstr "Включить этот раздел подкачки"
@@ -1085,13 +1145,18 @@ msgstr "Включить/выключить"
 msgid "Enabled"
 msgstr "Включено"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
 msgstr ""
+"Включить быстрый роуминг между точками доступа, принадлежащими к тому же "
+"домену мобильности"
 
 msgid "Enables the Spanning Tree Protocol on this bridge"
-msgstr "Включает Spanning Tree Protocol на этом мосту"
+msgstr "Включает Spanning Tree Protocol на этом мосту."
 
 msgid "Encapsulation mode"
 msgstr "Режим инкапсуляции"
@@ -1100,10 +1165,10 @@ msgid "Encryption"
 msgstr "Шифрование"
 
 msgid "Endpoint Host"
-msgstr ""
+msgstr "Конечная точка Хоста"
 
 msgid "Endpoint Port"
-msgstr ""
+msgstr "Конечная точка Порта"
 
 msgid "Erasing..."
 msgstr "Стирание..."
@@ -1112,7 +1177,7 @@ msgid "Error"
 msgstr "Ошибка"
 
 msgid "Errored seconds (ES)"
-msgstr ""
+msgstr "Ошибочные секунды (ES)"
 
 msgid "Ethernet Adapter"
 msgstr "Ethernet-адаптер"
@@ -1121,7 +1186,7 @@ msgid "Ethernet Switch"
 msgstr "Ethernet-коммутатор"
 
 msgid "Exclude interfaces"
-msgstr ""
+msgstr "Исключите интерфейсы"
 
 msgid "Expand hosts"
 msgstr "Расширять имена узлов"
@@ -1129,41 +1194,43 @@ msgstr "Расширять имена узлов"
 msgid "Expires"
 msgstr "Истекает"
 
-#, fuzzy
 msgid ""
 "Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
 msgstr ""
-"Время, через которое истекает аренда адреса, минимум 2 минуты (<code>2m</"
-"code>)."
+"Время истечения срока аренды арендованных адресов, минимум 2 минуты "
+"(<code>2m</code>)."
 
 msgid "External"
-msgstr ""
+msgstr "Внешний"
 
 msgid "External R0 Key Holder List"
-msgstr ""
+msgstr "Внешний R0 Key Holder List"
 
 msgid "External R1 Key Holder List"
-msgstr ""
+msgstr "Внешний R0 Key Holder List"
 
 msgid "External system log server"
-msgstr "СеÑ\80веÑ\80 системного журнала"
+msgstr "Ð\92неÑ\88ний Ñ\81еÑ\80веÑ\80<br />системного журнала"
 
 msgid "External system log server port"
-msgstr "Порт сервера системного журнала"
+msgstr "Порт внешнего сервера системного журнала"
 
 msgid "External system log server protocol"
-msgstr ""
+msgstr "Внешний протокол<br /> лог-сервера"
 
 msgid "Extra SSH command options"
-msgstr ""
+msgstr "Дополнительные опции команды SSH"
 
 msgid "FT over DS"
-msgstr ""
+msgstr "FT над DS"
 
 msgid "FT over the Air"
-msgstr ""
+msgstr "FT над the Air"
 
 msgid "FT protocol"
+msgstr "FT протокол"
+
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
 msgstr ""
 
 msgid "File"
@@ -1188,6 +1255,9 @@ msgid ""
 "Find all currently attached filesystems and swap and replace configuration "
 "with defaults based on what was detected"
 msgstr ""
+"Найти все разделы включая swap и изменить config файл fstab с дефолтными "
+"значениями всех обнаруженных разделов, т.е. выполнить команду 'block detect "
+"> /etc/config/fstab'."
 
 msgid "Find and join network"
 msgstr "Найти и присоединиться к сети"
@@ -1202,22 +1272,22 @@ msgid "Firewall"
 msgstr "Межсетевой экран"
 
 msgid "Firewall Mark"
-msgstr ""
+msgstr "Метка межсетевого экрана"
 
 msgid "Firewall Settings"
 msgstr "Настройки межсетевого экрана"
 
 msgid "Firewall Status"
-msgstr "Статус межсетевого экрана"
+msgstr "Состояние межсетевого экрана"
 
 msgid "Firmware File"
-msgstr ""
+msgstr "Файл прошивки"
 
 msgid "Firmware Version"
 msgstr "Версия прошивки"
 
 msgid "Fixed source port for outbound DNS queries"
-msgstr "Фиксированный порт для исходящих DNS-запросов"
+msgstr "Фиксированный порт для исходящих DNS-запросов."
 
 msgid "Flash Firmware"
 msgstr "Установить прошивку"
@@ -1234,40 +1304,42 @@ msgstr "Операции с прошивкой"
 msgid "Flashing..."
 msgstr "Прошивка..."
 
-# Force DHCP on the network
 msgid "Force"
-msgstr "Ð\9fÑ\80инÑ\83диÑ\82елÑ\8cно"
+msgstr "Ð\9dазнаÑ\87иÑ\82Ñ\8c"
 
 msgid "Force CCMP (AES)"
-msgstr "ТÑ\80ебовать CCMP (AES)"
+msgstr "Ð\9dазнаÑ\87ить CCMP (AES)"
 
 msgid "Force DHCP on this network even if another server is detected."
-msgstr "Ð\98Ñ\81полÑ\8cзовать DHCP в этой сети, даже если найден другой сервер."
+msgstr "Ð\9dазнаÑ\87ить DHCP в этой сети, даже если найден другой сервер."
 
 msgid "Force TKIP"
-msgstr "ТÑ\80ебовать TKIP"
+msgstr "Ð\9dазнаÑ\87ить TKIP"
 
 msgid "Force TKIP and CCMP (AES)"
-msgstr "TKIP или CCMP (AES)"
+msgstr "Назначить TKIP и CCMP (AES)"
 
 msgid "Force link"
-msgstr ""
+msgstr "Активировать соединение"
 
 msgid "Force use of NAT-T"
-msgstr ""
+msgstr "Принудительно использовать NAT-T"
 
 msgid "Form token mismatch"
-msgstr ""
+msgstr "Несоответствие маркеров формы"
 
 msgid "Forward DHCP traffic"
 msgstr "Перенаправлять трафик DHCP"
 
 msgid "Forward Error Correction Seconds (FECS)"
-msgstr ""
+msgstr "Секунды прямой коррекции ошибок (FECS)"
 
 msgid "Forward broadcast traffic"
 msgstr "Перенаправлять широковещательный траффик"
 
+msgid "Forward mesh peer traffic"
+msgstr "Перенаправлять запросы трафика Mesh"
+
 msgid "Forwarding mode"
 msgstr "Режим перенаправления"
 
@@ -1287,6 +1359,8 @@ msgid ""
 "Further information about WireGuard interfaces and peers at <a href=\"http://"
 "wireguard.io\">wireguard.io</a>."
 msgstr ""
+"Дополнительная информация о интерфейсах и партнерах WireGuard приведена в <a "
+"href=\"http://wireguard.io\">wireguard.io</a>."
 
 msgid "GHz"
 msgstr "ГГц"
@@ -1307,13 +1381,13 @@ msgid "General Setup"
 msgstr "Основные настройки"
 
 msgid "General options for opkg"
-msgstr ""
+msgstr "Основные настройки opkg."
 
 msgid "Generate Config"
-msgstr ""
+msgstr "Создать config"
 
 msgid "Generate PMK locally"
-msgstr ""
+msgstr "Создать PMK локально"
 
 msgid "Generate archive"
 msgstr "Создать архив"
@@ -1325,51 +1399,47 @@ msgid "Given password confirmation did not match, password not changed!"
 msgstr "Введённые пароли не совпадают, пароль не изменён!"
 
 msgid "Global Settings"
-msgstr ""
+msgstr "Основные настройки"
 
 msgid "Global network options"
-msgstr ""
+msgstr "Основные настройки сети"
 
 msgid "Go to password configuration..."
 msgstr "Перейти к настройке пароля..."
 
 msgid "Go to relevant configuration page"
-msgstr "Ð\9fеÑ\80ейÑ\82и Ðº Ñ\81Ñ\82Ñ\80аниÑ\86е ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии"
+msgstr "Ð\9fеÑ\80ейÑ\82и Ðº Ñ\81Ñ\82Ñ\80аниÑ\86е Ð½Ð°Ñ\81Ñ\82Ñ\80ойки"
 
 msgid "Group Password"
-msgstr ""
+msgstr "Групповой пароль"
 
 msgid "Guest"
-msgstr ""
+msgstr "Гость"
 
 msgid "HE.net password"
 msgstr "Пароль HE.net"
 
 msgid "HE.net username"
-msgstr ""
+msgstr "HE.net логин"
 
 msgid "HT mode (802.11n)"
-msgstr ""
-
-msgid "Handler"
-msgstr "Обработчик"
+msgstr "HT режим (802.11n)"
 
-# Вообще, SIGHUP означает, что "пользователь отключился от терминала". Но чаще всего сигнал используется для перезапуска, так что переведу именно так.
 msgid "Hang Up"
 msgstr "Перезапустить"
 
 msgid "Header Error Code Errors (HEC)"
-msgstr ""
+msgstr "Ошибки кода ошибки заголовка (HEC)"
 
 msgid "Heartbeat"
-msgstr ""
+msgstr "Heartbeat"
 
 msgid ""
 "Here you can configure the basic aspects of your device like its hostname or "
 "the timezone."
 msgstr ""
-"Ð\97деÑ\81Ñ\8c Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð½Ð°Ñ\81Ñ\82Ñ\80оиÑ\82Ñ\8c Ð¾Ñ\81новнÑ\8bе Ð¿Ð°Ñ\80амеÑ\82Ñ\80Ñ\8b Ð²Ð°Ñ\88его Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва Ñ\82акие ÐºÐ°Ðº Ð¸Ð¼Ñ\8f "
-"хоста или часовой пояс."
+"Ð\9dа Ñ\81Ñ\82Ñ\80аниÑ\86е Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð½Ð°Ñ\81Ñ\82Ñ\80оиÑ\82Ñ\8c Ð¾Ñ\81новнÑ\8bе Ð¿Ð°Ñ\80амеÑ\82Ñ\80Ñ\8b Ð²Ð°Ñ\88его Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва, Ñ\82акие "
+"как имя хоста или часовой пояс."
 
 msgid ""
 "Here you can paste public SSH-Keys (one per line) for SSH public-key "
@@ -1385,16 +1455,16 @@ msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Скрыть <abbr title=\"Расширенный идентификатор сети\">ESSID</abbr>"
 
 msgid "Host"
-msgstr ""
+msgstr "Хост"
 
 msgid "Host entries"
-msgstr "Ð\97апиÑ\81и хостов"
+msgstr "СпиÑ\81ок хостов"
 
 msgid "Host expiry timeout"
-msgstr "ТаймаÑ\83Ñ\82 хоста"
+msgstr "Ð\92Ñ\80емÑ\8f Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ\8f хоста"
 
 msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
-msgstr "<abbr title=\"Ð\90дÑ\80еÑ\81 Ð¸нтернет протокола\">IP</abbr>-адрес или сеть"
+msgstr "<abbr title=\"Ð\90дÑ\80еÑ\81 Ð\98нтернет протокола\">IP</abbr>-адрес или сеть"
 
 msgid "Hostname"
 msgstr "Имя хоста"
@@ -1406,13 +1476,13 @@ msgid "Hostnames"
 msgstr "Имена хостов"
 
 msgid "Hybrid"
-msgstr ""
+msgstr "Гибрид"
 
 msgid "IKE DH Group"
-msgstr ""
+msgstr "IKE DH Group"
 
 msgid "IP Addresses"
-msgstr ""
+msgstr "IP-Адреса"
 
 msgid "IP address"
 msgstr "IP-адрес"
@@ -1424,7 +1494,7 @@ msgid "IPv4 Firewall"
 msgstr "Межсетевой экран IPv4"
 
 msgid "IPv4 WAN Status"
-msgstr "Статус IPv4 WAN"
+msgstr "Состояние IPv4 WAN"
 
 msgid "IPv4 address"
 msgstr "IPv4-адрес"
@@ -1433,10 +1503,10 @@ msgid "IPv4 and IPv6"
 msgstr "IPv4 и IPv6"
 
 msgid "IPv4 assignment length"
-msgstr ""
+msgstr "IPv4 assignment length"
 
 msgid "IPv4 broadcast"
-msgstr "Широковещательный IPv4-адрес"
+msgstr "Широковещательный<br />IPv4-адрес"
 
 msgid "IPv4 gateway"
 msgstr "IPv4-адрес шлюза"
@@ -1448,7 +1518,7 @@ msgid "IPv4 only"
 msgstr "Только IPv4"
 
 msgid "IPv4 prefix"
-msgstr ""
+msgstr "IPv4 префикс"
 
 msgid "IPv4 prefix length"
 msgstr "Длина префикса IPv4"
@@ -1457,7 +1527,7 @@ msgid "IPv4-Address"
 msgstr "IPv4-адрес"
 
 msgid "IPv4-in-IPv4 (RFC2003)"
-msgstr ""
+msgstr "IPv4-in-IPv4 (RFC2003)"
 
 msgid "IPv6"
 msgstr "IPv6"
@@ -1466,28 +1536,29 @@ msgid "IPv6 Firewall"
 msgstr "Межсетевой экран IPv6"
 
 msgid "IPv6 Neighbours"
-msgstr ""
+msgstr "IPv6 Neighbours"
 
 msgid "IPv6 Settings"
-msgstr ""
+msgstr "IPv6 Настройки"
 
 msgid "IPv6 ULA-Prefix"
-msgstr ""
+msgstr "IPv6 ULA-Prefix"
 
 msgid "IPv6 WAN Status"
-msgstr "Статус IPv6 WAN"
+msgstr "Состояние IPv6 WAN"
 
 msgid "IPv6 address"
 msgstr "IPv6-адрес"
 
 msgid "IPv6 address delegated to the local tunnel endpoint (optional)"
 msgstr ""
+"IPv6-адрес, делегированный локальной конечной точке туннеля (необязательно)."
 
 msgid "IPv6 assignment hint"
-msgstr ""
+msgstr "IPv6 подсказка присвоения"
 
 msgid "IPv6 assignment length"
-msgstr ""
+msgstr "IPv6 назначение длины"
 
 msgid "IPv6 gateway"
 msgstr "IPv6-адрес шлюза"
@@ -1502,16 +1573,16 @@ msgid "IPv6 prefix length"
 msgstr "Длина префикса IPv6"
 
 msgid "IPv6 routed prefix"
-msgstr ""
+msgstr "IPv6 направление префикса"
 
 msgid "IPv6 suffix"
-msgstr ""
+msgstr "IPv6 суффикс"
 
 msgid "IPv6-Address"
 msgstr "IPv6-адрес"
 
 msgid "IPv6-PD"
-msgstr ""
+msgstr "IPv6-PD"
 
 msgid "IPv6-in-IPv4 (RFC4213)"
 msgstr "IPv6 в IPv4 (RFC4213)"
@@ -1526,29 +1597,29 @@ msgid "Identity"
 msgstr "Идентификация EAP"
 
 msgid "If checked, 1DES is enabled"
-msgstr ""
+msgstr "Если выбрано, что 1DES включено"
 
 msgid "If checked, encryption is disabled"
-msgstr ""
+msgstr "Если проверено, что шифрование выключено"
 
 msgid ""
 "If specified, mount the device by its UUID instead of a fixed device node"
 msgstr ""
-"Если выбрано, монтировать устройство, используя его UUID, вместо "
-"фиксированного файла устройства"
+"Если выбрано монтировать устройство используя его UUID, вместо "
+"фиксированного файла устройства."
 
 msgid ""
 "If specified, mount the device by the partition label instead of a fixed "
 "device node"
 msgstr ""
-"Если выбрано, монтировать устройство, используя название его раздела, вместо "
-"фиксированного файла устройства"
+"Если выбрано монтировать устройство используя название его раздела, вместо "
+"фиксированного файла устройства."
 
 msgid "If unchecked, no default route is configured"
-msgstr "Если не выбрано, то маршрут по умолчанию не настраивается"
+msgstr "Если не выбрано, то маршрут по умолчанию не настраивается."
 
 msgid "If unchecked, the advertised DNS server addresses are ignored"
-msgstr "Если не выбрано, то извещаемые адреса DNS-серверов игнорируются"
+msgstr "Если не выбрано, то извещаемые адреса DNS серверов игнорируются."
 
 msgid ""
 "If your physical memory is insufficient unused data can be temporarily "
@@ -1559,19 +1630,19 @@ msgid ""
 msgstr ""
 "Если физической памяти не достаточно, то неиспользуемые данные могут быть "
 "временно перемещены в раздел подкачки, что в свою очередь приведет к "
-"увеличению объёму свободной <abbr title=\"Random Access Memory\">RAM</abbr>. "
-"Однако, перемещение в файл - это достаточно долгий процесс, так как "
+"увеличению объёму свободной <abbr title=\"Random Access Memory\">RAM</abbr>."
+"<br />Однако, перемещение в файл - это достаточно долгий процесс, так как "
 "устройство, на котором располагается раздел подкачки, работает гораздо "
 "медленнее, чем <abbr title=\"Random Access Memory\">RAM</abbr>."
 
 msgid "Ignore <code>/etc/hosts</code>"
-msgstr "Ignore <code>/etc/hosts</code>"
+msgstr "Игнорировать<br /><code>/etc/hosts</code>"
 
 msgid "Ignore interface"
 msgstr "Игнорировать интерфейс"
 
 msgid "Ignore resolve file"
-msgstr "Игнорировать файл resolv"
+msgstr "Игнорировать<br />файл resolv"
 
 msgid "Image"
 msgstr "Образ"
@@ -1583,9 +1654,12 @@ msgid ""
 "In order to prevent unauthorized access to the system, your request has been "
 "blocked. Click \"Continue »\" below to return to the previous page."
 msgstr ""
+"Для предотвращения несанкционированного доступа к системе ваш запрос "
+"заблокирован. Нажмите кнопку 'Продолжить' ниже, чтобы вернуться на "
+"предыдущую страницу."
 
 msgid "Inactivity timeout"
-msgstr "ТаймаÑ\83Ñ\82 бездействия"
+msgstr "Ð\9fÑ\80омежÑ\83Ñ\82ок Ð²Ñ\80емени бездействия"
 
 msgid "Inbound:"
 msgstr "Входящий:"
@@ -1603,7 +1677,7 @@ msgid "Install"
 msgstr "Установить"
 
 msgid "Install iputils-traceroute6 for IPv6 traceroute"
-msgstr ""
+msgstr "Для IPv6, установите пакет iputils-traceroute6."
 
 msgid "Install package %q"
 msgstr "Установить пакет %q"
@@ -1618,13 +1692,13 @@ msgid "Interface"
 msgstr "Интерфейс"
 
 msgid "Interface %q device auto-migrated from %q to %q."
-msgstr ""
+msgstr "Интерфейс %q устройство авт.перемещается из %q в %q."
 
 msgid "Interface Configuration"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81а"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ñ\81еÑ\82и"
 
 msgid "Interface Overview"
-msgstr "Ð\9eбзоÑ\80 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81а"
+msgstr "СпиÑ\81ок Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81ов"
 
 msgid "Interface is reconnecting..."
 msgstr "Интерфейс переподключается..."
@@ -1633,7 +1707,7 @@ msgid "Interface is shutting down..."
 msgstr "Интерфейс отключается..."
 
 msgid "Interface name"
-msgstr ""
+msgstr "Имя интерфейса"
 
 msgid "Interface not present or not connected yet."
 msgstr "Интерфейс не существует или пока не подключен."
@@ -1648,13 +1722,13 @@ msgid "Interfaces"
 msgstr "Интерфейсы"
 
 msgid "Internal"
-msgstr ""
+msgstr "Внутренний"
 
 msgid "Internal Server Error"
 msgstr "Внутренняя ошибка сервера"
 
 msgid "Invalid"
-msgstr "Ð\92ведÑ\91нное Ð·Ð½Ð°Ñ\87ение Ð½Ðµ верно"
+msgstr "Ð\9dеверно"
 
 msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
 msgstr ""
@@ -1665,30 +1739,29 @@ msgid "Invalid VLAN ID given! Only unique IDs are allowed"
 msgstr "Указан неверный VLAN ID! Доступны только уникальные ID"
 
 msgid "Invalid username and/or password! Please try again."
-msgstr "Ð\9dевеÑ\80нÑ\8bй Ð»Ð¾Ð³Ð¸Ð½ Ð¸/или Ð¿Ð°Ñ\80олÑ\8c! Ð\9fожалÑ\83йÑ\81Ñ\82а Ð¿Ð¾Ð¿Ñ\80обÑ\83йÑ\82е Ñ\81нова."
+msgstr "Неверный логин и/или пароль! Попробуйте снова."
 
 msgid "Isolate Clients"
-msgstr ""
+msgstr "Изолировать клиентов"
 
-#, fuzzy
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
 "flash memory, please verify the image file!"
 msgstr ""
-"Ð\92Ñ\8b Ð¿Ñ\8bÑ\82аеÑ\82еÑ\81Ñ\8c Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ\82Ñ\8c Ð¿Ñ\80оÑ\88ивкÑ\83 Ñ\84айлом, ÐºÐ¾Ñ\82оÑ\80Ñ\8bй Ð½Ðµ Ð¿Ð¾Ð¼ÐµÑ\89аеÑ\82Ñ\81Ñ\8f Ð² Ð¿Ð°Ð¼Ñ\8fÑ\82Ñ\8c "
-"устройства! Пожалуйста, проверьте файл образа."
+"Ð\9eказалоÑ\81Ñ\8c, Ñ\87Ñ\82о Ð²Ñ\8b Ð¿Ñ\8bÑ\82аеÑ\82еÑ\81Ñ\8c Ð¿Ñ\80оÑ\88иÑ\82Ñ\8c Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82во Ð¿Ñ\80оÑ\88ивкой, ÐºÐ¾Ñ\82оÑ\80аÑ\8f Ð¿Ð¾ Ñ\80азмеÑ\80Ñ\83 "
+"не помещается в чип флэш-памяти, проверьте ваш файл прошивки!"
 
 msgid "JavaScript required!"
-msgstr "Требуется JavaScript!"
+msgstr "Требуется Java скрипт!"
 
 msgid "Join Network"
 msgstr "Подключение к сети"
 
 msgid "Join Network: Wireless Scan"
-msgstr "Ð\9fодклÑ\8eÑ\87ение Ðº Ñ\81еÑ\82и: Ñ\81каниÑ\80ование"
+msgstr "Ð\9dайденнÑ\8bе Ñ\82оÑ\87ки Ð´Ð¾Ñ\81Ñ\82Ñ\83па Wi-Fi"
 
 msgid "Joining Network: %q"
-msgstr ""
+msgstr "Подключение к сети: %q"
 
 msgid "Keep settings"
 msgstr "Сохранить настройки"
@@ -1700,7 +1773,7 @@ msgid "Kernel Version"
 msgstr "Версия ядра"
 
 msgid "Key"
-msgstr "Ð\9aлÑ\8eÑ\87"
+msgstr "Ð\9fаÑ\80олÑ\8c (клÑ\8eÑ\87)"
 
 msgid "Key #%d"
 msgstr "Ключ №%d"
@@ -1733,13 +1806,13 @@ msgid "Language and Style"
 msgstr "Язык и тема"
 
 msgid "Latency"
-msgstr ""
+msgstr "Задержка"
 
 msgid "Leaf"
-msgstr ""
+msgstr "Лист"
 
 msgid "Lease time"
-msgstr ""
+msgstr "Время аренды адреса"
 
 msgid "Lease validity time"
 msgstr "Срок действия аренды"
@@ -1751,34 +1824,34 @@ msgid "Leasetime remaining"
 msgstr "Оставшееся время аренды"
 
 msgid "Leave empty to autodetect"
-msgstr "Оставьте поле пустым для автоопределения"
+msgstr "Оставьте поле пустым для автоопределения."
 
 msgid "Leave empty to use the current WAN address"
 msgstr "Оставьте пустым для использования текущего адреса WAN"
 
 msgid "Legend:"
-msgstr "Ð\9bегенда:"
+msgstr "СобÑ\8bÑ\82иÑ\8f:"
 
 msgid "Limit"
 msgstr "Предел"
 
 msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
-msgstr ""
+msgstr "Ограничение сервиса DNS, для подсетей интерфейса используещего DNS."
 
 msgid "Limit listening to these interfaces, and loopback."
-msgstr ""
+msgstr "Ограничьте прослушивание этих интерфейсов и замыкание на себя."
 
 msgid "Line Attenuation (LATN)"
-msgstr ""
+msgstr "Затухание линии (LATN)"
 
 msgid "Line Mode"
-msgstr ""
+msgstr "Режим линии"
 
 msgid "Line State"
-msgstr ""
+msgstr "Состояние Линии"
 
 msgid "Line Uptime"
-msgstr ""
+msgstr "Время бесперебойной работы линии"
 
 msgid "Link On"
 msgstr "Подключение"
@@ -1788,7 +1861,7 @@ msgid ""
 "requests to"
 msgstr ""
 "Список <abbr title=\"Domain Name System\">DNS</abbr>-серверов для "
-"перенаправления запросов"
+"перенаправления запросов."
 
 msgid ""
 "List of R0KHs in the same Mobility Domain. <br />Format: MAC-address,NAS-"
@@ -1797,6 +1870,11 @@ msgid ""
 "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."
 
 msgid ""
 "List of R1KHs in the same Mobility Domain. <br />Format: MAC-address,R1KH-ID "
@@ -1805,27 +1883,34 @@ msgid ""
 "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 ключи."
 
 msgid "List of SSH key files for auth"
-msgstr ""
+msgstr "Список файлов ключей SSH для авторизации."
 
 msgid "List of domains to allow RFC1918 responses for"
-msgstr "Список доменов, для которых разрешены ответы RFC1918"
+msgstr "Список доменов, для которых разрешены ответы RFC1918."
 
 msgid "List of hosts that supply bogus NX domain results"
-msgstr "Список хостов, поставляющих поддельные результаты домена NX"
+msgstr "Список хостов, поставляющих поддельные результаты домена NX."
 
 msgid "Listen Interfaces"
-msgstr ""
+msgstr "Интерфейс для входящих соединений"
 
 msgid "Listen Port"
-msgstr ""
+msgstr "Порт для входящих соединений"
 
 msgid "Listen only on the given interface or, if unspecified, on all"
-msgstr "Слушать только на данном интерфейсе или, если не определено, на всех"
+msgstr ""
+"Этот интерфейс работает с входящими соединениями или если интерфейс не "
+"задан, значит все интерфейсы."
 
 msgid "Listening port for inbound DNS queries"
-msgstr "Порт для входящих DNS-запросов"
+msgstr "Порт для входящих DNS-запросов."
 
 msgid "Load"
 msgstr "Загрузка"
@@ -1837,7 +1922,7 @@ msgid "Loading"
 msgstr "Загрузка"
 
 msgid "Local IP address to assign"
-msgstr ""
+msgstr "Присвоение локального IP адреса"
 
 msgid "Local IPv4 address"
 msgstr "Локальный IPv4-адрес"
@@ -1846,29 +1931,29 @@ msgid "Local IPv6 address"
 msgstr "Локальный IPv6-адрес"
 
 msgid "Local Service Only"
-msgstr ""
+msgstr "Только локальный DNS"
 
 msgid "Local Startup"
-msgstr "Ð\9bокалÑ\8cнаÑ\8f Ð·Ð°Ð³Ñ\80Ñ\83зка"
+msgstr "Ð\97апÑ\83Ñ\81к Ð¿Ð°ÐºÐµÑ\82ов Ð¸ Ñ\81лÑ\83жб Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f, Ð¿Ñ\80и Ð²ÐºÐ»Ñ\8eÑ\87ении Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва"
 
 msgid "Local Time"
-msgstr "Ð\9cеÑ\81Ñ\82ное время"
+msgstr "Ð\94аÑ\82а Ð¸ время"
 
 msgid "Local domain"
 msgstr "Локальный домен"
 
-#, fuzzy
 msgid ""
 "Local domain specification. Names matching this domain are never forwarded "
 "and are resolved from DHCP or hosts files only"
 msgstr ""
-"Определение локального домена. Имена в этом домене никогда не запрашиваются "
-"у DNS-сервера, а разрешаются на основе данных DHCP и файлов hosts"
+"Согласно требованиям, имена соответствующие этому домену, никогда не "
+"передаются.<br />И разрешаются только из файла DHCP(/etc/config/dhcp) или "
+"файла хостов (/etc/hosts)."
 
 msgid "Local domain suffix appended to DHCP names and hosts file entries"
 msgstr ""
-"Суффикс локального домена, который будет добавлен к DHCP-именам и записям из "
-"Ñ\84айлов hosts"
+"Суффикс локального домена, который будет добавлен к DHCP-именам и записи "
+"Ñ\84айла Ñ\85оÑ\81Ñ\82ов (/etc/hosts)."
 
 msgid "Local server"
 msgstr "Локальный сервер"
@@ -1884,16 +1969,16 @@ msgid "Localise queries"
 msgstr "Локализовывать запросы"
 
 msgid "Locked to channel %s used by: %s"
-msgstr ""
+msgstr "Блокировать канал %s используемый: %s"
 
 msgid "Log output level"
-msgstr "УÑ\80овенÑ\8c Ð²Ñ\8bвода"
+msgstr "Ð\97апиÑ\81Ñ\8c Ñ\81обÑ\8bÑ\82ий"
 
 msgid "Log queries"
-msgstr "Ð\97апиÑ\81Ñ\8bваÑ\82Ñ\8c Ð·Ð°Ð¿Ñ\80оÑ\81Ñ\8b Ð² Ð¶Ñ\83Ñ\80нал"
+msgstr "Ð\97апиÑ\81Ñ\8c Ð·Ð°Ð¿Ñ\80оÑ\81ов"
 
 msgid "Logging"
-msgstr "Ð\96Ñ\83Ñ\80налиÑ\80ование"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ð¶Ñ\83Ñ\80нала"
 
 msgid "Login"
 msgstr "Войти"
@@ -1902,7 +1987,7 @@ msgid "Logout"
 msgstr "Выйти"
 
 msgid "Loss of Signal Seconds (LOSS)"
-msgstr ""
+msgstr "Потеря сигнала в секундах (LOSS)"
 
 msgid "Lowest leased address as offset from the network address."
 msgstr "Минимальный адрес аренды."
@@ -1920,13 +2005,13 @@ msgid "MAC-List"
 msgstr "Список MAC"
 
 msgid "MAP / LW4over6"
-msgstr ""
+msgstr "MAP / LW4over6"
 
 msgid "MB/s"
 msgstr "МБ/с"
 
 msgid "MD5"
-msgstr ""
+msgstr "MD5"
 
 msgid "MHz"
 msgstr "МГц"
@@ -1938,32 +2023,33 @@ msgid ""
 "Make sure to clone the root filesystem using something like the commands "
 "below:"
 msgstr ""
+"Прежде чем перенести корень на внешний носитель, используйте команды "
+"приведенные ниже:"
 
 msgid "Manual"
-msgstr ""
+msgstr "Вручную"
 
 msgid "Max. Attainable Data Rate (ATTNDR)"
-msgstr ""
+msgstr "Max. Attainable Data Rate (ATTNDR)"
 
 msgid "Maximum allowed number of active DHCP leases"
-msgstr "Максимальное количество активных арендованных DHCP-адресов"
+msgstr "Максимальное количество активных арендованных DHCP-адресов."
 
 msgid "Maximum allowed number of concurrent DNS queries"
-msgstr "Максимально допустимое количество одновременных DNS-запросов"
+msgstr "Максимально допустимое количество одновременных DNS-запросов."
 
 msgid "Maximum allowed size of EDNS.0 UDP packets"
-msgstr "Максимально допустимый размер UDP пакетов-EDNS.0"
+msgstr "Максимально допустимый размер UDP пакетов-EDNS.0."
 
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Максимальное время ожидания готовности модема (секунды)"
 
-msgid "Maximum hold time"
-msgstr "Максимальное время удержания"
-
 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.)"
 
 msgid "Maximum number of leased addresses."
 msgstr "Максимальное количество арендованных адресов."
@@ -1972,69 +2058,68 @@ msgid "Mbit/s"
 msgstr "Мбит/с"
 
 msgid "Memory"
-msgstr "Ð\9fамÑ\8fÑ\82Ñ\8c"
+msgstr "Ð\9eпеÑ\80аÑ\82ивнаÑ\8f Ð¿Ð°Ð¼Ñ\8fÑ\82Ñ\8c (RAM)"
 
 msgid "Memory usage (%)"
 msgstr "Использование памяти (%)"
 
+msgid "Mesh Id"
+msgstr "Mesh ID"
+
 msgid "Metric"
 msgstr "Метрика"
 
-msgid "Minimum hold time"
-msgstr "Минимальное время удержания"
-
 msgid "Mirror monitor port"
-msgstr ""
+msgstr "Зеркальный порт наблюдения"
 
 msgid "Mirror source port"
-msgstr ""
+msgstr "Зеркальный исходящий порт"
 
 msgid "Missing protocol extension for proto %q"
 msgstr "Отсутствует расширение протокола %q"
 
 msgid "Mobility Domain"
-msgstr ""
+msgstr "Мобильный домен"
 
 msgid "Mode"
 msgstr "Режим"
 
 msgid "Model"
-msgstr ""
+msgstr "Модель"
 
 msgid "Modem device"
 msgstr "Модем"
 
 msgid "Modem init timeout"
-msgstr "ТаймаÑ\83Ñ\82 инициализации модема"
+msgstr "Ð\92Ñ\80емÑ\8f Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ\8f инициализации модема"
 
-# 802.11 monitor mode
 msgid "Monitor"
 msgstr "Монитор"
 
 msgid "Mount Entry"
-msgstr "ТоÑ\87ка Ð¼Ð¾Ð½Ñ\82иÑ\80ованиÑ\8f"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка config Ñ\84айла fstab (/etc/config/fstab)"
 
 msgid "Mount Point"
 msgstr "Точка монтирования"
 
 msgid "Mount Points"
-msgstr "ТоÑ\87ки Ð¼Ð¾Ð½Ñ\82иÑ\80ованиÑ\8f"
+msgstr "Ð\9cонÑ\82иÑ\80ование Ñ\80азделов"
 
 msgid "Mount Points - Mount Entry"
-msgstr "ТоÑ\87ки Ð¼Ð¾Ð½Ñ\82иÑ\80ованиÑ\8f - Ð\97апиÑ\81Ñ\8c"
+msgstr "ТоÑ\87ки Ð¼Ð¾Ð½Ñ\82иÑ\80ованиÑ\8f - Ð\9dаÑ\81Ñ\82Ñ\80ойка Ñ\80азделов"
 
 msgid "Mount Points - Swap Entry"
-msgstr "ТоÑ\87ки Ð¼Ð¾Ð½Ñ\82иÑ\80ованиÑ\8f - Ð\97апиÑ\81Ñ\8c Ð¿Ð¾Ð´ÐºÐ°Ñ\87ки"
+msgstr "ТоÑ\87ки Ð¼Ð¾Ð½Ñ\82иÑ\80ованиÑ\8f - Ð\9dаÑ\81Ñ\82Ñ\80ойка Swap"
 
 msgid ""
 "Mount Points define at which point a memory device will be attached to the "
 "filesystem"
 msgstr ""
-"Точки монтирования определяют, куда в файловой системе будет прикреплено "
-"запоминающее устройство"
+"Точки монтирования определяют, куда в файловой системе будут смонтированы "
+"разделы запоминающего устройства."
 
 msgid "Mount filesystems not specifically configured"
-msgstr ""
+msgstr "Монтирование не подготовленного раздела."
 
 msgid "Mount options"
 msgstr "Опции монтирования"
@@ -2043,10 +2128,10 @@ msgid "Mount point"
 msgstr "Точка монтирования"
 
 msgid "Mount swap not specifically configured"
-msgstr ""
+msgstr "Монтирование не подготовленного swap-а."
 
 msgid "Mounted file systems"
-msgstr "СмонÑ\82иÑ\80ованнÑ\8bе Ñ\84айловÑ\8bе Ñ\81иÑ\81Ñ\82емы"
+msgstr "СмонÑ\82иÑ\80ованнÑ\8bе Ñ\80азделы"
 
 msgid "Move down"
 msgstr "Переместить вниз"
@@ -2055,31 +2140,31 @@ msgid "Move up"
 msgstr "Переместить вверх"
 
 msgid "Multicast address"
-msgstr "Ð\90дÑ\80еÑ\81 Ð³Ñ\80Ñ\83пповой Ð¿ÐµÑ\80едаÑ\87и"
+msgstr "Ð\90дÑ\80еÑ\81 Ð¼Ñ\83лÑ\8cÑ\82ивеÑ\89аниÑ\8f"
 
 msgid "NAS ID"
-msgstr "Идентификатор NAS"
+msgstr "NAS ID"
 
 msgid "NAT-T Mode"
-msgstr ""
+msgstr "NAT-T режим"
 
 msgid "NAT64 Prefix"
-msgstr ""
+msgstr "NAT64 префикс"
 
 msgid "NCM"
-msgstr ""
+msgstr "NCM"
 
 msgid "NDP-Proxy"
-msgstr ""
+msgstr "NDP-прокси"
 
 msgid "NT Domain"
-msgstr ""
+msgstr "NT домен"
 
 msgid "NTP server candidates"
 msgstr "Список NTP-серверов"
 
 msgid "NTP sync time-out"
-msgstr ""
+msgstr "NTP синхронизация времени ожидания"
 
 msgid "Name"
 msgstr "Имя"
@@ -2115,7 +2200,7 @@ msgid "No DHCP Server configured for this interface"
 msgstr "DHCP-сервер не настроен для этого интерфейса"
 
 msgid "No NAT-T"
-msgstr ""
+msgstr "не NAT-T"
 
 msgid "No chains in this table"
 msgstr "Нет цепочек в этой таблице"
@@ -2127,7 +2212,7 @@ msgid "No information available"
 msgstr "Нет доступной информации"
 
 msgid "No negative cache"
-msgstr "Отключить кэш отрицательных ответов"
+msgstr "Отключить кэш<br />отрицательных ответов"
 
 msgid "No network configured on this device"
 msgstr "Не настроена сеть на устройстве"
@@ -2151,19 +2236,19 @@ msgid "Noise"
 msgstr "Шум"
 
 msgid "Noise Margin (SNR)"
-msgstr ""
+msgstr "Соотношение сигнал/шум (SNR)"
 
 msgid "Noise:"
 msgstr "Шум:"
 
 msgid "Non Pre-emtive CRC errors (CRC_P)"
-msgstr ""
+msgstr "Non Pre-emtive CRC errors (CRC_P)"
 
 msgid "Non-wildcard"
-msgstr ""
+msgstr "Не использовать wildcard"
 
 msgid "None"
-msgstr "Ð\9dеÑ\82"
+msgstr "Ð\9dиÑ\87его"
 
 msgid "Normal"
 msgstr "Нормально"
@@ -2178,10 +2263,10 @@ msgid "Not connected"
 msgstr "Не подключено"
 
 msgid "Note: Configuration files will be erased."
-msgstr "Примечание: конфигурационные файлы будут стёрты."
+msgstr "Примечание: config файлы будут удалены."
 
 msgid "Note: interface name length"
-msgstr ""
+msgstr "Внимание: длина имени интерфейса"
 
 msgid "Notice"
 msgstr "Заметка"
@@ -2189,6 +2274,9 @@ msgstr "Заметка"
 msgid "Nslookup"
 msgstr "DNS-запрос"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2196,9 +2284,12 @@ msgid "OPKG-Configuration"
 msgstr "Настройка OPKG"
 
 msgid "Obfuscated Group Password"
-msgstr ""
+msgstr "Obfuscated Group Password"
 
 msgid "Obfuscated Password"
+msgstr "Obfuscated Password"
+
+msgid "Obtain IPv6-Address"
 msgstr ""
 
 msgid "Off-State Delay"
@@ -2212,9 +2303,9 @@ msgid ""
 "<samp>INTERFACE.VLANNR</samp> (<abbr title=\"for example\">e.g.</abbr>: "
 "<samp>eth0.1</samp>)."
 msgstr ""
-"На этой странице вы можете настроить сетевые интерфейсы. Вы можете "
-"объединить несколько интерфейсов в мост, выбрав опцию \"Объединить в мост\" "
-"и Ð²Ð²ÐµÐ´Ñ\8f Ñ\81пиÑ\81ок Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81ов, Ñ\80азделеннÑ\8bÑ\85 Ð¿Ñ\80обелами. Вы также можете "
+"На этой странице вы можете настроить сетевые интерфейсы.<br />Вы можете "
+"объединить несколько интерфейсов в мост, выбрав опцию 'Объединить в мост' и "
+"введÑ\8f Ñ\81пиÑ\81ок Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81ов, Ñ\80азделеннÑ\8bÑ\85 Ð¿Ñ\80обелами.<br />Вы также можете "
 "использовать <abbr title=\"Виртуальные локальные сети\">VLAN</abbr>-"
 "обозначения вида <samp>ИНТЕРФЕЙС.НОМЕРVLAN</samp> (<abbr title=\"например"
 "\">напр.</abbr>: <samp>eth0.1</samp>)."
@@ -2229,7 +2320,7 @@ msgid "One or more fields contain invalid values!"
 msgstr "Одно или несколько полей содержат недопустимые значения!"
 
 msgid "One or more invalid/required values on tab"
-msgstr ""
+msgstr "Одно или несколько недопустимых / обязательных значений на странице"
 
 msgid "One or more required fields have no value!"
 msgstr "Одно или несколько обязательных полей не заполнены!"
@@ -2238,10 +2329,10 @@ msgid "Open list..."
 msgstr "Открыть список..."
 
 msgid "OpenConnect (CISCO AnyConnect)"
-msgstr ""
+msgstr "OpenConnect (CISCO AnyConnect)"
 
 msgid "Operating frequency"
-msgstr ""
+msgstr "Настройка частоты"
 
 msgid "Option changed"
 msgstr "Опция изменена"
@@ -2250,18 +2341,24 @@ msgid "Option removed"
 msgstr "Опция удалена"
 
 msgid "Optional"
-msgstr ""
+msgstr "Необязательно"
 
 msgid "Optional, specify to override default server (tic.sixxs.net)"
 msgstr ""
+"Необязательно. Укажите, чтобы переопределить дефолтный сервер (tic.sixxs."
+"net)."
 
 msgid "Optional, use when the SIXXS account has more than one tunnel"
 msgstr ""
+"Необязательно. Используется, когда учетная запись SIXXS имеет более одного "
+"туннеля."
 
 msgid ""
 "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
 "starting with <code>0x</code>."
 msgstr ""
+"Необязательно. 32-разрядная метка для исходящих зашифрованных пакетов. "
+"Введите значение в шестнадцатеричной форме, начиная с <code>0x</code>."
 
 msgid ""
 "Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
@@ -2269,33 +2366,45 @@ msgid ""
 "server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
 "for the interface."
 msgstr ""
+"Необязательно. Допустимые значения: 'eui64', 'random', фиксированное "
+"значение например '::1' или '::1:2'.<br />Когда IPv6 префикс такой как - ('a:"
+"b:c:d::'), используйте суффикс на вроде ('::1') для этого IPv6 адреса ('a:b:"
+"c:d::1') для этого интерфейса."
 
 msgid ""
 "Optional. Base64-encoded preshared key. Adds in an additional layer of "
 "symmetric-key cryptography for post-quantum resistance."
 msgstr ""
+"Необязательно. Base64-шифрованный общий ключ. Добавляет дополнительный слой "
+"криптографии с симметричным ключом для пост-квантового сопротивления."
 
 msgid "Optional. Create routes for Allowed IPs for this peer."
 msgstr ""
+"Необязательно. Создавать маршруты для разрешенных IP адресов для этого узла."
 
 msgid ""
 "Optional. Host of peer. Names are resolved prior to bringing up the "
 "interface."
 msgstr ""
+"Необязательно. Запрашивающий хост. Имена разрешаются до появления интерфейса."
 
 msgid "Optional. Maximum Transmission Unit of tunnel interface."
-msgstr ""
+msgstr "Необязательно. Максимальная единица передачи туннельного интерфейса."
 
 msgid "Optional. Port of peer."
-msgstr ""
+msgstr "Необязательно. Порт узла."
 
 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."
 
 msgid "Optional. UDP port used for outgoing and incoming packets."
 msgstr ""
+"Необязательно. Udp-порт, используемый для исходящих и входящих пакетов."
 
 msgid "Options"
 msgstr "Опции"
@@ -2310,7 +2419,7 @@ msgid "Outbound:"
 msgstr "Исходящий:"
 
 msgid "Output Interface"
-msgstr ""
+msgstr "Исходящий интерфейс"
 
 msgid "Override MAC address"
 msgstr "Назначить MAC-адрес"
@@ -2319,13 +2428,13 @@ msgid "Override MTU"
 msgstr "Назначить MTU"
 
 msgid "Override TOS"
-msgstr ""
+msgstr "Отвергать TOS"
 
 msgid "Override TTL"
-msgstr ""
+msgstr "Отвергать TTL"
 
 msgid "Override default interface name"
-msgstr ""
+msgstr "Назначить имя интерфейса по дефолту."
 
 msgid "Override the gateway in DHCP responses"
 msgstr "Назначить шлюз в ответах DHCP"
@@ -2341,10 +2450,10 @@ msgid "Override the table used for internal routes"
 msgstr "Назначить таблицу внутренних маршрутов"
 
 msgid "Overview"
-msgstr "Ð\9eбзоÑ\80"
+msgstr "Ð\93лавное Ð¼ÐµÐ½Ñ\8e"
 
 msgid "Owner"
-msgstr "Ð\92ладелеÑ\86"
+msgstr "Ð\9fолÑ\8cзоваÑ\82елÑ\8c"
 
 msgid "PAP/CHAP password"
 msgstr "Пароль PAP/CHAP"
@@ -2359,7 +2468,7 @@ msgid "PIN"
 msgstr "PIN"
 
 msgid "PMK R1 Push"
-msgstr ""
+msgstr "PMK R1 Push"
 
 msgid "PPP"
 msgstr "PPP"
@@ -2374,19 +2483,19 @@ msgid "PPPoE"
 msgstr "PPPoE"
 
 msgid "PPPoSSH"
-msgstr ""
+msgstr "PPPoSSH"
 
 msgid "PPtP"
-msgstr "PPTP"
+msgstr "PPtP"
 
 msgid "PSID offset"
-msgstr ""
+msgstr "PSID смещение"
 
 msgid "PSID-bits length"
-msgstr ""
+msgstr "PSID длина в битах"
 
 msgid "PTM/EFM (Packet Transfer Mode)"
-msgstr ""
+msgstr "PTM/EFM (Packet Transfer Mode)"
 
 msgid "Package libiwinfo required!"
 msgstr "Требуется пакет libiwinfo!"
@@ -2407,52 +2516,49 @@ msgid "Password"
 msgstr "Пароль"
 
 msgid "Password authentication"
-msgstr "Ð\90Ñ\83Ñ\82енÑ\82иÑ\84икаÑ\86иÑ\8f Ñ\81 помощью пароля"
+msgstr "С помощью пароля"
 
 msgid "Password of Private Key"
-msgstr "Ð\9fаÑ\80олÑ\8c Ð¸Ð»Ð¸ Ð·Ð°ÐºÑ\80Ñ\8bÑ\82Ñ\8bй ÐºÐ»Ñ\8eÑ\87"
+msgstr "Ð\9fаÑ\80олÑ\8c Ðº Ð\9fÑ\80иваÑ\82номÑ\83 ÐºÐ»Ñ\8eÑ\87Ñ\83"
 
 msgid "Password of inner Private Key"
-msgstr ""
+msgstr "Пароль к внутреннему Приватному ключу"
 
 msgid "Password successfully changed!"
 msgstr "Пароль успешно изменён!"
 
 msgid "Password2"
-msgstr ""
+msgstr "Пароль2"
 
 msgid "Path to CA-Certificate"
-msgstr "Путь к центру сертификации"
+msgstr "Путь к CA-Сертификату"
 
 msgid "Path to Client-Certificate"
-msgstr "Путь к клиентскому сертификату"
+msgstr "Путь к Client-Сертификату"
 
 msgid "Path to Private Key"
-msgstr "Путь к личному ключу"
-
-msgid "Path to executable which handles the button event"
-msgstr "Путь к программе, обрабатывающей нажатие кнопки"
+msgstr "Путь к Приватному ключу"
 
 msgid "Path to inner CA-Certificate"
-msgstr ""
+msgstr "Путь к внутренним CA-Сертификатам"
 
 msgid "Path to inner Client-Certificate"
-msgstr ""
+msgstr "Путь к внутренним Client-Сертификатам"
 
 msgid "Path to inner Private Key"
-msgstr ""
+msgstr "Путь к внутреннему Приватному ключу"
 
 msgid "Peak:"
 msgstr "Пиковая:"
 
 msgid "Peer IP address to assign"
-msgstr ""
+msgstr "Запрос IP адреса назначения"
 
 msgid "Peers"
-msgstr ""
+msgstr "Пиры"
 
 msgid "Perfect Forward Secrecy"
-msgstr ""
+msgstr "Perfect Forward Secrecy"
 
 msgid "Perform reboot"
 msgstr "Выполнить перезагрузку"
@@ -2461,7 +2567,7 @@ msgid "Perform reset"
 msgstr "Выполнить сброс"
 
 msgid "Persistent Keep Alive"
-msgstr ""
+msgstr "Постоянно держать включенным"
 
 msgid "Phy Rate:"
 msgstr "Скорость:"
@@ -2470,13 +2576,13 @@ msgid "Physical Settings"
 msgstr "Настройки канала"
 
 msgid "Ping"
-msgstr "ЭÑ\85о-запрос"
+msgstr "Ð\9fинг-запрос"
 
 msgid "Pkts."
 msgstr "Пакетов."
 
 msgid "Please enter your username and password."
-msgstr "Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð²ведите логин и пароль."
+msgstr "Ð\92ведите логин и пароль."
 
 msgid "Policy"
 msgstr "Политика"
@@ -2488,41 +2594,41 @@ msgid "Port status:"
 msgstr "Состояние порта:"
 
 msgid "Power Management Mode"
-msgstr ""
+msgstr "Режим управления питанием"
 
 msgid "Pre-emtive CRC errors (CRCP_P)"
-msgstr ""
+msgstr "Pre-emtive CRC errors (CRCP_P)"
 
 msgid "Prefer LTE"
-msgstr ""
+msgstr "Предпочитать LTE"
 
 msgid "Prefer UMTS"
-msgstr ""
+msgstr "Предпочитать UMTS"
 
 msgid "Prefix Delegated"
-msgstr ""
+msgstr "Делегированный префикс"
 
 msgid "Preshared Key"
-msgstr ""
+msgstr "Предварительный ключ"
 
 msgid ""
 "Presume peer to be dead after given amount of LCP echo failures, use 0 to "
 "ignore failures"
 msgstr ""
 "Предполагать, что узел недоступен после указанного количества ошибок "
-"получения эхо-пакета LCP, введите 0 для игнорирования ошибок"
+"получения эхо-пакета LCP, введите '0' для игнорирования ошибок."
 
 msgid "Prevent listening on these interfaces."
-msgstr ""
+msgstr "Запретить прослушивание этих интерфейсов."
 
 msgid "Prevents client-to-client communication"
-msgstr "Не позволяет клиентам обмениваться друг с другом информацией"
+msgstr "Не позволяет клиентам обмениваться друг с другом информацией."
 
 msgid "Prism2/2.5/3 802.11b Wireless Controller"
 msgstr "Беспроводной 802.11b контроллер Prism2/2.5/3"
 
 msgid "Private Key"
-msgstr ""
+msgstr "Приватный ключ"
 
 msgid "Proceed"
 msgstr "Продолжить"
@@ -2531,7 +2637,7 @@ msgid "Processes"
 msgstr "Процессы"
 
 msgid "Profile"
-msgstr ""
+msgstr "Профиль"
 
 msgid "Prot."
 msgstr "Прот."
@@ -2558,34 +2664,36 @@ msgid "Pseudo Ad-Hoc (ahdemo)"
 msgstr "Псевдо Ad-Hoc (ahdemo)"
 
 msgid "Public Key"
-msgstr ""
+msgstr "Публичный ключ"
 
 msgid "Public prefix routed to this device for distribution to clients."
 msgstr ""
+"Публичный префикс, направляемый на это устройство для распространения среди "
+"клиентов."
 
 msgid "QMI Cellular"
-msgstr ""
+msgstr "QMI сотовый"
 
 msgid "Quality"
 msgstr "Качество"
 
 msgid "R0 Key Lifetime"
-msgstr ""
+msgstr "R0 Key время жизни"
 
 msgid "R1 Key Holder"
-msgstr ""
+msgstr "R1 Key Holder"
 
 msgid "RFC3947 NAT-T mode"
-msgstr ""
+msgstr "RFC3947 NAT-T режим"
 
 msgid "RTS/CTS Threshold"
 msgstr "Порог RTS/CTS"
 
 msgid "RX"
-msgstr "RX"
+msgstr "Получение (RX)"
 
 msgid "RX Rate"
-msgstr "Скорость приёма"
+msgstr "Скорость получения"
 
 msgid "RaLink 802.11%s Wireless Controller"
 msgstr "Беспроводной 802.11%s контроллер RaLink"
@@ -2613,7 +2721,7 @@ msgid ""
 "Configuration Protocol\">DHCP</abbr>-Server"
 msgstr ""
 "Читать <code>/etc/ethers</code> для настройки <abbr title=\"Протокол "
-"динамиÑ\87еÑ\81кой ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии Ñ\83зла\">DHCP</abbr>-Ñ\81еÑ\80веÑ\80а"
+"динамиÑ\87еÑ\81кой Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ñ\83зла\">DHCP</abbr>-Ñ\81еÑ\80веÑ\80а."
 
 msgid ""
 "Really delete this interface? The deletion cannot be undone!\\nYou might "
@@ -2634,13 +2742,12 @@ msgstr ""
 msgid "Really reset all changes?"
 msgstr "Действительно сбросить все изменения?"
 
-#, fuzzy
 msgid ""
 "Really shut down network?\\nYou might lose access to this device if you are "
 "connected via this interface."
 msgstr ""
-"Ð\94ейÑ\81Ñ\82виÑ\82елÑ\8cно Ð²Ñ\8bклÑ\8eÑ\87иÑ\82Ñ\8c Ñ\81еÑ\82Ñ\8c?\\nÐ\92Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ð¾Ñ\82еÑ\80Ñ\8fÑ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ðº Ñ\8dÑ\82омÑ\83 "
-"устройству, если вы подключены через этот интерфейс."
+"Ð\94ейÑ\81Ñ\82виÑ\82елÑ\8cно Ð¾Ñ\82клÑ\8eÑ\87иÑ\82Ñ\8c Ñ\81еÑ\82Ñ\8c? Ð\92Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ð¾Ñ\82еÑ\80Ñ\8fÑ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ðº Ñ\8dÑ\82омÑ\83 Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82вÑ\83, "
+"если вы подключены через этот интерфейс."
 
 msgid ""
 "Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
@@ -2668,7 +2775,7 @@ msgid "Realtime Wireless"
 msgstr "Беспроводная сеть в реальном времени"
 
 msgid "Reassociation Deadline"
-msgstr ""
+msgstr "Срок Реассоциации"
 
 msgid "Rebind protection"
 msgstr "Защита от DNS Rebinding"
@@ -2680,7 +2787,8 @@ msgid "Rebooting..."
 msgstr "Перезагрузка..."
 
 msgid "Reboots the operating system of your device"
-msgstr "Перезагрузить операционную систему вашего устройства"
+msgstr ""
+"Программная перезагрузка вашего устройства, т.е. выполнить команду 'reboot'."
 
 msgid "Receive"
 msgstr "Приём"
@@ -2689,7 +2797,7 @@ msgid "Receiver Antenna"
 msgstr "Приёмная антенна"
 
 msgid "Recommended. IP addresses of the WireGuard interface."
-msgstr ""
+msgstr "Рекомендуемый. IP адреса интерфейса WireGuard."
 
 msgid "Reconnect this interface"
 msgstr "Переподключить этот интерфейс"
@@ -2697,7 +2805,6 @@ msgstr "Переподключить этот интерфейс"
 msgid "Reconnecting interface"
 msgstr "Интерфейс переподключается"
 
-# References to firewall chains
 msgid "References"
 msgstr "Ссылки"
 
@@ -2705,7 +2812,7 @@ msgid "Relay"
 msgstr "Ретранслятор"
 
 msgid "Relay Bridge"
-msgstr "Мост-ретранслятор"
+msgstr "Мост-Ретранслятор"
 
 msgid "Relay between networks"
 msgstr "Ретранслятор между сетями"
@@ -2717,56 +2824,64 @@ msgid "Remote IPv4 address"
 msgstr "Удалённый IPv4-адрес"
 
 msgid "Remote IPv4 address or FQDN"
-msgstr ""
+msgstr "Удалённый IPv4-адрес или FQDN"
 
 msgid "Remove"
 msgstr "Удалить"
 
 msgid "Repeat scan"
-msgstr "Повторить сканирование"
+msgstr "Повторить поиск"
 
 msgid "Replace entry"
 msgstr "Заменить запись"
 
 msgid "Replace wireless configuration"
-msgstr "Ð\97амениÑ\82Ñ\8c Ð±ÐµÑ\81пÑ\80оводнÑ\83Ñ\8e ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86иÑ\8e"
+msgstr "Ð\97амениÑ\82Ñ\8c Ð½Ð°Ñ\81Ñ\82Ñ\80ойкÑ\83 Ð±ÐµÑ\81пÑ\80оводного Ñ\81оединениÑ\8f"
 
 msgid "Request IPv6-address"
-msgstr ""
+msgstr "Запрос IPv6 адреса"
 
 msgid "Request IPv6-prefix of length"
-msgstr ""
+msgstr "Запрос IPv6 префикс длины"
 
 msgid "Require TLS"
-msgstr ""
+msgstr "Требовать TLS"
 
 msgid "Required"
-msgstr ""
+msgstr "Требовать"
 
 msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
-msgstr "Требуется для некоторых интернет-провайдеров"
+msgstr ""
+"Требуется для некоторых Интернет провайдеров, например глава с DOCSIS 3."
 
 msgid "Required. Base64-encoded private key for this interface."
-msgstr ""
+msgstr "Требовать Приватный ключ в кодировке Base64 для этого интерфейса."
 
 msgid "Required. Base64-encoded public key of peer."
-msgstr ""
+msgstr "Требовать Публичный ключ узла в кодировке Base64."
 
 msgid ""
 "Required. IP addresses and prefixes that this peer is allowed to use inside "
 "the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
 "routes through the tunnel."
 msgstr ""
+"Требовать IP-адреса и префиксы, которые разрешено использовать этому "
+"одноранговому узлу внутри туннеля. Обычно туннельные IP-адреса однорангового "
+"узла и сети одноранговых маршрутов через туннель."
 
 msgid ""
 "Requires the 'full' version of wpad/hostapd and support from the wifi driver "
 "<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
 msgstr ""
+"Требуется 'полная' версия wpad/hostapd и поддержка со стороны WiFi драйвера  "
+"в  <br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
 
 msgid ""
 "Requires upstream supports DNSSEC; verify unsigned domain responses really "
 "come from unsigned domains"
 msgstr ""
+"Требуется поддержка внешней сетью DNSSEC; убедитесь, что ответы "
+"неподписанного домена - действительно поступают от неподписанных доменов."
 
 msgid "Reset"
 msgstr "Сбросить"
@@ -2798,26 +2913,35 @@ msgstr "Показать/скрыть пароль"
 msgid "Revert"
 msgstr "Вернуть"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr "Корень"
 
 msgid "Root directory for files served via TFTP"
-msgstr "Корневая директория для TFTP"
+msgstr "Корневая директория для файлов сервера, вроде TFTP"
 
 msgid "Root preparation"
-msgstr ""
+msgstr "Подготовка корневой директории"
 
 msgid "Route Allowed IPs"
-msgstr ""
+msgstr "Маршрут разрешенный для IP адресов"
 
 msgid "Route type"
-msgstr ""
+msgstr "Тип маршрута"
 
 msgid "Routed IPv6 prefix for downstream interfaces"
-msgstr ""
+msgstr "Префикс маршрутизации IPv6 для интерфейсов внутренней сети"
 
 msgid "Router Advertisement-Service"
-msgstr ""
+msgstr "Доступные<br />режимы работы"
 
 msgid "Router Password"
 msgstr "Пароль маршрутизатора"
@@ -2829,40 +2953,42 @@ msgid ""
 "Routes specify over which interface and gateway a certain host or network "
 "can be reached."
 msgstr ""
-"Маршрутизация служит для определения через какой интерфейс и шлюз можно "
-"доÑ\81Ñ\82иÑ\87Ñ\82Ñ\8c Ð¾Ð¿Ñ\80еделÑ\91нного хоста или сети."
+"Маршрутизация служит для определения через, какой интерфейс и шлюз можно "
+"доÑ\81Ñ\82иÑ\87Ñ\8c Ð¾Ð¿Ñ\80еделенного хоста или сети."
 
 msgid "Run a filesystem check before mounting the device"
-msgstr "Ð\9fÑ\80овеÑ\80Ñ\8fÑ\82Ñ\8c Ñ\84айловÑ\83Ñ\8e Ñ\81иÑ\81Ñ\82емÑ\83 Ð¿ÐµÑ\80ед Ð¼Ð¾Ð½Ñ\82иÑ\80ованием Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва"
+msgstr "Ð\9fÑ\80овеÑ\80Ñ\8fÑ\82Ñ\8c Ñ\84айловÑ\83Ñ\8e Ñ\81иÑ\81Ñ\82емÑ\83 Ð¿ÐµÑ\80ед Ð¼Ð¾Ð½Ñ\82иÑ\80ованием Ñ\80аздела."
 
 msgid "Run filesystem check"
-msgstr "Проверять файловую систему"
+msgstr "Проверить"
 
 msgid "SHA256"
-msgstr ""
+msgstr "SHA256"
 
 msgid ""
 "SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) "
 "use 6in4 instead"
 msgstr ""
+"SIXXS поддерживает только TIC,  для статических туннелей с использованием IP-"
+"протокола 41 (RFC4213) используется вместо 6in4."
 
 msgid "SIXXS-handle[/Tunnel-ID]"
-msgstr ""
+msgstr "SIXXS-управление[/Туннель-ID]"
 
 msgid "SNR"
-msgstr ""
+msgstr "SNR"
 
 msgid "SSH Access"
 msgstr "Доступ по SSH"
 
 msgid "SSH server address"
-msgstr ""
+msgstr "Адрес сервера SSH"
 
 msgid "SSH server port"
-msgstr ""
+msgstr "Порт сервера SSH"
 
 msgid "SSH username"
-msgstr ""
+msgstr "SSH логин"
 
 msgid "SSH-Keys"
 msgstr "SSH-ключи"
@@ -2876,30 +3002,27 @@ msgstr "Сохранить"
 msgid "Save & Apply"
 msgstr "Сохранить и применить"
 
-msgid "Save &#38; Apply"
-msgstr "Сохранить и применить"
-
 msgid "Scan"
-msgstr "СканиÑ\80оваÑ\82Ñ\8c"
+msgstr "Ð\9fоиÑ\81к"
 
 msgid "Scheduled Tasks"
 msgstr "Запланированные задания"
 
 msgid "Section added"
-msgstr "Секция добавлена"
+msgstr "Строки добавлены"
 
 msgid "Section removed"
-msgstr "Секция удалена"
+msgstr "Строки удалены"
 
 msgid "See \"mount\" manpage for details"
-msgstr "Для подробной информации обратитесь к справке по \"mount\" (man mount)"
+msgstr "Для подробной информации обратитесь к справке по 'mount' (man mount)."
 
 msgid ""
 "Send LCP echo requests at the given interval in seconds, only effective in "
 "conjunction with failure threshold"
 msgstr ""
 "Отправлять эхо-пакеты LCP с указанным интервалом (секунды), эффективно "
-"только в сочетании с порогом ошибок"
+"только в сочетании с порогом ошибок."
 
 msgid "Separate Clients"
 msgstr "Разделять клиентов"
@@ -2908,15 +3031,17 @@ msgid "Server Settings"
 msgstr "Настройки сервера"
 
 msgid "Server password"
-msgstr ""
+msgstr "Пароль доступа к серверу"
 
 msgid ""
 "Server password, enter the specific password of the tunnel when the username "
 "contains the tunnel ID"
 msgstr ""
+"Пароль сервера. Введите пароль из тоннеля, когда имя пользователя содержит "
+"ID туннеля."
 
 msgid "Server username"
-msgstr ""
+msgstr "Логин доступа к серверу"
 
 msgid "Service Name"
 msgstr "Имя службы"
@@ -2931,22 +3056,22 @@ msgid ""
 "Set interface properties regardless of the link carrier (If set, carrier "
 "sense events do not invoke hotplug handlers)."
 msgstr ""
+"Автоматически активировать соединение, при подключении в разъем кабеля."
 
-#, fuzzy
 msgid "Set up Time Synchronization"
-msgstr "Ð\9dаÑ\81Ñ\82Ñ\80оиÑ\82Ñ\8c Ñ\81инÑ\85Ñ\80онизаÑ\86иÑ\8e времени"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка Ñ\81инÑ\85Ñ\80онизаÑ\86ии времени"
 
 msgid "Setup DHCP Server"
 msgstr "Настроить сервер DHCP"
 
 msgid "Severely Errored Seconds (SES)"
-msgstr ""
+msgstr "Секунды с большим числом ошибок (SES)."
 
 msgid "Short GI"
-msgstr ""
+msgstr "Short GI"
 
 msgid "Show current backup file list"
-msgstr "Показать текущий список файлов резервной копии"
+msgstr "Показать текущий список<br />файлов резервной копии"
 
 msgid "Shutdown this interface"
 msgstr "Выключить этот интерфейс"
@@ -2958,7 +3083,7 @@ msgid "Signal"
 msgstr "Сигнал"
 
 msgid "Signal Attenuation (SATN)"
-msgstr ""
+msgstr "Затухание сигнала (SATN)"
 
 msgid "Signal:"
 msgstr "Сигнал:"
@@ -2967,6 +3092,9 @@ msgid "Size"
 msgstr "Размер"
 
 msgid "Size (.ipk)"
+msgstr "Размер (.ipk)"
+
+msgid "Size of DNS query cache"
 msgstr ""
 
 msgid "Skip"
@@ -2985,7 +3113,7 @@ msgid "Software"
 msgstr "Программное обеспечение"
 
 msgid "Software VLAN"
-msgstr ""
+msgstr "Программное обеспечение VLAN"
 
 msgid "Some fields are invalid, cannot save values!"
 msgstr "Некоторые значения полей недопустимы, невозможно сохранить информацию!"
@@ -3002,7 +3130,7 @@ msgid ""
 "instructions."
 msgstr ""
 "К сожалению, автоматическое обновление не поддерживается, новая прошивка "
-"должна быть установлена вручную. Обратитесь к вики для получения конкретных "
+"должна быть установлена вручную. Обратитесь к wiki для получения конкретных "
 "инструкций для вашего устройства."
 
 msgid "Sort"
@@ -3012,52 +3140,56 @@ msgid "Source"
 msgstr "Источник"
 
 msgid "Source routing"
-msgstr ""
-
-msgid "Specifies the button state to handle"
-msgstr "Состояние кнопки, которое необходимо обработать"
+msgstr "маршрутизация от источника"
 
 msgid "Specifies the directory the device is attached to"
-msgstr "Ð\94иÑ\80екÑ\82оÑ\80иÑ\8f, Ðº ÐºÐ¾Ñ\82оÑ\80ой Ð¿Ñ\80иÑ\81оединено Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82во"
+msgstr "Ð\9fапка, Ðº ÐºÐ¾Ñ\82оÑ\80ой Ð¼Ð¾Ð½Ñ\82иÑ\80Ñ\83еÑ\82Ñ\81Ñ\8f Ñ\80аздел Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва."
 
 msgid "Specifies the listening port of this <em>Dropbear</em> instance"
-msgstr "Порт данного процесса <em>Dropbear</em>"
+msgstr "Порт данного процесса <em>Dropbear</em>."
 
 msgid ""
 "Specifies the maximum amount of failed ARP requests until hosts are presumed "
 "to be dead"
 msgstr ""
 "Максимальное количество неудачных запросов ARP, после которого узлы "
-"считаются отключенными"
+"считаются отключенными."
 
 msgid ""
 "Specifies the maximum amount of seconds after which hosts are presumed to be "
 "dead"
 msgstr ""
-"Максимальное количество секунд, после которого узлы считаются отключенными"
+"Максимальное количество секунд, после которого узлы считаются отключёнными."
 
 msgid "Specify a TOS (Type of Service)."
-msgstr ""
+msgstr "Укажите TOS (Тип обслуживания)."
 
 msgid ""
 "Specify a TTL (Time to Live) for the encapsulating packet other than the "
 "default (64)."
 msgstr ""
+"Укажите значение TTL (Время Жизни) для инкапсуляции пакетов, по умолчанию "
+"(64)."
 
 msgid ""
 "Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
 "bytes)."
 msgstr ""
+"Укажите MTU (Максимальный Объем Данных), отличный от стандартного (1280 "
+"байт)."
 
 msgid "Specify the secret encryption key here."
 msgstr "Укажите закрытый ключ."
 
 msgid "Start"
-msgstr "Ð\97апÑ\83Ñ\81Ñ\82иÑ\82Ñ\8c"
+msgstr "СÑ\82аÑ\80Ñ\82"
 
 msgid "Start priority"
 msgstr "Приоритет"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "Загрузка"
 
@@ -3082,11 +3214,11 @@ msgid ""
 "configurations where only hosts with a corresponding lease are served."
 msgstr ""
 "Постоянная аренда используется для присвоения фиксированных IP-адресов и "
-"имён DHCP-клиентам. Постоянная аренда также необходима для статических "
+"имён DHCP-клиентам.<br />Постоянная аренда также необходима для статических "
 "интерфейсов, в которых обслуживаются только клиенты с присвоенными адресами."
 
 msgid "Status"
-msgstr "Статус"
+msgstr "Состояние"
 
 msgid "Stop"
 msgstr "Остановить"
@@ -3098,16 +3230,16 @@ msgid "Submit"
 msgstr "Применить"
 
 msgid "Suppress logging"
-msgstr ""
+msgstr "Подавить логирование"
 
 msgid "Suppress logging of the routine operation of these protocols"
-msgstr ""
+msgstr "Подавить логирование стандартной работы этих протоколов."
 
 msgid "Swap"
-msgstr ""
+msgstr "Раздел подкачки (Swap)"
 
 msgid "Swap Entry"
-msgstr "Раздел Ð¿Ð¾Ð´ÐºÐ°Ñ\87ки"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка config Ñ\84айла fstab (/etc/config/fstab)"
 
 msgid "Switch"
 msgstr "Коммутатор"
@@ -3121,9 +3253,14 @@ msgstr "Коммутатор %q (%s)"
 msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
+"Коммутатор %q имеет неизвестную топологию-настройки VLAN не могут быть "
+"точными."
+
+msgid "Switch Port Mask"
+msgstr "Изменить маску порта"
 
 msgid "Switch VLAN"
-msgstr ""
+msgstr "Изменить VLAN"
 
 msgid "Switch protocol"
 msgstr "Изменить протокол"
@@ -3153,27 +3290,26 @@ msgid "TFTP Settings"
 msgstr "Настройки TFTP"
 
 msgid "TFTP server root"
-msgstr "Корень TFTP-сервера"
+msgstr "TFTP сервер root"
 
 msgid "TX"
-msgstr "TX"
+msgstr "Передача (TX)"
 
 msgid "TX Rate"
-msgstr "Скорость передачи"
+msgstr "Cкорость передачи"
 
 msgid "Table"
 msgstr "Таблица"
 
 msgid "Target"
-msgstr "ЦелÑ\8c"
+msgstr "Ð\9dазнаÑ\87ение"
 
 msgid "Target network"
-msgstr ""
+msgstr "Сеть назначения"
 
 msgid "Terminate"
 msgstr "Завершить"
 
-#, fuzzy
 msgid ""
 "The <em>Device Configuration</em> section covers physical settings of the "
 "radio hardware such as channel, transmit power or antenna selection which "
@@ -3181,12 +3317,12 @@ msgid ""
 "multi-SSID capable). Per network settings like encryption or operation mode "
 "are grouped in the <em>Interface Configuration</em>."
 msgstr ""
-"Раздел <em>Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва</em> содержит физические настройки "
-"беспроводного оборудования, такие как канал, мощность передатчика или выбор "
-"анÑ\82еннÑ\8b, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ñ\8fвлÑ\8fÑ\8eÑ\82Ñ\81Ñ\8f Ð¾Ð±Ñ\89ими Ð´Ð»Ñ\8f Ð²Ñ\81еÑ\85 Ð¾Ð¿Ñ\80еделÑ\91ннÑ\8bÑ\85 Ð±ÐµÑ\81пÑ\80оводнÑ\8bÑ\85 Ñ\81еÑ\82ей "
-"(если оборудование поддерживает несколько SSID). Настройки отдельных сетей, "
-"такие как шифрование или режим работы, сгруппированы в разделе "
-"<em>Конфигурация интерфейса</em>."
+"Ð\92кладка Ð¼ÐµÐ½Ñ\8e <em>'Ð\9dаÑ\81Ñ\82Ñ\80ойка Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва'</em> содержит физические настройки "
+"радиооборудования, такие как канал, мощность передачи или выбор антенны, "
+"коÑ\82оÑ\80Ñ\8bе Ñ\81овмеÑ\81Ñ\82но Ð¸Ñ\81полÑ\8cзÑ\83Ñ\8eÑ\82Ñ\81Ñ\8f Ð²Ñ\81еми Ð½Ð°Ñ\81Ñ\82Ñ\80оеннÑ\8bми Ð±ÐµÑ\81пÑ\80оводнÑ\8bми Ñ\81еÑ\82Ñ\8fми (еÑ\81ли "
+"радиооборудование поддерживает несколько SSID).<br />Параметры сети, такие "
+"как шифрование или режим работы, смотрите на вкладке <em>'Настройка сети'</"
+"em>."
 
 msgid ""
 "The <em>libiwinfo-lua</em> package is not installed. You must install this "
@@ -3199,10 +3335,12 @@ msgid ""
 "The HE.net endpoint update configuration changed, you must now use the plain "
 "username instead of the user ID!"
 msgstr ""
+"HE.net конфигурация обновления конечной точки изменена, теперь вы должны "
+"использовать простое имя пользователя вместо ID пользователя!"
 
 msgid ""
 "The IPv4 address or the fully-qualified domain name of the remote tunnel end."
-msgstr ""
+msgstr "IPv4-адрес или полное доменное имя удаленного конца туннеля."
 
 msgid ""
 "The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
@@ -3217,6 +3355,16 @@ msgstr ""
 "<code>_</code>"
 
 msgid "The configuration file could not be loaded due to the following error:"
+msgstr "Не удалось загрузить config файл из-за следующей ошибки:"
+
+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 ""
 
 msgid ""
@@ -3231,37 +3379,33 @@ msgid ""
 "\">e.g.</abbr> <samp><abbr title=\"Third Extended Filesystem\">ext3</abbr></"
 "samp>)"
 msgstr ""
-"ФоÑ\80маÑ\82 Ñ\84айловой Ñ\81иÑ\81Ñ\82емÑ\8b (<abbr title=\"напÑ\80имеÑ\80\">напÑ\80.</abbr> <samp><abbr "
-"title=\"Third Extended Filesystem\">ext3</abbr></samp>)"
+"ФайловаÑ\8f Ñ\81иÑ\81Ñ\82ема (<abbr title=\"напÑ\80имеÑ\80\">напÑ\80.</abbr> <samp><abbr title="
+"\"Third Extended Filesystem\">ext3</abbr></samp>)."
 
 msgid ""
 "The flash image was uploaded. Below is the checksum and file size listed, "
 "compare them with the original file to ensure data integrity.<br /> Click "
 "\"Proceed\" below to start the flash procedure."
 msgstr ""
-"Ð\9eбÑ\80аз Ð·Ð°Ð³Ñ\80Ñ\83жен. Ð\9fожалÑ\83йÑ\81Ñ\82а, Ñ\81равните размер файла и контрольную сумму, чтобы "
-"удостовериться в целостности данных.<br /> Нажмите \"Продолжить\", чтобы "
+"Ð\9eбÑ\80аз Ð·Ð°Ð³Ñ\80Ñ\83жен. Ð¡равните размер файла и контрольную сумму, чтобы "
+"удостовериться в целостности данных.<br /> Нажмите 'Продолжить', чтобы "
 "начать процедуру обновления прошивки."
 
-msgid "The following changes have been committed"
-msgstr "Данные изменения были применены"
-
 msgid "The following changes have been reverted"
-msgstr "Ð\94аннÑ\8bе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8f Ð±Ñ\8bли Ð¾Ñ\82веÑ\80гнÑ\83Ñ\82Ñ\8b"
+msgstr "Ð\92аÑ\88и Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ð±Ñ\8bли Ð¾Ñ\82веÑ\80гнÑ\83Ñ\82Ñ\8b."
 
 msgid "The following rules are currently active on this system."
 msgstr "На данном устройстве активны следующие правила."
 
 msgid "The given network name is not unique"
-msgstr "Заданное имя сети не является уникальным"
+msgstr "Заданное имя сети не является уникальным."
 
-#, fuzzy
 msgid ""
 "The hardware is not multi-SSID capable and the existing configuration will "
 "be replaced if you proceed."
 msgstr ""
-"Ð\9eбоÑ\80Ñ\83дование Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ\80живаеÑ\82 Ð½ÐµÑ\81колÑ\8cко SSID, Ð¸, ÐµÑ\81ли Ð²Ñ\8b Ð¿Ñ\80одолжиÑ\82е, "
-"существующая конфигурация будет заменена."
+"Ð\90ппаÑ\80аÑ\82ное Ð¾Ð±ÐµÑ\81пеÑ\87ение Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ\80живаеÑ\82 Multi-SSID, Ð¸ Ñ\81Ñ\83Ñ\89еÑ\81Ñ\82вÑ\83Ñ\8eÑ\89ие Ð½Ð°Ñ\81Ñ\82Ñ\80ойки "
+"будут изаменены, если вы продолжите."
 
 msgid ""
 "The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
@@ -3273,7 +3417,7 @@ msgid "The length of the IPv6 prefix in bits"
 msgstr "Длина префикса IPv6 в битах"
 
 msgid "The local IPv4 address over which the tunnel is created (optional)."
-msgstr ""
+msgstr "Локальный адрес IPv4, по которому создается туннель (необязательно)."
 
 msgid ""
 "The network ports on this device can be combined to several <abbr title="
@@ -3285,53 +3429,53 @@ msgid ""
 msgstr ""
 "Сетевые порты этого устройства могут быть объединены в несколько <abbr title="
 "\"Virtual Local Area Network\">VLAN</abbr>ов, в которых компьютеры могут "
-"связываться напрямую между собой. <abbr title=\"Virtual Local Area Network"
-"\">VLAN</abbr>ы часто используются для разделения нескольких сетевых "
-"сегментов. Обычно по умолчанию используется один восходящий порт для "
-"подклÑ\8eÑ\87ениÑ\8f Ðº Ð²Ñ\8bÑ\81Ñ\88ей Ñ\80ангом Ñ\81еÑ\82и, Ð½Ð°Ð¿Ñ\80имеÑ\80 Ðº Ð¸Ð½Ñ\82еÑ\80неÑ\82Ñ\83 Ð¸Ð»Ð¸ Ðº Ð´Ñ\80Ñ\83гим Ð¿Ð¾Ñ\80Ñ\82ам "
-"локальной сети."
+"связываться напрямую между собой.<br /><abbr title=\"Виртуальные локальные "
+"сети\">VLAN</abbr>ы часто используются для разделения нескольких сетевых "
+"сегментов.<br />Обычно по умолчанию используется один порт для подключения к "
+"внеÑ\88ней Ñ\81еÑ\82и, Ð½Ð°Ð¿Ñ\80имеÑ\80 Ðº Ð\98нÑ\82еÑ\80неÑ\82Ñ\83 Ð¸ Ð´Ñ\80Ñ\83гие Ð¿Ð¾Ñ\80Ñ\82Ñ\8b Ð¿Ñ\80едназнаÑ\87еннÑ\8bе Ð´Ð»Ñ\8f "
+"внÑ\83Ñ\82Ñ\80енней - Ð»Ð¾ÐºÐ°Ð»Ñ\8cной Ñ\81еÑ\82и."
 
 msgid "The selected protocol needs a device assigned"
 msgstr "Для выбранного протокола необходимо задать устройство"
 
 msgid "The submitted security token is invalid or already expired!"
-msgstr ""
+msgstr "Представленный маркер безопасности недействителен или уже истек!"
 
 msgid ""
 "The system is erasing the configuration partition now and will reboot itself "
 "when finished."
-msgstr ""
-"Идёт удаление раздела конфигурации с последующей перезагрузкой сиситемы."
+msgstr "Идёт удаление настроек раздела с последующей перезагрузкой системы."
 
-#, 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 ""
-"СиÑ\81Ñ\82ема Ð¾Ð±Ð½Ð¾Ð²Ð»Ñ\8fеÑ\82Ñ\81Ñ\8f.<br /> Ð\9dÐ\95 Ð\9eТÐ\9aÐ\9bЮЧÐ\90Ð\99ТÐ\95 Ð\9fÐ\98ТÐ\90Ð\9dÐ\98Ð\95 Ð£Ð¡Ð¢Ð Ð\9eÐ\99СТÐ\92Ð\90!<br /> Ð\9fодождиÑ\82е "
-"несколько минут перед тем, как попытаетесь заново соединиться. В зависимости "
-"оÑ\82 Ð²Ð°Ñ\88иÑ\85 Ð½Ð°Ñ\81Ñ\82Ñ\80оек, Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ð°Ð¼ Ð¿Ð¾Ð½Ð°Ð´Ð¾Ð±Ð¸Ñ\82Ñ\81Ñ\8f Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ\82Ñ\8c Ð°Ð´Ñ\80еÑ\81 Ð²Ð°Ñ\88его "
-"компÑ\8cÑ\8eÑ\82еÑ\80а, Ñ\87Ñ\82обÑ\8b Ñ\81нова Ð¿Ð¾Ð»Ñ\83Ñ\87иÑ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ðº Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82вÑ\83."
+"СейÑ\87аÑ\81 Ñ\81иÑ\81Ñ\82ема Ð¿ÐµÑ\80епÑ\80оÑ\88иваеÑ\82Ñ\81Ñ\8f.<br /> Ð\9dÐ\95 Ð\9eТÐ\9aÐ\9bЮЧÐ\90Ð\99ТÐ\95 Ð\9fÐ\98ТÐ\90Ð\9dÐ\98Ð\95 Ð£Ð¡Ð¢Ð Ð\9eÐ\99СТÐ\92Ð\90!<br /"
+"> Подождите несколько минут, прежде чем попытаться соединится. Возможно, "
+"поÑ\82Ñ\80ебÑ\83еÑ\82Ñ\81Ñ\8f Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ\82Ñ\8c Ð°Ð´Ñ\80еÑ\81 ÐºÐ¾Ð¼Ð¿Ñ\8cÑ\8eÑ\82еÑ\80а, Ñ\87Ñ\82обÑ\8b Ñ\81нова Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87иÑ\82Ñ\81Ñ\8f Ðº Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82вÑ\83, "
+"в Ð·Ð°Ð²Ð¸Ñ\81имоÑ\81Ñ\82и Ð¾Ñ\82 Ð½Ð°Ñ\81Ñ\82Ñ\80оек."
 
 msgid ""
 "The tunnel end-point is behind NAT, defaults to disabled and only applies to "
 "AYIYA"
 msgstr ""
+"Конечная точка туннеля находится за NAT, по умолчанию отключена и "
+"применяется только к AYIYA."
 
 msgid ""
 "The uploaded image file does not contain a supported format. Make sure that "
 "you choose the generic image format for your platform."
 msgstr ""
-"Ð\97агÑ\80Ñ\83женнÑ\8bй Ñ\84айл Ð¾Ð±Ñ\80аза Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ\80живаеÑ\82Ñ\81Ñ\8f. Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð¿Ñ\80овеÑ\80Ñ\8cÑ\82е, Ñ\87Ñ\82о Ð²Ñ\8b "
-"загÑ\80Ñ\83зили Ð¿Ñ\80авилÑ\8cнÑ\8bй Ð¾Ð±Ñ\80аз Ð´Ð»Ñ\8f Ð²Ð°Ñ\88ей Ð¿Ð»Ð°Ñ\82Ñ\84оÑ\80мÑ\8b."
+"Ð\97агÑ\80Ñ\83женнÑ\8bй Ñ\84айл Ð¿Ñ\80оÑ\88ивки Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ\80живаеÑ\82Ñ\81Ñ\8f. Ð\9fÑ\80овеÑ\80Ñ\8cÑ\82е, Ñ\87Ñ\82о Ð²Ñ\8b Ð·Ð°Ð³Ñ\80Ñ\83зили "
+"подÑ\85одÑ\8fÑ\89Ñ\83Ñ\8e Ð¿Ñ\80оÑ\88ивкÑ\83 Ð´Ð»Ñ\8f Ñ\87ипа Ð²Ð°Ñ\88его Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва."
 
 msgid "There are no active leases."
 msgstr "Нет активных арендованных адресов."
 
-msgid "There are no pending changes to apply!"
-msgstr "Нет изменений, которые можно применить!"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "Нет изменений, которые можно отменить!"
@@ -3343,15 +3487,15 @@ msgid ""
 "There is no device assigned yet, please attach a network device in the "
 "\"Physical Settings\" tab"
 msgstr ""
-"УÑ\81Ñ\82Ñ\80ойÑ\81Ñ\82во Ð½Ðµ Ð½Ð°Ð·Ð½Ð°Ñ\87ено. Ð\9fожалÑ\83йÑ\81Ñ\82а, Ð½Ð°Ð·Ð½Ð°Ñ\87Ñ\8cÑ\82е Ñ\81еÑ\82евое Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82во Ð²Ð¾ Ð²ÐºÐ»Ð°Ð´ÐºÐµ "
-"\"Настройки канала\""
+"УÑ\81Ñ\82Ñ\80ойÑ\81Ñ\82во Ð½Ðµ Ð½Ð°Ð·Ð½Ð°Ñ\87ено. Ð\9dазнаÑ\87Ñ\8cÑ\82е Ñ\81еÑ\82евое Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82во Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86е 'Ð\9dаÑ\81Ñ\82Ñ\80ойки "
+"канала'."
 
 msgid ""
 "There is no password set on this router. Please configure a root password to "
 "protect the web interface and enable SSH."
 msgstr ""
-"Ð\9fаÑ\80олÑ\8c Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f root Ð½Ðµ Ñ\83Ñ\81Ñ\82ановлен. Ð\9fожалÑ\83йÑ\81Ñ\82а, Ñ\83Ñ\81Ñ\82ановиÑ\82е Ð¿Ð°Ñ\80олÑ\8c, Ñ\87Ñ\82обÑ\8b "
-"заÑ\89иÑ\82иÑ\82Ñ\8c Ð²ÐµÐ±-инÑ\82еÑ\80Ñ\84ейÑ\81 Ð¸ Ð²ÐºÐ»Ñ\8eÑ\87иÑ\82Ñ\8c SSH."
+"Ð\9fаÑ\80олÑ\8c Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f root Ð½Ðµ Ñ\83Ñ\81Ñ\82ановлен. Ð£Ñ\81Ñ\82ановиÑ\82е Ð¿Ð°Ñ\80олÑ\8c, Ñ\87Ñ\82обÑ\8b Ð·Ð°Ñ\89иÑ\82иÑ\82Ñ\8c "
+"веб-интерфейс и включить SSH."
 
 msgid "This IPv4 address of the relay"
 msgstr "IPv4-адрес ретранслятора"
@@ -3361,74 +3505,76 @@ msgid ""
 "'server=1.2.3.4' fordomain-specific or full upstream <abbr title=\"Domain "
 "Name System\">DNS</abbr> servers."
 msgstr ""
+"Этот файл может содержать такие строки, как 'server=/domain/1.2.3.4' или "
+"'server=1.2.3.4' fordomain-specific или полный список внешней сети <abbr "
+"title=\"Domain Name System\">DNS</abbr> servers."
 
 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 и некоторые другие "
-"конфигурации автоматически сохраняются."
+"Настройка данного config файла, позволит пользователю создать резервную "
+"копию своих настроек.<br />Копируются config файлы из папки /etc/config и "
+"некоторые другие.<br />При перепрошивке устройства sysupgrade-совместимым "
+"образом, вы сможете воспользоваться резервной копией своих настроек."
 
 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\", настроенный для туннеля, либо пароль учетной "
+"записи, если ключ обновления не был настроен."
 
 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'), чтобы выполнить их в конце загрузки."
+"Cодержимое config файла /etc/rc.local. Вы можете добавить свои команды "
+"(перед 'exit 0'), чтобы выполнить их во время загрузки устройства."
 
-# Maybe it usually ends with ::2?
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 "Это локальный адрес, назначенный туннельным брокером, обычно заканчивается "
-"на <code>:2</code>"
+"на <code>...:2/64</code>."
 
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
 "abbr> in the local network"
 msgstr ""
-"ЭÑ\82о ÐµÐ´Ð¸Ð½Ñ\81Ñ\82веннÑ\8bй <abbr title=\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86ии Ñ\83зла"
-"\">DHCP</abbr>-сервер в локальной сети"
+"ЭÑ\82о ÐµÐ´Ð¸Ð½Ñ\81Ñ\82веннÑ\8bй <abbr title=\"Ð\9fÑ\80оÑ\82окол Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ\87еÑ\81кой Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ñ\83зла\">DHCP</"
+"abbr>-сервер в локальной сети."
 
 msgid "This is the plain username for logging into the account"
-msgstr ""
+msgstr "Это просто имя пользователя, для входа в учетную запись."
 
 msgid ""
 "This is the prefix routed to you by the tunnel broker for use by clients"
 msgstr ""
+"Это префикс, направлен вам брокером туннелей для использования клиентами."
 
 msgid "This is the system crontab in which scheduled tasks can be defined."
 msgstr ""
-"ЭÑ\82о Ñ\82аблиÑ\86а cron (crontab), Ð² ÐºÐ¾Ñ\82оÑ\80ой Ð²Ñ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð¾Ð¿Ñ\80еделиÑ\82Ñ\8c Ð·Ð°Ð¿Ð»Ð°Ð½Ð¸Ñ\80ованнÑ\8bе "
-"заданиÑ\8f."
+"Ð\9dа Ñ\81Ñ\82Ñ\80аниÑ\86е Ñ\81одеÑ\80жимое /etc/crontabs/root - Ñ\84айла (заданиÑ\8f crontab), Ð·Ð´ÐµÑ\81Ñ\8c "
+"вÑ\8b Ð¼Ð¾Ð¶ÐµÑ\82е Ð·Ð°Ð¿Ð»Ð°Ð½Ð¸Ñ\80оваÑ\82Ñ\8c Ð²Ð°Ñ\88и Ð·Ð°Ð´Ð°Ð½Ð¸Ñ\8f"
 
 msgid ""
 "This is usually the address of the nearest PoP operated by the tunnel broker"
-msgstr "Это адрес ближайшей точки присутствия туннельного брокера"
+msgstr "Это адрес ближайшей точки присутствия туннельного брокера."
 
 msgid ""
 "This list gives an overview over currently running system processes and "
 "their status."
-msgstr "Данный список содержит работающие процессы и их статус."
-
-msgid "This page allows the configuration of custom button actions"
-msgstr "Данная страница позволяет настроить обработку кнопок"
+msgstr "Страница содержит работающие процессы и их состояние."
 
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
-"Данная страница содержит обзор всех активных на данный момент сетевых "
-"соединений."
+"Страница содержит список всех активных на данный момент сетевых соединений."
 
 msgid "This section contains no values yet"
-msgstr "ЭÑ\82а Ñ\81екÑ\86иÑ\8f Ð¿Ð¾ÐºÐ° Ð½Ðµ Ñ\81одеÑ\80жиÑ\82 Ð·Ð½Ð°Ñ\87ений"
+msgstr "Ð\97деÑ\81Ñ\8c Ð½Ðµ Ñ\81одеÑ\80жаÑ\82Ñ\81Ñ\8f Ð½ÐµÐ¾Ð±Ñ\85одимÑ\8bе Ð·Ð½Ð°Ñ\87ениÑ\8f"
 
 msgid "Time Synchronization"
 msgstr "Синхронизация времени"
@@ -3443,11 +3589,11 @@ msgid ""
 "To restore configuration files, you can upload a previously generated backup "
 "archive here."
 msgstr ""
-"Чтобы восстановить файлы конфигурации, вы можете загрузить ранее созданный "
-"архив здесь."
+"Чтобы восстановить config файлы, ваши настройки прошивки устройства, вы "
+"можеÑ\82е Ð·Ð°Ð³Ñ\80Ñ\83зиÑ\82Ñ\8c Ñ\80анее Ñ\81озданнÑ\8bй Ð²Ð°Ð¼Ð¸ Ð°Ñ\80Ñ\85ив Ð·Ð´ÐµÑ\81Ñ\8c."
 
 msgid "Tone"
-msgstr ""
+msgstr "Тон"
 
 msgid "Total Available"
 msgstr "Всего доступно"
@@ -3474,10 +3620,10 @@ msgid "Transmitter Antenna"
 msgstr "Передающая антенна"
 
 msgid "Trigger"
-msgstr "ТÑ\80иггеÑ\80"
+msgstr "Ð\9dазнаÑ\87иÑ\82Ñ\8c"
 
 msgid "Trigger Mode"
-msgstr "Режим Ñ\81Ñ\80абаÑ\82Ñ\8bваниÑ\8f"
+msgstr "Режим Ñ\80абоÑ\82Ñ\8b"
 
 msgid "Tunnel ID"
 msgstr "Идентификатор туннеля"
@@ -3486,16 +3632,16 @@ msgid "Tunnel Interface"
 msgstr "Интерфейс туннеля"
 
 msgid "Tunnel Link"
-msgstr ""
+msgstr "Ссылка на туннель"
 
 msgid "Tunnel broker protocol"
-msgstr ""
+msgstr "Протокол посредника туннеля"
 
 msgid "Tunnel setup server"
-msgstr ""
+msgstr "Сервер настройки туннеля"
 
 msgid "Tunnel type"
-msgstr ""
+msgstr "Тип туннеля"
 
 msgid "Tx-Power"
 msgstr "Мощность передатчика"
@@ -3513,10 +3659,10 @@ msgid "UMTS/GPRS/EV-DO"
 msgstr "UMTS/GPRS/EV-DO"
 
 msgid "USB Device"
-msgstr "USB-устройство"
+msgstr "USB устройство"
 
 msgid "USB Ports"
-msgstr ""
+msgstr "USB порты"
 
 msgid "UUID"
 msgstr "UUID"
@@ -3525,7 +3671,7 @@ msgid "Unable to dispatch"
 msgstr "Невозможно обработать запрос для"
 
 msgid "Unavailable Seconds (UAS)"
-msgstr ""
+msgstr "Секунды неготовности (UAS)"
 
 msgid "Unknown"
 msgstr "Неизвестно"
@@ -3537,7 +3683,7 @@ msgid "Unmanaged"
 msgstr "Неуправляемый"
 
 msgid "Unmount"
-msgstr ""
+msgstr "Отмонтировать"
 
 msgid "Unsaved Changes"
 msgstr "Непринятые изменения"
@@ -3553,12 +3699,13 @@ msgid ""
 "Check \"Keep settings\" to retain the current configuration (requires a "
 "compatible firmware image)."
 msgstr ""
-"Загрузите sysupgrade-совместимый образ, чтобы заменить текущую прошивку. "
-"Установите флажок \"Сохранить настройки\", чтобы сохранить текущую "
-"конфигурацию (требуется совместимый образ прошивки)."
+"Загрузите sysupgrade-совместимый образ, чтобы заменить текущую прошивку "
+"устройства. Поставьте галочку 'Сохранить настройки', чтобы сохранить текущие "
+"config файлы - ваши настройки устройства (требуется совместимый образ "
+"прошивки)."
 
 msgid "Upload archive..."
-msgstr "Ð\97агÑ\80Ñ\83зиÑ\82Ñ\8c Ð°Ñ\80Ñ\85ив..."
+msgstr "Ð\97агÑ\80Ñ\83зка Ð°Ñ\80Ñ\85ива..."
 
 msgid "Uploaded File"
 msgstr "Загруженный файл"
@@ -3567,13 +3714,13 @@ msgid "Uptime"
 msgstr "Время работы"
 
 msgid "Use <code>/etc/ethers</code>"
-msgstr "Использовать <code>/etc/ethers</code>"
+msgstr "Использовать<br /><code>/etc/ethers</code>"
 
 msgid "Use DHCP gateway"
 msgstr "Использовать шлюз DHCP"
 
 msgid "Use DNS servers advertised by peer"
-msgstr "Использовать объявляемые узлом DNS-серверы"
+msgstr "Использовать объявляемые узлом DNS сервера"
 
 msgid "Use ISO/IEC 3166 alpha2 country codes."
 msgstr "Использовать коды стран ISO/IEC 3166 alpha2."
@@ -3585,40 +3732,42 @@ msgid "Use TTL on tunnel interface"
 msgstr "Использовать TTL на интерфейсе туннеля"
 
 msgid "Use as external overlay (/overlay)"
-msgstr ""
+msgstr "Использовать как внешний overlay (/overlay)"
 
 msgid "Use as root filesystem (/)"
-msgstr ""
+msgstr "Использовать как корень (/)"
 
 msgid "Use broadcast flag"
 msgstr "Использовать широковещательный флаг"
 
 msgid "Use builtin IPv6-management"
-msgstr ""
+msgstr "Использовать встроенный<br />IPv6-менеджмент"
 
 msgid "Use custom DNS servers"
-msgstr "Использовать собственные DNS-серверы"
+msgstr "Использовать собственные DNS сервера"
 
 msgid "Use default gateway"
 msgstr "Использовать шлюз по умолчанию"
 
 msgid "Use gateway metric"
-msgstr "Использовать метрику шлюза"
+msgstr "Использовать<br />метрику шлюза"
 
 msgid "Use routing table"
 msgstr "Использовать таблицу маршрутизации"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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>, чтобы добавить новую запись аренды. "
+"<em>'MAC-Адрес'</em> идентифицирует хост, <em>'IPv4-Адрес'</em> указывает "
+"фиксированный адрес, а <em>'Имя хоста'</em> присваивается в качестве "
+"символьного имени для запрашивающего хоста.<br />Необязательно <em>'Время "
+"аренды адреса'</em> может быть использовано для того, чтобы установить "
+"индивидуальное время аренды, например 12h, 3d или бесконечное."
 
 msgid "Used"
 msgstr "Использовано"
@@ -3630,12 +3779,14 @@ msgid ""
 "Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
 "needed with normal WPA(2)-PSK."
 msgstr ""
+"Используется для двух различных целей: RADIUS NAS ID и 802.11r R0KH-ID. Не "
+"используется с обычным WPA(2)-PSK."
 
 msgid "User certificate (PEM encoded)"
-msgstr ""
+msgstr "Сертификат пользователя (PEM encoded)"
 
 msgid "User key (PEM encoded)"
-msgstr ""
+msgstr "Ключ пользователя (PEM encoded)"
 
 msgid "Username"
 msgstr "Имя пользователя"
@@ -3644,7 +3795,7 @@ msgid "VC-Mux"
 msgstr "VC-Mux"
 
 msgid "VDSL"
-msgstr ""
+msgstr "VDSL"
 
 msgid "VLANs on %q"
 msgstr "VLANы на %q"
@@ -3653,35 +3804,35 @@ msgid "VLANs on %q (%s)"
 msgstr "VLANы на %q (%s)"
 
 msgid "VPN Local address"
-msgstr ""
+msgstr "Локальный адрес VPN"
 
 msgid "VPN Local port"
-msgstr ""
+msgstr "Локальный порт VPN"
 
 msgid "VPN Server"
 msgstr "Сервер VPN"
 
 msgid "VPN Server port"
-msgstr ""
+msgstr "Порт VPN сервера"
 
 msgid "VPN Server's certificate SHA1 hash"
-msgstr ""
+msgstr "Сертификат SHA1 hash VPN сервера"
 
 msgid "VPNC (CISCO 3000 (and others) VPN)"
-msgstr ""
+msgstr "VPNC (CISCO 3000 (and others) VPN)"
 
 msgid "Vendor"
-msgstr ""
+msgstr "Производитель (Vendor)"
 
 msgid "Vendor Class to send when requesting DHCP"
 msgstr ""
 "Класс производителя (Vendor class), который отправлять при DHCP-запросах"
 
 msgid "Verbose"
-msgstr ""
+msgstr "Verbose"
 
 msgid "Verbose logging by aiccu daemon"
-msgstr ""
+msgstr "Verbose ведение журнала демоном aiccu"
 
 msgid "Verify"
 msgstr "Проверить"
@@ -3717,6 +3868,8 @@ msgstr ""
 msgid ""
 "Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)"
 msgstr ""
+"Задать время ожидания синхронизации NTP, установка значения - '0', отключает "
+"ожидание (необязательно)."
 
 msgid "Waiting for changes to be applied..."
 msgstr "Ожидание применения изменений..."
@@ -3724,31 +3877,36 @@ msgstr "Ожидание применения изменений..."
 msgid "Waiting for command to complete..."
 msgstr "Ожидание завершения выполнения команды..."
 
-msgid "Waiting for device..."
+msgid "Waiting for configuration to get applied… %ds"
 msgstr ""
 
+msgid "Waiting for device..."
+msgstr "Ожидание подключения устройства..."
+
 msgid "Warning"
 msgstr "Внимание"
 
 msgid "Warning: There are unsaved changes that will get lost on reboot!"
 msgstr ""
+"Внимание: Есть не сохраненные изменения, которые будут потеряны при "
+"перезагрузке!"
 
 msgid ""
 "When using a PSK, the PMK can be generated locally without inter AP "
 "communications"
-msgstr ""
+msgstr "При использовании PSK, PMK может быть создан локально, без AP в связи."
 
 msgid "Whether to create an IPv6 default route over the tunnel"
-msgstr ""
+msgstr "Создание маршрута по умолчанию IPv6 через туннель."
 
 msgid "Whether to route only packets from delegated prefixes"
-msgstr ""
+msgstr "Маршрутизация только пакетов из делегированных префиксов."
 
 msgid "Width"
-msgstr ""
+msgstr "Ширина"
 
 msgid "WireGuard VPN"
-msgstr ""
+msgstr "WireGuard VPN"
 
 msgid "Wireless"
 msgstr "Wi-Fi"
@@ -3760,7 +3918,7 @@ msgid "Wireless Network"
 msgstr "Беспроводная сеть"
 
 msgid "Wireless Overview"
-msgstr "Ð\9eбзоÑ\80 беспроводных сетей"
+msgstr "СпиÑ\81ок беспроводных сетей"
 
 msgid "Wireless Security"
 msgstr "Безопасность беспроводной сети"
@@ -3775,7 +3933,7 @@ msgid "Wireless network is disabled"
 msgstr "Беспроводная сеть отключена"
 
 msgid "Wireless network is enabled"
-msgstr "Беспроводная сеть включена"
+msgstr "Беспроводная<br />сеть включена"
 
 msgid "Wireless restarted"
 msgstr "Беспроводная сеть перезапущена"
@@ -3784,10 +3942,10 @@ msgid "Wireless shut down"
 msgstr "Выключение беспроводной сети"
 
 msgid "Write received DNS requests to syslog"
-msgstr "Записывать полученные DNS-запросы в системный журнал"
+msgstr "Записывать полученные DNS-запросы в системный журнал."
 
 msgid "Write system log to file"
-msgstr ""
+msgstr "Записывать системные события в файл"
 
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
@@ -3797,7 +3955,7 @@ msgstr ""
 "Здесь вы можете включить или выключить установленные скрипты инициализации. "
 "Изменения вступят в силу после перезагрузки устройства.<br /"
 "><strong>Внимание: если вы выключите один из основных скриптов инициализации "
-"(например \"network\"), ваше устройство может оказаться недоступным!</strong>"
+"(например 'network'), ваше устройство может оказаться недоступным!</strong>"
 
 msgid ""
 "You must enable JavaScript in your browser or LuCI will not work properly."
@@ -3810,6 +3968,9 @@ msgid ""
 "upgrade it to at least version 7 or use another browser like Firefox, Opera "
 "or Safari."
 msgstr ""
+"Ваш Internet Explorer слишком стар, чтобы отобразить эту страницу правильно. "
+"Обновите его до версии 7 или используйте другой браузер, например Firefox, "
+"Opera или Safari."
 
 msgid "any"
 msgstr "любой"
@@ -3827,30 +3988,29 @@ msgid "create:"
 msgstr "создать:"
 
 msgid "creates a bridge over specified interface(s)"
-msgstr "создаёт мост для выбранных сетевых интерфейсов"
+msgstr "Создаёт мост для выбранных сетевых интерфейсов."
 
 msgid "dB"
-msgstr "дБ"
+msgstr "dB"
 
 msgid "dBm"
-msgstr "дБм"
+msgstr "dBm"
 
 msgid "disable"
-msgstr "вÑ\8bклÑ\8eÑ\87ено"
+msgstr "оÑ\82клÑ\8eÑ\87иÑ\82Ñ\8c"
 
 msgid "disabled"
-msgstr ""
+msgstr "отключено"
 
 msgid "expired"
 msgstr "истекло"
 
-# убил бы
 msgid ""
 "file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
 "abbr>-leases will be stored"
 msgstr ""
-"файл, где хранятся арендованные <abbr title=\"Протокол динамической "
-"конÑ\84игÑ\83Ñ\80аÑ\86ии Ñ\83зла\">DHCP</abbr>-адÑ\80еÑ\81а"
+"Файл, где хранятся арендованные <abbr title=\"Протокол динамической "
+"наÑ\81Ñ\82Ñ\80ойки Ñ\83зла\">DHCP</abbr>-адÑ\80еÑ\81а."
 
 msgid "forward"
 msgstr "перенаправить"
@@ -3868,7 +4028,7 @@ msgid "hidden"
 msgstr "скрытый"
 
 msgid "hybrid mode"
-msgstr ""
+msgstr "гибридный режим"
 
 msgid "if target is a network"
 msgstr "если сеть"
@@ -3877,22 +4037,22 @@ msgid "input"
 msgstr "ввод"
 
 msgid "kB"
-msgstr "кБ"
+msgstr "kB"
 
 msgid "kB/s"
-msgstr "кБ/с"
+msgstr "kB/s"
 
 msgid "kbit/s"
-msgstr "кбит/с"
+msgstr "kbit/s"
 
 msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
-msgstr "локалÑ\8cнÑ\8bй <abbr title=\"СлÑ\83жба Ð´Ð¾Ð¼ÐµÐ½Ð½Ñ\8bÑ\85 Ð¸Ð¼Ñ\91н\">DNS</abbr>-Ñ\84айл"
+msgstr "Ð\9bокалÑ\8cнÑ\8bй <abbr title=\"СлÑ\83жба Ð´Ð¾Ð¼ÐµÐ½Ð½Ñ\8bÑ\85 Ð¸Ð¼Ñ\91н\">DNS</abbr>-Ñ\84айл."
 
 msgid "minimum 1280, maximum 1480"
-msgstr ""
+msgstr "минимум 1280, максимум 1480"
 
 msgid "minutes"
-msgstr ""
+msgstr "минут(ы)"
 
 msgid "no"
 msgstr "нет"
@@ -3904,7 +4064,7 @@ msgid "none"
 msgstr "ничего"
 
 msgid "not present"
-msgstr ""
+msgstr "не существует"
 
 msgid "off"
 msgstr "выключено"
@@ -3913,34 +4073,37 @@ msgid "on"
 msgstr "включено"
 
 msgid "open"
-msgstr "открытая"
+msgstr "открыть"
 
 msgid "overlay"
-msgstr ""
+msgstr "overlay"
+
+msgid "random"
+msgstr "случайно"
 
 msgid "relay mode"
-msgstr ""
+msgstr "режим передачи"
 
 msgid "routed"
 msgstr "маршрутизируемый"
 
 msgid "server mode"
-msgstr ""
+msgstr "режим сервера"
 
 msgid "stateful-only"
-msgstr ""
+msgstr "stateful-only"
 
 msgid "stateless"
-msgstr ""
+msgstr "stateless"
 
 msgid "stateless + stateful"
-msgstr ""
+msgstr "stateless + stateful"
 
 msgid "tagged"
 msgstr "с тегом"
 
 msgid "time units (TUs / 1.024 ms) [1000-65535]"
-msgstr ""
+msgstr "единицы измерения времени (TUs / 1.024 ms) [1000-65535]"
 
 msgid "unknown"
 msgstr "неизвестный"
@@ -3963,76 +4126,20 @@ msgstr "да"
 msgid "« Back"
 msgstr "« Назад"
 
-#~ msgid "Leasetime"
-#~ msgstr "Время аренды"
-
-#, fuzzy
-#~ msgid "automatic"
-#~ msgstr "статический"
-
-#~ msgid "AR Support"
-#~ msgstr "Поддержка AR"
-
-#~ msgid "Atheros 802.11%s Wireless Controller"
-#~ msgstr "Беспроводной 802.11%s контроллер Atheros"
-
-#~ msgid "Background Scan"
-#~ msgstr "Фоновое сканирование"
-
-#~ msgid "Compression"
-#~ msgstr "Сжатие"
-
-#~ msgid "Disable HW-Beacon timer"
-#~ msgstr "Отключить таймер HW-Beacon"
-
-#~ msgid "Do not send probe responses"
-#~ msgstr "Не посылать тестовые ответы"
-
-#~ msgid "Fast Frames"
-#~ msgstr "Быстрые кадры"
-
-#~ msgid "Maximum Rate"
-#~ msgstr "Максимальная скорость"
-
-#~ msgid "Minimum Rate"
-#~ msgstr "Минимальная скорость"
-
-#~ msgid "Multicast Rate"
-#~ msgstr "Скорость групповой передачи"
-
-#~ msgid "Outdoor Channels"
-#~ msgstr "Внешние каналы"
-
-#~ msgid "Regulatory Domain"
-#~ msgstr "Нормативная зона"
-
-#~ msgid "Separate WDS"
-#~ msgstr "Отдельный WDS"
-
-#~ msgid "Static WDS"
-#~ msgstr "Статический WDS"
-
-#~ msgid "Turbo Mode"
-#~ msgstr "Турбо-режим"
-
-#~ msgid "XR Support"
-#~ msgstr "Поддержка XR"
-
-#~ msgid "An additional network will be created if you leave this unchecked."
-#~ msgstr ""
-#~ "Если вы не выберите эту опцию, то будет создана дополнительная сеть."
+#~ msgid "Apply"
+#~ msgstr "Принять"
 
-#~ msgid "Join Network: Settings"
-#~ msgstr "Подключение к сети: настройки"
+#~ msgid "Applying changes"
+#~ msgstr "Применение изменений"
 
-#~ msgid "CPU"
-#~ msgstr "ЦÐ\9f"
+#~ msgid "Configuration applied."
+#~ msgstr "Ð\98зменение Ð½Ð°Ñ\81Ñ\82Ñ\80оек config Ñ\84айлов."
 
-#~ msgid "Port %d"
-#~ msgstr "Ð\9fоÑ\80Ñ\82 %d"
+#~ msgid "Save &#38; Apply"
+#~ msgstr "СоÑ\85Ñ\80аниÑ\82Ñ\8c Ð¸ Ð¿Ñ\80имениÑ\82Ñ\8c"
 
-#~ msgid "Port %d is untagged in multiple VLANs!"
-#~ msgstr "Ð\9fоÑ\80Ñ\82 %d Ð½ÐµÑ\82егиÑ\80ован Ð² Ð½ÐµÑ\81колÑ\8cкиÑ\85 VLANаÑ\85!"
+#~ msgid "The following changes have been committed"
+#~ msgstr "Ð\92аÑ\88и Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ð±Ñ\8bли Ð¿Ñ\80имененÑ\8b."
 
-#~ msgid "VLAN Interface"
-#~ msgstr "Ð\98нÑ\82еÑ\80Ñ\84ейÑ\81 VLAN"
+#~ msgid "There are no pending changes to apply!"
+#~ msgstr "Ð\9dеÑ\82 Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ\80имениÑ\82Ñ\8c!"
index 82fd38949be9847ced590c01efe4dbeafb0b6b98..7f3d249e15bf5f5bb69f6f755521bc93ad4c5c94 100644 (file)
@@ -204,9 +204,6 @@ msgstr ""
 msgid "Access Point"
 msgstr ""
 
-msgid "Action"
-msgstr ""
-
 msgid "Actions"
 msgstr ""
 
@@ -278,6 +275,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr ""
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr ""
 
@@ -383,10 +383,10 @@ msgstr ""
 msgid "Any zone"
 msgstr ""
 
-msgid "Apply"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
-msgid "Applying changes"
+msgid "Apply unchecked"
 msgstr ""
 
 msgid ""
@@ -543,9 +543,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr ""
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -567,16 +564,24 @@ msgstr ""
 msgid "Changes applied."
 msgstr ""
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr ""
 
 msgid "Channel"
 msgstr ""
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr ""
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -642,10 +647,13 @@ msgstr ""
 msgid "Configuration"
 msgstr ""
 
-msgid "Configuration applied."
+msgid "Configuration files will be kept."
 msgstr ""
 
-msgid "Configuration files will be kept."
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
 msgstr ""
 
 msgid "Confirmation"
@@ -666,6 +674,12 @@ msgstr ""
 msgid "Connections"
 msgstr ""
 
+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 ""
+
 msgid "Country"
 msgstr ""
 
@@ -707,6 +721,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -829,6 +848,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr ""
 
@@ -861,6 +883,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr ""
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr ""
 
@@ -963,6 +988,11 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr ""
 
@@ -1020,6 +1050,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1098,6 +1131,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1199,6 +1235,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1282,9 +1321,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr ""
 
@@ -1859,9 +1895,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1879,10 +1912,10 @@ msgstr ""
 msgid "Memory usage (%)"
 msgstr ""
 
-msgid "Metric"
+msgid "Mesh Id"
 msgstr ""
 
-msgid "Minimum hold time"
+msgid "Metric"
 msgstr ""
 
 msgid "Mirror monitor port"
@@ -2088,6 +2121,9 @@ msgstr ""
 msgid "Nslookup"
 msgstr ""
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr ""
 
@@ -2100,6 +2136,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr ""
 
@@ -2321,9 +2360,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr ""
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2673,6 +2709,15 @@ msgstr ""
 msgid "Revert"
 msgstr ""
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr ""
 
@@ -2749,9 +2794,6 @@ msgstr ""
 msgid "Save & Apply"
 msgstr ""
 
-msgid "Save &#38; Apply"
-msgstr ""
-
 msgid "Scan"
 msgstr ""
 
@@ -2839,6 +2881,9 @@ msgstr ""
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr ""
 
@@ -2881,9 +2926,6 @@ msgstr ""
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -2922,6 +2964,9 @@ msgstr ""
 msgid "Start priority"
 msgstr ""
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr ""
 
@@ -2983,6 +3028,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3068,6 +3116,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3085,9 +3143,6 @@ msgid ""
 "\"Proceed\" below to start the flash procedure."
 msgstr ""
 
-msgid "The following changes have been committed"
-msgstr ""
-
 msgid "The following changes have been reverted"
 msgstr ""
 
@@ -3153,7 +3208,7 @@ msgstr ""
 msgid "There are no active leases."
 msgstr ""
 
-msgid "There are no pending changes to apply!"
+msgid "There are no changes to apply."
 msgstr ""
 
 msgid "There are no pending changes to revert!"
@@ -3199,7 +3254,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3226,9 +3281,6 @@ msgid ""
 "their status."
 msgstr ""
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 
@@ -3410,9 +3462,9 @@ msgstr ""
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 ""
 
@@ -3517,6 +3569,9 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3702,6 +3757,9 @@ msgstr ""
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
index 3360ccb230c7e1ab98b405c6f82abe913eb81855..770fca2e5316b1925864e798346eb9bfc6ed58a0 100644 (file)
@@ -212,9 +212,6 @@ msgstr ""
 msgid "Access Point"
 msgstr "Accesspunkt"
 
-msgid "Action"
-msgstr "Åtgärd"
-
 msgid "Actions"
 msgstr "Åtgärder"
 
@@ -287,6 +284,9 @@ msgstr "Tillåt <abbr title=\"Secure Shell\">SSH</abbr> lösenordsautentisering"
 msgid "Allow all except listed"
 msgstr "Tillåt alla utom listade"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Tillåt enbart listade"
 
@@ -394,11 +394,11 @@ msgstr "Konfiguration av antenn"
 msgid "Any zone"
 msgstr "Någon zon"
 
-msgid "Apply"
-msgstr "Verkställ"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Verkställer ändringar"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -554,9 +554,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Knappar"
-
 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."
@@ -579,16 +576,24 @@ msgstr "Ändringar"
 msgid "Changes applied."
 msgstr "Tillämpade ändringar"
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "Ändrar administratörens lösenord för att få tillgång till enheten"
 
 msgid "Channel"
 msgstr "Kanal"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Kontrollera"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr "Kontrollera filsystemen innan de monteras"
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -656,12 +661,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Konfiguration"
 
-msgid "Configuration applied."
-msgstr "Konfigurationen tillämpades"
-
 msgid "Configuration files will be kept."
 msgstr "Konfigurationsfiler kommer att behållas."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Bekräftelse"
 
@@ -680,6 +688,12 @@ msgstr ""
 msgid "Connections"
 msgstr "Anslutningar"
 
+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 ""
+
 msgid "Country"
 msgstr "Land"
 
@@ -721,6 +735,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr "Anpassade flöden"
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -843,6 +862,9 @@ msgstr "Enheten startar om..."
 msgid "Device unreachable"
 msgstr "Enheten kan inte nås"
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr ""
 
@@ -877,6 +899,9 @@ msgstr "Inaktiverad (standard)"
 msgid "Discard upstream RFC1918 responses"
 msgstr ""
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr ""
 
@@ -983,6 +1008,11 @@ msgstr "Nödsituation"
 msgid "Enable"
 msgstr "Aktivera"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Aktivera <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1040,6 +1070,9 @@ msgstr "Aktivera/Inaktivera"
 msgid "Enabled"
 msgstr "Aktiverad"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1118,6 +1151,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "Fil"
 
@@ -1219,6 +1255,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Vidarebefordringsläge"
 
@@ -1302,9 +1341,6 @@ msgstr "HE.net-användarnamn"
 msgid "HT mode (802.11n)"
 msgstr "HT-läge (802.11n)"
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr "Lägg på"
 
@@ -1880,9 +1916,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1900,12 +1933,12 @@ msgstr "Minne"
 msgid "Memory usage (%)"
 msgstr "Minnesanvändning (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metrisk"
 
-msgid "Minimum hold time"
-msgstr ""
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2109,6 +2142,9 @@ msgstr "Avisering"
 msgid "Nslookup"
 msgstr "Nslookup"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2121,6 +2157,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr ""
 
@@ -2342,9 +2381,6 @@ msgstr "Genväg till klient-certifikat"
 msgid "Path to Private Key"
 msgstr "Genväg till privat nyckel"
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr "Genväg till det inre CA-certifikatet"
 
@@ -2696,6 +2732,15 @@ msgstr "Visa/göm lösenord"
 msgid "Revert"
 msgstr "Återgå"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr "Root"
 
@@ -2772,9 +2817,6 @@ msgstr "Spara"
 msgid "Save & Apply"
 msgstr "Spara och Verkställ"
 
-msgid "Save &#38; Apply"
-msgstr "Spara &#38; Verkställ"
-
 msgid "Scan"
 msgstr "Skanna"
 
@@ -2862,6 +2904,9 @@ msgstr "Storlek"
 msgid "Size (.ipk)"
 msgstr "Storlek (.ipk)"
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Hoppa över"
 
@@ -2904,9 +2949,6 @@ msgstr "Källa"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -2945,6 +2987,9 @@ msgstr ""
 msgid "Start priority"
 msgstr ""
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr ""
 
@@ -3006,6 +3051,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr "Byt VLAN"
 
@@ -3091,6 +3139,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3108,9 +3166,6 @@ msgid ""
 "\"Proceed\" below to start the flash procedure."
 msgstr ""
 
-msgid "The following changes have been committed"
-msgstr "Följande ändringar har skickats in"
-
 msgid "The following changes have been reverted"
 msgstr ""
 
@@ -3176,8 +3231,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "Det finns inga aktiva kontrakt."
 
-msgid "There are no pending changes to apply!"
-msgstr "Det finns inga pendlande ändringar att verkställa!"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "Det finns inga pendlande ändringar att återkalla"
@@ -3224,7 +3279,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3251,9 +3306,6 @@ msgid ""
 "their status."
 msgstr ""
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 
@@ -3437,9 +3489,9 @@ msgstr ""
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 ""
 
@@ -3544,6 +3596,9 @@ msgstr "Väntar på att ändringarna ska tillämpas..."
 msgid "Waiting for command to complete..."
 msgstr "Väntar på att kommandot ska avsluta..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr "Väntar på enheten..."
 
@@ -3735,6 +3790,9 @@ msgstr "öppen"
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr "relä-läge"
 
@@ -3779,3 +3837,27 @@ msgstr "ja"
 
 msgid "« Back"
 msgstr "« Bakåt"
+
+#~ msgid "Apply"
+#~ msgstr "Verkställ"
+
+#~ msgid "Applying changes"
+#~ msgstr "Verkställer ändringar"
+
+#~ msgid "Configuration applied."
+#~ msgstr "Konfigurationen tillämpades"
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "Spara &#38; Verkställ"
+
+#~ msgid "The following changes have been committed"
+#~ msgstr "Följande ändringar har skickats in"
+
+#~ msgid "There are no pending changes to apply!"
+#~ msgstr "Det finns inga pendlande ändringar att verkställa!"
+
+#~ msgid "Action"
+#~ msgstr "Åtgärd"
+
+#~ msgid "Buttons"
+#~ msgstr "Knappar"
index 1c21925fcd8d5da079e3fe0f62ab6a9990e08161..ebbe6c6dcfcf0ebf37df7324229153a17765bbc0 100644 (file)
@@ -197,9 +197,6 @@ msgstr ""
 msgid "Access Point"
 msgstr ""
 
-msgid "Action"
-msgstr ""
-
 msgid "Actions"
 msgstr ""
 
@@ -271,6 +268,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr ""
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr ""
 
@@ -376,10 +376,10 @@ msgstr ""
 msgid "Any zone"
 msgstr ""
 
-msgid "Apply"
+msgid "Apply request failed with status <code>%h</code>"
 msgstr ""
 
-msgid "Applying changes"
+msgid "Apply unchecked"
 msgstr ""
 
 msgid ""
@@ -536,9 +536,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr ""
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -560,16 +557,24 @@ msgstr ""
 msgid "Changes applied."
 msgstr ""
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr ""
 
 msgid "Channel"
 msgstr ""
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr ""
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -635,10 +640,13 @@ msgstr ""
 msgid "Configuration"
 msgstr ""
 
-msgid "Configuration applied."
+msgid "Configuration files will be kept."
 msgstr ""
 
-msgid "Configuration files will be kept."
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
 msgstr ""
 
 msgid "Confirmation"
@@ -659,6 +667,12 @@ msgstr ""
 msgid "Connections"
 msgstr ""
 
+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 ""
+
 msgid "Country"
 msgstr ""
 
@@ -700,6 +714,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -822,6 +841,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr ""
 
@@ -854,6 +876,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr ""
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr ""
 
@@ -956,6 +981,11 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr ""
 
@@ -1013,6 +1043,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1091,6 +1124,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1192,6 +1228,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1275,9 +1314,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr ""
 
@@ -1852,9 +1888,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1872,10 +1905,10 @@ msgstr ""
 msgid "Memory usage (%)"
 msgstr ""
 
-msgid "Metric"
+msgid "Mesh Id"
 msgstr ""
 
-msgid "Minimum hold time"
+msgid "Metric"
 msgstr ""
 
 msgid "Mirror monitor port"
@@ -2081,6 +2114,9 @@ msgstr ""
 msgid "Nslookup"
 msgstr ""
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr ""
 
@@ -2093,6 +2129,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr ""
 
@@ -2314,9 +2353,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr ""
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2666,6 +2702,15 @@ msgstr ""
 msgid "Revert"
 msgstr ""
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr ""
 
@@ -2742,9 +2787,6 @@ msgstr ""
 msgid "Save & Apply"
 msgstr ""
 
-msgid "Save &#38; Apply"
-msgstr ""
-
 msgid "Scan"
 msgstr ""
 
@@ -2832,6 +2874,9 @@ msgstr ""
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr ""
 
@@ -2874,9 +2919,6 @@ msgstr ""
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -2915,6 +2957,9 @@ msgstr ""
 msgid "Start priority"
 msgstr ""
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr ""
 
@@ -2976,6 +3021,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3061,6 +3109,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3078,9 +3136,6 @@ msgid ""
 "\"Proceed\" below to start the flash procedure."
 msgstr ""
 
-msgid "The following changes have been committed"
-msgstr ""
-
 msgid "The following changes have been reverted"
 msgstr ""
 
@@ -3146,7 +3201,7 @@ msgstr ""
 msgid "There are no active leases."
 msgstr ""
 
-msgid "There are no pending changes to apply!"
+msgid "There are no changes to apply."
 msgstr ""
 
 msgid "There are no pending changes to revert!"
@@ -3192,7 +3247,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3219,9 +3274,6 @@ msgid ""
 "their status."
 msgstr ""
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 
@@ -3403,9 +3455,9 @@ msgstr ""
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 ""
 
@@ -3510,6 +3562,9 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3695,6 +3750,9 @@ msgstr ""
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
index 334ef00536dff848596deb03f38c6a82eff55061..aba91126d62ab7d6e166e6739adc88af0b94df1d 100644 (file)
@@ -213,9 +213,6 @@ msgstr ""
 msgid "Access Point"
 msgstr "Erişim Noktası"
 
-msgid "Action"
-msgstr "Eylem"
-
 msgid "Actions"
 msgstr "Eylemler"
 
@@ -291,6 +288,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Listelenenlerin haricindekilere izin ver"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Yanlızca listelenenlere izin ver"
 
@@ -396,11 +396,11 @@ msgstr "Anten Yapılandırması"
 msgid "Any zone"
 msgstr ""
 
-msgid "Apply"
-msgstr "Uygula"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Değişiklikleri uygula"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -556,9 +556,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr ""
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -580,16 +577,24 @@ msgstr ""
 msgid "Changes applied."
 msgstr ""
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr ""
 
 msgid "Channel"
 msgstr ""
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr ""
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -655,10 +660,13 @@ msgstr ""
 msgid "Configuration"
 msgstr ""
 
-msgid "Configuration applied."
+msgid "Configuration files will be kept."
 msgstr ""
 
-msgid "Configuration files will be kept."
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
 msgstr ""
 
 msgid "Confirmation"
@@ -679,6 +687,12 @@ msgstr ""
 msgid "Connections"
 msgstr ""
 
+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 ""
+
 msgid "Country"
 msgstr ""
 
@@ -720,6 +734,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -842,6 +861,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr ""
 
@@ -874,6 +896,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr ""
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr ""
 
@@ -976,6 +1001,11 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr ""
 
@@ -1033,6 +1063,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1111,6 +1144,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1212,6 +1248,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1295,9 +1334,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr ""
 
@@ -1872,9 +1908,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr ""
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1892,10 +1925,10 @@ msgstr ""
 msgid "Memory usage (%)"
 msgstr ""
 
-msgid "Metric"
+msgid "Mesh Id"
 msgstr ""
 
-msgid "Minimum hold time"
+msgid "Metric"
 msgstr ""
 
 msgid "Mirror monitor port"
@@ -2101,6 +2134,9 @@ msgstr ""
 msgid "Nslookup"
 msgstr ""
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr ""
 
@@ -2113,6 +2149,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr ""
 
@@ -2334,9 +2373,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr ""
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2686,6 +2722,15 @@ msgstr ""
 msgid "Revert"
 msgstr ""
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr ""
 
@@ -2762,9 +2807,6 @@ msgstr ""
 msgid "Save & Apply"
 msgstr ""
 
-msgid "Save &#38; Apply"
-msgstr ""
-
 msgid "Scan"
 msgstr ""
 
@@ -2852,6 +2894,9 @@ msgstr ""
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr ""
 
@@ -2894,9 +2939,6 @@ msgstr ""
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -2935,6 +2977,9 @@ msgstr ""
 msgid "Start priority"
 msgstr ""
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr ""
 
@@ -2996,6 +3041,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3081,6 +3129,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3098,9 +3156,6 @@ msgid ""
 "\"Proceed\" below to start the flash procedure."
 msgstr ""
 
-msgid "The following changes have been committed"
-msgstr ""
-
 msgid "The following changes have been reverted"
 msgstr ""
 
@@ -3166,7 +3221,7 @@ msgstr ""
 msgid "There are no active leases."
 msgstr ""
 
-msgid "There are no pending changes to apply!"
+msgid "There are no changes to apply."
 msgstr ""
 
 msgid "There are no pending changes to revert!"
@@ -3212,7 +3267,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3239,9 +3294,6 @@ msgid ""
 "their status."
 msgstr ""
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 msgid "This page gives an overview over currently active network connections."
 msgstr ""
 
@@ -3423,9 +3475,9 @@ msgstr ""
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 ""
 
@@ -3530,6 +3582,9 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3717,6 +3772,9 @@ msgstr ""
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3762,6 +3820,15 @@ msgstr "evet"
 msgid "« Back"
 msgstr "« Geri"
 
+#~ msgid "Apply"
+#~ msgstr "Uygula"
+
+#~ msgid "Applying changes"
+#~ msgstr "Değişiklikleri uygula"
+
+#~ msgid "Action"
+#~ msgstr "Eylem"
+
 #~ msgid "AR Support"
 #~ msgstr "AR Desteği"
 
index de7259b5d44ead0aa2bb4fabf15d8bf08a1b9629..e86bd81a8ed5ab5a5d4a5a282250956964984447 100644 (file)
@@ -236,9 +236,6 @@ msgstr "Концентратор доступу"
 msgid "Access Point"
 msgstr "Точка доступу"
 
-msgid "Action"
-msgstr "Дія"
-
 msgid "Actions"
 msgstr "Дії"
 
@@ -312,6 +309,9 @@ msgstr ""
 msgid "Allow all except listed"
 msgstr "Дозволити всі, крім зазначених"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Дозволити тільки зазначені"
 
@@ -420,11 +420,11 @@ msgstr "Конфигурація антени"
 msgid "Any zone"
 msgstr "Будь-яка зона"
 
-msgid "Apply"
-msgstr "Застосувати"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Застосування змін"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -583,9 +583,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "Кнопки"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -607,16 +604,24 @@ msgstr "Зміни"
 msgid "Changes applied."
 msgstr "Зміни застосовано."
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "Зміна пароля адміністратора для доступу до пристрою"
 
 msgid "Channel"
 msgstr "Канал"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "Перевірити"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -693,12 +698,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "Конфігурація"
 
-msgid "Configuration applied."
-msgstr "Конфігурація застосована."
-
 msgid "Configuration files will be kept."
 msgstr "Конфігураційні файли будуть збережені."
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "Підтвердження"
 
@@ -717,6 +725,12 @@ msgstr ""
 msgid "Connections"
 msgstr "Підключення"
 
+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 ""
+
 msgid "Country"
 msgstr "Країна"
 
@@ -758,6 +772,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -885,6 +904,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "Діагностика"
 
@@ -919,6 +941,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr "Відкидати RFC1918-відповіді від клієнта на сервер"
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "Показані тільки непорожні пакети"
 
@@ -1037,6 +1062,11 @@ msgstr "Аварійний"
 msgid "Enable"
 msgstr "Увімкнути"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Увімкнути <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1094,6 +1124,9 @@ msgstr "Увімкнено/Вимкнено"
 msgid "Enabled"
 msgstr "Увімкнено"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1174,6 +1207,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "Файл"
 
@@ -1275,6 +1311,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "Спрямовувати широкомовний трафік"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "Режим спрямовування"
 
@@ -1358,9 +1397,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "Обробник"
-
 msgid "Hang Up"
 msgstr "Призупинити"
 
@@ -1966,9 +2002,6 @@ msgstr "Максимально допустимий розмір UDP-пакет
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "Максимальний час очікування готовності модему (секунд)"
 
-msgid "Maximum hold time"
-msgstr "Максимальний час утримування"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1986,12 +2019,12 @@ msgstr "Пам'ять"
 msgid "Memory usage (%)"
 msgstr "Використання пам'яті, %"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Метрика"
 
-msgid "Minimum hold time"
-msgstr "Мінімальний час утримування"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2197,6 +2230,9 @@ msgstr "Попередження"
 msgid "Nslookup"
 msgstr "DNS-запит"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK"
 
@@ -2209,6 +2245,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr "Затримка Off-State"
 
@@ -2441,9 +2480,6 @@ msgstr "Шлях до сертифікату клієнта"
 msgid "Path to Private Key"
 msgstr "Шлях до закритого ключа"
 
-msgid "Path to executable which handles the button event"
-msgstr "Шлях до програми, яка обробляє натискання кнопки"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2811,6 +2847,15 @@ msgstr "Показати/приховати пароль"
 msgid "Revert"
 msgstr "Скасувати зміни"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr "Корінь"
 
@@ -2889,9 +2934,6 @@ msgstr "Зберегти"
 msgid "Save & Apply"
 msgstr "Зберегти і застосувати"
 
-msgid "Save &#38; Apply"
-msgstr "Зберегти і застосувати"
-
 msgid "Scan"
 msgstr "Сканувати"
 
@@ -2982,6 +3024,9 @@ msgstr "Розмір"
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "Пропустити"
 
@@ -3027,9 +3072,6 @@ msgstr "Джерело"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "Визначає стан кнопки для обробки"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "Визначає каталог, до якого приєднаний пристрій"
 
@@ -3072,6 +3114,9 @@ msgstr "Запустити"
 msgid "Start priority"
 msgstr "Стартовий пріоритет"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "Запуск"
 
@@ -3137,6 +3182,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3234,6 +3282,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3257,9 +3315,6 @@ msgstr ""
 "їх з вихідним файлом для забезпечення цілісності даних.<br /> Натисніть "
 "\"Продовжити\", щоб розпочати процедуру оновлення прошивки."
 
-msgid "The following changes have been committed"
-msgstr "Нижче наведені зміни були застосовані"
-
 msgid "The following changes have been reverted"
 msgstr "Нижче наведені зміни були скасовані"
 
@@ -3345,8 +3400,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "Активних оренд немає."
 
-msgid "There are no pending changes to apply!"
-msgstr "Немає жодних змін до застосування!"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "Немає жодних змін до скасування!"
@@ -3400,10 +3455,10 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 "Це локальна адреса кінцевої точки, присвоєна тунельним брокером, зазвичай "
-"закінчується на <code>:2</code>"
+"закінчується на <code>...:2/64</code>"
 
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
@@ -3437,9 +3492,6 @@ msgstr ""
 "У цьому списку наведені працюючі на даний момент системні процеси та їх "
 "статус."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "Ця сторінка дозволяє настроїти нетипові дії кнопки"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "Ця сторінка надає огляд поточних активних мережних підключень."
 
@@ -3626,9 +3678,9 @@ msgstr "Використовувати таблицю маршрутизації
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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>, щоб додати новий запис оренди. "
@@ -3739,6 +3791,9 @@ msgstr "Очікуємо, доки зміни наберуть чинності.
 msgid "Waiting for command to complete..."
 msgstr "Очікуємо завершення виконання команди..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3934,6 +3989,9 @@ msgstr "відкрита"
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3979,6 +4037,48 @@ msgstr "так"
 msgid "« Back"
 msgstr "« Назад"
 
+#~ msgid "Apply"
+#~ msgstr "Застосувати"
+
+#~ msgid "Applying changes"
+#~ msgstr "Застосування змін"
+
+#~ msgid "Configuration applied."
+#~ msgstr "Конфігурація застосована."
+
+#~ msgid "Save &#38; Apply"
+#~ msgstr "Зберегти і застосувати"
+
+#~ 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 "Час оренди"
 
index 48f6b73e82c22fbe4f6abf41681d3787d476e202..8dacc12e653ac80ce2c2932dd5482e7156330092 100644 (file)
@@ -211,9 +211,6 @@ msgstr ""
 msgid "Access Point"
 msgstr "Điểm truy cập"
 
-msgid "Action"
-msgstr "Action"
-
 msgid "Actions"
 msgstr "Hành động"
 
@@ -285,6 +282,9 @@ msgstr "Cho phép <abbr title=\"Secure Shell\">SSH</abbr> xác thực mật mã"
 msgid "Allow all except listed"
 msgstr "Cho phép tất cả trừ danh sách liệt kê"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "Chỉ cho phép danh sách liệt kê"
 
@@ -390,11 +390,11 @@ msgstr ""
 msgid "Any zone"
 msgstr ""
 
-msgid "Apply"
-msgstr "Áp dụng"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "Tiến hành thay đổi"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -550,9 +550,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr ""
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -574,16 +571,24 @@ msgstr "Thay đổi"
 msgid "Changes applied."
 msgstr "Thay đổi đã áp dụng"
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr ""
 
 msgid "Channel"
 msgstr "Kênh"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr ""
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -649,10 +654,13 @@ msgstr ""
 msgid "Configuration"
 msgstr "Cấu hình"
 
-msgid "Configuration applied."
+msgid "Configuration files will be kept."
 msgstr ""
 
-msgid "Configuration files will be kept."
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
 msgstr ""
 
 msgid "Confirmation"
@@ -673,6 +681,12 @@ msgstr ""
 msgid "Connections"
 msgstr ""
 
+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 ""
+
 msgid "Country"
 msgstr ""
 
@@ -714,6 +728,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -838,6 +857,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr ""
 
@@ -870,6 +892,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr ""
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr ""
 
@@ -981,6 +1006,11 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "Kích hoạt <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1038,6 +1068,9 @@ msgstr "Cho kích hoạt/ Vô hiệu hóa"
 msgid "Enabled"
 msgstr ""
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1116,6 +1149,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1217,6 +1253,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr ""
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr ""
 
@@ -1300,9 +1339,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr ""
-
 msgid "Hang Up"
 msgstr "Hang Up"
 
@@ -1887,9 +1923,6 @@ msgstr ""
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr ""
 
-msgid "Maximum hold time"
-msgstr "Mức cao nhất"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1907,12 +1940,12 @@ msgstr "Bộ nhớ"
 msgid "Memory usage (%)"
 msgstr "Memory usage (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "Metric"
 
-msgid "Minimum hold time"
-msgstr "Mức thấp nhất"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2118,6 +2151,9 @@ msgstr ""
 msgid "Nslookup"
 msgstr ""
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "OK "
 
@@ -2130,6 +2166,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr ""
 
@@ -2357,9 +2396,6 @@ msgstr ""
 msgid "Path to Private Key"
 msgstr "Đường dẫn tới private key"
 
-msgid "Path to executable which handles the button event"
-msgstr ""
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2711,6 +2747,15 @@ msgstr ""
 msgid "Revert"
 msgstr "Revert"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr ""
 
@@ -2789,9 +2834,6 @@ msgstr "Lưu"
 msgid "Save & Apply"
 msgstr "Lưu & áp dụng "
 
-msgid "Save &#38; Apply"
-msgstr ""
-
 msgid "Scan"
 msgstr "Scan"
 
@@ -2879,6 +2921,9 @@ msgstr "Dung lượng "
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr ""
 
@@ -2921,9 +2966,6 @@ msgstr "Nguồn"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr ""
-
 msgid "Specifies the directory the device is attached to"
 msgstr ""
 
@@ -2962,6 +3004,9 @@ msgstr "Bắt đầu "
 msgid "Start priority"
 msgstr "Bắt đầu ưu tiên"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr ""
 
@@ -3023,6 +3068,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3108,6 +3156,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3129,9 +3187,6 @@ msgid ""
 "\"Proceed\" below to start the flash procedure."
 msgstr ""
 
-msgid "The following changes have been committed"
-msgstr ""
-
 msgid "The following changes have been reverted"
 msgstr "Những thay đối sau đây đã được để trở về tình trạng cũ. "
 
@@ -3203,7 +3258,7 @@ msgstr ""
 msgid "There are no active leases."
 msgstr ""
 
-msgid "There are no pending changes to apply!"
+msgid "There are no changes to apply."
 msgstr ""
 
 msgid "There are no pending changes to revert!"
@@ -3249,7 +3304,7 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
+"ends with <code>...:2/64</code>"
 msgstr ""
 
 msgid ""
@@ -3280,9 +3335,6 @@ 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."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr ""
-
 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."
@@ -3465,9 +3517,9 @@ msgstr ""
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 ""
 
@@ -3572,6 +3624,9 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3763,6 +3818,9 @@ msgstr ""
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3808,6 +3866,21 @@ msgstr ""
 msgid "« Back"
 msgstr ""
 
+#~ 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"
 
index f516d42942c2289e953bfc03217090318cd7387b..8399e947b8e4e882a26e863eb742e8eb6cb5b3d5 100644 (file)
@@ -7,7 +7,7 @@ msgid "%.1f dB"
 msgstr ""
 
 msgid "%s is untagged in multiple VLANs!"
-msgstr "%s 在多个 VLAN 中均未关联!"
+msgstr "%s 在多个 VLAN 中均未标记!"
 
 msgid "(%d minute window, %d second interval)"
 msgstr "(最近 %d 分钟信息,每 %d 秒刷新)"
@@ -209,9 +209,6 @@ msgstr "接入集中器"
 msgid "Access Point"
 msgstr "接入点 AP"
 
-msgid "Action"
-msgstr "动作"
-
 msgid "Actions"
 msgstr "动作"
 
@@ -283,6 +280,9 @@ msgstr "允许 <abbr title=\"Secure Shell\">SSH</abbr> 密码验证"
 msgid "Allow all except listed"
 msgstr "仅允许列表外"
 
+msgid "Allow legacy 802.11b rates"
+msgstr "允许传统的 802.11b 速率"
+
 msgid "Allow listed only"
 msgstr "仅允许列表内"
 
@@ -390,11 +390,11 @@ msgstr "天线配置"
 msgid "Any zone"
 msgstr "任意区域"
 
-msgid "Apply"
-msgstr "应用"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "正在应用更改"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -552,9 +552,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr "由固件指定的软件源。此处的设置在任何系统升级中都不会被保留。"
 
-msgid "Buttons"
-msgstr "按键"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr "CA 证书,如果留空,则证书将在第一次连接后被保存。"
 
@@ -576,16 +573,24 @@ msgstr "修改数"
 msgid "Changes applied."
 msgstr "更改已应用"
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "修改访问设备的管理员密码"
 
 msgid "Channel"
 msgstr "信道"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "检查"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr "在挂载前检查文件系统"
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -651,16 +656,22 @@ msgid ""
 "workaround might cause interoperability issues and reduced robustness of key "
 "negotiation especially in environments with heavy traffic load."
 msgstr ""
+"通过禁用用于安装密钥的 EAPOL-Key 帧的重新传输,来增加客户端密钥重安装攻击的复"
+"杂度。此解决方法可能会导致互操作性问题,并降低密钥协商的可靠性,特别是在流量"
+"负载较重的环境中。"
 
 msgid "Configuration"
 msgstr "配置"
 
-msgid "Configuration applied."
-msgstr "配置已应用。"
-
 msgid "Configuration files will be kept."
 msgstr "配置文件将被保留。"
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "确认密码"
 
@@ -679,6 +690,12 @@ msgstr "当 TLS 不可用时,与服务器连接失败"
 msgid "Connections"
 msgstr "连接"
 
+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 ""
+
 msgid "Country"
 msgstr "国家"
 
@@ -720,6 +737,12 @@ msgstr "自定义软件源地址,例如:私有的软件源。此文件在系
 msgid "Custom feeds"
 msgstr "自定义软件源"
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+"自定义文件(证书、脚本)会保留在系统上。若无需保留,请先执行恢复出厂设置。"
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -844,6 +867,9 @@ msgstr "设备正在重启..."
 msgid "Device unreachable"
 msgstr "无法连接到设备"
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "网络诊断"
 
@@ -878,6 +904,9 @@ msgstr "禁用(默认)"
 msgid "Discard upstream RFC1918 responses"
 msgstr "丢弃 RFC1918 上行响应数据"
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "只显示有内容的软件包"
 
@@ -934,7 +963,7 @@ msgid "Download backup"
 msgstr "下载备份"
 
 msgid "Downstream SNR offset"
-msgstr ""
+msgstr "下游 SNR 偏移"
 
 msgid "Dropbear Instance"
 msgstr "Dropbear 实例"
@@ -987,6 +1016,11 @@ msgstr "紧急"
 msgid "Enable"
 msgstr "启用"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "开启 <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1018,7 +1052,7 @@ msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr "启用 WPS 一键加密按钮,需要 WPA(2)-PSK"
 
 msgid "Enable key reinstallation (KRACK) countermeasures"
-msgstr ""
+msgstr "启用密钥重新安装(KRACK)对策"
 
 msgid "Enable learning and aging"
 msgstr "启用智能交换学习"
@@ -1044,6 +1078,9 @@ msgstr "启用/禁用"
 msgid "Enabled"
 msgstr "启用"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1120,6 +1157,9 @@ msgid "FT over the Air"
 msgstr ""
 
 msgid "FT protocol"
+msgstr "FT 协议"
+
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
 msgstr ""
 
 msgid "File"
@@ -1223,6 +1263,9 @@ msgstr "前向纠错秒数(FECS)"
 msgid "Forward broadcast traffic"
 msgstr "转发广播数据包"
 
+msgid "Forward mesh peer traffic"
+msgstr "转发 mesh 节点数据包"
+
 msgid "Forwarding mode"
 msgstr "转发模式"
 
@@ -1270,7 +1313,7 @@ msgid "Generate Config"
 msgstr "生成配置"
 
 msgid "Generate PMK locally"
-msgstr ""
+msgstr "本地生成 PMK"
 
 msgid "Generate archive"
 msgstr "生成备份"
@@ -1308,9 +1351,6 @@ msgstr "HE.net 用户名"
 msgid "HT mode (802.11n)"
 msgstr "HT 模式(802.11n)"
 
-msgid "Handler"
-msgstr "处理程序"
-
 msgid "Hang Up"
 msgstr "挂起"
 
@@ -1899,9 +1939,6 @@ msgstr "允许的最大 EDNS.0 UDP 数据包大小"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "调制解调器就绪的最大等待时间(秒)"
 
-msgid "Maximum hold time"
-msgstr "最大持续时间"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1921,12 +1958,12 @@ msgstr "内存"
 msgid "Memory usage (%)"
 msgstr "内存使用率(%)"
 
+msgid "Mesh Id"
+msgstr "Mesh ID"
+
 msgid "Metric"
 msgstr "跃点数"
 
-msgid "Minimum hold time"
-msgstr "最低持续时间"
-
 msgid "Mirror monitor port"
 msgstr "数据包镜像监听端口"
 
@@ -2130,6 +2167,9 @@ msgstr "注意"
 msgid "Nslookup"
 msgstr "Nslookup"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr "缓存的 DNS 条目数量(最大 10000,0 表示不缓存)"
+
 msgid "OK"
 msgstr "确认"
 
@@ -2142,6 +2182,9 @@ msgstr "混淆组密码"
 msgid "Obfuscated Password"
 msgstr "混淆密码"
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr "关闭时间"
 
@@ -2302,7 +2345,7 @@ msgid "PIN"
 msgstr "PIN"
 
 msgid "PMK R1 Push"
-msgstr "PMK R1 Push"
+msgstr "R1 推送 PMK"
 
 msgid "PPP"
 msgstr "PPP"
@@ -2373,9 +2416,6 @@ msgstr "客户端证书路径"
 msgid "Path to Private Key"
 msgstr "私钥路径"
 
-msgid "Path to executable which handles the button event"
-msgstr "处理按键动作的可执行文件路径"
-
 msgid "Path to inner CA-Certificate"
 msgstr "内部 CA 证书的路径"
 
@@ -2511,10 +2551,10 @@ msgid "Quality"
 msgstr "质量"
 
 msgid "R0 Key Lifetime"
-msgstr "R0 Key Lifetime"
+msgstr "R0 密钥生存期"
 
 msgid "R1 Key Holder"
-msgstr "R1 Key Holder"
+msgstr "R1 密钥持有者"
 
 msgid "RFC3947 NAT-T mode"
 msgstr "RFC3947 NAT-T 模式"
@@ -2738,6 +2778,15 @@ msgstr "显示/隐藏 密码"
 msgid "Revert"
 msgstr "放弃"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr "Root"
 
@@ -2814,9 +2863,6 @@ msgstr "保存"
 msgid "Save & Apply"
 msgstr "保存&应用"
 
-msgid "Save &#38; Apply"
-msgstr "保存&#38;应用"
-
 msgid "Scan"
 msgstr "扫描"
 
@@ -2906,6 +2952,9 @@ msgstr "大小"
 msgid "Size (.ipk)"
 msgstr "大小(.ipk)"
 
+msgid "Size of DNS query cache"
+msgstr "DNS 查询缓存的大小"
+
 msgid "Skip"
 msgstr "跳过"
 
@@ -2950,9 +2999,6 @@ msgstr "源地址"
 msgid "Source routing"
 msgstr "源路由"
 
-msgid "Specifies the button state to handle"
-msgstr "指定要处理的按键状态"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "指定设备的挂载目录"
 
@@ -2991,6 +3037,9 @@ msgstr "开始"
 msgid "Start priority"
 msgstr "启动优先级"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "启动项"
 
@@ -3054,6 +3103,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr "交换机 %q 具有未知的拓扑结构,VLAN 设置可能不正确。"
 
+msgid "Switch Port Mask"
+msgstr "交换机端口掩码"
+
 msgid "Switch VLAN"
 msgstr "交换机 VLAN"
 
@@ -3144,6 +3196,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr "由于以下错误,配置文件无法被加载:"
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3165,9 +3227,6 @@ msgstr ""
 "固件已上传,请注意核对文件大小和校验值!<br />点击下面的“继续”开始刷写,刷新"
 "过程中切勿断电!"
 
-msgid "The following changes have been committed"
-msgstr "以下更改已提交"
-
 msgid "The following changes have been reverted"
 msgstr "以下更改已放弃"
 
@@ -3239,8 +3298,8 @@ msgstr "不支持所上传的映像文件格式,请选择适合当前平台的
 msgid "There are no active leases."
 msgstr "没有已分配的租约。"
 
-msgid "There are no pending changes to apply!"
-msgstr "没有待生效的更改!"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "没有可放弃的更改!"
@@ -3289,8 +3348,8 @@ msgstr "启动脚本插入到 'exit 0' 之前即可随系统启动运行。"
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
-msgstr "隧道代理分配的本地终端地址,通常以 <code>:2</code> 结尾"
+"ends with <code>...:2/64</code>"
+msgstr "隧道代理分配的本地终端地址,通常以 <code>...:2/64</code> 结尾"
 
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
@@ -3318,9 +3377,6 @@ msgid ""
 "their status."
 msgstr "系统中正在运行的进程概况和它们的状态信息。"
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "自定义按键动作。"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "活跃的网络连接概况。"
 
@@ -3504,9 +3560,9 @@ msgstr "使用路由表"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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 地址”和“主机名”字段的值将被固定分配"
@@ -3618,6 +3674,9 @@ msgstr "正在应用更改..."
 msgid "Waiting for command to complete..."
 msgstr "等待命令执行完成..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr "等待设备..."
 
@@ -3630,7 +3689,7 @@ msgstr "警告:一些未保存的配置将在重启后丢失!"
 msgid ""
 "When using a PSK, the PMK can be generated locally without inter AP "
 "communications"
-msgstr ""
+msgstr "当使用 PSK 时,PMK 可以在没有 AP 间通信的情况下在本地生成"
 
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr "是否添加一条通向隧道的 IPv6 默认路由"
@@ -3809,6 +3868,9 @@ msgstr "开放式"
 msgid "overlay"
 msgstr "覆盖"
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr "中继模式"
 
@@ -3828,7 +3890,7 @@ msgid "stateless + stateful"
 msgstr "无状态的 + 有状态的"
 
 msgid "tagged"
-msgstr "已关联"
+msgstr "已标记"
 
 msgid "time units (TUs / 1.024 ms) [1000-65535]"
 msgstr "时间单位(TUs / 1.024ms)[1000-65535]"
@@ -3846,7 +3908,7 @@ msgid "unspecified -or- create:"
 msgstr "不指定或新建:"
 
 msgid "untagged"
-msgstr "未关联"
+msgstr "未标记"
 
 msgid "yes"
 msgstr "是"
@@ -3854,6 +3916,48 @@ msgstr "是"
 msgid "« Back"
 msgstr "« 后退"
 
+#~ 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 "租用时间"
 
@@ -3942,7 +4046,7 @@ msgstr "« 后退"
 #~ msgstr "端口 %d"
 
 #~ msgid "Port %d is untagged in multiple VLANs!"
-#~ msgstr "端口 %d 在多个 VLAN 中均未关联!"
+#~ msgstr "端口 %d 在多个 VLAN 中均未标记!"
 
 #~ msgid "VLAN Interface"
 #~ msgstr "VLAN 接口"
index c0abad2a7643d98be6a22d4853c2a2dcf54d6b6d..c62fd0d9b90643aa2fe50343baf3367caa550bf3 100644 (file)
@@ -214,9 +214,6 @@ msgstr "接入集線器"
 msgid "Access Point"
 msgstr "存取點 (AP)"
 
-msgid "Action"
-msgstr "動作"
-
 msgid "Actions"
 msgstr "動作"
 
@@ -288,6 +285,9 @@ msgstr "允許 <abbr title=\"Secure Shell\">SSH</abbr> 密碼驗證"
 msgid "Allow all except listed"
 msgstr "僅允許列表外"
 
+msgid "Allow legacy 802.11b rates"
+msgstr ""
+
 msgid "Allow listed only"
 msgstr "僅允許列表內"
 
@@ -393,11 +393,11 @@ msgstr "天線設定"
 msgid "Any zone"
 msgstr "任意區域"
 
-msgid "Apply"
-msgstr "套用"
+msgid "Apply request failed with status <code>%h</code>"
+msgstr ""
 
-msgid "Applying changes"
-msgstr "正在套用變更"
+msgid "Apply unchecked"
+msgstr ""
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
@@ -555,9 +555,6 @@ msgid ""
 "preserved in any sysupgrade."
 msgstr ""
 
-msgid "Buttons"
-msgstr "按鈕"
-
 msgid "CA certificate; if empty it will be saved after the first connection."
 msgstr ""
 
@@ -579,16 +576,24 @@ msgstr "待修改"
 msgid "Changes applied."
 msgstr "修改已套用"
 
+msgid "Changes have been reverted."
+msgstr ""
+
 msgid "Changes the administrator password for accessing the device"
 msgstr "修改管理員密碼"
 
 msgid "Channel"
 msgstr "頻道"
 
+msgid ""
+"Channel %d is not available in the %s regulatory domain and has been auto-"
+"adjusted to %d."
+msgstr ""
+
 msgid "Check"
 msgstr "檢查"
 
-msgid "Check fileystems before mount"
+msgid "Check filesystems before mount"
 msgstr ""
 
 msgid "Check this option to delete the existing networks from this radio."
@@ -660,12 +665,15 @@ msgstr ""
 msgid "Configuration"
 msgstr "設定"
 
-msgid "Configuration applied."
-msgstr "啟用設定"
-
 msgid "Configuration files will be kept."
 msgstr "設定檔將被存檔"
 
+msgid "Configuration has been applied."
+msgstr ""
+
+msgid "Configuration has been rolled back!"
+msgstr ""
+
 msgid "Confirmation"
 msgstr "再確認"
 
@@ -684,6 +692,12 @@ msgstr ""
 msgid "Connections"
 msgstr "連線數"
 
+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 ""
+
 msgid "Country"
 msgstr "國別"
 
@@ -725,6 +739,11 @@ msgstr ""
 msgid "Custom feeds"
 msgstr ""
 
+msgid ""
+"Custom files (certificates, scripts) may remain on the system. To prevent "
+"this, perform a factory-reset first."
+msgstr ""
+
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
@@ -851,6 +870,9 @@ msgstr ""
 msgid "Device unreachable"
 msgstr ""
 
+msgid "Device unreachable!"
+msgstr ""
+
 msgid "Diagnostics"
 msgstr "診斷"
 
@@ -884,6 +906,9 @@ msgstr ""
 msgid "Discard upstream RFC1918 responses"
 msgstr "丟棄上游RFC1918 虛擬IP網路的回應"
 
+msgid "Dismiss"
+msgstr ""
+
 msgid "Displaying only packages containing"
 msgstr "僅顯示內含的軟體"
 
@@ -993,6 +1018,11 @@ msgstr "緊急"
 msgid "Enable"
 msgstr "啟用"
 
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 msgstr "啟用 <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
@@ -1050,6 +1080,9 @@ msgstr "啟用/關閉"
 msgid "Enabled"
 msgstr "啟用"
 
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
@@ -1129,6 +1162,9 @@ msgstr ""
 msgid "FT protocol"
 msgstr ""
 
+msgid "Failed to confirm apply within %ds, waiting for rollback…"
+msgstr ""
+
 msgid "File"
 msgstr "檔案"
 
@@ -1230,6 +1266,9 @@ msgstr ""
 msgid "Forward broadcast traffic"
 msgstr "轉發廣播流量"
 
+msgid "Forward mesh peer traffic"
+msgstr ""
+
 msgid "Forwarding mode"
 msgstr "轉發模式"
 
@@ -1313,9 +1352,6 @@ msgstr ""
 msgid "HT mode (802.11n)"
 msgstr ""
 
-msgid "Handler"
-msgstr "多執行緒"
-
 msgid "Hang Up"
 msgstr "斷線"
 
@@ -1896,9 +1932,6 @@ msgstr "允許EDNS.0 協定的UDP封包最大數量"
 msgid "Maximum amount of seconds to wait for the modem to become ready"
 msgstr "等待數據機待命的最大秒數"
 
-msgid "Maximum hold time"
-msgstr "可持有最長時間"
-
 msgid ""
 "Maximum length of the name is 15 characters including the automatic protocol/"
 "bridge prefix (br-, 6in4-, pppoe- etc.)"
@@ -1916,12 +1949,12 @@ msgstr "記憶體"
 msgid "Memory usage (%)"
 msgstr "記憶體使用 (%)"
 
+msgid "Mesh Id"
+msgstr ""
+
 msgid "Metric"
 msgstr "公測單位"
 
-msgid "Minimum hold time"
-msgstr "可持有的最低時間"
-
 msgid "Mirror monitor port"
 msgstr ""
 
@@ -2125,6 +2158,9 @@ msgstr "通知"
 msgid "Nslookup"
 msgstr "DNS偵錯Nslookup"
 
+msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
+msgstr ""
+
 msgid "OK"
 msgstr "行"
 
@@ -2137,6 +2173,9 @@ msgstr ""
 msgid "Obfuscated Password"
 msgstr ""
 
+msgid "Obtain IPv6-Address"
+msgstr ""
+
 msgid "Off-State Delay"
 msgstr "關閉狀態延遲"
 
@@ -2362,9 +2401,6 @@ msgstr "用戶端-證書的路徑"
 msgid "Path to Private Key"
 msgstr "私人金鑰的路徑"
 
-msgid "Path to executable which handles the button event"
-msgstr "處理按鍵效果可執行檔路徑"
-
 msgid "Path to inner CA-Certificate"
 msgstr ""
 
@@ -2725,6 +2761,15 @@ msgstr "明示/隱藏 密碼"
 msgid "Revert"
 msgstr "回溯"
 
+msgid "Revert changes"
+msgstr ""
+
+msgid "Revert request failed with status <code>%h</code>"
+msgstr ""
+
+msgid "Reverting configuration…"
+msgstr ""
+
 msgid "Root"
 msgstr "根"
 
@@ -2801,9 +2846,6 @@ msgstr "保存"
 msgid "Save & Apply"
 msgstr "保存並啟用"
 
-msgid "Save &#38; Apply"
-msgstr "保存 &#38; 啟用"
-
 msgid "Scan"
 msgstr "掃描"
 
@@ -2892,6 +2934,9 @@ msgstr "大小"
 msgid "Size (.ipk)"
 msgstr ""
 
+msgid "Size of DNS query cache"
+msgstr ""
+
 msgid "Skip"
 msgstr "跳過"
 
@@ -2936,9 +2981,6 @@ msgstr "來源"
 msgid "Source routing"
 msgstr ""
 
-msgid "Specifies the button state to handle"
-msgstr "指定這個按鈕狀態以便操作"
-
 msgid "Specifies the directory the device is attached to"
 msgstr "指定這個設備被附掛到那個目錄"
 
@@ -2977,6 +3019,9 @@ msgstr "啟用"
 msgid "Start priority"
 msgstr "啟用優先權順序"
 
+msgid "Starting configuration apply…"
+msgstr ""
+
 msgid "Startup"
 msgstr "啟動"
 
@@ -3040,6 +3085,9 @@ msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
+msgid "Switch Port Mask"
+msgstr ""
+
 msgid "Switch VLAN"
 msgstr ""
 
@@ -3134,6 +3182,16 @@ msgstr ""
 msgid "The configuration file could not be loaded due to the following error:"
 msgstr ""
 
+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 ""
+
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
 "</abbr> <code>/dev/sda1</code>)"
@@ -3157,9 +3215,6 @@ msgstr ""
 "要刷的映像檔已上傳.下面是這個校驗碼和檔案大小詳列, 用原始檔比對它門以確保資料"
 "完整性.<br />按下面的\"繼續\"便可以開啟更新流程."
 
-msgid "The following changes have been committed"
-msgstr "接下來的修改已經被承諾"
-
 msgid "The following changes have been reverted"
 msgstr "接下來的修改已經被回復"
 
@@ -3234,8 +3289,8 @@ msgstr ""
 msgid "There are no active leases."
 msgstr "租賃尚未啟動."
 
-msgid "There are no pending changes to apply!"
-msgstr "尚無聽候的修改被採用"
+msgid "There are no changes to apply."
+msgstr ""
 
 msgid "There are no pending changes to revert!"
 msgstr "尚無聽候的修改被復元!"
@@ -3284,8 +3339,8 @@ msgstr ""
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
-"ends with <code>:2</code>"
-msgstr "這是由通道代理人指定的本地終端位址, 通常用 <code>:2</code>結尾."
+"ends with <code>...:2/64</code>"
+msgstr "這是由通道代理人指定的本地終端位址, 通常用 <code>...:2/64</code>結尾."
 
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
@@ -3313,9 +3368,6 @@ msgid ""
 "their status."
 msgstr "這清單提供目前正在執行的系統的執行緒和狀態的預覽."
 
-msgid "This page allows the configuration of custom button actions"
-msgstr "這一頁允許客製化按鍵動作的設定"
-
 msgid "This page gives an overview over currently active network connections."
 msgstr "這一頁提供目前正在活動中網路連線的預覽."
 
@@ -3499,9 +3551,9 @@ msgstr "使用路由表"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies to the fixed "
-"address to use and the <em>Hostname</em> is assigned as symbolic name to the "
-"requesting host. The optional <em>Lease time</em> can be used to set non-"
+"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> 標誌這"
@@ -3611,6 +3663,9 @@ msgstr "等待修改被啟用..."
 msgid "Waiting for command to complete..."
 msgstr "等待完整性指令..."
 
+msgid "Waiting for configuration to get applied… %ds"
+msgstr ""
+
 msgid "Waiting for device..."
 msgstr ""
 
@@ -3800,6 +3855,9 @@ msgstr "打開"
 msgid "overlay"
 msgstr ""
 
+msgid "random"
+msgstr ""
+
 msgid "relay mode"
 msgstr ""
 
@@ -3845,6 +3903,48 @@ msgstr "是的"
 msgid "« Back"
 msgstr "« 倒退"
 
+#~ 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 "租賃時間"
 
index baa3ac5d1e3d164cc6986a75f272ddba5ffb267f..82c2230e55ad9294987c758fa4b141652d1fbeca 100644 (file)
@@ -22,3 +22,9 @@ 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
index d083922955a319bd9f6b66fd6e785a7f4c9f7aed..1d4d110f2a9c2563239ed450eeb634ae52a9c44f 100644 (file)
@@ -36,6 +36,7 @@ config qos
 
 config system
        option init led
+       option exec '/etc/init.d/log reload'
        list affects luci_statistics
        list affects dhcp
 
diff --git a/modules/luci-base/root/etc/init.d/ucitrack b/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/modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json b/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": [ "*" ]
+               }
+       }
+}
index 2cb2108b9f6c895bcbca736caeb799e578910516..a26d3d14e1d9ae5ede3379f59bab70f9d0100c1b 100644 (file)
@@ -82,7 +82,7 @@ function index()
                end
 
 
-               page = entry({"admin", "network", "iface_add"}, cbi("admin_network/iface_add"), nil)
+               page = entry({"admin", "network", "iface_add"}, form("admin_network/iface_add"), nil)
                page.leaf = true
 
                page = entry({"admin", "network", "iface_delete"}, post("iface_delete"), nil)
@@ -258,7 +258,6 @@ function iface_status(ifaces)
                                        type       = device:type(),
                                        ifname     = device:name(),
                                        macaddr    = device:mac(),
-                                       macaddr    = device:mac(),
                                        is_up      = device:is_up(),
                                        rx_bytes   = device:rx_bytes(),
                                        tx_bytes   = device:tx_bytes(),
@@ -290,7 +289,8 @@ 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 %q >/dev/null 2>/dev/null" % iface)
+               luci.sys.call("env -i /sbin/ifup %s >/dev/null 2>/dev/null"
+                       % luci.util.shellquote(iface))
                luci.http.status(200, "Reconnected")
                return
        end
@@ -302,7 +302,8 @@ function iface_shutdown(iface)
        local netmd = require "luci.model.network".init()
        local net = netmd:get_network(iface)
        if net then
-               luci.sys.call("env -i /sbin/ifdown %q >/dev/null 2>/dev/null" % iface)
+               luci.sys.call("env -i /sbin/ifdown %s >/dev/null 2>/dev/null"
+                       % luci.util.shellquote(iface))
                luci.http.status(200, "Shutdown")
                return
        end
@@ -314,7 +315,8 @@ function iface_delete(iface)
        local netmd = require "luci.model.network".init()
        local net = netmd:del_network(iface)
        if net then
-               luci.sys.call("env -i /sbin/ifdown %q >/dev/null 2>/dev/null" % iface)
+               luci.sys.call("env -i /sbin/ifdown %s >/dev/null 2>/dev/null"
+                       % luci.util.shellquote(iface))
                luci.http.redirect(luci.dispatcher.build_url("admin/network/network"))
                netmd:commit("network")
                netmd:commit("wireless")
@@ -328,9 +330,11 @@ function wifi_status(devs)
        local s    = require "luci.tools.status"
        local rv   = { }
 
-       local dev
-       for dev in devs:gmatch("[%w%.%-]+") do
-               rv[#rv+1] = s.wifi_network(dev)
+       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
@@ -390,7 +394,7 @@ 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 % addr)
+               local util = io.popen(cmd % luci.util.shellquote(addr))
                if util then
                        while true do
                                local ln = util:read("*l")
@@ -409,21 +413,21 @@ function diag_command(cmd, addr)
 end
 
 function diag_ping(addr)
-       diag_command("ping -c 5 -W 1 %q 2>&1", 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 %q 2>&1", addr)
+       diag_command("traceroute -q 1 -w 1 -n %s 2>&1", addr)
 end
 
 function diag_nslookup(addr)
-       diag_command("nslookup %q 2>&1", addr)
+       diag_command("nslookup %s 2>&1", addr)
 end
 
 function diag_ping6(addr)
-       diag_command("ping6 -c 5 %q 2>&1", addr)
+       diag_command("ping6 -c 5 %s 2>&1", addr)
 end
 
 function diag_traceroute6(addr)
-       diag_command("traceroute6 -q 1 -w 2 -n %q 2>&1", addr)
+       diag_command("traceroute6 -q 1 -w 2 -n %s 2>&1", addr)
 end
index 22e1b7e173a5907bc8c45eadec4b7e5a45d8d552..4471fd597a1be0f39402d5b62248464cb9faeede 100644 (file)
@@ -14,7 +14,7 @@ function index()
        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"}, cbi("admin_status/processes"), _("Processes"), 6)
+       entry({"admin", "status", "processes"}, form("admin_status/processes"), _("Processes"), 6)
 
        entry({"admin", "status", "realtime"}, alias("admin", "status", "realtime", "load"), _("Realtime Graphs"), 7)
 
@@ -62,7 +62,9 @@ end
 function action_bandwidth(iface)
        luci.http.prepare_content("application/json")
 
-       local bwc = io.popen("luci-bwc -i %q 2>/dev/null" % iface)
+       local bwc = io.popen("luci-bwc -i %s 2>/dev/null"
+               % luci.util.shellquote(iface))
+
        if bwc then
                luci.http.write("[")
 
@@ -80,7 +82,9 @@ end
 function action_wireless(iface)
        luci.http.prepare_content("application/json")
 
-       local bwc = io.popen("luci-bwc -r %q 2>/dev/null" % iface)
+       local bwc = io.popen("luci-bwc -r %s 2>/dev/null"
+               % luci.util.shellquote(iface))
+
        if bwc then
                luci.http.write("[")
 
index 5478afa3e6e2eab107459fb6f79e95dc9c185859..6fcd66f44107e4ecdbcd167c630b4db6a6d31326 100644 (file)
@@ -27,7 +27,8 @@ function index()
                entry({"admin", "system", "fstab", "swap"},  cbi("admin_system/fstab/swap"),  nil).leaf = true
        end
 
-       if fs.access("/sys/class/leds") then
+       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
 
@@ -195,7 +196,7 @@ local function supports_sysupgrade()
 end
 
 local function supports_reset()
-       return (os.execute([[grep -sqE '"rootfs_data"|"ubi"' /proc/mtd]]) == 0)
+       return (os.execute([[grep -sq "^overlayfs:/overlay / overlay " /proc/mounts]]) == 0)
 end
 
 local function storage_size()
index 9c33d9c18b89788a4d4bdcd334e5d8fe6d55037e..9533ff5e6ea3d89bab823e1a7f3368df42c226ca 100644 (file)
@@ -5,60 +5,97 @@
 module("luci.controller.admin.uci", package.seeall)
 
 function index()
-       local redir = luci.http.formvalue("redir", true) or
-         luci.dispatcher.build_url(unpack(luci.dispatcher.context.request))
+       local redir = luci.http.formvalue("redir", true)
+               or table.concat(luci.dispatcher.context.request, "/")
 
        entry({"admin", "uci"}, nil, _("Configuration"))
        entry({"admin", "uci", "changes"}, call("action_changes"), _("Changes"), 40).query = {redir=redir}
        entry({"admin", "uci", "revert"}, post("action_revert"), _("Revert"), 30).query = {redir=redir}
-       entry({"admin", "uci", "apply"}, post("action_apply"), _("Apply"), 20).query = {redir=redir}
-       entry({"admin", "uci", "saveapply"}, post("action_apply"), _("Save &#38; Apply"), 10).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"}, post("action_confirm"), nil)
+       node.cors = true
+       node.sysauth_authenticator = authen
 end
 
+
 function action_changes()
-       local uci = luci.model.uci.cursor()
+       local uci  = require "luci.model.uci"
        local changes = uci:changes()
 
        luci.template.render("admin_uci/changes", {
-               changes = next(changes) and changes
+               changes  = next(changes) and changes,
+               timeout  = timeout
        })
 end
 
-function action_apply()
-       local path = luci.dispatcher.context.path
-       local uci = luci.model.uci.cursor()
+function action_revert()
+       local uci = require "luci.model.uci"
        local changes = uci:changes()
-       local reload = {}
 
-       -- Collect files to be applied and commit changes
+       -- Collect files to be reverted
+       local r, tbl
        for r, tbl in pairs(changes) do
-               table.insert(reload, r)
-               if path[#path] ~= "apply" then
-                       uci:load(r)
-                       uci:commit(r)
-                       uci:unload(r)
-               end
+               uci:revert(r)
        end
 
-       luci.template.render("admin_uci/apply", {
-               changes = next(changes) and changes,
-               configs = reload
+       luci.template.render("admin_uci/revert", {
+               changes = next(changes) and changes
        })
 end
 
 
-function action_revert()
-       local uci = luci.model.uci.cursor()
-       local changes = uci:changes()
+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
+       }
 
-       -- Collect files to be reverted
-       for r, tbl in pairs(changes) do
-               uci:load(r)
-               uci:revert(r)
-               uci:unload(r)
+       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
 
-       luci.template.render("admin_uci/revert", {
-               changes = next(changes) and changes
-       })
+function action_apply_rollback()
+       local uci = require "luci.model.uci"
+       local _, errstr = uci:apply(true)
+       ubus_state_to_http(errstr)
+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 _, errstr = uci:confirm()
+       ubus_state_to_http(errstr)
 end
index 0c01ceffca24358c9dc7f578740914ec1177e7ea..855ed31f100b5f6456e7a05e6e5f2aaccb7b755f 100644 (file)
@@ -2,6 +2,7 @@
 -- 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"
 
@@ -114,7 +115,7 @@ s:taboption("advanced", Flag, "nonegcache",
 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."))
+               "domain-specific or full upstream <abbr title=\"Domain Name System\">DNS</abbr> servers."))
 
 s:taboption("advanced", Flag, "strictorder",
        translate("Strict order"),
@@ -211,6 +212,12 @@ 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
@@ -263,8 +270,8 @@ s = m:section(TypedSection, "host", translate("Static Leases"),
                "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> " ..
-               "indentifies the host, the <em>IPv4-Address</em> specifies to the fixed address to " ..
-               "use and the <em>Hostname</em> is assigned as symbolic name to the requesting host. " ..
+               "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."))
 
@@ -273,7 +280,7 @@ s.anonymous = true
 s.template = "cbi/tblsection"
 
 name = s:option(Value, "name", translate("Hostname"))
-name.datatype = "hostname"
+name.datatype = "hostname('strict')"
 name.rmempty  = true
 
 function name.write(self, section, value)
@@ -290,14 +297,19 @@ mac = s:option(Value, "mac", translate("<abbr title=\"Media Access Control\">MAC
 mac.datatype = "list(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
+time.rmempty = true
 
 duid = s:option(Value, "duid", translate("<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"))
-duid.datatype = "and(rangelength(28,36),hexstring)"
+duid.datatype = "and(rangelength(20,36),hexstring)"
 fp = io.open("/var/hosts/odhcpd")
 if fp then
        for line in fp:lines() do
@@ -311,10 +323,10 @@ end
 
 hostid = s:option(Value, "hostid", translate("<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"))
 
-ipc.neighbors({ family = 4 }, function(n)
-       if n.mac and n.dest then
-               ip:value(n.dest:string())
-               mac:value(n.mac, "%s (%s)" %{ n.mac, n.dest:string() })
+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)
 
index fafacf35c571d9b52cbec88218357d4944b5ee4f..46945af58b3e695391e70fd6268d72bd663b6375 100644 (file)
@@ -3,6 +3,7 @@
 -- 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"))
 
@@ -19,9 +20,11 @@ ip = s:option(Value, "ip", translate("IP address"))
 ip.datatype = "ipaddr"
 ip.rmempty  = true
 
-ipc.neighbors({ }, function(n)
-       if n.mac and n.dest and not n.dest:is6linklocal() then
-               ip:value(n.dest:string(), "%s (%s)" %{ n.dest:string(), n.mac })
+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)
 
index 4fc71cefab5cdbf2b82f36d6e49bb6aaf157a036..38e5de7b39be75fad648db060b61c50c93917ac9 100644 (file)
@@ -16,6 +16,7 @@ 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")
@@ -27,18 +28,52 @@ 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 = m.uci:get("luci", s[".name"], option)
+                       return false
+               end
+       end)
+
+       return val
+end
+
 local function backup_ifnames(is_bridge)
-       if not net:is_floating() and not m:get(net:name(), "_orig_ifname") then
+       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
-                               ifns[#ifns+1] = ifn:name()
+                               local wif = ifn:get_wifinet()
+                               ifns[#ifns+1] = wif and wif:id() or ifn:name()
                        end
                        if #ifns > 0 then
-                               m:set(net:name(), "_orig_ifname", table.concat(ifns, " "))
-                               m:set(net:name(), "_orig_bridge", tostring(net:is_bridge()))
+                               set_ifstate(net:name(), "ifname", table.concat(ifns, " "))
+                               set_ifstate(net:name(), "bridge", tostring(net:is_bridge()))
                        end
                end
        end
@@ -84,10 +119,10 @@ if m:formvalue("cbid.network.%s._switch" % net:name()) then
                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 = (m:get(net:name(), "_orig_bridge") == "true")
+                       local br = (get_ifstate(net:name(), "bridge") == "true")
                        local ifn
                        local ifns = { }
-                       for ifn in ut.imatch(m:get(net:name(), "_orig_ifname")) do
+                       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)
@@ -114,9 +149,7 @@ if m:formvalue("cbid.network.%s._switch" % net:name()) then
                for k, v in pairs(m:get(net:name())) do
                        if k:sub(1,1) ~= "." and
                           k ~= "type" and
-                          k ~= "ifname" and
-                          k ~= "_orig_ifname" and
-                          k ~= "_orig_bridge"
+                          k ~= "ifname"
                        then
                                m:del(net:name(), k)
                        end
@@ -239,6 +272,11 @@ if not net:is_virtual() then
                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
 
 
index 83fdaadcbb961915d3c375454d9737f10f63cd5f..2bfe974af13964fedc9657a8134efdfde75cf3cd 100644 (file)
@@ -56,9 +56,9 @@ if fs.access("/etc/init.d/dsl_control") then
                line_mode:value("vdsl", translate("VDSL"))
 
                ds_snr = dsl:option(ListValue, "ds_snr_offset", translate("Downstream SNR offset"))
-               ds_snr:depends("line_mode", "adsl")
-               for i = -50, 50, 5 do
-                       ds_snr:value(i, translate("%.1f dB" %{ i / 10} ))
+               ds_snr.default = "0"
+               for i = -100, 100, 5 do
+                       ds_snr:value(i, translatef("%.1f dB", i / 10))
                end
        end
 
index 89a73a5ca88909c3e1274005602dbc0feb1f0d24..b52dff13ac9efe277f31b2f5dc63353c7620f3b2 100644 (file)
@@ -5,6 +5,7 @@
 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 = { }
 
@@ -74,7 +75,7 @@ m.uci:foreach("network", "switch",
                end
 
                -- Parse some common switch properties from swconfig help output.
-               local swc = io.popen("swconfig dev %q help 2>/dev/null" % switch_name)
+               local swc = io.popen("swconfig dev %s help 2>/dev/null" % ut.shellquote(switch_name))
                if swc then
 
                        local is_port_attr = false
index c64226931c71df2ef7f6f57e3921bd2739f93fcd..cacaa2595833c1ca93ad61baa0c704bb6f2b7f35 100644 (file)
@@ -7,6 +7,17 @@ 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
+
 arg[1] = arg[1] or ""
 
 m = Map("wireless", "",
@@ -19,16 +30,6 @@ m:chain("network")
 m:chain("firewall")
 m.redirect = luci.dispatcher.build_url("admin/network/wireless")
 
-local ifsection
-
-function m.on_commit(map)
-       local wnet = nw:get_wifinet(arg[1])
-       if ifsection and wnet then
-               ifsection.section = wnet.sid
-               m.title = luci.util.pcdata(wnet:get_i18n())
-       end
-end
-
 nw.init(m.uci)
 
 local wnet = nw:get_wifinet(arg[1])
@@ -40,38 +41,6 @@ if not wnet or not wdev then
        return
 end
 
--- 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)
-
-               nw:commit("wireless")
-               luci.sys.call("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null")
-
-               luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless", arg[1]))
-               return
-       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 %q" % new_cc)
-               luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless", arg[1]))
-               return
-       end
-end
-
-m.title = luci.util.pcdata(wnet:get_i18n())
-
-
 local function txpower_list(iw)
        local list = iw.txpwrlist or { }
        local off  = tonumber(iw.txpower_offset) or 0
@@ -112,6 +81,57 @@ 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
 
@@ -119,29 +139,12 @@ s:tab("general", translate("General Setup"))
 s:tab("macfilter", translate("MAC-Filter"))
 s:tab("advanced", translate("Advanced Settings"))
 
---[[
-back = s:option(DummyValue, "_overview", translate("Overview"))
-back.value = ""
-back.titleref = luci.dispatcher.build_url("admin", "network", "wireless")
-]]
-
 st = s:taboption("general", DummyValue, "__status", translate("Status"))
 st.template = "admin_network/wifi_status"
 st.ifname   = arg[1]
 
 en = s:taboption("general", Button, "__toggle")
 
-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
-
-
 local hwtype = wdev:get("type")
 
 -- NanoFoo
@@ -170,9 +173,7 @@ if found_sta then
                found_sta.channel or "(auto)", table.concat(found_sta.names, ", "))
 else
        ch = s:taboption("general", Value, "_mode_freq", '<br />'..translate("Operating frequency"))
-       ch.hwmodes = hw_modes
-       ch.htmodes = iw.htmodelist
-       ch.freqlist = iw.freqlist
+       ch.iwinfo = iw
        ch.template = "cbi/wireless_modefreq"
 
        function ch.cfgvalue(self, section)
@@ -228,6 +229,10 @@ if hwtype == "mac80211" then
                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."))
 
@@ -337,7 +342,6 @@ end
 ----------------------- Interface -----------------------
 
 s = m:section(NamedSection, wnet.sid, "wifi-iface", translate("Interface Configuration"))
-ifsection = s
 s.addremove = false
 s.anonymous = true
 s.defaults.device = wdev:name()
@@ -347,15 +351,31 @@ s:tab("encryption", translate("Wireless Security"))
 s:tab("macfilter", translate("MAC-Filter"))
 s:tab("advanced", translate("Advanced Settings"))
 
-ssid = s:taboption("general", Value, "ssid", translate("<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"))
-ssid.datatype = "maxlength(32)"
-
 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"})
+
+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>"))
 
 network = s:taboption("general", Value, "network", translate("Network"),
@@ -1029,7 +1049,7 @@ if hwtype == "mac80211" then
                retry_timeout.rmempty = true
        end
 
-       local key_retries = s:taboption("encryption", Flag, "wpa_disable_eapol_key_retries",
+       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."))
 
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/buttons.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/buttons.lua
deleted file mode 100644 (file)
index 6a81d71..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
--- Copyright 2008 Steven Barth <steven@midlink.org>
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("system", translate("Buttons"),
-       translate("This page allows the configuration of custom button actions"))
-
-s = m:section(TypedSection, "button", "")
-s.anonymous = true
-s.addremove = true
-
-s:option(Value, "button", translate("Name"))
-
-act = s:option(ListValue, "action",
-       translate("Action"),
-       translate("Specifies the button state to handle"))
-
-act:value("released")
-
-s:option(Value, "handler",
-       translate("Handler"),
-       translate("Path to executable which handles the button event"))
-
-min = s:option(Value, "min", translate("Minimum hold time"))
-min.rmempty = true
-
-max = s:option(Value, "max", translate("Maximum hold time"))
-max.rmempty = true
index fd466d5c26563ab3a4c96877a9ec921ef0421a94..3ce5351bf0efa54a1a8bd9e2e2c548aad820fb5f 100644 (file)
@@ -62,7 +62,7 @@ o = s:option(Flag, "auto_mount", translate("Automount Filesystem"), translate("A
 o.default = o.enabled
 o.rmempty = false
 
-o = s:option(Flag, "check_fs", translate("Check fileystems before mount"), translate("Automatically check filesystem for errors before mounting"))
+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
 
index 74e2f1a19da8a83bba06e84c823a054f071460e4..2ea044e16a9f27759bbffccd67891c3b2efc8d60 100644 (file)
@@ -152,4 +152,7 @@ for p in nixio.fs.glob("/sys/bus/usb/devices/*/usb[0-9]*-port[0-9]*") do
        end
 end
 
+port_mask = s:option(Value, "port_mask", translate ("Switch Port Mask"))
+port_mask:depends("trigger", "switch0")
+
 return m
index ea6ee91c7146f8e32a61a3b6c04e0b50a8e5f133..28a37dcd98a61a18e34d0e27731578ab9f1be425 100644 (file)
@@ -5,7 +5,7 @@
                        return duid.substr(16).replace(/(..)(?=..)/g, '$1:').toUpperCase();
 
                // DUID-LL / Ethernet
-               if (duid.length === 24 && duid.substr(0, 8) === '00030001')
+               if (duid.length === 20 && duid.substr(0, 8) === '00030001')
                        return duid.substr(8).replace(/(..)(?=..)/g, '$1:').toUpperCase();
 
                return null;
index 18f66c2a82d326f3a88a21f5c3bc6d74dbf4f447..5e6e494ad6e3cd03752ab76793bc7c189cdf385c 100644 (file)
                local conn_count = tonumber(
                        fs.readfile("/proc/sys/net/netfilter/nf_conntrack_count") or "") or 0
 
-               local conn_max = tonumber((
-                       luci.sys.exec("sysctl net.nf_conntrack_max") or
-                       luci.sys.exec("sysctl net.ipv4.netfilter.ip_conntrack_max") or
-                       ""):match("%d+")) or 4096
+               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,
                        return duid.substr(16).replace(/(..)(?=..)/g, '$1:').toUpperCase();
 
                // DUID-LL / Ethernet
-               if (duid.length === 24 && duid.substr(0, 8) === '00030001')
+               if (duid.length === 20 && duid.substr(0, 8) === '00030001')
                        return duid.substr(8).replace(/(..)(?=..)/g, '$1:').toUpperCase();
 
                return null;
index 5f2c07493950549f3faf638c1001136e4e62ac18..f474c71568a112278865c075c4b529988be9ea91 100644 (file)
@@ -53,7 +53,7 @@
                                <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
                                        <td class="cbi-value-field"><%=v.dest%></td>
                                        <td class="cbi-value-field"><%=v.mac%></td>
-                                       <td class="cbi-value-field"><%=v.dev%></td>
+                                       <td class="cbi-value-field"><%=luci.tools.webadmin.iface_get_network(v.dev) or '(' .. v.dev .. ')'%></td>
                                </tr>
                                <%
                                                        style = not style
index 3e3f65d9196ea9db403d02582b5716e14cfc83b9..b32ef782637400f56db34e4c6fdf5f49dedfd27c 100644 (file)
@@ -54,6 +54,9 @@
                                </div>
                        </form>
                </div>
+               <% if reset_avail then %>
+               <div class="alert-message warning"><%:Custom files (certificates, scripts) may remain on the system. To prevent this, perform a factory-reset first.%></div>
+               <% end %>
        </fieldset>
 
        <br />
index d5d78289be3f38fa478cbd4651aebda08824e925..88e0fffd9c82c2cee3d5b41c4172c187b6015ab9 100644 (file)
@@ -69,7 +69,7 @@ end
                                <% if querypat then %>
                                <div class="cbi-value">
                                        <%:Displaying only packages containing%> <strong>"<%=pcdata(query)%>"</strong>
-                                       <input type="button" onclick="location.href='?display=<%=pcdata(display)%>'" href="#" class="cbi-button cbi-button-reset" style="margin-left:1em" value="<%:Reset%>" />
+                                       <input type="button" onclick="location.href='?display=<%=luci.http.urlencode(display)%>'" href="#" class="cbi-button cbi-button-reset" style="margin-left:1em" value="<%:Reset%>" />
                                        <br style="clear:both" />
                                </div>
                                <% end %>
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/apply.htm b/modules/luci-mod-admin-full/luasrc/view/admin_uci/apply.htm
deleted file mode 100644 (file)
index 370027e..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<%#
- 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"><%:Configuration%> / <%:Apply%></h2>
-
-<% if changes then %>
-       <%+cbi/apply_xhr%>
-       <%+admin_uci/changelog%>
-
-       <%- cbi_apply_xhr('uci-apply', configs) -%>
-
-       <p><strong><%:The following changes have been committed%>:</strong></p>
-       <%- uci_changelog(changes) -%>
-<% else %>
-       <p><strong><%:There are no pending changes to apply!%></strong></p>
-<% end %>
-
-<%+footer%>
index c3373604f353d7ac47cb922c03e595835d41b177..9e9ce2be2ae03070efd96c79f3b32d3df06c3b38 100644 (file)
@@ -1,40 +1,41 @@
 <%#
  Copyright 2008 Steven Barth <steven@midlink.org>
- Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
  Licensed to the public under the Apache License 2.0.
 -%>
 
 <%+header%>
 
+<%-
+       local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir"))
+
+       include("cbi/apply_widget")
+       include("admin_uci/changelog")
+
+       cbi_apply_widget(redir_url or url("admin/uci/changes"))
+-%>
+
 <h2 name="content"><%:Configuration%> / <%:Changes%></h2>
 
 <% if changes then %>
-       <%+admin_uci/changelog%>
        <%- 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">
-       <% local r = luci.http.formvalue("redir"); if r and #r > 0 then %>
+       <% if redir_url then %>
        <div style="float:left">
-               <form class="inline" method="get" action="<%=luci.util.pcdata(r)%>">
+               <form class="inline" method="get" action="<%=luci.util.pcdata(redir_url)%>">
                        <input class="cbi-button cbi-button-link" style="float:left; margin:0" type="submit" value="<%:Back%>" />
                </form>
        </div>
        <% end %>
 
        <div style="text-align:right">
-               <form class="inline" method="post" action="<%=controller%>/admin/uci/apply">
-                       <input type="hidden" name="token" value="<%=token%>" />
-                       <input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
-                       <input class="cbi-button cbi-button-apply" type="submit" value="<%:Apply%>" />
-               </form>
-               <form class="inline" method="post" action="<%=controller%>/admin/uci/saveapply">
-                       <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" value="<%:Save & Apply%>" />
-               </form>
+               <input class="cbi-button cbi-button-save" type="button" id="apply_button" value="<%:Save & Apply%>" onclick="uci_apply(true); this.blur()" />
                <form class="inline" method="post" action="<%=controller%>/admin/uci/revert">
                        <input type="hidden" name="token" value="<%=token%>" />
                        <input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
index 5da7281a80425cf080f5530051a99bc37c92bc1a..dff53420aad919abc89bbc646c507b1f8b589da5 100644 (file)
@@ -1,27 +1,42 @@
 <%#
  Copyright 2008 Steven Barth <steven@midlink.org>
- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
  Licensed to the public under the Apache License 2.0.
 -%>
 
 <%+header%>
 
+<%-
+       local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir"))
+
+       include("cbi/apply_widget")
+       include("admin_uci/changelog")
+
+       cbi_apply_widget(redir_url or url("admin/uci/revert"))
+-%>
+
 <h2 name="content"><%:Configuration%> / <%:Revert%></h2>
 
 <% if changes then %>
-       <%+cbi/apply_xhr%>
-       <%+admin_uci/changelog%>
-
        <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 %>
 
-<div class="cbi-page-actions">
-       <form class="inline" method="get" action="<%=luci.util.pcdata(luci.http.formvalue("redir"))%>">
-               <input class="cbi-button cbi-button-link" style="margin:0" type="submit" value="<%:Back%>" />
-       </form>
-</div>
+<div class="alert-message" id="cbi_apply_status" style="display:none"></div>
+<script type="text/javascript">
+       document.addEventListener("DOMContentLoaded", function() {
+               uci_apply(true);
+       });
+</script>
+
+<% 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%>
index 2fb64b3c420254ccded1487a8e41419a2a8f8bcc..ebb02e489b6d6403be89263eca09f889870f1d1d 100644 (file)
@@ -1,9 +1,9 @@
 <%+cbi/valueheader%>
 
 <script type="text/javascript">//<![CDATA[
-       var freqlist = <%= luci.http.write_json(self.freqlist) %>;
-       var hwmodes  = <%= luci.http.write_json(self.hwmodes) %>;
-       var htmodes  = <%= luci.http.write_json(self.htmodes) %>;
+       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 channels = {
                '11g': [
index 9a1c1fea4569d3cc68a3217ac1c5fc042dd85e4b..bcc26cd442109347d579bc70de9b1165d577b1d3 100644 (file)
@@ -3,7 +3,7 @@
 -- Licensed to the public under the Apache License 2.0.
 
 local uci = require "luci.model.uci".cursor()
-local ipc = require "luci.ip"
+local sys = require "luci.sys"
 local wa  = require "luci.tools.webadmin"
 local fs  = require "nixio.fs"
 
@@ -87,12 +87,11 @@ 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"))
 
-ipc.neighbors({ family = 4 }, function(n)
-       if n.mac and n.dest then
-               ip:value(n.dest:string())
-               mac:value(n.mac, "%s (%s)" %{ n.mac, n.dest:string() })
+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
-
index 43e51236d7bd00d60265ca7508b234b36367ab9a..f9e882ff304f8a4aaf660cf8a56a5f26e556a34e 100644 (file)
@@ -45,7 +45,7 @@
                        if( time_remaining <= 0 )
                        {
                                window.clearInterval(interval);
-                               location.href = 'http://' + location.hostname + '/';
+                               location.href = 'http://' + location.host + '/';
                        }
                        else
                        {
index 18be30be3511b390fd08d605090473fb3a123038..9f017c9e728816b833b67f6d85d37effdc755acf 100644 (file)
@@ -6,7 +6,7 @@
        <script type="text/javascript" src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>
        <script type="text/javascript" src="osm.js"></script>
 </head>
-<body onload="init();drawmap();" style="padding:0px; margin:0px">                              
+<body onload="init();drawmap();" style="padding:0px; margin:0px">
                <div id="map"></div>
                <div style="position:absolute; bottom:0%; width:100%; background:url('cbi/black_60.png'); font-size:10px; color:#fff;z-index:1000">
                        Map by <a href="http://www.openstreetmap.org" title="www.openstreetmap.org" style="color:#fff;" >openstreetmap.org</a>, License CC-BY-SA 
@@ -16,5 +16,4 @@
                                Longitude: <input id="osmlon" name="osmlon" type="text" size="20" style="font-size:10px;">
                        </span>
                </div>
-
 </body>
index e2291e5ca60f3ba71e560987c0db4d9034ebf76b..adad7508bc899ac882f5c42269d725a0719887c8 100644 (file)
@@ -77,7 +77,7 @@ function index()
        page.order  = 10
 
        page        = node("admin", "freifunk", "basics", "profile_expert")
-       page.target = cbi("freifunk/profile_expert")
+       page.target = form("freifunk/profile_expert")
        page.title  = _("Profile (Expert)")
        page.order  = 20
 
index 0943a3b48506001958a5207142e82d4339651c40..f9b44a2c614ad27083ddbe81fb7618fe9f0f37ae 100644 (file)
@@ -1,34 +1,32 @@
 msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: LuCI: freifunk\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2013-09-06 09:41+0200\n"
-"Last-Translator: datasheet <michael.gritsaenko@gmail.com>\n"
-"Language-Team: Russian <x12ozmouse@ya.ru>\n"
-"Language: ru\n"
+"POT-Creation-Date: 2013-09-06 09:41+0200\n"
+"PO-Revision-Date: 2018-01-30 17:02+0300\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Language-Team: http://cyber-place.ru\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"
-"X-Poedit-SourceCharset: UTF-8\n"
+"Language: ru\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
+"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
 
 msgid "BSSID"
 msgstr "BSSID"
 
 msgid "Bad (ETX > 10)"
-msgstr "Плохой (ETX > 10)"
+msgstr "Плохо (ETX > 10)"
 
 msgid "Basic Settings"
-msgstr "Ð\91азовые настройки"
+msgstr "Ð\9eÑ\81новные настройки"
 
 msgid "Basic settings"
-msgstr "Ð\91азовые настройки"
+msgstr "Ð\9eÑ\81новные настройки"
 
 msgid "Basic settings are incomplete. Please go to"
-msgstr "Ð\91азовые настройки не верны. Пожалуйста, перейдите в"
+msgstr "Ð\9eÑ\81новные настройки не верны. Пожалуйста, перейдите в"
 
 msgid "Basic system settings"
 msgstr "Основные настройки системы"
@@ -60,7 +58,7 @@ msgid "Confirm Upgrade"
 msgstr "Подтвердить обновление"
 
 msgid "Contact"
-msgstr "Контактная информация"
+msgstr "Контакты для связи"
 
 msgid "Contact information is incomplete. Please go to"
 msgstr "Контактная информация не верна. Пожалуйста, перейдите в"
@@ -81,7 +79,7 @@ msgid "Diversity is enabled for device"
 msgstr "Неопределенность пути включена"
 
 msgid "E-Mail"
-msgstr "Эл. почта"
+msgstr "E-Mail"
 
 msgid "ESSID"
 msgstr "ESSID"
@@ -94,6 +92,8 @@ msgstr "Включить IPv6"
 
 msgid "Enable a virtual access point (VAP) by default if possible."
 msgstr ""
+"Включить виртуальную точку доступа (VAP) с настройками по умолчанию, если "
+"это возможно."
 
 msgid "Error"
 msgstr "Ошибка"
@@ -105,7 +105,7 @@ msgid "Freifunk"
 msgstr "Freifunk"
 
 msgid "Freifunk Overview"
-msgstr "Ð\9eбзоÑ\80 Freifunk"
+msgstr "Ð\93лавное Ð¼ÐµÐ½Ñ\8e Freifunk"
 
 msgid "Freifunk Remote Update"
 msgstr "Удалённое обновление Freifunk"
@@ -117,11 +117,10 @@ msgid "Go to"
 msgstr "Перейти"
 
 msgid "Good (2 < ETX < 4)"
-msgstr "ХоÑ\80оÑ\88ий (2 < ETX < 4)"
+msgstr "ХоÑ\80оÑ\88о (2 < ETX < 4)"
 
-#, fuzzy
 msgid "Green"
-msgstr "Зелёный"
+msgstr "Зеленый"
 
 msgid "Hello and welcome in the network of"
 msgstr "Здравствуйте и добро пожаловать в сеть"
@@ -135,9 +134,8 @@ msgstr "Домашняя страница"
 msgid "Hostname"
 msgstr "Имя хоста"
 
-#, fuzzy
 msgid "IPv6 Config"
-msgstr "Ð\9aонÑ\84игÑ\83Ñ\80аÑ\86иÑ\8f IPv6"
+msgstr "Ð\9dаÑ\81Ñ\82Ñ\80ойка IPv6"
 
 msgid "IPv6 Prefix"
 msgstr "Префикс IPv6"
@@ -162,30 +160,29 @@ msgid ""
 "Internet access depends on technical and organisational conditions and may "
 "or may not work for you."
 msgstr ""
-"Ð\94оÑ\81Ñ\82Ñ\83п Ð² Ð¸нтернет зависит от технических и организационных условий и может "
+"Ð\94оÑ\81Ñ\82Ñ\83п Ð² Ð\98нтернет зависит от технических и организационных условий и может "
 "быть не доступен для вас."
 
-# It - access point
 msgid "It is operated by"
-msgstr "Ð\9eна управляется"
+msgstr "ТоÑ\87ка Ð´Ð¾Ñ\81Ñ\82Ñ\83па управляется"
 
 msgid "Keep configuration"
-msgstr "СоÑ\85Ñ\80аниÑ\82Ñ\8c ÐºÐ¾Ð½Ñ\84игÑ\83Ñ\80аÑ\86иÑ\8e"
+msgstr "СоÑ\85Ñ\80аниÑ\82Ñ\8c Ð½Ð°Ñ\81Ñ\82Ñ\80ойки"
 
 msgid "Latitude"
 msgstr "Широта"
 
 msgid "Legend"
-msgstr "Ð\9dадпиÑ\81Ñ\8c"
+msgstr "СобÑ\8bÑ\82иÑ\8f"
 
 msgid "Load"
 msgstr "Загрузка"
 
 msgid "Local Time"
-msgstr "Ð\9cеÑ\81Ñ\82ное время"
+msgstr "Ð\94аÑ\82а Ð¸ время"
 
 msgid "Location"
-msgstr "Ð\9cеÑ\81Ñ\82оположение"
+msgstr "РаÑ\81положение"
 
 msgid "Longitude"
 msgstr "Долгота"
@@ -197,10 +194,10 @@ msgid "Map Error"
 msgstr "Ошибка карты"
 
 msgid "Memory"
-msgstr "Ð\9fамÑ\8fÑ\82Ñ\8c"
+msgstr "Ð\9eпеÑ\80аÑ\82ивнаÑ\8f Ð¿Ð°Ð¼Ñ\8fÑ\82Ñ\8c (RAM)"
 
 msgid "Mesh prefix"
-msgstr "Префикс ячейки"
+msgstr "Mesh префикс"
 
 msgid "Metric"
 msgstr "Метрика"
@@ -212,16 +209,16 @@ msgid "Network"
 msgstr "Сеть"
 
 msgid "Network for client DHCP addresses"
-msgstr "Сеть для клиентских DHCP-адресов"
+msgstr "Сеть для клиентских<br />DHCP-адресов"
 
 msgid "Nickname"
-msgstr "Ð\9fÑ\81евдоним"
+msgstr "Ð\9dикнейм"
 
 msgid "No default routes known."
 msgstr "Маршруты по умолчанию не известны."
 
 msgid "Notice"
-msgstr "Ð\92нимание"
+msgstr "Ð\97амеÑ\82ка"
 
 msgid "OLSR"
 msgstr "OLSR"
@@ -229,15 +226,14 @@ msgstr "OLSR"
 msgid "Operator"
 msgstr "Оператор"
 
-#, fuzzy
 msgid "Orange"
 msgstr "Оранжевый"
 
 msgid "Overview"
-msgstr "Ð\9eбзоÑ\80"
+msgstr "Ð\93лавное Ð¼ÐµÐ½Ñ\8e"
 
 msgid "Package libiwinfo required!"
-msgstr "Требуется libiwinfo!"
+msgstr "Требуется пакет libiwinfo!"
 
 msgid "Phone"
 msgstr "Телефон"
@@ -252,7 +248,7 @@ msgid "Power"
 msgstr "Питание"
 
 msgid "Processor"
-msgstr "Процессор"
+msgstr "CPU"
 
 msgid "Profile"
 msgstr "Профиль"
@@ -263,7 +259,6 @@ msgstr "Профиль (эксперт)"
 msgid "Realname"
 msgstr "Имя"
 
-#, fuzzy
 msgid "Red"
 msgstr "Красный"
 
@@ -275,7 +270,7 @@ msgid ""
 "up if you are connected to the Internet."
 msgstr ""
 "Укажите ваше местоположение на карте с помощью щелчка мыши. Карта будет "
-"показана Ñ\82олÑ\8cко ÐµÑ\81ли Ð²Ñ\8b Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87енÑ\8b Ðº Ð¸нтернету."
+"показана Ñ\82олÑ\8cко ÐµÑ\81ли Ð²Ñ\8b Ð¿Ð¾Ð´ÐºÐ»Ñ\8eÑ\87енÑ\8b Ðº Ð\98нтернету."
 
 msgid "Show OpenStreetMap"
 msgstr "Показать карту OpenStreetMap"
@@ -296,16 +291,16 @@ msgid "Statistics"
 msgstr "Статистика"
 
 msgid "Status"
-msgstr "Статус"
+msgstr "Состояние"
 
 msgid "Still usable (4 < ETX < 10)"
-msgstr ""
+msgstr "Еще можно использовать (4 < ETX < 10)"
 
 msgid "System"
 msgstr "Система"
 
 msgid "TX"
-msgstr "TX"
+msgstr "Передача (TX)"
 
 msgid ""
 "The <em>libiwinfo</em> package is not installed. You must install this "
@@ -319,9 +314,9 @@ msgid ""
 "network.<br /> Please make sure that the nameservice plugin is properly "
 "configured and that the <em>latlon_file</em> option is enabled."
 msgstr ""
-"Сервис OLSRd не сконфигурирован на получение данных о местоположении из сети."
-"<br /> Пожалуйста, удостоверьтесь, что модуль пространства имён настроен "
-"пÑ\80авилÑ\8cно Ð¸ Ñ\87Ñ\82о Ð¾Ð¿Ñ\86иÑ\8f <em>latlon_file</em> Ð²ÐºÐ»Ñ\8eÑ\87ена."
+"Сервис OLSRd не настроен на получение данных о местоположении из сети.<br /> "
+"Пожалуйста, удостоверьтесь, что модуль пространства имён настроен правильно "
+"и что опция <em>latlon_file</em> включена."
 
 msgid "The installed firmware is the most recent version."
 msgstr "Установлена прошивка самой последней версии."
@@ -331,12 +326,12 @@ msgid ""
 "settings define the default values for the wizard and DO NOT affect the "
 "actual configuration of the router."
 msgstr ""
-"ЭÑ\82о Ð±Ð°Ð·Ð¾Ð²ые настройки вашего сообщества. Они определяют стандартные "
-"настройки для мастера установки и НЕ влияют на конечную конфигурацию "
+"ЭÑ\82о Ð¾Ñ\81новные настройки вашего сообщества. Они определяют стандартные "
+"настройки для 'Мастера настройки Mesh сети' и НЕ влияют на конечные настройки "
 "маршрутизатора."
 
 msgid "These are the settings of your local community."
-msgstr "ЭÑ\82о Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ð´Ð»Ñ\8f Ð²Ð°Ñ\88его Ñ\81ообÑ\89еÑ\81Ñ\82ва."
+msgstr "Ð\97деÑ\81Ñ\8c Ð²Ñ\8b Ñ\81можеÑ\82е Ð½Ð°Ñ\81Ñ\82Ñ\80оиÑ\82Ñ\8c Ð²Ð°Ñ\88е Ñ\81ообÑ\89еÑ\81Ñ\82во."
 
 msgid ""
 "These pages will assist you in setting up your router for Freifunk or "
@@ -358,27 +353,26 @@ msgid "Uptime"
 msgstr "Время работы"
 
 msgid "VAP"
-msgstr ""
+msgstr "Виртуальная точка доступа (VAP)"
 
 msgid "Verify downloaded images"
 msgstr "Проверять загруженные образы"
 
 msgid "Very good (ETX < 2)"
-msgstr "Ð\9eÑ\87енÑ\8c Ñ\85оÑ\80оÑ\88ий (ETX < 2)"
+msgstr "Ð\9eÑ\87енÑ\8c Ñ\85оÑ\80оÑ\88о (ETX < 2)"
 
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
 msgstr ""
 "Мы - это сообщество, цель которого создать бесплатную, независимую и "
-"открытую беспроводную ячеистую сеть."
+"открытую беспроводную Mesh сеть."
 
 msgid "Wireless Overview"
-msgstr "Ð\9eбзоÑ\80 беспроводных сетей"
+msgstr "СпиÑ\81ок беспроводных сетей"
 
-#, fuzzy
 msgid "Yellow"
-msgstr "Жёлтый"
+msgstr "Желтый"
 
 msgid ""
 "You can display additional content on the public index page by inserting "
@@ -394,7 +388,8 @@ msgid ""
 msgstr "Вы можете найти дополнительную информацию о Freifunk по адресу"
 
 msgid "You can manually edit the selected community profile here."
-msgstr "Здесь вы можете редактировать выбранный профиль сообщества."
+msgstr ""
+"Здесь вы сможете отредактировать config файл выбранного профиля сообщества."
 
 msgid ""
 "You need to select a profile before you can edit it. To select a profile go "
@@ -426,26 +421,3 @@ msgstr "использовано"
 
 msgid "wireless settings"
 msgstr "настройки беспроводной сети"
-
-#~ msgid ""
-#~ "No services can be shown, because olsrd is not running or the olsrd-"
-#~ "nameservice Plugin is not loaded."
-#~ msgstr ""
-#~ "Сервис не может быть показан, так как oslrd не запущен или модуль olsrd-"
-#~ "nameservice не загружен."
-
-#~ msgid "Services"
-#~ msgstr "Службы"
-
-#~ msgid "Source"
-#~ msgstr "Источник"
-
-#~ msgid ""
-#~ "The <em>libiwinfo-lua</em> package is not installed. You must install "
-#~ "this component for working wireless configuration!"
-#~ msgstr ""
-#~ "Пакет <em>libiwinfo-lua</em> не установлен. Вам необходимо установить "
-#~ "этот компонент для настройки беспроводной сети!"
-
-#~ msgid "Url"
-#~ msgstr "Url"
index 759bb749cfe0a2cef1b11664df7ddeab42d7a41a..1e8038b28af803336bc62338a97b1e8ca414ac08 100644 (file)
 -- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
 -- Licensed to the public under the Apache License 2.0.
 
-local require = require
-local pairs = pairs
-local print = print
-local pcall = pcall
-local table = table
+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.secret) == "string" and
+          type(sdat.values.username) == "string" and
+          util.contains(allowed_users, sdat.values.username)
+       then
+               return sid, sdat.values
+       end
 
-module "luci.controller.rpc"
+       return nil
+end
 
-function index()
-       local function authenticator(validator, accs)
-               local auth = luci.http.formvalue("auth", true)
-               if auth then -- if authentication token was given
-                       local sdat = (luci.util.ubus("session", "get", { ubus_rpc_session = auth }) or { }).values
-                       if sdat then -- if given token is valid
-                               if sdat.user and luci.util.contains(accs, sdat.user) then
-                                       return sdat.user, auth
-                               end
-                       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
-               luci.http.status(403, "Forbidden")
+               http.status(403, "Forbidden")
        end
+end
+
+
+function index()
+       local ctrl = require "luci.controller.rpc"
 
        local rpc = node("rpc")
        rpc.sysauth = "root"
-       rpc.sysauth_authenticator = authenticator
+       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 loginstat
-
        local server = {}
        server.challenge = function(user, pass)
-               local sid, token, secret
-
                local config = require "luci.config"
-
-               if sys.user.checkpasswd(user, pass) then
-                       local sdat = util.ubus("session", "create", { timeout = config.sauth.sessiontime })
+               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),
+                                       secret = sys.uniqueid(16)
+                               }
+                       })
+
+                       local sid, sdat = ctrl.session_retrieve(login.ubus_rpc_session, { user })
                        if sdat then
-                               sid = sdat.ubus_rpc_session
-                               token = sys.uniqueid(16)
-                               secret = sys.uniqueid(16)
-
-                               http.header("Set-Cookie", "sysauth="..sid.."; path=/")
-                               util.ubus("session", "set", {
-                                       ubus_rpc_session = sid,
-                                       values = {
-                                               user = user,
-                                               token = token,
-                                               secret = secret
-                                       }
-                               })
+                               return {
+                                       sid = sid,
+                                       token = sdat.token,
+                                       secret = sdat.secret
+                               }
                        end
                end
 
-               return sid and {sid=sid, token=token, secret=secret}
+               return nil
        end
 
        server.login = function(...)
                local challenge = server.challenge(...)
-               return challenge and challenge.sid
+               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")
@@ -137,13 +166,40 @@ function rpc_fs()
 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(sys, http.source()), http.write)
+       ltn12.pump.all(jsonrpc.handle(sys2, http.source()), http.write)
 end
 
 function rpc_ipkg()
@@ -159,3 +215,34 @@ function rpc_ipkg()
        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
index 88dfe09289006803f48c0e630a25e55b6047c27f..16245b80e58de0d0d37e39cdce42211d5a69d2ba 100644 (file)
@@ -24,7 +24,7 @@ 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</code>"))
+       translate("This is the local endpoint address assigned by the tunnel broker, it usually ends with <code>...:2/64</code>"))
 
 ip6addr.datatype = "ip6addr"
 
index 506170c2de395f9e21b258083a2d674e1e8ced15..604f019ee61e61eb4e91fb06d4b8efa012caf0ae 100644 (file)
@@ -18,13 +18,13 @@ password = section:taboption("general", Value, "password", translate("PAP/CHAP p
 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"
-
+       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",
index b14db5966d0da5bd83494f7cf56c0b5136c5725b..355d9b5b399259d695c8c56db813de0591847103 100644 (file)
@@ -30,13 +30,13 @@ 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"
-
+       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
 
 
index 8f463e5d76a2cc203dce32ef4493de18576d5fd6..a5f76a38ad4164d2fc8dfbd7ac63f08c0196773e 100644 (file)
@@ -36,13 +36,13 @@ 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"
-
+       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
 
 
index 5a05cd20656c2ffb0edaf3cf58e2bdb7a737e8ec..d844c01db0c6b2419a036af96e69a15d3388770b 100644 (file)
@@ -30,13 +30,13 @@ service.placeholder = translate("auto")
 
 
 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"
-
+       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
 
 
index fa0db3412e38e16c502b9f5d4af11bbc386d2022..46a8f49d976b7b187b9192a88486f17e99e9aabb 100644 (file)
@@ -31,7 +31,7 @@ listen_port = section:taboption(
   translate("Optional. UDP port used for outgoing and incoming packets.")
 )
 listen_port.datatype = "port"
-listen_port.placeholder = "51820"
+listen_port.placeholder = translate("random")
 listen_port.optional = true
 
 addresses = section:taboption(
index 78b98e0355ebc53b1d1510855dd4b96b9634cd1e..4881535acb271a30b75d6746e3ff5e473c2427e0 100644 (file)
                        end
 
                        if ucichanges > 0 then
-                               write('<a class="label notice" href="%s?redir=%s">%s: %d</a>' %{
+                               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 REQUEST_URI),
+                                       http.urlencode(http.formvalue('redir') or table.concat(disp.context.request, "/")),
                                        translate('Unsaved Changes'),
                                        ucichanges
                                })
index 342a9d4088a87f51bf093f2392ffd2b2bc6fdb54..16ffc992ac1e5e69f493f03b45f1ac55cb51057a 100644 (file)
@@ -205,7 +205,7 @@ if tree.nodes[category] and tree.nodes[category].ucidata then
 -%>
        <div id="savemenu">
                <% if ucic > 0 then %>
-                       <a class="warning" href="<%=controller%>/<%=category%>/uci/changes/?redir=<%=http.urlencode(http.formvalue("redir") or REQUEST_URI)%>"><%:Unsaved Changes%>: <%=ucic%></a>
+                       <a class="uci_change_indicator warning" href="<%=controller%>/<%=category%>/uci/changes/?redir=<%=http.urlencode(http.formvalue('redir') or table.concat(disp.context.request, "/"))%>"><%:Unsaved Changes%>: <%=ucic%></a>
                <% end -%>
        </div>
 <% end %>
index 545c5fb3fa88e7f889601d99d7af8460e80dd4da..57bbaf6afca3a212c10d9e216c16ce27f2711bce 100755 (executable)
@@ -253,9 +253,19 @@ header > .container > .brand {
     vertical-align: text-bottom;
 }
 
+.danger {
+    background-color: #FA8072 !important;
+    color: black;
+}
+
 .warning {
-    background-color: #FF7D60 !important;
-    color: #FFF;
+    background-color:  #F0E68C !important;
+    color: black;
+}
+
+.success {
+    background-color: #90EE90 !important;
+    color: black;
 }
 
 .errorbox,
@@ -1546,4 +1556,4 @@ body.lang_pl.node-main-login .cbi-value-title {
     .cbi-value-field .cbi-input-select {
         min-width: 25rem;
     }
-}
\ No newline at end of file
+}
index d84fd278a2a922bc20741bda403ec0112530f027..0aca882c05397207eaf4febe6e651836f443c487 100644 (file)
                        end
 
                        if ucichanges > 0 then
-                               write('<a class="label notice" href="%s?redir=%s">%s: %d</a>' %{
+                               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 REQUEST_URI),
+                                       http.urlencode(http.formvalue('redir') or table.concat(disp.context.request, "/")),
                                        translate('Unsaved Changes'),
                                        ucichanges
                                })
index ae348f38561e9929582a33d36a0ac411255a3f9c..a560014d379bb7fae8f2e40d376823346b4bdfba 100644 (file)
                                end
                        end
 
-                       write('<div id="savemenu">')
-
                        if ucic > 0 then
-                               write('<a class="warning" href="%s?redir=%s">%s: %d</a>' %{
+                               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 REQUEST_URI),
+                                       http.urlencode(http.formvalue('redir') or table.concat(disp.context.request, "/")),
                                        translate('Unsaved Changes'),
                                        ucic
                                })
-                       else
-                               write('<a href="#">%s: 0</a>' %{
-                                       translate('Unsaved Changes')
-                               })
                        end
-
-                       write('</div>')
                end
        end
 -%>