Fresh pull from upstream lede-17.01 branch @ commit d77fe9219af17dce2d00147d904267d44...
authorRISCi_ATOM <bob@bobcall.me>
Fri, 1 Dec 2017 19:17:43 +0000 (14:17 -0500)
committerRISCi_ATOM <bob@bobcall.me>
Fri, 1 Dec 2017 19:17:43 +0000 (14:17 -0500)
329 files changed:
include/host-build.mk
include/kernel-version.mk
include/kernel.mk
include/prereq-build.mk
include/site/darwin [new file with mode: 0644]
include/target.mk
package/base-files/Makefile
package/base-files/files/bin/config_generate
package/base-files/files/etc/init.d/system
package/base-files/files/lib/functions.sh
package/base-files/files/usr/lib/os-release
package/boot/uboot-envtools/files/ipq [changed mode: 0755->0644]
package/boot/uboot-xburst/Makefile [deleted file]
package/boot/uboot-xburst/patches/0001-qi_lb60-add-nand-spl-support.patch [deleted file]
package/boot/uboot-xburst/patches/0002-qi_lb60-add-software-usbboot-support.patch [deleted file]
package/boot/uboot-xburst/patches/0003-add-mmc-support.patch [deleted file]
package/boot/uboot-xburst/patches/0004-add-more-boot-options-F1-F2-F3-F4-M-S.patch [deleted file]
package/boot/uboot-xburst/patches/0005-add-nanonote-lcd-support.patch [deleted file]
package/boot/uboot-xburst/patches/0006-enable-silent-console.patch [deleted file]
package/kernel/linux/modules/netdevices.mk
package/kernel/mac80211/files/regdb.txt
package/kernel/om-watchdog/Makefile
package/kernel/om-watchdog/files/om-watchdog.init
package/libs/uclient/Makefile
package/luci/.buildpath [deleted file]
package/luci/.cproject [deleted file]
package/luci/.project [deleted file]
package/luci/CONTRIBUTING.md [deleted file]
package/luci/README.md [deleted file]
package/luci/THANKYOU [deleted file]
package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
package/luci/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm
package/luci/applications/luci-app-adblock/po/it/adblock.po
package/luci/applications/luci-app-adblock/po/ja/adblock.po
package/luci/applications/luci-app-adblock/po/pt-br/adblock.po
package/luci/applications/luci-app-adblock/po/sv/adblock.po
package/luci/applications/luci-app-adblock/po/templates/adblock.pot
package/luci/applications/luci-app-adblock/po/zh-cn/adblock.po
package/luci/applications/luci-app-adblock/po/zh-tw/adblock.po [new file with mode: 0644]
package/luci/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po
package/luci/applications/luci-app-aria2/po/zh-cn/aria2.po
package/luci/applications/luci-app-aria2/po/zh-tw/aria2.po [new file with mode: 0644]
package/luci/applications/luci-app-attendedsysupgrade/Makefile
package/luci/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm
package/luci/applications/luci-app-attendedsysupgrade/root/etc/uci-defaults/40_luci-attendedsysupgrade [new file with mode: 0755]
package/luci/applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json [new file with mode: 0644]
package/luci/applications/luci-app-bcp38/po/zh-cn/bcp38.po
package/luci/applications/luci-app-bcp38/po/zh-tw/bcp38.po [new file with mode: 0644]
package/luci/applications/luci-app-commands/po/zh-tw/commands.po
package/luci/applications/luci-app-ddns/po/it/ddns.po
package/luci/applications/luci-app-ddns/po/zh-cn/ddns.po
package/luci/applications/luci-app-ddns/po/zh-tw/ddns.po
package/luci/applications/luci-app-diag-core/po/zh-tw/diag_core.po
package/luci/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po
package/luci/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua
package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua
package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua [new file with mode: 0644]
package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua
package/luci/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po
package/luci/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot
package/luci/applications/luci-app-firewall/po/zh-cn/firewall.po
package/luci/applications/luci-app-firewall/po/zh-tw/firewall.po
package/luci/applications/luci-app-freifunk-policyrouting/po/zh-cn/freifunk-policyrouting.po
package/luci/applications/luci-app-fwknopd/root/etc/uci-defaults/40_luci-fwknopd
package/luci/applications/luci-app-fwknopd/root/usr/sbin/gen-qr.sh
package/luci/applications/luci-app-meshwizard/po/zh-cn/meshwizard.po
package/luci/applications/luci-app-minidlna/luasrc/model/cbi/minidlna.lua
package/luci/applications/luci-app-minidlna/po/ca/minidlna.po
package/luci/applications/luci-app-minidlna/po/cs/minidlna.po
package/luci/applications/luci-app-minidlna/po/de/minidlna.po
package/luci/applications/luci-app-minidlna/po/el/minidlna.po
package/luci/applications/luci-app-minidlna/po/en/minidlna.po
package/luci/applications/luci-app-minidlna/po/es/minidlna.po
package/luci/applications/luci-app-minidlna/po/fr/minidlna.po
package/luci/applications/luci-app-minidlna/po/he/minidlna.po
package/luci/applications/luci-app-minidlna/po/hu/minidlna.po
package/luci/applications/luci-app-minidlna/po/it/minidlna.po
package/luci/applications/luci-app-minidlna/po/ja/minidlna.po
package/luci/applications/luci-app-minidlna/po/ms/minidlna.po
package/luci/applications/luci-app-minidlna/po/no/minidlna.po
package/luci/applications/luci-app-minidlna/po/pl/minidlna.po
package/luci/applications/luci-app-minidlna/po/pt-br/minidlna.po
package/luci/applications/luci-app-minidlna/po/pt/minidlna.po
package/luci/applications/luci-app-minidlna/po/ro/minidlna.po
package/luci/applications/luci-app-minidlna/po/ru/minidlna.po
package/luci/applications/luci-app-minidlna/po/sk/minidlna.po
package/luci/applications/luci-app-minidlna/po/sv/minidlna.po
package/luci/applications/luci-app-minidlna/po/templates/minidlna.pot
package/luci/applications/luci-app-minidlna/po/tr/minidlna.po
package/luci/applications/luci-app-minidlna/po/uk/minidlna.po
package/luci/applications/luci-app-minidlna/po/vi/minidlna.po
package/luci/applications/luci-app-minidlna/po/zh-cn/minidlna.po
package/luci/applications/luci-app-minidlna/po/zh-tw/minidlna.po
package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua
package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua
package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua
package/luci/applications/luci-app-mwan3/po/ja/mwan3.po
package/luci/applications/luci-app-mwan3/po/templates/mwan3.pot
package/luci/applications/luci-app-mwan3/po/zh-cn/mwan3.po
package/luci/applications/luci-app-mwan3/po/zh-tw/mwan3.po [new file with mode: 0644]
package/luci/applications/luci-app-noddos/Makefile [new file with mode: 0644]
package/luci/applications/luci-app-noddos/htdocs/cgi-bin/clientdetails [new file with mode: 0755]
package/luci/applications/luci-app-noddos/luasrc/controller/noddos.lua [new file with mode: 0644]
package/luci/applications/luci-app-noddos/luasrc/model/cbi/noddos.lua [new file with mode: 0644]
package/luci/applications/luci-app-noddos/luasrc/view/noddos/clients.htm [new file with mode: 0644]
package/luci/applications/luci-app-noddos/po/ja/noddos.po [new file with mode: 0644]
package/luci/applications/luci-app-noddos/po/templates/noddos.pot [new file with mode: 0644]
package/luci/applications/luci-app-noddos/root/etc/uci-defaults/40_luci-noddos [new file with mode: 0644]
package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua
package/luci/applications/luci-app-openvpn/po/ca/openvpn.po
package/luci/applications/luci-app-openvpn/po/cs/openvpn.po
package/luci/applications/luci-app-openvpn/po/de/openvpn.po
package/luci/applications/luci-app-openvpn/po/el/openvpn.po
package/luci/applications/luci-app-openvpn/po/en/openvpn.po
package/luci/applications/luci-app-openvpn/po/es/openvpn.po
package/luci/applications/luci-app-openvpn/po/fr/openvpn.po
package/luci/applications/luci-app-openvpn/po/he/openvpn.po
package/luci/applications/luci-app-openvpn/po/hu/openvpn.po
package/luci/applications/luci-app-openvpn/po/it/openvpn.po
package/luci/applications/luci-app-openvpn/po/ja/openvpn.po
package/luci/applications/luci-app-openvpn/po/ms/openvpn.po
package/luci/applications/luci-app-openvpn/po/no/openvpn.po
package/luci/applications/luci-app-openvpn/po/pl/openvpn.po
package/luci/applications/luci-app-openvpn/po/pt-br/openvpn.po
package/luci/applications/luci-app-openvpn/po/pt/openvpn.po
package/luci/applications/luci-app-openvpn/po/ro/openvpn.po
package/luci/applications/luci-app-openvpn/po/ru/openvpn.po
package/luci/applications/luci-app-openvpn/po/sk/openvpn.po
package/luci/applications/luci-app-openvpn/po/sv/openvpn.po
package/luci/applications/luci-app-openvpn/po/templates/openvpn.pot
package/luci/applications/luci-app-openvpn/po/tr/openvpn.po
package/luci/applications/luci-app-openvpn/po/uk/openvpn.po
package/luci/applications/luci-app-openvpn/po/vi/openvpn.po
package/luci/applications/luci-app-openvpn/po/zh-cn/openvpn.po
package/luci/applications/luci-app-openvpn/po/zh-tw/openvpn.po
package/luci/applications/luci-app-p2pblock/po/pt-br/p2pblock.po
package/luci/applications/luci-app-p910nd/po/zh-tw/p910nd.po
package/luci/applications/luci-app-pbx-voicemail/po/zh-cn/pbx-voicemail.po
package/luci/applications/luci-app-pbx-voicemail/po/zh-tw/pbx-voicemail.po
package/luci/applications/luci-app-pbx/po/zh-cn/pbx.po
package/luci/applications/luci-app-pbx/po/zh-tw/pbx.po
package/luci/applications/luci-app-polipo/po/zh-cn/polipo.po
package/luci/applications/luci-app-polipo/po/zh-tw/polipo.po
package/luci/applications/luci-app-privoxy/po/zh-cn/privoxy.po
package/luci/applications/luci-app-qos/po/zh-cn/qos.po
package/luci/applications/luci-app-qos/po/zh-tw/qos.po
package/luci/applications/luci-app-radicale/po/pt-br/radicale.po
package/luci/applications/luci-app-radvd/po/zh-cn/radvd.po
package/luci/applications/luci-app-radvd/po/zh-tw/radvd.po
package/luci/applications/luci-app-samba/po/zh-cn/samba.po
package/luci/applications/luci-app-samba/po/zh-tw/samba.po
package/luci/applications/luci-app-simple-adblock/po/sv/simple-adblock.po [new file with mode: 0644]
package/luci/applications/luci-app-splash/po/sv/splash.po
package/luci/applications/luci-app-splash/po/zh-cn/splash.po
package/luci/applications/luci-app-statistics/po/zh-cn/rrdtool.po
package/luci/applications/luci-app-statistics/po/zh-cn/statistics.po
package/luci/applications/luci-app-statistics/po/zh-tw/rrdtool.po
package/luci/applications/luci-app-statistics/po/zh-tw/statistics.po
package/luci/applications/luci-app-transmission/po/zh-cn/transmission.po
package/luci/applications/luci-app-transmission/po/zh-tw/transmission.po
package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm
package/luci/applications/luci-app-upnp/luasrc/controller/upnp.lua
package/luci/applications/luci-app-upnp/luasrc/view/upnp_status.htm
package/luci/applications/luci-app-upnp/po/ca/upnp.po
package/luci/applications/luci-app-upnp/po/cs/upnp.po
package/luci/applications/luci-app-upnp/po/de/upnp.po
package/luci/applications/luci-app-upnp/po/el/upnp.po
package/luci/applications/luci-app-upnp/po/en/upnp.po
package/luci/applications/luci-app-upnp/po/es/upnp.po
package/luci/applications/luci-app-upnp/po/fr/upnp.po
package/luci/applications/luci-app-upnp/po/he/upnp.po
package/luci/applications/luci-app-upnp/po/hu/upnp.po
package/luci/applications/luci-app-upnp/po/it/upnp.po
package/luci/applications/luci-app-upnp/po/ja/upnp.po
package/luci/applications/luci-app-upnp/po/ms/upnp.po
package/luci/applications/luci-app-upnp/po/no/upnp.po
package/luci/applications/luci-app-upnp/po/pl/upnp.po
package/luci/applications/luci-app-upnp/po/pt-br/upnp.po
package/luci/applications/luci-app-upnp/po/pt/upnp.po
package/luci/applications/luci-app-upnp/po/ro/upnp.po
package/luci/applications/luci-app-upnp/po/ru/upnp.po
package/luci/applications/luci-app-upnp/po/sk/upnp.po
package/luci/applications/luci-app-upnp/po/sv/upnp.po
package/luci/applications/luci-app-upnp/po/templates/upnp.pot
package/luci/applications/luci-app-upnp/po/tr/upnp.po
package/luci/applications/luci-app-upnp/po/uk/upnp.po
package/luci/applications/luci-app-upnp/po/vi/upnp.po
package/luci/applications/luci-app-upnp/po/zh-cn/upnp.po
package/luci/applications/luci-app-upnp/po/zh-tw/upnp.po
package/luci/applications/luci-app-voice-diag/po/zh-tw/voice_diag.po
package/luci/applications/luci-app-vpnbypass/po/zh-cn/vpnbypass.po [new file with mode: 0644]
package/luci/applications/luci-app-vpnbypass/po/zh-tw/vpnbypass.po [new file with mode: 0644]
package/luci/applications/luci-app-watchcat/po/zh-cn/watchcat.po
package/luci/applications/luci-app-wol/po/zh-cn/wol.po
package/luci/applications/luci-app-wol/po/zh-tw/wol.po
package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_olsrd.sh
package/luci/luci.mk
package/luci/modules/luci-base/Makefile
package/luci/modules/luci-base/htdocs/luci-static/resources/cbi.js
package/luci/modules/luci-base/luasrc/http/protocol.lua
package/luci/modules/luci-base/luasrc/model/firewall.lua
package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
package/luci/modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm
package/luci/modules/luci-base/po/ca/base.po
package/luci/modules/luci-base/po/cs/base.po
package/luci/modules/luci-base/po/de/base.po
package/luci/modules/luci-base/po/el/base.po
package/luci/modules/luci-base/po/en/base.po
package/luci/modules/luci-base/po/es/base.po
package/luci/modules/luci-base/po/fr/base.po
package/luci/modules/luci-base/po/he/base.po
package/luci/modules/luci-base/po/hu/base.po
package/luci/modules/luci-base/po/it/base.po
package/luci/modules/luci-base/po/ja/base.po
package/luci/modules/luci-base/po/ko/base.po
package/luci/modules/luci-base/po/ms/base.po
package/luci/modules/luci-base/po/no/base.po
package/luci/modules/luci-base/po/pl/base.po
package/luci/modules/luci-base/po/pt-br/base.po
package/luci/modules/luci-base/po/pt/base.po
package/luci/modules/luci-base/po/ro/base.po
package/luci/modules/luci-base/po/ru/base.po
package/luci/modules/luci-base/po/sk/base.po
package/luci/modules/luci-base/po/sv/base.po
package/luci/modules/luci-base/po/templates/base.pot
package/luci/modules/luci-base/po/tr/base.po
package/luci/modules/luci-base/po/uk/base.po
package/luci/modules/luci-base/po/vi/base.po
package/luci/modules/luci-base/po/zh-cn/base.po
package/luci/modules/luci-base/po/zh-tw/base.po
package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua
package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/dmesg.htm
package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/syslog.htm
package/luci/modules/luci-mod-freifunk/po/zh-cn/freifunk.po
package/luci/protocols/luci-proto-ipip/luasrc/model/network/proto_ipip.lua
package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_4x6.lua
package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_6x4.lua
package/luci/protocols/luci-proto-ipv6/luasrc/model/network/proto_aiccu.lua
package/luci/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua
package/luci/protocols/luci-proto-openconnect/luasrc/model/network/proto_openconnect.lua
package/luci/protocols/luci-proto-ppp/luasrc/model/network/proto_ppp.lua
package/luci/protocols/luci-proto-qmi/luasrc/model/network/proto_qmi.lua
package/luci/protocols/luci-proto-relay/luasrc/model/network/proto_relay.lua
package/luci/protocols/luci-proto-vpnc/luasrc/model/network/proto_vpnc.lua
package/network/services/dnsmasq/Makefile
package/network/services/dnsmasq/files/dnsmasq.init
package/network/services/wireguard/Makefile
package/network/services/wireguard/patches/100-portability.patch [new file with mode: 0644]
package/network/utils/iw/Makefile
package/system/mountd/Makefile
package/system/opkg/Makefile
package/system/procd/Makefile
package/system/rpcd/Makefile
package/utils/busybox/Makefile
package/utils/busybox/patches/900-fix_cve2017-16544.patch [deleted file]
scripts/checkpatch.pl
target/linux/generic/patches-4.4/073-v4.10-0001-net-bgmac-allocate-struct-bgmac-just-once-don-t-copy.patch [deleted file]
target/linux/generic/patches-4.4/073-v4.10-0003-net-bgmac-use-PHY-subsystem-for-initializing-PHY.patch [deleted file]
target/linux/generic/patches-4.4/078-0003-net-phy-cherry-pick-Broadcom-drivers-updates-from-v4.patch [deleted file]
target/linux/generic/patches-4.4/078-0004-net-phy-pick-Broadcom-drivers-updates-from-net-next-.patch [deleted file]
target/linux/generic/patches-4.4/086-0004-thermal-broadcom-add-Northstar-thermal-driver.patch [deleted file]
target/linux/generic/patches-4.4/086-0005-thermal-broadcom-fix-compilation-of-Northstar-driver.patch [deleted file]
target/linux/generic/patches-4.4/093-MIPS-store-the-appended-dtb-address-in-a-variable.patch
target/linux/generic/patches-4.4/103-Fix-alloc_node_mem_map-with-ARCH_PFN_OFFSET-calcu.patch
target/linux/generic/patches-4.4/214-spidev_h_portability.patch
target/linux/generic/patches-4.4/630-packet_socket_type.patch
target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
target/linux/generic/patches-4.4/701-phy_extension.patch
target/linux/generic/patches-4.4/702-phy_add_aneg_done_function.patch
target/linux/generic/patches-4.4/703-phy-add-detach-callback-to-struct-phy_driver.patch
target/linux/generic/patches-4.4/710-phy-add-mdio_register_board_info.patch
target/linux/generic/patches-4.4/721-phy_packets.patch
target/linux/generic/patches-4.4/773-bgmac-add-srab-switch.patch
target/linux/generic/patches-4.4/902-debloat_proc.patch
target/linux/x86/64/config-default
target/linux/x86/generic/config-default
target/linux/x86/patches-4.4/100-fix_cs5535_clockevt.patch
target/linux/xburst/Makefile [deleted file]
target/linux/xburst/base-files/etc/board.d/01_system [deleted file]
target/linux/xburst/base-files/etc/config/fstab [deleted file]
target/linux/xburst/base-files/etc/config/network [deleted file]
target/linux/xburst/config-3.18 [deleted file]
target/linux/xburst/image/Makefile [deleted file]
target/linux/xburst/image/ubinize.cfg [deleted file]
target/linux/xburst/modules.mk [deleted file]
target/linux/xburst/patches-3.18/001-ubi-Read-only-the-vid-header-instead-of-the-whole-pa.patch [deleted file]
target/linux/xburst/patches-3.18/002-NAND-Optimize-NAND_ECC_HW_OOB_FIRST-read.patch [deleted file]
target/linux/xburst/patches-3.18/003-NAND-Add-support-for-subpage-reads-for-NAND_ECC_HW_O.patch [deleted file]
target/linux/xburst/patches-3.18/004-ASoC-JZ4740-delay-activation-of-the-DAC-to-work-arou.patch [deleted file]
target/linux/xburst/patches-3.18/005-RTC-JZ4740-Init-the-regulator-register-on-startup.patch [deleted file]
target/linux/xburst/patches-3.18/006-Add-ili8960-lcd-driver.patch [deleted file]
target/linux/xburst/patches-3.18/007-qi_lb60-Don-t-use-3-wire-spi-mode-for-the-display-fo.patch [deleted file]
target/linux/xburst/qi_lb60/config-default [deleted file]
target/linux/xburst/qi_lb60/target.mk [deleted file]
target/sdk/Config.in
target/sdk/files/README.SDK
target/toolchain/Config.in
target/toolchain/files/README.TOOLCHAIN
toolchain/Config.in
toolchain/gcc/patches/5.4.0/030-macos-header-fix-backport.patch [new file with mode: 0644]
toolchain/gdb/Makefile
toolchain/gdb/patches/110-no_testsuite.patch
toolchain/gdb/patches/120-fix-compile-flag-mismatch.patch
tools/cmake/Makefile
tools/cmake/patches/100-disable_qt_tests.patch
tools/cmake/patches/110-alpine_musl-compat.patch [deleted file]
tools/cmake/patches/110-freebsd-compat.patch [new file with mode: 0644]
tools/cmake/patches/120-alpine_musl-compat.patch [new file with mode: 0644]
tools/cmake/patches/120-libarchive-fix-libressl-compat.patch [deleted file]
tools/cmake/patches/130-curl-fix-libressl-linking.patch [deleted file]
tools/cmake/patches/130-libarchive-fix-libressl-compat.patch [new file with mode: 0644]
tools/cmake/patches/140-bootstrap_parallel_make_flag.patch [deleted file]
tools/cmake/patches/140-curl-fix-libressl-linking.patch [new file with mode: 0644]
tools/cmake/patches/150-bootstrap_parallel_make_flag.patch [new file with mode: 0644]
tools/findutils/patches/100-include_sysmacros.patch [new file with mode: 0644]
tools/mkimage/Makefile
tools/mkimage/patches/110-fix_musl_build.patch [deleted file]
tools/mtd-utils/patches/120-include_sysmacros.patch [new file with mode: 0644]
tools/squashfs/patches/130-include_sysmacros.patch [new file with mode: 0644]
tools/squashfs4/patches/130-include_sysmacros.patch [new file with mode: 0644]
tools/squashfs4/patches/170-add_support_for_LZMA_MAGIC_to_unsqashfs.patch
tools/squashfs4/patches/180-openbsd_compat.patch
tools/squashfs4/patches/190-no_nonstatic_inline.patch
tools/squashfs4/patches/200-add-fixed-timestamp-option.patch

index 70bf6e5a399615edb91edfae3c43a93504d7b5d8..b5f1a6bfa79f5a2a7b442506d72b6192191018a2 100644 (file)
@@ -77,6 +77,10 @@ HOST_MAKE_FLAGS =
 
 HOST_CONFIGURE_CMD = $(BASH) ./configure
 
+ifeq ($(HOST_OS),Darwin)
+  HOST_CONFIG_SITE:=$(INCLUDE_DIR)/site/darwin
+endif
+
 define Host/Configure/Default
        $(if $(HOST_CONFIGURE_PARALLEL),+)(cd $(HOST_BUILD_DIR)/$(3); \
                if [ -x configure ]; then \
@@ -127,6 +131,7 @@ define Host/Exports/Default
   $(1) : export PKG_CONFIG_PATH=$$(STAGING_DIR_HOST)/lib/pkgconfig:$$(HOST_BUILD_PREFIX)/lib/pkgconfig
   $(1) : export PKG_CONFIG_LIBDIR=$$(HOST_BUILD_PREFIX)/lib/pkgconfig
   $(1) : export CCACHE_DIR:=$(STAGING_DIR_HOST)/ccache
+  $(if $(HOST_CONFIG_SITE),$(1) : export CONFIG_SITE:=$(HOST_CONFIG_SITE))
   $(if $(IS_PACKAGE_BUILD),$(1) : export PATH=$$(TARGET_PATH_PKG))
 endef
 Host/Exports=$(Host/Exports/Default)
index 1ab8f0c5b80e7bb85c5c7e59fd3d54fec248e044..d5679ed919e1d0222d8f76ae173104f2fb56eecf 100644 (file)
@@ -2,11 +2,9 @@
 
 LINUX_RELEASE?=1
 
-LINUX_VERSION-3.18 = .43
-LINUX_VERSION-4.4 = .87
+LINUX_VERSION-4.4 = .102
 
-LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
-LINUX_KERNEL_HASH-4.4.87 = f2e26505e3aecf622d4f4e1ede44b3b97a38739ad8b78ede14eb354f22d1387a
+LINUX_KERNEL_HASH-4.4.102 = 67104295ed20d23291773b41fe4514e4b12f47351f8ca5f2bbfd87b3071a549a
 
 ifdef KERNEL_PATCHVER
   LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
index 8c08a5d7d3274b4d6bc46b50de87bd70cbcb2ace..e915e8f8a3353330f602bdc6ee554ad5e301abb0 100644 (file)
@@ -59,7 +59,7 @@ else
   LINUX_SOURCE:=linux-libre-$(LINUX_VERSION)-gnu.tar.xz
   TESTING:=$(if $(findstring -rc,$(LINUX_VERSION)),/testing,)
   ifeq ($(call qstrip,$(CONFIG_EXTERNAL_KERNEL_TREE))$(call qstrip,$(CONFIG_KERNEL_GIT_CLONE_URI)),)
-      LINUX_SITE:=@KERNEL_LIBRE/$(LINUX_VERSION)-gnu$(TESTING)
+       LINUX_SITE:=@KERNEL_LIBRE/$(LINUX_VERSION)-gnu$(TESTING)
   endif
 
   ifneq ($(TARGET_BUILD),1)
@@ -95,15 +95,16 @@ define ModuleAutoLoad
        $(SH_FUNC) \
        export modules=; \
        probe_module() { \
-               mods="$$$$$$$$1"; \
-               boot="$$$$$$$$2"; \
+               local mods="$$$$$$$$1"; \
+               local boot="$$$$$$$$2"; \
+               local mod; \
                shift 2; \
-               for mod in $(sort $$$$$$$$mods); do \
+               for mod in $$$$$$$$mods; do \
                        mkdir -p $(2)/etc/modules.d; \
                        echo "$$$$$$$$mod" >> $(2)/etc/modules.d/$(1); \
                done; \
                if [ -e $(2)/etc/modules.d/$(1) ]; then \
-                       if [ "$$$$$$$$boot" = "1" ]; then \
+                       if [ "$$$$$$$$boot" = "1" -a ! -e $(2)/etc/modules-boot.d/$(1) ]; then \
                                mkdir -p $(2)/etc/modules-boot.d; \
                                ln -s ../modules.d/$(1) $(2)/etc/modules-boot.d/; \
                        fi; \
@@ -111,16 +112,17 @@ define ModuleAutoLoad
                fi; \
        }; \
        add_module() { \
-               priority="$$$$$$$$1"; \
-               mods="$$$$$$$$2"; \
-               boot="$$$$$$$$3"; \
+               local priority="$$$$$$$$1"; \
+               local mods="$$$$$$$$2"; \
+               local boot="$$$$$$$$3"; \
+               local mod; \
                shift 3; \
-               for mod in $(sort $$$$$$$$mods); do \
+               for mod in $$$$$$$$mods; do \
                        mkdir -p $(2)/etc/modules.d; \
                        echo "$$$$$$$$mod" >> $(2)/etc/modules.d/$$$$$$$$priority-$(1); \
                done; \
                if [ -e $(2)/etc/modules.d/$$$$$$$$priority-$(1) ]; then \
-                       if [ "$$$$$$$$boot" = "1" ]; then \
+                       if [ "$$$$$$$$boot" = "1" -a ! -e $(2)/etc/modules-boot.d/$$$$$$$$priority-$(1) ]; then \
                                mkdir -p $(2)/etc/modules-boot.d; \
                                ln -s ../modules.d/$$$$$$$$priority-$(1) $(2)/etc/modules-boot.d/; \
                        fi; \
@@ -129,6 +131,7 @@ define ModuleAutoLoad
        }; \
        $(3) \
        if [ -n "$$$$$$$$modules" ]; then \
+               modules="$$$$$$$$(echo "$$$$$$$$modules" | tr ' ' '\n' | sort | uniq | paste -s -d' ' -)"; \
                mkdir -p $(2)/etc/modules.d; \
                mkdir -p $(2)/CONTROL; \
                echo "#!/bin/sh" > $(2)/CONTROL/postinst-pkg; \
index 2768c0278f7d5b56ae62762dc71b91e42a43984f..af4e8b5e14640af95a136c1abcf36c653f7c2214 100644 (file)
@@ -20,7 +20,7 @@ $(eval $(call TestHostCommand,working-make, \
        $(MAKE) -v | grep -E 'Make (3\.8[1-9]|3\.9[0-9]|[4-9]\.)'))
 
 $(eval $(call TestHostCommand,case-sensitive-fs, \
-       libreCMC can only be built on a case-sensitive filesystem, \
+       LEDE can only be built on a case-sensitive filesystem, \
        rm -f $(TMP_DIR)/test.*; touch $(TMP_DIR)/test.fs; \
                test ! -f $(TMP_DIR)/test.FS))
 
diff --git a/include/site/darwin b/include/site/darwin
new file mode 100644 (file)
index 0000000..ec38f67
--- /dev/null
@@ -0,0 +1,2 @@
+ac_cv_func_futimens=no
+ac_cv_func_utimensat=no
index e65c5884a5f589d6b0201ed7a660579d7fb6c3b4..30994485e183c16d052614aa00b5046e58e5e9ae 100644 (file)
@@ -13,18 +13,13 @@ __target_inc=1
 DEVICE_TYPE?=router
 
 # Default packages - the really basic set
-DEFAULT_PACKAGES:=base-files ca-bundle libmbedtls libustream-mbedtls libc libgcc busybox dropbear mtd uci opkg netifd fstools uclient-fetch logd
-
+DEFAULT_PACKAGES:=base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools uclient-fetch logd
 # For nas targets
 DEFAULT_PACKAGES.nas:=block-mount fdisk lsblk mdadm
-
 # For router targets
-DEFAULT_PACKAGES.router:=dnsmasq iptables ip6tables ppp ppp-mod-pppoe ppp-mod-pppoa firewall odhcpd odhcp6c
+DEFAULT_PACKAGES.router:=dnsmasq iptables ip6tables ppp ppp-mod-pppoe firewall odhcpd odhcp6c
 DEFAULT_PACKAGES.bootloader:=
 
-# Small Router Targets
-DEFAULT_PACKAGES.small-router:=-ca-bundle -opkg -libmbedtls -libustream-mbedtls
-
 ifneq ($(DUMP),)
   all: dumpinfo
 endif
index 356ef969cee4b7c8629eb4307957b44247ce2c25..fdeda95a17cd463f0348bf0606ad40dde717d21f 100644 (file)
@@ -31,7 +31,7 @@ endif
 define Package/base-files
   SECTION:=base
   CATEGORY:=Base system
-  DEPENDS:=+netifd +libc +procd +jsonfilter +SIGNED_PACKAGES:usign +SIGNED_PACKAGES:librecmc-keyring +fstools +fwtool
+  DEPENDS:=+netifd +libc +procd +jsonfilter +SIGNED_PACKAGES:usign +SIGNED_PACKAGES:lede-keyring +fstools +fwtool
   TITLE:=Base filesystem for Lede
   URL:=http://openwrt.org/
   VERSION:=$(PKG_RELEASE)-$(REVISION)
@@ -75,9 +75,9 @@ define ImageConfigOptions
        echo 'pi_init_cmd=$(if $(CONFIG_TARGET_INIT_CMD),$(CONFIG_TARGET_INIT_CMD),"/sbin/init")' >>$(1)/lib/preinit/00_preinit.conf
        echo 'pi_init_suppress_stderr="$(CONFIG_TARGET_INIT_SUPPRESS_STDERR)"' >>$(1)/lib/preinit/00_preinit.conf
        echo 'pi_ifname=$(if $(CONFIG_TARGET_PREINIT_IFNAME),$(CONFIG_TARGET_PREINIT_IFNAME),"")' >>$(1)/lib/preinit/00_preinit.conf
-       echo 'pi_ip=$(if $(CONFIG_TARGET_PREINIT_IP),$(CONFIG_TARGET_PREINIT_IP),"192.168.10.1")' >>$(1)/lib/preinit/00_preinit.conf
+       echo 'pi_ip=$(if $(CONFIG_TARGET_PREINIT_IP),$(CONFIG_TARGET_PREINIT_IP),"192.168.1.1")' >>$(1)/lib/preinit/00_preinit.conf
        echo 'pi_netmask=$(if $(CONFIG_TARGET_PREINIT_NETMASK),$(CONFIG_TARGET_PREINIT_NETMASK),"255.255.255.0")' >>$(1)/lib/preinit/00_preinit.conf
-       echo 'pi_broadcast=$(if $(CONFIG_TARGET_PREINIT_BROADCAST),$(CONFIG_TARGET_PREINIT_BROADCAST),"192.168.10.255")' >>$(1)/lib/preinit/00_preinit.conf
+       echo 'pi_broadcast=$(if $(CONFIG_TARGET_PREINIT_BROADCAST),$(CONFIG_TARGET_PREINIT_BROADCAST),"192.168.1.255")' >>$(1)/lib/preinit/00_preinit.conf
        echo 'pi_preinit_net_messages="$(CONFIG_TARGET_PREINIT_SHOW_NETMSG)"' >>$(1)/lib/preinit/00_preinit.conf
        echo 'pi_preinit_no_failsafe_netmsg="$(CONFIG_TARGET_PREINIT_SUPPRESS_FAILSAFE_NETMSG)"' >>$(1)/lib/preinit/00_preinit.conf
        echo 'pi_preinit_no_failsafe="$(CONFIG_TARGET_PREINIT_DISABLE_FAILSAFE)"' >>$(1)/lib/preinit/00_preinit.conf
index 183bd6b7a936cb8f63af70a59e637f0c5ce220db..03dca9a31be3c1fbff00ede81c8eaf114b227517 100755 (executable)
@@ -91,7 +91,7 @@ generate_network() {
                static)
                        local ipad
                        case "$1" in
-                               lan) ipad=${ipaddr:-"192.168.10.1"} ;;
+                               lan) ipad=${ipaddr:-"192.168.1.1"} ;;
                                *) ipad=${ipaddr:-"192.168.$((addr_offset++)).1"} ;;
                        esac
 
index c947ad340e81a4bd88edef6c6339c5ede9e94bac..8c5f6772996775839f372b0140259e5ac77ee7f6 100755 (executable)
@@ -7,7 +7,7 @@ USE_PROCD=1
 validate_system_section()
 {
        uci_validate_section system system "${1}" \
-               'hostname:string:librecmc' \
+               'hostname:string:lede' \
                'conloglevel:uinteger' \
                'buffersize:uinteger' \
                'timezone:string:UTC' \
index b68db6b6bd7e419627b8330f5bf31a780f817561..992d88f9649b20423d9c2a8da7d2b768ed9e4cb3 100755 (executable)
@@ -240,7 +240,7 @@ default_postinst() {
                [ -d /tmp/.uci ] || mkdir -p /tmp/.uci
                for i in $(sed -ne 's!^/etc/uci-defaults/!!p' "/usr/lib/opkg/info/${pkgname}.list"); do (
                        cd /etc/uci-defaults
-                       [ -f "$i" ] && . "$i" && rm -f "$i"
+                       [ -f "$i" ] && . ./"$i" && rm -f "$i"
                ) done
                uci commit
        fi
index d134bf4575eef76562b4b46f5ab43a1dd7f18427..21abf969e100c1e84b611ba21ab990d3dea40842 100644 (file)
@@ -1,7 +1,7 @@
 NAME="%D"
 VERSION="%V, %N"
 ID="%d"
-ID_LIKE="librecmc openwrt"
+ID_LIKE="lede openwrt"
 PRETTY_NAME="%D %N %V"
 VERSION_ID="%v"
 HOME_URL="%m"
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/package/boot/uboot-xburst/Makefile b/package/boot/uboot-xburst/Makefile
deleted file mode 100644 (file)
index 413289a..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-#
-# Copyright (C) 2010 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-include $(INCLUDE_DIR)/kernel.mk
-
-PKG_NAME:=u-boot
-PKG_VERSION:=2012.10-rc2
-PKG_RELEASE:=1
-
-PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:= \
-       http://mirror2.openwrt.org/sources \
-       ftp://ftp.denx.de/pub/u-boot
-PKG_HASH:=6d094cafa7ecea8b671fbdcd21130b6a4f5744fc47dd263e101ed5d3629dffd4
-PKG_TARGETS:=bin
-
-PKG_LICENSE:=GPL-2.0 GPL-2.0+
-PKG_LICENSE_FILES:=Licenses/README
-
-include $(INCLUDE_DIR)/package.mk
-
-define uboot/Default
-  TITLE:=
-  CONFIG:=
-  IMAGE:=
-endef
-
-define uboot/qi_lb60
-  TITLE:=U-boot for the qi_lb60 board
-endef
-
-UBOOTS:=qi_lb60
-
-define Package/uboot/template
-define Package/uboot-xburst-$(1)
-  SECTION:=boot
-  CATEGORY:=Boot Loaders
-  DEPENDS:=@TARGET_xburst
-  TITLE:=$(2)
-  URL:=http://www.denx.de/wiki/UBoot/WebHome
-  VARIANT:=$(1)
-endef
-endef
-
-define BuildUbootPackage
-       $(eval $(uboot/Default))
-       $(eval $(uboot/$(1)))
-       $(call Package/uboot/template,$(1),$(TITLE))
-endef
-
-
-ifdef BUILD_VARIANT
-$(eval $(call uboot/$(BUILD_VARIANT)))
-UBOOT_CONFIG:=$(if $(CONFIG),$(CONFIG),$(BUILD_VARIANT))
-UBOOT_IMAGE:=$(if $(IMAGE),$(IMAGE),openwrt-$(BOARD)-$(BUILD_VARIANT)-u-boot.bin)
-endif
-
-define Build/Configure
-       $(MAKE) -C $(PKG_BUILD_DIR) \
-               $(UBOOT_CONFIG)_config
-endef
-
-define Build/Compile
-       $(MAKE) -C $(PKG_BUILD_DIR) \
-               CROSS_COMPILE=$(TARGET_CROSS)
-endef
-
-define Package/uboot/install/template
-define Package/uboot-xburst-$(1)/install
-       $(CP) $(PKG_BUILD_DIR)/u-boot-xburst.bin $(BIN_DIR)/$(2)
-       rmdir $$(1)
-endef
-endef
-
-$(foreach u,$(UBOOTS), \
-       $(eval $(call Package/uboot/install/template,$(u),openwrt-$(BOARD)-$(u)-u-boot.bin)) \
-)
-
-$(foreach u,$(UBOOTS), \
-       $(eval $(call BuildUbootPackage,$(u))) \
-       $(eval $(call BuildPackage,uboot-xburst-$(u))) \
-)
diff --git a/package/boot/uboot-xburst/patches/0001-qi_lb60-add-nand-spl-support.patch b/package/boot/uboot-xburst/patches/0001-qi_lb60-add-nand-spl-support.patch
deleted file mode 100644 (file)
index e770243..0000000
+++ /dev/null
@@ -1,894 +0,0 @@
-From 0329cf7965956a5a7044827e0ce88ae8d5150e54 Mon Sep 17 00:00:00 2001
-From: Xiangfu <xiangfu@openmobilefree.net>
-Date: Fri, 12 Oct 2012 09:46:58 +0800
-Subject: [PATCH 1/6] qi_lb60: add nand spl support
-
-  The JZ4740 CPU can load 8KB from two different addresses:
-   1. the normal area up to 8KB starting from NAND flash address 0x00000000
-   2. the backup area up to 8KB starting from NAND flash address 0x00002000
-
-Signed-off-by: Xiangfu <xiangfu@openmobilefree.net>
----
- Makefile                          |   12 +++
- arch/mips/cpu/xburst/Makefile     |    7 +-
- arch/mips/cpu/xburst/cpu.c        |    4 +
- arch/mips/cpu/xburst/jz4740.c     |   82 +++++++----------
- arch/mips/cpu/xburst/spl/Makefile |   47 ++++++++++
- arch/mips/cpu/xburst/spl/start.S  |   63 +++++++++++++
- board/qi/qi_lb60/Makefile         |    4 +
- board/qi/qi_lb60/qi_lb60-spl.c    |   30 +++++++
- board/qi/qi_lb60/qi_lb60.c        |    8 +-
- board/qi/qi_lb60/u-boot-spl.lds   |   61 +++++++++++++
- drivers/mtd/nand/jz4740_nand.c    |   39 ++++++++-
- include/configs/qi_lb60.h         |  175 ++++++++++++++++++-------------------
- 12 files changed, 386 insertions(+), 146 deletions(-)
- create mode 100644 arch/mips/cpu/xburst/spl/Makefile
- create mode 100644 arch/mips/cpu/xburst/spl/start.S
- create mode 100644 board/qi/qi_lb60/qi_lb60-spl.c
- create mode 100644 board/qi/qi_lb60/u-boot-spl.lds
-
-diff --git a/Makefile b/Makefile
-index 34d9075..a22778e 100644
---- a/Makefile
-+++ b/Makefile
-@@ -393,6 +393,10 @@ ALL-y += $(obj)u-boot-nodtb-tegra.bin
- endif
- endif
-+ifeq ($(CPU),xburst)
-+ALL-y += $(obj)u-boot-xburst.bin
-+endif
-+
- all:          $(ALL-y) $(SUBDIR_EXAMPLES)
- $(obj)u-boot.dtb:     $(obj)u-boot
-@@ -506,6 +510,14 @@ $(obj)u-boot-nodtb-tegra.bin:     $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
- endif
- endif
-+ifeq ($(CPU),xburst)
-+$(obj)u-boot-xburst.bin:      $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
-+              dd if=$(obj)spl/u-boot-spl.bin of=$(obj)spl/u-boot-pad.bin conv=sync bs=8192 count=1
-+              dd if=$(obj)spl/u-boot-spl.bin of=$(obj)spl/u-boot-pad.bin conv=sync,notrunc oflag=append bs=8192 count=1
-+              tr '\0' '\377' < /dev/zero | dd of=$(obj)spl/u-boot-pad.bin conv=sync,notrunc oflag=append bs=16384 count=1
-+              cat $(obj)spl/u-boot-pad.bin u-boot.bin > $@
-+endif
-+
- ifeq ($(CONFIG_SANDBOX),y)
- GEN_UBOOT = \
-               cd $(LNDIR) && $(CC) $(SYMS) -T $(obj)u-boot.lds \
-diff --git a/arch/mips/cpu/xburst/Makefile b/arch/mips/cpu/xburst/Makefile
-index b1f2ae4..ec35e55 100644
---- a/arch/mips/cpu/xburst/Makefile
-+++ b/arch/mips/cpu/xburst/Makefile
-@@ -24,9 +24,12 @@ include $(TOPDIR)/config.mk
- LIB   = $(obj)lib$(CPU).o
-+COBJS-y       = cpu.o jz_serial.o
-+
-+ifneq ($(CONFIG_SPL_BUILD),y)
- START = start.o
--SOBJS-y       =
--COBJS-y       = cpu.o timer.o jz_serial.o
-+COBJS-y += timer.o
-+endif
- COBJS-$(CONFIG_JZ4740) += jz4740.o
-diff --git a/arch/mips/cpu/xburst/cpu.c b/arch/mips/cpu/xburst/cpu.c
-index ddcbfaa..1432838 100644
---- a/arch/mips/cpu/xburst/cpu.c
-+++ b/arch/mips/cpu/xburst/cpu.c
-@@ -42,6 +42,8 @@
-               :                       \
-               : "i" (op), "R" (*(unsigned char *)(addr)))
-+#ifndef CONFIG_SPL_BUILD
-+
- void __attribute__((weak)) _machine_restart(void)
- {
-       struct jz4740_wdt *wdt = (struct jz4740_wdt *)JZ4740_WDT_BASE;
-@@ -109,6 +111,8 @@ void invalidate_dcache_range(ulong start_addr, ulong stop)
-               cache_op(Hit_Invalidate_D, addr);
- }
-+#endif
-+
- void flush_icache_all(void)
- {
-       u32 addr, t = 0;
-diff --git a/arch/mips/cpu/xburst/jz4740.c b/arch/mips/cpu/xburst/jz4740.c
-index c0b9817..8816aa3 100644
---- a/arch/mips/cpu/xburst/jz4740.c
-+++ b/arch/mips/cpu/xburst/jz4740.c
-@@ -32,31 +32,19 @@ int disable_interrupts(void)
-       return 0;
- }
--/*
-- * PLL output clock = EXTAL * NF / (NR * NO)
-- * NF = FD + 2, NR = RD + 2
-- * NO = 1 (if OD = 0), NO = 2 (if OD = 1 or 2), NO = 4 (if OD = 3)
-- */
- void pll_init(void)
- {
-       struct jz4740_cpm *cpm = (struct jz4740_cpm *)JZ4740_CPM_BASE;
--      register unsigned int cfcr, plcr1;
--      int n2FR[33] = {
--              0, 0, 1, 2, 3, 0, 4, 0, 5, 0, 0, 0, 6, 0, 0, 0,
--              7, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
--              9
--      };
--      int div[5] = {1, 3, 3, 3, 3}; /* divisors of I:S:P:L:M */
--      int nf, pllout2;
-+      register unsigned int cfcr, plcr;
-+      unsigned int nf, pllout2;
-       cfcr =  CPM_CPCCR_CLKOEN |
--              CPM_CPCCR_PCS |
--              (n2FR[div[0]] << CPM_CPCCR_CDIV_BIT) |
--              (n2FR[div[1]] << CPM_CPCCR_HDIV_BIT) |
--              (n2FR[div[2]] << CPM_CPCCR_PDIV_BIT) |
--              (n2FR[div[3]] << CPM_CPCCR_MDIV_BIT) |
--              (n2FR[div[4]] << CPM_CPCCR_LDIV_BIT);
-+              (0 << CPM_CPCCR_CDIV_BIT) |
-+              (2 << CPM_CPCCR_HDIV_BIT) |
-+              (2 << CPM_CPCCR_PDIV_BIT) |
-+              (2 << CPM_CPCCR_MDIV_BIT) |
-+              (2 << CPM_CPCCR_LDIV_BIT);
-       pllout2 = (cfcr & CPM_CPCCR_PCS) ?
-               CONFIG_SYS_CPU_SPEED : (CONFIG_SYS_CPU_SPEED / 2);
-@@ -65,15 +53,18 @@ void pll_init(void)
-       writel(pllout2 / 48000000 - 1, &cpm->uhccdr);
-       nf = CONFIG_SYS_CPU_SPEED * 2 / CONFIG_SYS_EXTAL;
--      plcr1 = ((nf - 2) << CPM_CPPCR_PLLM_BIT) | /* FD */
-+      plcr = ((nf - 2) << CPM_CPPCR_PLLM_BIT) | /* FD */
-               (0 << CPM_CPPCR_PLLN_BIT) |     /* RD=0, NR=2 */
-               (0 << CPM_CPPCR_PLLOD_BIT) |    /* OD=0, NO=1 */
--              (0x20 << CPM_CPPCR_PLLST_BIT) | /* PLL stable time */
-+              (0x32 << CPM_CPPCR_PLLST_BIT) | /* PLL stable time */
-               CPM_CPPCR_PLLEN;                /* enable PLL */
-       /* init PLL */
-       writel(cfcr, &cpm->cpccr);
--      writel(plcr1, &cpm->cppcr);
-+      writel(plcr, &cpm->cppcr);
-+
-+      while (!(readl(&cpm->cppcr) & CPM_CPPCR_PLLS))
-+              ;
- }
- void sdram_init(void)
-@@ -92,26 +83,12 @@ void sdram_init(void)
-               2 << EMC_DMCR_TCL_BIT   /* CAS latency is 3 */
-       };
--      int div[] = {1, 2, 3, 4, 6, 8, 12, 16, 24, 32};
--
-       cpu_clk = CONFIG_SYS_CPU_SPEED;
--      mem_clk = cpu_clk * div[__cpm_get_cdiv()] / div[__cpm_get_mdiv()];
-+      mem_clk = 84000000;
-       writel(0, &emc->bcr);   /* Disable bus release */
-       writew(0, &emc->rtcsr); /* Disable clock for counting */
--      /* Fault DMCR value for mode register setting*/
--#define SDRAM_ROW0    11
--#define SDRAM_COL0    8
--#define SDRAM_BANK40  0
--
--      dmcr0 = ((SDRAM_ROW0 - 11) << EMC_DMCR_RA_BIT) |
--              ((SDRAM_COL0 - 8) << EMC_DMCR_CA_BIT) |
--              (SDRAM_BANK40 << EMC_DMCR_BA_BIT) |
--              (SDRAM_BW16 << EMC_DMCR_BW_BIT) |
--              EMC_DMCR_EPIN |
--              cas_latency_dmcr[((SDRAM_CASL == 3) ? 1 : 0)];
--
-       /* Basic DMCR value */
-       dmcr = ((SDRAM_ROW - 11) << EMC_DMCR_RA_BIT) |
-               ((SDRAM_COL - 8) << EMC_DMCR_CA_BIT) |
-@@ -128,31 +105,31 @@ void sdram_init(void)
-       if (tmp > 11)
-               tmp = 11;
-       dmcr |= (tmp - 4) << EMC_DMCR_TRAS_BIT;
--      tmp = SDRAM_RCD / ns;
-+      tmp = SDRAM_RCD / ns;
-       if (tmp > 3)
-               tmp = 3;
-       dmcr |= tmp << EMC_DMCR_RCD_BIT;
--      tmp = SDRAM_TPC / ns;
-+      tmp = SDRAM_TPC / ns;
-       if (tmp > 7)
-               tmp = 7;
-       dmcr |= tmp << EMC_DMCR_TPC_BIT;
--      tmp = SDRAM_TRWL / ns;
-+      tmp = SDRAM_TRWL / ns;
-       if (tmp > 3)
-               tmp = 3;
-       dmcr |= tmp << EMC_DMCR_TRWL_BIT;
--      tmp = (SDRAM_TRAS + SDRAM_TPC) / ns;
-+      tmp = (SDRAM_TRAS + SDRAM_TPC) / ns;
-       if (tmp > 14)
-               tmp = 14;
-       dmcr |= ((tmp + 1) >> 1) << EMC_DMCR_TRC_BIT;
-       /* SDRAM mode value */
--      sdmode = EMC_SDMR_BT_SEQ |
--               EMC_SDMR_OM_NORMAL |
--               EMC_SDMR_BL_4 |
-+      sdmode = EMC_SDMR_BT_SEQ        |
-+               EMC_SDMR_OM_NORMAL     |
-+               EMC_SDMR_BL_4          |
-                cas_latency_sdmr[((SDRAM_CASL == 3) ? 1 : 0)];
-       /* Stage 1. Precharge all banks by writing SDMR with DMCR.MRSET=0 */
-@@ -172,8 +149,8 @@ void sdram_init(void)
-       if (tmp > 0xff)
-               tmp = 0xff;
-       writew(tmp, &emc->rtcor);
-+
-       writew(0, &emc->rtcnt);
--      /* Divisor is 64, CKO/64 */
-       writew(EMC_RTCSR_CKS_64, &emc->rtcsr);
-       /* Wait for number of auto-refresh cycles */
-@@ -182,13 +159,17 @@ void sdram_init(void)
-               ;
-       /* Stage 3. Mode Register Set */
-+      dmcr0 = (11 << EMC_DMCR_RA_BIT) |
-+              (8 << EMC_DMCR_CA_BIT)  |
-+              (0 << EMC_DMCR_BA_BIT)  |
-+              EMC_DMCR_EPIN           |
-+              (SDRAM_BW16 << EMC_DMCR_BW_BIT) |
-+              cas_latency_dmcr[((SDRAM_CASL == 3) ? 1 : 0)];
-       writel(dmcr0 | EMC_DMCR_RFSH | EMC_DMCR_MRSET, &emc->dmcr);
-       writeb(0, JZ4740_EMC_SDMR0 | sdmode);
-       /* Set back to basic DMCR value */
-       writel(dmcr | EMC_DMCR_RFSH | EMC_DMCR_MRSET, &emc->dmcr);
--
--      /* everything is ok now */
- }
- DECLARE_GLOBAL_DATA_PTR;
-@@ -232,9 +213,10 @@ void rtc_init(void)
- phys_size_t initdram(int board_type)
- {
-       struct jz4740_emc *emc = (struct jz4740_emc *)JZ4740_EMC_BASE;
--      u32 dmcr;
--      u32 rows, cols, dw, banks;
--      ulong size;
-+
-+      unsigned int dmcr;
-+      unsigned int rows, cols, dw, banks;
-+      unsigned long size;
-       dmcr = readl(&emc->dmcr);
-       rows = 11 + ((dmcr & EMC_DMCR_RA_MASK) >> EMC_DMCR_RA_BIT);
-diff --git a/arch/mips/cpu/xburst/spl/Makefile b/arch/mips/cpu/xburst/spl/Makefile
-new file mode 100644
-index 0000000..f45e8c8
---- /dev/null
-+++ b/arch/mips/cpu/xburst/spl/Makefile
-@@ -0,0 +1,47 @@
-+#
-+# Copyright (C) 2011 Xiangfu Liu <xiangfu@openmobilefree.net>
-+#
-+# See file CREDITS for list of people who contributed to this
-+# project.
-+#
-+# This program is free software; you can redistribute it and/or
-+# modify it under the terms of the GNU General Public License as
-+# published by the Free Software Foundation; either version 2 of
-+# the License, or (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+# MA 02111-1307 USA
-+#
-+
-+include $(TOPDIR)/config.mk
-+
-+LIB   = $(obj)lib$(CPU).o
-+
-+START = start.o
-+SOBJS-y       =
-+COBJS-y       =
-+
-+SRCS  := $(START:.o=.S) $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
-+OBJS  := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
-+START := $(addprefix $(obj),$(START))
-+
-+all:  $(obj).depend $(START) $(LIB)
-+
-+$(LIB):       $(OBJS)
-+      $(call cmd_link_o_target, $(OBJS))
-+
-+#########################################################################
-+
-+# defines $(obj).depend target
-+include $(SRCTREE)/rules.mk
-+
-+sinclude $(obj).depend
-+
-+#########################################################################
-diff --git a/arch/mips/cpu/xburst/spl/start.S b/arch/mips/cpu/xburst/spl/start.S
-new file mode 100644
-index 0000000..e31c4c8
---- /dev/null
-+++ b/arch/mips/cpu/xburst/spl/start.S
-@@ -0,0 +1,63 @@
-+/*
-+ * Copyright (c) 2010 Xiangfu Liu <xiangfu@openmobilefree.net>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * 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, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <config.h>
-+#include <version.h>
-+#include <asm/regdef.h>
-+#include <asm/mipsregs.h>
-+#include <asm/addrspace.h>
-+#include <asm/cacheops.h>
-+
-+#include <asm/jz4740.h>
-+
-+      .set noreorder
-+
-+      .globl _start
-+      .text
-+_start:
-+      .word JZ4740_NANDBOOT_CFG /* fetched during NAND Boot */
-+reset:
-+      /*
-+       * STATUS register
-+       * CU0=UM=EXL=IE=0, BEV=ERL=1, IP2~7=1
-+       */
-+      li      t0, 0x0040FC04
-+      mtc0    t0, CP0_STATUS
-+      /*
-+       * CAUSE register
-+       * IV=1, use the specical interrupt vector (0x200)
-+       */
-+      li      t1, 0x00800000
-+      mtc0    t1, CP0_CAUSE
-+
-+      bal     1f
-+       nop
-+      .word   _GLOBAL_OFFSET_TABLE_
-+1:
-+      move    gp, ra
-+      lw      t1, 0(ra)
-+      move    gp, t1
-+
-+      la      sp, 0x80004000
-+      la      t9, nand_spl_boot
-+      j       t9
-+      nop
-diff --git a/board/qi/qi_lb60/Makefile b/board/qi/qi_lb60/Makefile
-index 5dae11b..e399246 100644
---- a/board/qi/qi_lb60/Makefile
-+++ b/board/qi/qi_lb60/Makefile
-@@ -22,7 +22,11 @@ include $(TOPDIR)/config.mk
- LIB   = $(obj)lib$(BOARD).o
-+ifeq ($(CONFIG_SPL_BUILD),y)
-+COBJS := $(BOARD)-spl.o
-+else
- COBJS := $(BOARD).o
-+endif
- SRCS  := $(SOBJS:.o=.S) $(COBJS:.o=.c)
- OBJS  := $(addprefix $(obj),$(SOBJS) $(COBJS))
-diff --git a/board/qi/qi_lb60/qi_lb60-spl.c b/board/qi/qi_lb60/qi_lb60-spl.c
-new file mode 100644
-index 0000000..3fe3fa3
---- /dev/null
-+++ b/board/qi/qi_lb60/qi_lb60-spl.c
-@@ -0,0 +1,30 @@
-+/*
-+ * Authors: Xiangfu Liu <xiangfu@openmobilefree.cc>
-+ *
-+ * 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.
-+ */
-+
-+#include <common.h>
-+#include <nand.h>
-+#include <asm/io.h>
-+#include <asm/jz4740.h>
-+
-+void nand_spl_boot(void)
-+{
-+      __gpio_as_sdram_16bit_4720();
-+      __gpio_as_uart0();
-+      __gpio_jtag_to_uart0();
-+
-+      serial_init();
-+
-+      pll_init();
-+      sdram_init();
-+
-+      nand_init();
-+
-+      puts("\nQi LB60 SPL: Starting U-Boot ...\n");
-+      nand_boot();
-+}
-diff --git a/board/qi/qi_lb60/qi_lb60.c b/board/qi/qi_lb60/qi_lb60.c
-index d975209..3bd4e2f 100644
---- a/board/qi/qi_lb60/qi_lb60.c
-+++ b/board/qi/qi_lb60/qi_lb60.c
-@@ -1,5 +1,5 @@
- /*
-- * Authors: Xiangfu Liu <xiangfu@sharism.cc>
-+ * Authors: Xiangfu Liu <xiangfu@openmobilefree.net>
-  *
-  * This program is free software; you can redistribute it and/or
-  * modify it under the terms of the GNU General Public License
-@@ -97,8 +97,10 @@ int board_early_init_f(void)
- /* U-Boot common routines */
- int checkboard(void)
- {
--      printf("Board: Qi LB60 (Ingenic XBurst Jz4740 SoC, Speed %ld MHz)\n",
--             gd->cpu_clk / 1000000);
-+      printf("Board: Qi LB60 (Ingenic XBurst Jz4740 SoC)\n");
-+      printf(" CPU: %ld\n", gd->cpu_clk);
-+      printf(" MEM: %ld\n", gd->mem_clk);
-+      printf(" DEV: %ld\n", gd->dev_clk);
-       return 0;
- }
-diff --git a/board/qi/qi_lb60/u-boot-spl.lds b/board/qi/qi_lb60/u-boot-spl.lds
-new file mode 100644
-index 0000000..930537f
---- /dev/null
-+++ b/board/qi/qi_lb60/u-boot-spl.lds
-@@ -0,0 +1,61 @@
-+/*
-+ * (C) Copyright 2012 Xiangfu Liu <xiangfu@openmobilefree.net>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+OUTPUT_FORMAT("elf32-tradlittlemips", "elf32-tradlittlemips", "elf32-tradlittlemips")
-+
-+OUTPUT_ARCH(mips)
-+ENTRY(_start)
-+SECTIONS
-+{
-+      . = 0x80000000;
-+      . = ALIGN(4);
-+      .text :
-+      {
-+        *(.text)
-+      }
-+
-+      . = ALIGN(4);
-+      .rodata  : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
-+
-+      . = ALIGN(4);
-+      .data  : { *(.data) }
-+
-+      . = ALIGN(4);
-+      .sdata  : { *(.sdata) }
-+
-+      _gp = ALIGN(16);
-+
-+      __got_start = .;
-+      .got  : { *(.got) }
-+      __got_end = .;
-+
-+      . = .;
-+      __u_boot_cmd_start = .;
-+      .u_boot_cmd : { *(.u_boot_cmd) }
-+      __u_boot_cmd_end = .;
-+
-+      uboot_end_data = .;
-+      num_got_entries = (__got_end - __got_start) >> 2;
-+
-+      . = ALIGN(4);
-+      .sbss  : { *(.sbss) }
-+      .bss  : { *(.bss) }
-+      uboot_end = .;
-+}
-+ASSERT(uboot_end <= 0x80002000, "NAND bootstrap too big");
-diff --git a/drivers/mtd/nand/jz4740_nand.c b/drivers/mtd/nand/jz4740_nand.c
-index 3ec34f3..24a4921 100644
---- a/drivers/mtd/nand/jz4740_nand.c
-+++ b/drivers/mtd/nand/jz4740_nand.c
-@@ -15,6 +15,9 @@
- #include <asm/io.h>
- #include <asm/jz4740.h>
-+#ifdef CONFIG_SPL_BUILD
-+#define printf(s) puts(s)
-+#endif
- #define JZ_NAND_DATA_ADDR ((void __iomem *)0xB8000000)
- #define JZ_NAND_CMD_ADDR (JZ_NAND_DATA_ADDR + 0x8000)
- #define JZ_NAND_ADDR_ADDR (JZ_NAND_DATA_ADDR + 0x10000)
-@@ -176,7 +179,7 @@ static int jz_nand_rs_correct_data(struct mtd_info *mtd, u_char *dat,
-               for (k = 0; k < 9; k++)
-                       writeb(read_ecc[k], &emc->nfpar[k]);
-       }
--      /* Set PRDY */
-+
-       writel(readl(&emc->nfecr) | EMC_NFECR_PRDY, &emc->nfecr);
-       /* Wait for completion */
-@@ -184,7 +187,7 @@ static int jz_nand_rs_correct_data(struct mtd_info *mtd, u_char *dat,
-               status = readl(&emc->nfints);
-       } while (!(status & EMC_NFINTS_DECF));
--      /* disable ecc */
-+      /* Disable ECC */
-       writel(readl(&emc->nfecr) & ~EMC_NFECR_ECCE, &emc->nfecr);
-       /* Check decoding */
-@@ -192,7 +195,7 @@ static int jz_nand_rs_correct_data(struct mtd_info *mtd, u_char *dat,
-               return 0;
-       if (status & EMC_NFINTS_UNCOR) {
--              printf("uncorrectable ecc\n");
-+              printf("JZ4740 uncorrectable ECC\n");
-               return -1;
-       }
-@@ -230,6 +233,32 @@ static int jz_nand_rs_correct_data(struct mtd_info *mtd, u_char *dat,
-       return errcnt;
- }
-+#ifdef CONFIG_SPL_BUILD
-+static void jz_nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
-+{
-+      int i;
-+      struct nand_chip *this = mtd->priv;
-+
-+#if (JZ4740_NANDBOOT_CFG == JZ4740_NANDBOOT_B16R3) || \
-+      (JZ4740_NANDBOOT_CFG == JZ4740_NANDBOOT_B16R2)
-+      for (i = 0; i < len; i += 2)
-+              buf[i] = readw(this->IO_ADDR_R);
-+#elif (JZ4740_NANDBOOT_CFG == JZ4740_NANDBOOT_B8R3) || \
-+      (JZ4740_NANDBOOT_CFG == JZ4740_NANDBOOT_B8R2)
-+      for (i = 0; i < len; i++)
-+              buf[i] = readb(this->IO_ADDR_R);
-+#else
-+      #error JZ4740_NANDBOOT_CFG not defined or wrong
-+#endif
-+}
-+
-+static uint8_t jz_nand_read_byte(struct mtd_info *mtd)
-+{
-+      struct nand_chip *this = mtd->priv;
-+      return readb(this->IO_ADDR_R);
-+}
-+#endif
-+
- /*
-  * Main initialization routine
-  */
-@@ -254,6 +283,10 @@ int board_nand_init(struct nand_chip *nand)
-       nand->ecc.size          = CONFIG_SYS_NAND_ECCSIZE;
-       nand->ecc.bytes         = CONFIG_SYS_NAND_ECCBYTES;
-       nand->ecc.layout        = &qi_lb60_ecclayout_2gb;
-+#ifdef CONFIG_SPL_BUILD
-+      nand->read_byte         = jz_nand_read_byte;
-+      nand->read_buf          = jz_nand_read_buf;
-+#endif
-       nand->chip_delay        = 50;
-       nand->options           = NAND_USE_FLASH_BBT;
-diff --git a/include/configs/qi_lb60.h b/include/configs/qi_lb60.h
-index 4bb5bbc..7bff444 100644
---- a/include/configs/qi_lb60.h
-+++ b/include/configs/qi_lb60.h
-@@ -1,5 +1,5 @@
- /*
-- * Authors: Xiangfu Liu <xiangfu.z@gmail.com>
-+ * Authors: Xiangfu Liu <xiangfu@openmobilefree.net>
-  *
-  * This program is free software; you can redistribute it and/or
-  * modify it under the terms of the GNU General Public License
-@@ -14,7 +14,6 @@
- #define CONFIG_SYS_LITTLE_ENDIAN
- #define CONFIG_JZSOC          /* Jz SoC */
- #define CONFIG_JZ4740         /* Jz4740 SoC */
--#define CONFIG_NAND_JZ4740
- #define CONFIG_SYS_CPU_SPEED  336000000       /* CPU clock: 336 MHz */
- #define CONFIG_SYS_EXTAL      12000000        /* EXTAL freq: 12 MHz */
-@@ -24,24 +23,43 @@
- #define CONFIG_SYS_UART_BASE  JZ4740_UART0_BASE /* Base of the UART channel */
- #define CONFIG_BAUDRATE               57600
-+#define CONFIG_BOOTP_MASK     (CONFIG_BOOTP_DEFAUL)
-+#define CONFIG_BOOTDELAY      0
-+#define CONFIG_BOOTARGS "mem=32M console=tty0 console=ttyS0,57600n8 ubi.mtd=2 rootfstype=ubifs root=ubi0:rootfs rw rootwait"
-+#define CONFIG_BOOTCOMMAND    "nand read 0x80600000 0x400000 0x280000;bootm"
-+
-+/*
-+ * Miscellaneous configurable options
-+ */
-+#define CONFIG_SYS_SDRAM_BASE         0x80000000      /* Cached addr */
-+#define CONFIG_SYS_INIT_SP_OFFSET     0x400000
-+#define CONFIG_SYS_LOAD_ADDR          0x80600000
-+#define CONFIG_SYS_MEMTEST_START      0x80100000
-+#define CONFIG_SYS_MEMTEST_END                0x80A00000
-+#define CONFIG_SYS_TEXT_BASE          0x80100000
-+#define CONFIG_SYS_MONITOR_BASE               CONFIG_SYS_TEXT_BASE
-+
-+#define CONFIG_SYS_MALLOC_LEN         (4 * 1024 * 1024)
-+#define CONFIG_SYS_BOOTPARAMS_LEN     (128 * 1024)
-+
-+#define CONFIG_SYS_CBSIZE     256 /* Console I/O Buffer Size */
-+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-+
-+#define CONFIG_SYS_LONGHELP
-+#define CONFIG_SYS_MAXARGS    16
-+#define CONFIG_SYS_PROMPT     "NanoNote# "
-+
- #define CONFIG_SKIP_LOWLEVEL_INIT
- #define CONFIG_BOARD_EARLY_INIT_F
- #define CONFIG_SYS_NO_FLASH
- #define CONFIG_SYS_FLASH_BASE 0 /* init flash_base as 0 */
--#define CONFIG_ENV_OVERWRITE
--
--#define CONFIG_BOOTP_MASK     (CONFIG_BOOTP_DEFAUL)
--#define CONFIG_BOOTDELAY      0
--#define CONFIG_BOOTARGS               "mem=32M console=tty0 console=ttyS0,57600n8 ubi.mtd=2 rootfstype=ubifs root=ubi0:rootfs rw rootwait"
--#define CONFIG_BOOTCOMMAND    "nand read 0x80600000 0x400000 0x200000;bootm"
- /*
-- * Command line configuration.
-+ * Command line configuration
-  */
- #define CONFIG_CMD_BOOTD      /* bootd                        */
- #define CONFIG_CMD_CONSOLE    /* coninfo                      */
- #define CONFIG_CMD_ECHO               /* echo arguments               */
--
- #define CONFIG_CMD_LOADB      /* loadb                        */
- #define CONFIG_CMD_LOADS      /* loads                        */
- #define CONFIG_CMD_MEMORY     /* md mm nm mw cp cmp crc base loop mtest */
-@@ -58,45 +76,16 @@
- #define CONFIG_LOADS_ECHO     1       /* echo on for serial download */
- /*
-- * Miscellaneous configurable options
-- */
--#define CONFIG_SYS_MAXARGS 16
--#define CONFIG_SYS_LONGHELP
--#define CONFIG_SYS_PROMPT "NanoNote# "
--#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */
--#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
--
--#define CONFIG_SYS_MALLOC_LEN         (4 * 1024 * 1024)
--#define CONFIG_SYS_BOOTPARAMS_LEN     (128 * 1024)
--
--#define CONFIG_SYS_SDRAM_BASE         0x80000000      /* Cached addr */
--#define CONFIG_SYS_INIT_SP_OFFSET     0x400000
--#define CONFIG_SYS_LOAD_ADDR          0x80600000
--#define CONFIG_SYS_MEMTEST_START      0x80100000
--#define CONFIG_SYS_MEMTEST_END                0x80800000
--
--/*
-- * Environment
-+ * NAND driver configuration
-  */
--#define CONFIG_ENV_IS_IN_NAND         /* use NAND for environment vars */
--
--#define CONFIG_SYS_NAND_5_ADDR_CYCLE
--/*
-- * if board nand flash is 1GB, set to 1
-- * if board nand flash is 2GB, set to 2
-- * for change the PAGE_SIZE and BLOCK_SIZE
-- * will delete when there is no 1GB flash
-- */
--#define NANONOTE_NAND_SIZE    2
--
--#define CONFIG_SYS_NAND_PAGE_SIZE     (2048 * NANONOTE_NAND_SIZE)
--#define CONFIG_SYS_NAND_BLOCK_SIZE    (256 * NANONOTE_NAND_SIZE << 10)
--/* nand bad block was marked at this page in a block, start from 0 */
-+#define CONFIG_NAND_JZ4740
-+#define CONFIG_SYS_NAND_PAGE_SIZE     4096
-+#define CONFIG_SYS_NAND_BLOCK_SIZE    (512 << 10)
-+/* NAND bad block was marked at this page in a block, start from 0 */
- #define CONFIG_SYS_NAND_BADBLOCK_PAGE 127
- #define CONFIG_SYS_NAND_PAGE_COUNT    128
- #define CONFIG_SYS_NAND_BAD_BLOCK_POS 0
--/* ECC offset position in oob area, default value is 6 if it isn't defined */
--#define CONFIG_SYS_NAND_ECC_POS               (6 * NANONOTE_NAND_SIZE)
-+#define CONFIG_SYS_NAND_ECC_POS               12
- #define CONFIG_SYS_NAND_ECCSIZE               512
- #define CONFIG_SYS_NAND_ECCBYTES      9
- #define CONFIG_SYS_NAND_ECCPOS                \
-@@ -115,10 +104,9 @@
- #define CONFIG_SYS_ONENAND_BASE               CONFIG_SYS_NAND_BASE
- #define CONFIG_SYS_MAX_NAND_DEVICE    1
- #define CONFIG_SYS_NAND_SELECT_DEVICE 1 /* nand driver supports mutipl.*/
--#define CONFIG_NAND_SPL_TEXT_BASE     0x80000000
- /*
-- * IPL (Initial Program Loader, integrated inside CPU)
-+ * IPL (Initial Program Loader, integrated inside Ingenic Xburst JZ4740 CPU)
-  * Will load first 8k from NAND (SPL) into cache and execute it from there.
-  *
-  * SPL (Secondary Program Loader)
-@@ -130,77 +118,88 @@
-  * NUB (NAND U-Boot)
-  * This NAND U-Boot (NUB) is a special U-Boot version which can be started
-  * from RAM. Therefore it mustn't (re-)configure the SDRAM controller.
-- *
-  */
-+
-+/*
-+ * NAND SPL configuration
-+ */
-+#define CONFIG_SPL
-+#define CONFIG_SPL_LIBGENERIC_SUPPORT
-+#define CONFIG_SPL_LIBCOMMON_SUPPORT
-+#define CONFIG_SPL_NAND_LOAD
-+#define CONFIG_SPL_NAND_SIMPLE
-+#define CONFIG_SPL_NAND_SUPPORT
-+#define CONFIG_SPL_TEXT_BASE  0x80000000
-+#define CONFIG_SPL_START_S_PATH       "arch/mips/cpu/xburst/spl"
-+
-+#define CONFIG_SYS_NAND_5_ADDR_CYCLE
-+#define CONFIG_SYS_NAND_HW_ECC_OOBFIRST
-+#define JZ4740_NANDBOOT_CFG           JZ4740_NANDBOOT_B8R3
-+
- #define CONFIG_SYS_NAND_U_BOOT_DST    0x80100000 /* Load NUB to this addr */
- #define CONFIG_SYS_NAND_U_BOOT_START  CONFIG_SYS_NAND_U_BOOT_DST
--/* Start NUB from this addr*/
-+                                      /* Start NUB from this addr */
-+#define CONFIG_SYS_NAND_U_BOOT_OFFS (32  << 10) /* Offset of NUB */
-+#define CONFIG_SYS_NAND_U_BOOT_SIZE (256 << 10) /* Size of NUB */
- /*
-- * Define the partitioning of the NAND chip (only RAM U-Boot is needed here)
-+ * Environment configuration
-  */
--#define CONFIG_SYS_NAND_U_BOOT_OFFS (256 << 10) /* Offset to RAM U-Boot image */
--#define CONFIG_SYS_NAND_U_BOOT_SIZE (512 << 10) /* Size of RAM U-Boot image */
--
-+#define CONFIG_ENV_OVERWRITE
-+#define CONFIG_ENV_IS_IN_NAND
- #define CONFIG_ENV_SIZE               (4 << 10)
- #define CONFIG_ENV_OFFSET     \
-       (CONFIG_SYS_NAND_BLOCK_SIZE + CONFIG_SYS_NAND_U_BOOT_SIZE)
- #define CONFIG_ENV_OFFSET_REDUND \
-       (CONFIG_ENV_OFFSET  + CONFIG_SYS_NAND_BLOCK_SIZE)
--#define CONFIG_SYS_TEXT_BASE  0x80100000
--#define CONFIG_SYS_MONITOR_BASE       CONFIG_SYS_TEXT_BASE
--
- /*
-- * SDRAM Info.
-+ * CPU cache configuration
-  */
--#define CONFIG_NR_DRAM_BANKS  1
-+#define CONFIG_SYS_DCACHE_SIZE                16384
-+#define CONFIG_SYS_ICACHE_SIZE                16384
-+#define CONFIG_SYS_CACHELINE_SIZE     32
- /*
-- * Cache Configuration
-+ * SDRAM configuration
-  */
--#define CONFIG_SYS_DCACHE_SIZE        16384
--#define CONFIG_SYS_ICACHE_SIZE        16384
--#define CONFIG_SYS_CACHELINE_SIZE     32
-+#define CONFIG_NR_DRAM_BANKS  1
-+
-+#define SDRAM_BW16            1       /* Data bus width: 0-32bit, 1-16bit */
-+#define SDRAM_BANK4           1       /* Banks each chip: 0-2bank, 1-4bank */
-+#define SDRAM_ROW             13      /* Row address: 11 to 13 */
-+#define SDRAM_COL             9       /* Column address: 8 to 12 */
-+#define SDRAM_CASL            2       /* CAS latency: 2 or 3 */
-+#define SDRAM_TRAS            45      /* RAS# Active Time */
-+#define SDRAM_RCD             20      /* RAS# to CAS# Delay */
-+#define SDRAM_TPC             20      /* RAS# Precharge Time */
-+#define SDRAM_TRWL            7       /* Write Latency Time */
-+#define SDRAM_TREF            15625   /* Refresh period: 8192 cycles/64ms */
- /*
-- * GPIO definition
-+ * GPIO configuration
-  */
--#define GPIO_LCD_CS   (2 * 32 + 21)
--#define GPIO_AMP_EN   (3 * 32 + 4)
-+#define GPIO_LCD_CS           (2 * 32 + 21)
-+#define GPIO_AMP_EN           (3 * 32 + 4)
--#define GPIO_SDPW_EN  (3 * 32 + 2)
--#define GPIO_SD_DETECT        (3 * 32 + 0)
-+#define GPIO_SDPW_EN          (3 * 32 + 2)
-+#define GPIO_SD_DETECT                (3 * 32 + 0)
--#define GPIO_BUZZ_PWM (3 * 32 + 27)
--#define GPIO_USB_DETECT       (3 * 32 + 28)
-+#define GPIO_BUZZ_PWM         (3 * 32 + 27)
-+#define GPIO_USB_DETECT               (3 * 32 + 28)
--#define GPIO_AUDIO_POP        (1 * 32 + 29)
--#define GPIO_COB_TEST (1 * 32 + 30)
-+#define GPIO_AUDIO_POP                (1 * 32 + 29)
-+#define GPIO_COB_TEST         (1 * 32 + 30)
- #define GPIO_KEYOUT_BASE      (2 * 32 + 10)
--#define GPIO_KEYIN_BASE       (3 * 32 + 18)
--#define GPIO_KEYIN_8  (3 * 32 + 26)
-+#define GPIO_KEYIN_BASE               (3 * 32 + 18)
-+#define GPIO_KEYIN_8          (3 * 32 + 26)
--#define GPIO_SD_CD_N  GPIO_SD_DETECT          /* SD Card insert detect */
-+#define GPIO_SD_CD_N          GPIO_SD_DETECT  /* SD Card insert detect */
- #define GPIO_SD_VCC_EN_N      GPIO_SDPW_EN    /* SD Card Power Enable */
- #define SPEN  GPIO_LCD_CS     /* LCDCS :Serial command enable      */
- #define SPDA  (2 * 32 + 22)   /* LCDSCL:Serial command clock input */
- #define SPCK  (2 * 32 + 23)   /* LCDSDA:Serial command data input  */
--/* SDRAM paramters */
--#define SDRAM_BW16            1       /* Data bus width: 0-32bit, 1-16bit */
--#define SDRAM_BANK4           1       /* Banks each chip: 0-2bank, 1-4bank */
--#define SDRAM_ROW             13      /* Row address: 11 to 13 */
--#define SDRAM_COL             9       /* Column address: 8 to 12 */
--#define SDRAM_CASL            2       /* CAS latency: 2 or 3 */
--
--/* SDRAM Timings, unit: ns */
--#define SDRAM_TRAS            45      /* RAS# Active Time */
--#define SDRAM_RCD             20      /* RAS# to CAS# Delay */
--#define SDRAM_TPC             20      /* RAS# Precharge Time */
--#define SDRAM_TRWL            7       /* Write Latency Time */
--#define SDRAM_TREF            15625   /* Refresh period: 8192 cycles/64ms */
--
- #endif
--- 
-1.7.9.5
-
diff --git a/package/boot/uboot-xburst/patches/0002-qi_lb60-add-software-usbboot-support.patch b/package/boot/uboot-xburst/patches/0002-qi_lb60-add-software-usbboot-support.patch
deleted file mode 100644 (file)
index feaf297..0000000
+++ /dev/null
@@ -1,916 +0,0 @@
-From fa51192b912d296b8eec10f7d44c6c17eb1dd368 Mon Sep 17 00:00:00 2001
-From: Xiangfu <xiangfu@openmobilefree.net>
-Date: Fri, 12 Oct 2012 09:47:39 +0800
-Subject: [PATCH 2/6] qi_lb60: add software usbboot support
-
-  JZ4740 CPU have a internal ROM have such kind of code, that make
-  JZ4740 can boot from USB
-
-  usbboot.S can downloads user program from the USB port to internal
-  SRAM and branches to the internal SRAM to execute the program
-
-Signed-off-by: Xiangfu <xiangfu@openmobilefree.net>
----
- board/qi/qi_lb60/Makefile      |    1 +
- board/qi/qi_lb60/qi_lb60-spl.c |   20 +
- board/qi/qi_lb60/usbboot.S     |  838 ++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 859 insertions(+)
- create mode 100644 board/qi/qi_lb60/usbboot.S
-
-diff --git a/board/qi/qi_lb60/Makefile b/board/qi/qi_lb60/Makefile
-index e399246..6dd8c6f 100644
---- a/board/qi/qi_lb60/Makefile
-+++ b/board/qi/qi_lb60/Makefile
-@@ -23,6 +23,7 @@ include $(TOPDIR)/config.mk
- LIB   = $(obj)lib$(BOARD).o
- ifeq ($(CONFIG_SPL_BUILD),y)
-+SOBJS := usbboot.o
- COBJS := $(BOARD)-spl.o
- else
- COBJS := $(BOARD).o
-diff --git a/board/qi/qi_lb60/qi_lb60-spl.c b/board/qi/qi_lb60/qi_lb60-spl.c
-index 3fe3fa3..aea459c 100644
---- a/board/qi/qi_lb60/qi_lb60-spl.c
-+++ b/board/qi/qi_lb60/qi_lb60-spl.c
-@@ -12,6 +12,24 @@
- #include <asm/io.h>
- #include <asm/jz4740.h>
-+#define KEY_U_OUT       (32 * 2 + 16)
-+#define KEY_U_IN        (32 * 3 + 19)
-+
-+extern void usb_boot(void);
-+
-+static void check_usb_boot(void)
-+{
-+      __gpio_as_input(KEY_U_IN);
-+      __gpio_enable_pull(KEY_U_IN);
-+      __gpio_as_output(KEY_U_OUT);
-+      __gpio_clear_pin(KEY_U_OUT);
-+
-+      if (!__gpio_get_pin(KEY_U_IN)) {
-+              puts("[U] pressed, goto USBBOOT mode\n");
-+              usb_boot();
-+      }
-+}
-+
- void nand_spl_boot(void)
- {
-       __gpio_as_sdram_16bit_4720();
-@@ -23,6 +41,8 @@ void nand_spl_boot(void)
-       pll_init();
-       sdram_init();
-+      check_usb_boot();
-+
-       nand_init();
-       puts("\nQi LB60 SPL: Starting U-Boot ...\n");
-diff --git a/board/qi/qi_lb60/usbboot.S b/board/qi/qi_lb60/usbboot.S
-new file mode 100644
-index 0000000..c872266
---- /dev/null
-+++ b/board/qi/qi_lb60/usbboot.S
-@@ -0,0 +1,838 @@
-+/*
-+ *  for jz4740 usb boot
-+ *
-+ *  Copyright (c) 2009 Author: <jlwei@ingenic.cn>
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+    .set noreorder
-+    .globl usb_boot
-+    .text
-+
-+/*
-+ * Both NAND and USB boot load data to D-Cache first, then transfer
-+ * data from D-Cache to I-Cache, and jump to execute the code in I-Cache.
-+ * So init caches first and then dispatch to a proper boot routine.
-+ */
-+
-+.macro load_addr reg addr
-+      li \reg, 0x80000000
-+      addiu \reg, \reg, \addr
-+      la $2, usbboot_begin
-+      subu \reg, \reg, $2
-+.endm
-+
-+usb_boot:
-+      /* Initialize PLL: set ICLK to 84MHz and HCLK to 42MHz. */
-+      la      $9, 0xB0000000          /* CPCCR: Clock Control Register */
-+      la      $8, 0x42041110          /* I:S:M:P=1:2:2:2 */
-+      sw      $8, 0($9)
-+
-+      la      $9, 0xB0000010          /* CPPCR: PLL Control Register */
-+      la      $8, 0x06000120          /* M=12 N=0 D=0 CLK=12*(M+2)/(N+2) */
-+      sw      $8, 0($9)
-+
-+      mtc0    $0, $26         /* CP0_ERRCTL, restore WST reset state */
-+      nop
-+
-+      mtc0    $0, $16                 /* CP0_CONFIG */
-+      nop
-+
-+      /* Relocate code to beginning of the ram */
-+
-+      la $2, usbboot_begin
-+      la $3, usbboot_end
-+      li $4, 0x80000000
-+
-+1:
-+      lw $5, 0($2)
-+      sw $5, 0($4)
-+      addiu $2, $2, 4
-+      bne $2, $3, 1b
-+      addiu $4, $4, 4
-+
-+      li $2, 0x80000000
-+      ori $3, $2, 0
-+      addiu $3, $3, usbboot_end
-+      la $4, usbboot_begin
-+      subu $3, $3, $4
-+
-+
-+2:
-+      cache   0x0, 0($2)              /* Index_Invalidate_I */
-+      cache   0x1, 0($2)              /* Index_Writeback_Inv_D */
-+      addiu   $2, $2, 32
-+      subu $4, $3, $2
-+      bgtz    $4, 2b
-+      nop
-+
-+      load_addr $3, usb_boot_return
-+
-+      jr $3
-+
-+usbboot_begin:
-+
-+init_caches:
-+      li      $2, 3                   /* cacheable for kseg0 access */
-+      mtc0    $2, $16                 /* CP0_CONFIG */
-+      nop
-+
-+      li      $2, 0x20000000          /* enable idx-store-data cache insn */
-+      mtc0    $2, $26                 /* CP0_ERRCTL */
-+
-+      ori     $2, $28, 0              /* start address */
-+      ori     $3, $2, 0x3fe0          /* end address, total 16KB */
-+      mtc0    $0, $28, 0              /* CP0_TAGLO */
-+      mtc0    $0, $28, 1              /* CP0_DATALO */
-+cache_clear_a_line:
-+      cache   0x8, 0($2)              /* Index_Store_Tag_I */
-+      cache   0x9, 0($2)              /* Index_Store_Tag_D */
-+      bne     $2, $3, cache_clear_a_line
-+      addiu   $2, $2, 32              /* increment CACHE_LINE_SIZE */
-+
-+      ori     $2, $28, 0              /* start address */
-+      ori     $3, $2, 0x3fe0          /* end address, total 16KB */
-+      la      $4, 0x1ffff000          /* physical address and 4KB page mask */
-+cache_alloc_a_line:
-+      and     $5, $2, $4
-+      ori     $5, $5, 1               /* V bit of the physical tag */
-+      mtc0    $5, $28, 0              /* CP0_TAGLO */
-+      cache   0x8, 0($2)              /* Index_Store_Tag_I */
-+      cache   0x9, 0($2)              /* Index_Store_Tag_D */
-+      bne     $2, $3, cache_alloc_a_line
-+      addiu   $2, $2, 32              /* increment CACHE_LINE_SIZE */
-+
-+      nop
-+      nop
-+      nop
-+      /*
-+       * Transfer data from dcache to icache, then jump to icache.
-+       * Input parameters:
-+       * $19: data length in bytes
-+       * $20: jump target address
-+       */
-+xfer_d2i:
-+
-+      ori     $8, $20, 0
-+      addu    $9, $8, $19             /* total 16KB */
-+
-+1:
-+      cache   0x0, 0($8)              /* Index_Invalidate_I */
-+      cache   0x1, 0($8)              /* Index_Writeback_Inv_D */
-+      bne     $8, $9, 1b
-+      addiu   $8, $8, 32
-+
-+      /* flush write-buffer */
-+      sync
-+
-+      /* Invalidate BTB */
-+      mfc0    $8, $16, 7              /* CP0_CONFIG */
-+      nop
-+      ori     $8, 2
-+      mtc0    $8, $16, 7
-+      nop
-+
-+      /* Overwrite config to disable ram initalisation */
-+      li $2, 0xff
-+      sb $2, 20($20)
-+
-+      jalr    $20
-+      nop
-+
-+icache_return:
-+      /* User code can return to here after executing itself in
-+        icache, by jumping to $31. */
-+      b       usb_boot_return
-+      nop
-+
-+
-+usb_boot_return:
-+      /* Enable the USB PHY */
-+      la      $9, 0xB0000024          /* CPM_SCR */
-+      lw      $8, 0($9)
-+      ori     $8, 0x40                /* USBPHY_ENABLE */
-+      sw      $8, 0($9)
-+
-+      /* Initialize USB registers */
-+      la      $27, 0xb3040000 /* USB registers base address */
-+
-+      sb      $0, 0x0b($27)   /* INTRUSBE: disable common USB interrupts */
-+      sh      $0, 0x06($27)   /* INTRINE: disable EPIN interrutps */
-+      sh      $0, 0x08($27)   /* INTROUTE: disable EPOUT interrutps */
-+
-+      li      $9, 0x61
-+      sb      $9, 0x01($27)   /* POWER: HSENAB | SUSPENDM | SOFTCONN */
-+
-+      /* Initialize USB states */
-+      li      $22, 0                  /* set EP0 to IDLE state */
-+      li      $23, 1                  /* no data stage */
-+
-+      /* Main loop of polling the usb commands */
-+usb_command_loop:
-+      lbu     $9, 0x0a($27)           /* read INTRUSB */
-+      andi    $9, 0x04                /* check USB_INTR_RESET */
-+      beqz    $9, check_intr_ep0in
-+      nop
-+
-+      /* 1. Handle USB reset interrupt */
-+handle_reset_intr:
-+      lbu     $9, 0x01($27)           /* read POWER */
-+      andi    $9, 0x10                /* test HS_MODE */
-+      bnez    $9, _usb_set_maxpktsize
-+      li      $9, 512                 /* max packet size of HS mode */
-+      li      $9, 64                  /* max packet size of FS mode */
-+
-+_usb_set_maxpktsize:
-+      li      $8, 1
-+      sb      $8, 0x0e($27)           /* set INDEX 1 */
-+
-+      sh      $9, 0x10($27)           /* INMAXP */
-+      sb      $0, 0x13($27)           /* INCSRH */
-+      sh      $9, 0x14($27)           /* OUTMAXP */
-+      sb      $0, 0x17($27)           /* OUTCSRH */
-+
-+_usb_flush_fifo:
-+      li      $8, 0x48                /* INCSR_CDT && INCSR_FF */
-+      sb      $8, 0x12($27)           /* INCSR */
-+      li      $8, 0x90                /* OUTCSR_CDT && OUTCSR_FF */
-+      sb      $8, 0x16($27)           /* OUTCSR */
-+
-+      li      $22, 0                  /* set EP0 to IDLE state */
-+      li      $23, 1                  /* no data stage */
-+
-+      /* 2. Check and handle EP0 interrupt */
-+check_intr_ep0in:
-+      lhu     $10, 0x02($27)          /* read INTRIN */
-+      andi    $9, $10, 0x1            /* check EP0 interrupt */
-+      beqz    $9, check_intr_ep1in
-+      nop
-+
-+handle_ep0_intr:
-+      sb      $0, 0x0e($27)           /* set INDEX 0 */
-+      lbu     $11, 0x12($27)          /* read CSR0 */
-+
-+      andi    $9, $11, 0x04           /* check SENTSTALL */
-+      beqz    $9, _ep0_setupend
-+      nop
-+
-+_ep0_sentstall:
-+      andi    $9, $11, 0xdb
-+      sb      $9, 0x12($27)           /* clear SENDSTALL and SENTSTALL */
-+      li      $22, 0                  /* set EP0 to IDLE state */
-+
-+_ep0_setupend:
-+      andi    $9, $11, 0x10           /* check SETUPEND */
-+      beqz    $9, ep0_idle_state
-+      nop
-+
-+      ori     $9, $11, 0x80
-+      sb      $9, 0x12($27)           /* set SVDSETUPEND */
-+      li      $22, 0                  /* set EP0 to IDLE state */
-+
-+ep0_idle_state:
-+      bnez    $22, ep0_tx_state
-+      nop
-+
-+      /* 2.1 Handle EP0 IDLE state interrupt */
-+      andi    $9, $11, 0x01           /* check OUTPKTRDY */
-+      beqz    $9, check_intr_ep1in
-+      nop
-+
-+      /* Read 8-bytes setup packet from the FIFO */
-+      lw      $25, 0x20($27)          /* first word of setup packet */
-+      lw      $26, 0x20($27)          /* second word of setup packet */
-+
-+      andi    $9, $25, 0x60           /* bRequestType & USB_TYPE_MASK */
-+      beqz    $9, _ep0_std_req
-+      nop
-+
-+      /* 2.1.1 Vendor-specific setup request */
-+_ep0_vend_req:
-+      li      $22, 0                  /* set EP0 to IDLE state */
-+      li      $23, 1                  /* NoData = 1 */
-+
-+      andi    $9, $25, 0xff00         /* check bRequest */
-+      srl     $9, $9, 8
-+      beqz    $9, __ep0_get_cpu_info
-+      sub     $8, $9, 0x1
-+      beqz    $8, __ep0_set_data_address
-+      sub     $8, $9, 0x2
-+      beqz    $8, __ep0_set_data_length
-+      sub     $8, $9, 0x3
-+      beqz    $8, __ep0_flush_caches
-+      sub     $8, $9, 0x4
-+      beqz    $8, __ep0_prog_start1
-+      sub     $8, $9, 0x5
-+      beqz    $8, __ep0_prog_start2
-+      nop
-+      b       _ep0_idle_state_fini    /* invalid request */
-+      nop
-+
-+__ep0_get_cpu_info:
-+      load_addr $20, cpu_info_data    /* data pointer to transfer */
-+      li      $21, 8                  /* bytes left to transfer */
-+      li      $22, 1                  /* set EP0 to TX state */
-+      li      $23, 0                  /* NoData = 0 */
-+
-+      b       _ep0_idle_state_fini
-+      nop
-+
-+__ep0_set_data_address:
-+      li      $9, 0xffff0000
-+      and     $9, $25, $9
-+      andi    $8, $26, 0xffff
-+      or      $20, $9, $8             /* data address of next transfer */
-+
-+      b       _ep0_idle_state_fini
-+      nop
-+
-+__ep0_set_data_length:
-+      li      $9, 0xffff0000
-+      and     $9, $25, $9
-+      andi    $8, $26, 0xffff
-+      or      $21, $9, $8             /* data length of next transfer */
-+
-+      li      $9, 0x48                /* SVDOUTPKTRDY and DATAEND */
-+      sb      $9, 0x12($27)           /* CSR0 */
-+
-+      /* We must write packet to FIFO before EP1-IN interrupt here. */
-+      b       handle_epin1_intr
-+      nop
-+
-+__ep0_flush_caches:
-+      /* Flush dcache and invalidate icache. */
-+      li      $8, 0x80000000
-+      addi    $9, $8, 0x3fe0          /* total 16KB */
-+
-+1:
-+      cache   0x0, 0($8)              /* Index_Invalidate_I */
-+      cache   0x1, 0($8)              /* Index_Writeback_Inv_D */
-+      bne     $8, $9, 1b
-+      addiu   $8, $8, 32
-+
-+      /* flush write-buffer */
-+      sync
-+
-+      /* Invalidate BTB */
-+      mfc0    $8, $16, 7              /* CP0_CONFIG */
-+      nop
-+      ori     $8, 2
-+      mtc0    $8, $16, 7
-+      nop
-+
-+      b       _ep0_idle_state_fini
-+      nop
-+
-+__ep0_prog_start1:
-+      li      $9, 0x48                /* SVDOUTPKTRDY and DATAEND */
-+      sb      $9, 0x12($27)           /* CSR0 */
-+
-+      li      $9, 0xffff0000
-+      and     $9, $25, $9
-+      andi    $8, $26, 0xffff
-+      or      $20, $9, $8             /* target address */
-+
-+      b       xfer_d2i
-+      li      $19, 0x2000             /* 16KB data length */
-+
-+__ep0_prog_start2:
-+      li      $9, 0x48                /* SVDOUTPKTRDY and DATAEND */
-+      sb      $9, 0x12($27)           /* CSR0 */
-+
-+      li      $9, 0xffff0000
-+      and     $9, $25, $9
-+      andi    $8, $26, 0xffff
-+      or      $20, $9, $8             /* target address */
-+
-+      jalr    $20             /* jump, and place the return address in $31 */
-+      nop
-+
-+__ep0_prog_start2_return:
-+/* User code can return to here after executing itself, by jumping to $31 */
-+      b       usb_boot_return
-+      nop
-+
-+      /* 2.1.2 Standard setup request */
-+_ep0_std_req:
-+      andi    $12, $25, 0xff00        /* check bRequest */
-+      srl     $12, $12, 8
-+      sub     $9, $12, 0x05           /* check USB_REQ_SET_ADDRESS */
-+      bnez    $9, __ep0_req_set_config
-+      nop
-+
-+      /* Handle USB_REQ_SET_ADDRESS */
-+__ep0_req_set_addr:
-+      srl     $9, $25, 16             /* get wValue */
-+      sb      $9, 0x0($27)            /* set FADDR */
-+      li      $23, 1                  /* NoData = 1 */
-+      b       _ep0_idle_state_fini
-+      nop
-+
-+__ep0_req_set_config:
-+      sub     $9, $12, 0x09           /* check USB_REQ_SET_CONFIGURATION */
-+      bnez    $9, __ep0_req_get_desc
-+      nop
-+
-+      /* Handle USB_REQ_SET_CONFIGURATION */
-+      li      $23, 1                  /* NoData = 1 */
-+      b       _ep0_idle_state_fini
-+      nop
-+
-+__ep0_req_get_desc:
-+      sub     $9, $12, 0x06           /* check USB_REQ_GET_DESCRIPTOR */
-+      bnez    $9, _ep0_idle_state_fini
-+      li      $23, 1                  /* NoData = 1 */
-+
-+      /* Handle USB_REQ_GET_DESCRIPTOR */
-+      li      $23, 0                  /* NoData = 0 */
-+
-+      srl     $9, $25, 24             /* wValue >> 8 */
-+      sub     $8, $9, 0x01            /* check USB_DT_DEVICE */
-+      beqz    $8, ___ep0_get_dev_desc
-+      srl     $21, $26, 16            /* get wLength */
-+      sub     $8, $9, 0x02            /* check USB_DT_CONFIG */
-+      beqz    $8, ___ep0_get_conf_desc
-+      sub     $8, $9, 0x03            /* check USB_DT_STRING */
-+      beqz    $8, ___ep0_get_string_desc
-+      sub     $8, $9, 0x06            /* check USB_DT_DEVICE_QUALIFIER */
-+      beqz    $8, ___ep0_get_dev_qualifier
-+      nop
-+      b       _ep0_idle_state_fini
-+      nop
-+
-+___ep0_get_dev_desc:
-+      load_addr       $20, device_desc        /* data pointer */
-+      li      $22, 1                  /* set EP0 to TX state */
-+      sub     $8, $21, 18
-+      blez    $8, _ep0_idle_state_fini /* wLength <= 18 */
-+      nop
-+      li      $21, 18                 /* max length of device_desc */
-+      b       _ep0_idle_state_fini
-+      nop
-+
-+___ep0_get_dev_qualifier:
-+      load_addr       $20, dev_qualifier      /* data pointer */
-+      li      $22, 1                  /* set EP0 to TX state */
-+      sub     $8, $21, 10
-+      blez    $8, _ep0_idle_state_fini /* wLength <= 10 */
-+      nop
-+      li      $21, 10                 /* max length of dev_qualifier */
-+      b       _ep0_idle_state_fini
-+      nop
-+
-+___ep0_get_conf_desc:
-+      load_addr       $20, config_desc_fs     /* data pointer of FS mode */
-+      lbu     $8, 0x01($27)           /* read POWER */
-+      andi    $8, 0x10                /* test HS_MODE */
-+      beqz    $8, ___ep0_get_conf_desc2
-+      nop
-+      load_addr $20, config_desc_hs   /* data pointer of HS mode */
-+
-+___ep0_get_conf_desc2:
-+      li      $22, 1                  /* set EP0 to TX state */
-+      sub     $8, $21, 32
-+      blez    $8, _ep0_idle_state_fini /* wLength <= 32 */
-+      nop
-+      li      $21, 32                 /* max length of config_desc */
-+      b       _ep0_idle_state_fini
-+      nop
-+
-+___ep0_get_string_desc:
-+      li      $22, 1                  /* set EP0 to TX state */
-+
-+      srl     $9, $25, 16             /* wValue & 0xff */
-+      andi    $9, 0xff
-+
-+      sub     $8, $9, 1
-+      beqz    $8, ___ep0_get_string_manufacture
-+      sub     $8, $9, 2
-+      beqz    $8, ___ep0_get_string_product
-+      nop
-+
-+___ep0_get_string_lang_ids:
-+      load_addr       $20, string_lang_ids    /* data pointer */
-+      b       _ep0_idle_state_fini
-+      li      $21, 4                  /* data length */
-+
-+___ep0_get_string_manufacture:
-+      load_addr       $20, string_manufacture /* data pointer */
-+      b       _ep0_idle_state_fini
-+      li      $21, 16                 /* data length */
-+
-+___ep0_get_string_product:
-+      load_addr       $20, string_product     /* data pointer */
-+      b       _ep0_idle_state_fini
-+      li      $21, 46                 /* data length */
-+
-+_ep0_idle_state_fini:
-+      li      $9, 0x40                /* SVDOUTPKTRDY */
-+      beqz    $23, _ep0_idle_state_fini2
-+      nop
-+      ori     $9, $9, 0x08            /* DATAEND */
-+_ep0_idle_state_fini2:
-+      sb      $9, 0x12($27)           /* CSR0 */
-+      beqz    $22, check_intr_ep1in
-+      nop
-+
-+      /* 2.2 Handle EP0 TX state interrupt */
-+ep0_tx_state:
-+      sub     $9, $22, 1
-+      bnez    $9, check_intr_ep1in
-+      nop
-+
-+      sub     $9, $21, 64             /* max packetsize */
-+      blez    $9, _ep0_tx_state2      /* data count <= 64 */
-+      ori     $19, $21, 0
-+      li      $19, 64
-+
-+_ep0_tx_state2:
-+      beqz    $19, _ep0_tx_state3     /* send ZLP */
-+      ori     $18, $19, 0             /* record bytes to be transferred */
-+      sub     $21, $21, $19           /* decrement data count */
-+
-+_ep0_fifo_write_loop:
-+      lbu     $9, 0($20)              /* read data */
-+      sb      $9, 0x20($27)           /* load FIFO */
-+      sub     $19, $19, 1             /* decrement counter */
-+      bnez    $19, _ep0_fifo_write_loop
-+      addi    $20, $20, 1             /* increment data pointer */
-+
-+      sub     $9, $18, 64             /* max packetsize */
-+      beqz    $9, _ep0_tx_state4
-+      nop
-+
-+_ep0_tx_state3:
-+      /* transferred bytes < max packetsize */
-+      li      $9, 0x0a                /* set INPKTRDY and DATAEND */
-+      sb      $9, 0x12($27)           /* CSR0 */
-+      li      $22, 0                  /* set EP0 to IDLE state */
-+      b       check_intr_ep1in
-+      nop
-+
-+_ep0_tx_state4:
-+      /* transferred bytes == max packetsize */
-+      li      $9, 0x02                /* set INPKTRDY */
-+      sb      $9, 0x12($27)           /* CSR0 */
-+      b       check_intr_ep1in
-+      nop
-+
-+      /* 3. Check and handle EP1 BULK-IN interrupt */
-+check_intr_ep1in:
-+      andi    $9, $10, 0x2            /* check EP1 IN interrupt */
-+      beqz    $9, check_intr_ep1out
-+      nop
-+
-+handle_epin1_intr:
-+      li      $9, 1
-+      sb      $9, 0x0e($27)           /* set INDEX 1 */
-+      lbu     $9, 0x12($27)           /* read INCSR */
-+
-+      andi    $8, $9, 0x2             /* check INCSR_FFNOTEMPT */
-+      bnez    $8, _epin1_tx_state4
-+      nop
-+
-+_epin1_write_fifo:
-+      lhu     $9, 0x10($27)           /* get INMAXP */
-+      sub     $8, $21, $9
-+      blez    $8, _epin1_tx_state1    /* bytes left <= INMAXP */
-+      ori     $19, $21, 0
-+      ori     $19, $9, 0
-+
-+_epin1_tx_state1:
-+      beqz    $19, _epin1_tx_state4   /* No data */
-+      nop
-+
-+      sub     $21, $21, $19           /* decrement data count */
-+
-+      srl     $5, $19, 2              /* # of word */
-+      andi    $6, $19, 0x3            /* # of byte */
-+      beqz    $5, _epin1_tx_state2
-+      nop
-+
-+_epin1_fifo_write_word:
-+      lw      $9, 0($20)              /* read data from source address */
-+      sw      $9, 0x24($27)           /* write FIFO */
-+      sub     $5, $5, 1               /* decrement counter */
-+      bnez    $5, _epin1_fifo_write_word
-+      addiu   $20, $20, 4             /* increment dest address */
-+
-+_epin1_tx_state2:
-+      beqz    $6, _epin1_tx_state3
-+      nop
-+
-+_epin1_fifo_write_byte:
-+      lbu     $9, 0($20)              /* read data from source address */
-+      sb      $9, 0x24($27)           /* write FIFO */
-+      sub     $6, $6, 1               /* decrement counter */
-+      bnez    $6, _epin1_fifo_write_byte
-+      addiu   $20, $20, 1             /* increment dest address */
-+
-+_epin1_tx_state3:
-+      li      $9, 0x1
-+      sb      $9, 0x12($27)           /* INCSR, set INPKTRDY */
-+
-+_epin1_tx_state4:
-+      /* 4. Check and handle EP1 BULK-OUT interrupt */
-+check_intr_ep1out:
-+      lhu     $9, 0x04($27)           /* read INTROUT */
-+      andi    $9, 0x2
-+      beqz    $9, check_status_next
-+      nop
-+
-+handle_epout1_intr:
-+      li      $9, 1
-+      sb      $9, 0x0e($27)           /* set INDEX 1 */
-+
-+      lbu     $9, 0x16($27)           /* read OUTCSR */
-+      andi    $9, 0x1                 /* check OUTPKTRDY */
-+      beqz    $9, check_status_next
-+      nop
-+
-+_epout1_read_fifo:
-+      lhu     $19, 0x18($27)          /* read OUTCOUNT */
-+      srl     $5, $19, 2              /* # of word */
-+      andi    $6, $19, 0x3            /* # of byte */
-+      beqz    $5, _epout1_rx_state1
-+      nop
-+
-+_epout1_fifo_read_word:
-+      lw      $9, 0x24($27)           /* read FIFO */
-+      sw      $9, 0($20)              /* store to dest address */
-+      sub     $5, $5, 1               /* decrement counter */
-+      bnez    $5, _epout1_fifo_read_word
-+      addiu   $20, $20, 4             /* increment dest address */
-+
-+_epout1_rx_state1:
-+      beqz    $6, _epout1_rx_state2
-+      nop
-+
-+_epout1_fifo_read_byte:
-+      lbu     $9, 0x24($27)           /* read FIFO */
-+      sb      $9, 0($20)              /* store to dest address */
-+      sub     $6, $6, 1               /* decrement counter */
-+      bnez    $6, _epout1_fifo_read_byte
-+      addiu   $20, $20, 1             /* increment dest address */
-+
-+_epout1_rx_state2:
-+      sb      $0, 0x16($27)           /* clear OUTPKTRDY */
-+
-+check_status_next:
-+      b       usb_command_loop
-+      nop
-+
-+/* Device/Configuration/Interface/Endpoint/String Descriptors */
-+
-+      .align  2
-+device_desc:
-+      .byte   0x12            /* bLength */
-+      .byte   0x01            /* bDescriptorType */
-+      .byte   0x00            /* bcdUSB */
-+      .byte   0x02            /* bcdUSB */
-+      .byte   0x00            /* bDeviceClass */
-+      .byte   0x00            /* bDeviceSubClass */
-+      .byte   0x00            /* bDeviceProtocol */
-+      .byte   0x40            /* bMaxPacketSize0 */
-+      .byte   0x1a            /* idVendor */
-+      .byte   0x60            /* idVendor */
-+      .byte   0x40            /* idProduct */
-+      .byte   0x47            /* idProduct */
-+      .byte   0x00            /* bcdDevice */
-+      .byte   0x01            /* bcdDevice */
-+      .byte   0x01            /* iManufacturer */
-+      .byte   0x02            /* iProduct */
-+      .byte   0x00            /* iSerialNumber */
-+      .byte   0x01            /* bNumConfigurations */
-+
-+      .align  2
-+dev_qualifier:
-+      .byte   0x0a            /* bLength */
-+      .byte   0x06            /* bDescriptorType */
-+      .byte   0x00            /* bcdUSB */
-+      .byte   0x02            /* bcdUSB */
-+      .byte   0x00            /* bDeviceClass */
-+      .byte   0x00            /* bDeviceSubClass */
-+      .byte   0x00            /* bDeviceProtocol */
-+      .byte   0x40            /* bMaxPacketSize0 */
-+      .byte   0x01            /* bNumConfigurations */
-+      .byte   0x00            /* bRESERVED */
-+
-+      .align  2
-+config_desc_hs:
-+      .byte   0x09            /* bLength */
-+      .byte   0x02            /* bDescriptorType */
-+      .byte   0x20            /* wTotalLength */
-+      .byte   0x00            /* wTotalLength */
-+      .byte   0x01            /* bNumInterfaces */
-+      .byte   0x01            /* bConfigurationValue */
-+      .byte   0x00            /* iConfiguration */
-+      .byte   0xc0            /* bmAttributes */
-+      .byte   0x01            /* MaxPower */
-+intf_desc_hs:
-+      .byte   0x09            /* bLength */
-+      .byte   0x04            /* bDescriptorType */
-+      .byte   0x00            /* bInterfaceNumber */
-+      .byte   0x00            /* bAlternateSetting */
-+      .byte   0x02            /* bNumEndpoints */
-+      .byte   0xff            /* bInterfaceClass */
-+      .byte   0x00            /* bInterfaceSubClass */
-+      .byte   0x50            /* bInterfaceProtocol */
-+      .byte   0x00            /* iInterface */
-+ep1_desc_hs:
-+      .byte   0x07            /* bLength */
-+      .byte   0x05            /* bDescriptorType */
-+      .byte   0x01            /* bEndpointAddress */
-+      .byte   0x02            /* bmAttributes */
-+      .byte   0x00            /* wMaxPacketSize */
-+      .byte   0x02            /* wMaxPacketSize */
-+      .byte   0x00            /* bInterval */
-+ep2_desc_hs:
-+      .byte   0x07            /* bLength */
-+      .byte   0x05            /* bDescriptorType */
-+      .byte   0x81            /* bEndpointAddress */
-+      .byte   0x02            /* bmAttributes */
-+      .byte   0x00            /* wMaxPacketSize */
-+      .byte   0x02            /* wMaxPacketSize */
-+      .byte   0x00            /* bInterval */
-+
-+      .align  2
-+config_desc_fs:
-+      .byte   0x09            /* bLength */
-+      .byte   0x02            /* bDescriptorType */
-+      .byte   0x20            /* wTotalLength */
-+      .byte   0x00            /* wTotalLength */
-+      .byte   0x01            /* bNumInterfaces */
-+      .byte   0x01            /* bConfigurationValue */
-+      .byte   0x00            /* iConfiguration */
-+      .byte   0xc0            /* bmAttributes */
-+      .byte   0x01            /* MaxPower */
-+intf_desc_fs:
-+      .byte   0x09            /* bLength */
-+      .byte   0x04            /* bDescriptorType */
-+      .byte   0x00            /* bInterfaceNumber */
-+      .byte   0x00            /* bAlternateSetting */
-+      .byte   0x02            /* bNumEndpoints */
-+      .byte   0xff            /* bInterfaceClass */
-+      .byte   0x00            /* bInterfaceSubClass */
-+      .byte   0x50            /* bInterfaceProtocol */
-+      .byte   0x00            /* iInterface */
-+ep1_desc_fs:
-+      .byte   0x07            /* bLength */
-+      .byte   0x05            /* bDescriptorType */
-+      .byte   0x01            /* bEndpointAddress */
-+      .byte   0x02            /* bmAttributes */
-+      .byte   0x40            /* wMaxPacketSize */
-+      .byte   0x00            /* wMaxPacketSize */
-+      .byte   0x00            /* bInterval */
-+ep2_desc_fs:
-+      .byte   0x07            /* bLength */
-+      .byte   0x05            /* bDescriptorType */
-+      .byte   0x81            /* bEndpointAddress */
-+      .byte   0x02            /* bmAttributes */
-+      .byte   0x40            /* wMaxPacketSize */
-+      .byte   0x00            /* wMaxPacketSize */
-+      .byte   0x00            /* bInterval */
-+
-+      .align  2
-+string_lang_ids:
-+      .byte   0x04
-+      .byte   0x03
-+      .byte   0x09
-+      .byte   0x04
-+
-+      .align  2
-+string_manufacture:
-+      .byte   0x10
-+      .byte   0x03
-+      .byte   0x49
-+      .byte   0x00
-+      .byte   0x6e
-+      .byte   0x00
-+      .byte   0x67
-+      .byte   0x00
-+      .byte   0x65
-+      .byte   0x00
-+      .byte   0x6e
-+      .byte   0x00
-+      .byte   0x69
-+      .byte   0x00
-+      .byte   0x63
-+      .byte   0x00
-+
-+      .align  2
-+string_product:
-+      .byte   0x2e
-+      .byte   0x03
-+      .byte   0x4a
-+      .byte   0x00
-+      .byte   0x5a
-+      .byte   0x00
-+      .byte   0x34
-+      .byte   0x00
-+      .byte   0x37
-+      .byte   0x00
-+      .byte   0x34
-+      .byte   0x00
-+      .byte   0x30
-+      .byte   0x00
-+      .byte   0x20
-+      .byte   0x00
-+      .byte   0x55
-+      .byte   0x00
-+      .byte   0x53
-+      .byte   0x00
-+      .byte   0x42
-+      .byte   0x00
-+      .byte   0x20
-+      .byte   0x00
-+      .byte   0x42
-+      .byte   0x00
-+      .byte   0x6f
-+      .byte   0x00
-+      .byte   0x6f
-+      .byte   0x00
-+      .byte   0x74
-+      .byte   0x00
-+      .byte   0x20
-+      .byte   0x00
-+      .byte   0x44
-+      .byte   0x00
-+      .byte   0x65
-+      .byte   0x00
-+      .byte   0x76
-+      .byte   0x00
-+      .byte   0x69
-+      .byte   0x00
-+      .byte   0x63
-+      .byte   0x00
-+      .byte   0x65
-+      .byte   0x00
-+
-+      .align  2
-+cpu_info_data:
-+      .byte   0x4a
-+      .byte   0x5a
-+      .byte   0x34
-+      .byte   0x37
-+      .byte   0x34
-+      .byte   0x30
-+      .byte   0x56
-+      .byte   0x31
-+usbboot_end:
-+
-+    .set reorder
--- 
-1.7.9.5
-
diff --git a/package/boot/uboot-xburst/patches/0003-add-mmc-support.patch b/package/boot/uboot-xburst/patches/0003-add-mmc-support.patch
deleted file mode 100644 (file)
index e9baa7c..0000000
+++ /dev/null
@@ -1,1664 +0,0 @@
-From bd36739e77669e8df45c38f6acfe2cea511534d9 Mon Sep 17 00:00:00 2001
-From: Xiangfu <xiangfu@openmobilefree.net>
-Date: Wed, 10 Oct 2012 18:19:41 +0800
-Subject: [PATCH 3/6] add mmc support
-
----
- arch/mips/include/asm/jz4740.h |  166 ++++++
- board/qi/qi_lb60/qi_lb60.c     |    9 +-
- drivers/mmc/Makefile           |    1 +
- drivers/mmc/jz_mmc.c           | 1179 ++++++++++++++++++++++++++++++++++++++++
- drivers/mmc/jz_mmc.h           |  176 ++++++
- include/configs/qi_lb60.h      |    9 +
- include/mmc.h                  |   40 ++
- 7 files changed, 1578 insertions(+), 2 deletions(-)
- create mode 100644 drivers/mmc/jz_mmc.c
- create mode 100644 drivers/mmc/jz_mmc.h
-
-diff --git a/arch/mips/include/asm/jz4740.h b/arch/mips/include/asm/jz4740.h
-index 7a7cfff..68287fb 100644
---- a/arch/mips/include/asm/jz4740.h
-+++ b/arch/mips/include/asm/jz4740.h
-@@ -1146,5 +1146,171 @@ extern void sdram_init(void);
- extern void calc_clocks(void);
- extern void rtc_init(void);
-+/*************************************************************************
-+ * MSC
-+ *************************************************************************/
-+#define REG8(addr)    *((volatile u8 *)(addr))
-+#define REG16(addr)   *((volatile u16 *)(addr))
-+#define REG32(addr)   *((volatile u32 *)(addr))
-+
-+#define       CPM_BASE        0xB0000000
-+#define CPM_CPCCR     (CPM_BASE+0x00)
-+#define CPM_MSCCDR    (CPM_BASE+0x68)
-+#define REG_CPM_MSCCDR        REG32(CPM_MSCCDR)
-+#define REG_CPM_CPCCR REG32(CPM_CPCCR)
-+
-+#define       MSC_BASE        0xB0021000
-+
-+#define       MSC_STRPCL              (MSC_BASE + 0x000)
-+#define       MSC_STAT                (MSC_BASE + 0x004)
-+#define       MSC_CLKRT               (MSC_BASE + 0x008)
-+#define       MSC_CMDAT               (MSC_BASE + 0x00C)
-+#define       MSC_RESTO               (MSC_BASE + 0x010)
-+#define       MSC_RDTO                (MSC_BASE + 0x014)
-+#define       MSC_BLKLEN              (MSC_BASE + 0x018)
-+#define       MSC_NOB                 (MSC_BASE + 0x01C)
-+#define       MSC_SNOB                (MSC_BASE + 0x020)
-+#define       MSC_IMASK               (MSC_BASE + 0x024)
-+#define       MSC_IREG                (MSC_BASE + 0x028)
-+#define       MSC_CMD                 (MSC_BASE + 0x02C)
-+#define       MSC_ARG                 (MSC_BASE + 0x030)
-+#define       MSC_RES                 (MSC_BASE + 0x034)
-+#define       MSC_RXFIFO              (MSC_BASE + 0x038)
-+#define       MSC_TXFIFO              (MSC_BASE + 0x03C)
-+
-+#define       REG_MSC_STRPCL          REG16(MSC_STRPCL)
-+#define       REG_MSC_STAT            REG32(MSC_STAT)
-+#define       REG_MSC_CLKRT           REG16(MSC_CLKRT)
-+#define       REG_MSC_CMDAT           REG32(MSC_CMDAT)
-+#define       REG_MSC_RESTO           REG16(MSC_RESTO)
-+#define       REG_MSC_RDTO            REG16(MSC_RDTO)
-+#define       REG_MSC_BLKLEN          REG16(MSC_BLKLEN)
-+#define       REG_MSC_NOB             REG16(MSC_NOB)
-+#define       REG_MSC_SNOB            REG16(MSC_SNOB)
-+#define       REG_MSC_IMASK           REG16(MSC_IMASK)
-+#define       REG_MSC_IREG            REG16(MSC_IREG)
-+#define       REG_MSC_CMD             REG8(MSC_CMD)
-+#define       REG_MSC_ARG             REG32(MSC_ARG)
-+#define       REG_MSC_RES             REG16(MSC_RES)
-+#define       REG_MSC_RXFIFO          REG32(MSC_RXFIFO)
-+#define       REG_MSC_TXFIFO          REG32(MSC_TXFIFO)
-+
-+/* MSC Clock and Control Register (MSC_STRPCL) */
-+
-+#define MSC_STRPCL_EXIT_MULTIPLE      (1 << 7)
-+#define MSC_STRPCL_EXIT_TRANSFER      (1 << 6)
-+#define MSC_STRPCL_START_READWAIT     (1 << 5)
-+#define MSC_STRPCL_STOP_READWAIT      (1 << 4)
-+#define MSC_STRPCL_RESET              (1 << 3)
-+#define MSC_STRPCL_START_OP           (1 << 2)
-+#define MSC_STRPCL_CLOCK_CONTROL_BIT  0
-+#define MSC_STRPCL_CLOCK_CONTROL_MASK (0x3 << MSC_STRPCL_CLOCK_CONTROL_BIT)
-+  #define MSC_STRPCL_CLOCK_CONTROL_STOP         (0x1 << MSC_STRPCL_CLOCK_CONTROL_BIT) /* Stop MMC/SD clock */
-+  #define MSC_STRPCL_CLOCK_CONTROL_START  (0x2 << MSC_STRPCL_CLOCK_CONTROL_BIT) /* Start MMC/SD clock */
-+
-+/* MSC Status Register (MSC_STAT) */
-+
-+#define MSC_STAT_IS_RESETTING         (1 << 15)
-+#define MSC_STAT_SDIO_INT_ACTIVE      (1 << 14)
-+#define MSC_STAT_PRG_DONE             (1 << 13)
-+#define MSC_STAT_DATA_TRAN_DONE               (1 << 12)
-+#define MSC_STAT_END_CMD_RES          (1 << 11)
-+#define MSC_STAT_DATA_FIFO_AFULL      (1 << 10)
-+#define MSC_STAT_IS_READWAIT          (1 << 9)
-+#define MSC_STAT_CLK_EN                       (1 << 8)
-+#define MSC_STAT_DATA_FIFO_FULL               (1 << 7)
-+#define MSC_STAT_DATA_FIFO_EMPTY      (1 << 6)
-+#define MSC_STAT_CRC_RES_ERR          (1 << 5)
-+#define MSC_STAT_CRC_READ_ERROR               (1 << 4)
-+#define MSC_STAT_CRC_WRITE_ERROR_BIT  2
-+#define MSC_STAT_CRC_WRITE_ERROR_MASK (0x3 << MSC_STAT_CRC_WRITE_ERROR_BIT)
-+  #define MSC_STAT_CRC_WRITE_ERROR_NO         (0 << MSC_STAT_CRC_WRITE_ERROR_BIT) /* No error on transmission of data */
-+  #define MSC_STAT_CRC_WRITE_ERROR            (1 << MSC_STAT_CRC_WRITE_ERROR_BIT) /* Card observed erroneous transmission of data */
-+  #define MSC_STAT_CRC_WRITE_ERROR_NOSTS      (2 << MSC_STAT_CRC_WRITE_ERROR_BIT) /* No CRC status is sent back */
-+#define MSC_STAT_TIME_OUT_RES         (1 << 1)
-+#define MSC_STAT_TIME_OUT_READ                (1 << 0)
-+
-+/* MSC Bus Clock Control Register (MSC_CLKRT) */
-+
-+#define       MSC_CLKRT_CLK_RATE_BIT          0
-+#define       MSC_CLKRT_CLK_RATE_MASK         (0x7 << MSC_CLKRT_CLK_RATE_BIT)
-+  #define MSC_CLKRT_CLK_RATE_DIV_1      (0x0 << MSC_CLKRT_CLK_RATE_BIT) /* CLK_SRC */
-+  #define MSC_CLKRT_CLK_RATE_DIV_2      (0x1 << MSC_CLKRT_CLK_RATE_BIT) /* 1/2 of CLK_SRC */
-+  #define MSC_CLKRT_CLK_RATE_DIV_4      (0x2 << MSC_CLKRT_CLK_RATE_BIT) /* 1/4 of CLK_SRC */
-+  #define MSC_CLKRT_CLK_RATE_DIV_8      (0x3 << MSC_CLKRT_CLK_RATE_BIT) /* 1/8 of CLK_SRC */
-+  #define MSC_CLKRT_CLK_RATE_DIV_16     (0x4 << MSC_CLKRT_CLK_RATE_BIT) /* 1/16 of CLK_SRC */
-+  #define MSC_CLKRT_CLK_RATE_DIV_32     (0x5 << MSC_CLKRT_CLK_RATE_BIT) /* 1/32 of CLK_SRC */
-+  #define MSC_CLKRT_CLK_RATE_DIV_64     (0x6 << MSC_CLKRT_CLK_RATE_BIT) /* 1/64 of CLK_SRC */
-+  #define MSC_CLKRT_CLK_RATE_DIV_128    (0x7 << MSC_CLKRT_CLK_RATE_BIT) /* 1/128 of CLK_SRC */
-+
-+/* MSC Command Sequence Control Register (MSC_CMDAT) */
-+
-+#define       MSC_CMDAT_IO_ABORT      (1 << 11)
-+#define       MSC_CMDAT_BUS_WIDTH_BIT 9
-+#define       MSC_CMDAT_BUS_WIDTH_MASK (0x3 << MSC_CMDAT_BUS_WIDTH_BIT)
-+#define MSC_CMDAT_BUS_WIDTH_1BIT (0x0 << MSC_CMDAT_BUS_WIDTH_BIT)
-+#define MSC_CMDAT_BUS_WIDTH_4BIT (0x2 << MSC_CMDAT_BUS_WIDTH_BIT)
-+#define       MSC_CMDAT_DMA_EN        (1 << 8)
-+#define       MSC_CMDAT_INIT          (1 << 7)
-+#define       MSC_CMDAT_BUSY          (1 << 6)
-+#define       MSC_CMDAT_STREAM_BLOCK  (1 << 5)
-+#define       MSC_CMDAT_WRITE         (1 << 4)
-+#define       MSC_CMDAT_READ          (0 << 4)
-+#define       MSC_CMDAT_DATA_EN       (1 << 3)
-+#define       MSC_CMDAT_RESPONSE_BIT  0
-+#define       MSC_CMDAT_RESPONSE_MASK (0x7 << MSC_CMDAT_RESPONSE_BIT)
-+#define MSC_CMDAT_RESPONSE_NONE       (0x0 << MSC_CMDAT_RESPONSE_BIT)
-+#define MSC_CMDAT_RESPONSE_R1 (0x1 << MSC_CMDAT_RESPONSE_BIT)
-+#define MSC_CMDAT_RESPONSE_R2 (0x2 << MSC_CMDAT_RESPONSE_BIT)
-+#define MSC_CMDAT_RESPONSE_R3 (0x3 << MSC_CMDAT_RESPONSE_BIT)
-+#define MSC_CMDAT_RESPONSE_R4 (0x4 << MSC_CMDAT_RESPONSE_BIT)
-+#define MSC_CMDAT_RESPONSE_R5 (0x5 << MSC_CMDAT_RESPONSE_BIT)
-+#define MSC_CMDAT_RESPONSE_R6 (0x6 << MSC_CMDAT_RESPONSE_BIT)
-+
-+/* MSC Interrupts Mask Register (MSC_IMASK) */
-+#define       MSC_IMASK_SDIO                  (1 << 7)
-+#define       MSC_IMASK_TXFIFO_WR_REQ         (1 << 6)
-+#define       MSC_IMASK_RXFIFO_RD_REQ         (1 << 5)
-+#define       MSC_IMASK_END_CMD_RES           (1 << 2)
-+#define       MSC_IMASK_PRG_DONE              (1 << 1)
-+#define       MSC_IMASK_DATA_TRAN_DONE        (1 << 0)
-+
-+
-+/* MSC Interrupts Status Register (MSC_IREG) */
-+#define       MSC_IREG_SDIO                   (1 << 7)
-+#define       MSC_IREG_TXFIFO_WR_REQ          (1 << 6)
-+#define       MSC_IREG_RXFIFO_RD_REQ          (1 << 5)
-+#define       MSC_IREG_END_CMD_RES            (1 << 2)
-+#define       MSC_IREG_PRG_DONE               (1 << 1)
-+#define       MSC_IREG_DATA_TRAN_DONE         (1 << 0)
-+
-+static __inline__ unsigned int __cpm_get_pllout2(void)
-+{
-+      if (REG_CPM_CPCCR & CPM_CPCCR_PCS)
-+              return __cpm_get_pllout();
-+      else
-+              return __cpm_get_pllout()/2;
-+}
-+
-+static inline void __cpm_select_msc_clk(int sd)
-+{
-+      unsigned int pllout2 = __cpm_get_pllout2();
-+      unsigned int div = 0;
-+
-+      if (sd) {
-+              div = pllout2 / 24000000;
-+      }
-+      else {
-+              div = pllout2 / 16000000;
-+      }
-+
-+      REG_CPM_MSCCDR = div - 1;
-+}
-+#define __msc_reset()                                                 \
-+do {                                                          \
-+      REG_MSC_STRPCL = MSC_STRPCL_RESET;                      \
-+      while (REG_MSC_STAT & MSC_STAT_IS_RESETTING);           \
-+} while (0)
-+
- #endif        /* !__ASSEMBLY__ */
- #endif        /* __JZ4740_H__ */
-diff --git a/board/qi/qi_lb60/qi_lb60.c b/board/qi/qi_lb60/qi_lb60.c
-index 3bd4e2f..a2ba648 100644
---- a/board/qi/qi_lb60/qi_lb60.c
-+++ b/board/qi/qi_lb60/qi_lb60.c
-@@ -40,8 +40,13 @@ static void gpio_init(void)
-               __gpio_clear_pin(GPIO_KEYOUT_BASE + i);
-       }
--      __gpio_as_input(GPIO_KEYIN_8);
--      __gpio_enable_pull(GPIO_KEYIN_8);
-+      if (__gpio_get_pin(GPIO_KEYIN_BASE + 2) == 0){
-+              printf("[S] pressed, enable UART0\n");
-+              __gpio_as_uart0();
-+      } else {
-+              __gpio_as_input(GPIO_KEYIN_8);
-+              __gpio_enable_pull(GPIO_KEYIN_8);
-+      }
-       /* enable the TP4, TP5 as UART0 */
-       __gpio_jtag_to_uart0();
-diff --git a/drivers/mmc/Makefile b/drivers/mmc/Makefile
-index 565ba6a..3c717b1 100644
---- a/drivers/mmc/Makefile
-+++ b/drivers/mmc/Makefile
-@@ -47,6 +47,7 @@ COBJS-$(CONFIG_SDHCI) += sdhci.o
- COBJS-$(CONFIG_S5P_SDHCI) += s5p_sdhci.o
- COBJS-$(CONFIG_SH_MMCIF) += sh_mmcif.o
- COBJS-$(CONFIG_TEGRA_MMC) += tegra_mmc.o
-+COBJS-$(CONFIG_JZ4740_MMC) += jz_mmc.o
- COBJS := $(COBJS-y)
- SRCS  := $(COBJS:.o=.c)
-diff --git a/drivers/mmc/jz_mmc.c b/drivers/mmc/jz_mmc.c
-new file mode 100644
-index 0000000..642cecc
---- /dev/null
-+++ b/drivers/mmc/jz_mmc.c
-@@ -0,0 +1,1179 @@
-+/*
-+ * (C) Copyright 2003
-+ * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
-+ *
-+ * See file CREDITS for list of people who contributed to this
-+ * project.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <config.h>
-+#include <common.h>
-+#include <part.h>
-+#include <mmc.h>
-+
-+#include <asm/io.h>
-+#include <asm/jz4740.h>
-+#include "jz_mmc.h"
-+
-+static int sd2_0 = 0;
-+static int mmc_ready = 0;
-+static int use_4bit;          /* Use 4-bit data bus */
-+/*
-+ *  MMC Events
-+ */
-+#define MMC_EVENT_NONE                0x00    /* No events */
-+#define MMC_EVENT_RX_DATA_DONE        0x01    /* Rx data done */
-+#define MMC_EVENT_TX_DATA_DONE        0x02    /* Tx data done */
-+#define MMC_EVENT_PROG_DONE   0x04    /* Programming is done */
-+
-+
-+#define MMC_IRQ_MASK()                                \
-+do {                                          \
-+              REG_MSC_IMASK = 0xffff;                 \
-+              REG_MSC_IREG = 0xffff;                  \
-+} while (0)
-+
-+/*
-+ * GPIO definition
-+ */
-+#if defined(CONFIG_SAKC)
-+
-+#define __msc_init_io()                               \
-+do {                                          \
-+      __gpio_as_input(GPIO_SD_CD_N);          \
-+} while (0)
-+
-+#else
-+#define __msc_init_io()                               \
-+do {                                          \
-+      __gpio_as_output(GPIO_SD_VCC_EN_N);     \
-+      __gpio_as_input(GPIO_SD_CD_N);          \
-+} while (0)
-+
-+#define __msc_enable_power()                  \
-+do {                                          \
-+      __gpio_clear_pin(GPIO_SD_VCC_EN_N);     \
-+} while (0)
-+
-+#define __msc_disable_power()                 \
-+do {                                          \
-+      __gpio_set_pin(GPIO_SD_VCC_EN_N);       \
-+} while (0)
-+      
-+#endif /* CONFIG_SAKE */
-+
-+#define __msc_card_detected()                 \
-+({                                            \
-+      int detected = 1;                       \
-+      __gpio_as_input(GPIO_SD_CD_N);          \
-+      __gpio_disable_pull(GPIO_SD_CD_N);      \
-+      if (!__gpio_get_pin(GPIO_SD_CD_N))      \
-+              detected = 0;                   \
-+      detected;                               \
-+})
-+
-+/*
-+ * Local functions
-+ */
-+
-+extern int
-+fat_register_device(block_dev_desc_t *dev_desc, int part_no);
-+
-+static block_dev_desc_t mmc_dev;
-+
-+block_dev_desc_t * mmc_get_dev(int dev)
-+{
-+      return ((block_dev_desc_t *)&mmc_dev);
-+}
-+
-+/* Stop the MMC clock and wait while it happens */
-+static inline int jz_mmc_stop_clock(void)
-+{
-+      int timeout = 1000;
-+
-+      REG_MSC_STRPCL = MSC_STRPCL_CLOCK_CONTROL_STOP;
-+
-+      while (timeout && (REG_MSC_STAT & MSC_STAT_CLK_EN)) {
-+              timeout--;
-+              if (timeout == 0)
-+                      return MMC_ERROR_TIMEOUT;
-+              udelay(1);
-+      }
-+        return MMC_NO_ERROR;
-+}
-+
-+/* Start the MMC clock and operation */
-+static inline int jz_mmc_start_clock(void)
-+{
-+      REG_MSC_STRPCL = MSC_STRPCL_CLOCK_CONTROL_START | MSC_STRPCL_START_OP;
-+      return MMC_NO_ERROR;
-+}
-+
-+static inline u32 jz_mmc_calc_clkrt(int is_sd, u32 rate)
-+{
-+      u32 clkrt = 0;
-+      u32 clk_src = is_sd ? 24000000 : 16000000;
-+
-+      while (rate < clk_src) {
-+                      clkrt ++;
-+                      clk_src >>= 1;
-+      }
-+
-+      return clkrt;
-+}
-+
-+/* Set the MMC clock frequency */
-+void jz_mmc_set_clock(int sd, u32 rate)
-+{
-+      jz_mmc_stop_clock();
-+
-+      /* Select clock source of MSC */
-+      __cpm_select_msc_clk(sd);
-+
-+      /* Set clock dividor of MSC */
-+      REG_MSC_CLKRT = jz_mmc_calc_clkrt(sd, rate);
-+}
-+
-+static int jz_mmc_check_status(struct mmc_request *request)
-+{
-+      u32 status = REG_MSC_STAT;
-+
-+      /* Checking for response or data timeout */
-+      if (status & (MSC_STAT_TIME_OUT_RES | MSC_STAT_TIME_OUT_READ)) {
-+              printf("MMC/SD timeout, MMC_STAT 0x%x CMD %d\n", status, request->cmd);
-+              return MMC_ERROR_TIMEOUT;
-+      }
-+
-+      /* Checking for CRC error */
-+      if (status & (MSC_STAT_CRC_READ_ERROR | MSC_STAT_CRC_WRITE_ERROR | MSC_STAT_CRC_RES_ERR)) {
-+              printf("MMC/CD CRC error, MMC_STAT 0x%x\n", status);
-+              return MMC_ERROR_CRC;
-+      }
-+
-+      return MMC_NO_ERROR;
-+}
-+
-+/* Obtain response to the command and store it to response buffer */
-+static void jz_mmc_get_response(struct mmc_request *request)
-+{
-+      int i;
-+      u8 *buf;
-+      u32 data;
-+
-+      debug("fetch response for request %d, cmd %d\n", 
-+            request->rtype, request->cmd);
-+
-+      buf = request->response;
-+      request->result = MMC_NO_ERROR;
-+
-+      switch (request->rtype) {
-+      case RESPONSE_R1: case RESPONSE_R1B: case RESPONSE_R6:
-+      case RESPONSE_R3: case RESPONSE_R4: case RESPONSE_R5:
-+      {
-+              data = REG_MSC_RES;
-+              buf[0] = (data >> 8) & 0xff;
-+              buf[1] = data & 0xff;
-+              data = REG_MSC_RES;
-+              buf[2] = (data >> 8) & 0xff;
-+              buf[3] = data & 0xff;
-+              data = REG_MSC_RES;
-+              buf[4] = data & 0xff;
-+
-+              debug("request %d, response [%02x %02x %02x %02x %02x]\n",
-+                    request->rtype, buf[0], buf[1], buf[2], buf[3], buf[4]);
-+              break;
-+      }
-+      case RESPONSE_R2_CID: case RESPONSE_R2_CSD:
-+      {
-+              for (i = 0; i < 16; i += 2) {
-+                      data = REG_MSC_RES;
-+                      buf[i] = (data >> 8) & 0xff;
-+                      buf[i+1] = data & 0xff;
-+              }
-+              debug("request %d, response [", request->rtype);
-+#if CONFIG_MMC_DEBUG_VERBOSE > 2
-+              if (g_mmc_debug >= 3) {
-+                      int n;
-+                      for (n = 0; n < 17; n++)
-+                              printk("%02x ", buf[n]);
-+                      printk("]\n");
-+              }
-+#endif
-+              break;
-+      }
-+      case RESPONSE_NONE:
-+              debug("No response\n");
-+              break;
-+
-+      default:
-+              debug("unhandled response type for request %d\n", request->rtype);
-+              break;
-+      }
-+}
-+
-+static int jz_mmc_receive_data(struct mmc_request *req)
-+{
-+      u32  stat, timeout, data, cnt;
-+      u8 *buf = req->buffer;
-+      u32 wblocklen = (u32)(req->block_len + 3) >> 2; /* length in word */
-+
-+      timeout = 0x3ffffff;
-+
-+      while (timeout) {
-+              timeout--;
-+              stat = REG_MSC_STAT;
-+
-+              if (stat & MSC_STAT_TIME_OUT_READ)
-+                      return MMC_ERROR_TIMEOUT;
-+              else if (stat & MSC_STAT_CRC_READ_ERROR)
-+                      return MMC_ERROR_CRC;
-+              else if (!(stat & MSC_STAT_DATA_FIFO_EMPTY)
-+                       || (stat & MSC_STAT_DATA_FIFO_AFULL)) {
-+                      /* Ready to read data */
-+                      break;
-+              }
-+              udelay(1);
-+      }
-+      if (!timeout)
-+              return MMC_ERROR_TIMEOUT;
-+
-+      /* Read data from RXFIFO. It could be FULL or PARTIAL FULL */
-+      cnt = wblocklen;
-+      while (cnt) {
-+              data = REG_MSC_RXFIFO;
-+              {
-+                      *buf++ = (u8)(data >> 0);
-+                      *buf++ = (u8)(data >> 8);
-+                      *buf++ = (u8)(data >> 16);
-+                      *buf++ = (u8)(data >> 24);
-+              }
-+              cnt --;
-+              while (cnt && (REG_MSC_STAT & MSC_STAT_DATA_FIFO_EMPTY))
-+                      ;
-+      }
-+      return MMC_NO_ERROR;
-+}
-+
-+static int jz_mmc_transmit_data(struct mmc_request *req)
-+{
-+#if 0
-+      u32 nob = req->nob;
-+      u32 wblocklen = (u32)(req->block_len + 3) >> 2; /* length in word */
-+      u8 *buf = req->buffer;
-+      u32 *wbuf = (u32 *)buf;
-+      u32 waligned = (((u32)buf & 0x3) == 0); /* word aligned ? */
-+      u32 stat, timeout, data, cnt;
-+
-+      for (nob; nob >= 1; nob--) {
-+              timeout = 0x3FFFFFF;
-+
-+              while (timeout) {
-+                      timeout--;
-+                      stat = REG_MSC_STAT;
-+
-+                      if (stat & (MSC_STAT_CRC_WRITE_ERROR | MSC_STAT_CRC_WRITE_ERROR_NOSTS))
-+                              return MMC_ERROR_CRC;
-+                      else if (!(stat & MSC_STAT_DATA_FIFO_FULL)) {
-+                              /* Ready to write data */
-+                              break;
-+                      }
-+
-+                      udelay(1);
-+              }
-+
-+              if (!timeout)
-+                      return MMC_ERROR_TIMEOUT;
-+
-+              /* Write data to TXFIFO */
-+              cnt = wblocklen;
-+              while (cnt) {
-+                      while (REG_MSC_STAT & MSC_STAT_DATA_FIFO_FULL)
-+                              ;
-+
-+                      if (waligned) {
-+                              REG_MSC_TXFIFO = *wbuf++;
-+                      }
-+                      else {
-+                              data = *buf++ | (*buf++ << 8) | (*buf++ << 16) | (*buf++ << 24);
-+                              REG_MSC_TXFIFO = data;
-+                      }
-+
-+                      cnt--;
-+              }
-+      }
-+#endif
-+      return MMC_NO_ERROR;
-+}
-+
-+
-+/*
-+ * Name:        int jz_mmc_exec_cmd()
-+ * Function:      send command to the card, and get a response
-+ * Input:       struct mmc_request *req       : MMC/SD request
-+ * Output:      0:  right             >0:  error code
-+ */
-+int jz_mmc_exec_cmd(struct mmc_request *request)
-+{
-+      u32 cmdat = 0, events = 0;
-+      int retval, timeout = 0x3fffff;
-+
-+      /* Indicate we have no result yet */
-+      request->result = MMC_NO_RESPONSE;
-+      if (request->cmd == MMC_CIM_RESET) {
-+              /* On reset, 1-bit bus width */
-+              use_4bit = 0;
-+
-+              /* Reset MMC/SD controller */
-+              __msc_reset();
-+
-+              /* On reset, drop MMC clock down */
-+              jz_mmc_set_clock(0, MMC_CLOCK_SLOW);
-+
-+              /* On reset, stop MMC clock */
-+              jz_mmc_stop_clock();
-+      }
-+      if (request->cmd == MMC_CMD_SEND_OP_COND) {
-+              debug("Have an MMC card\n");
-+              /* always use 1bit for MMC */
-+              use_4bit = 0;
-+      }
-+      if (request->cmd == SET_BUS_WIDTH) {
-+              if (request->arg == 0x2) {
-+                      printf("Use 4-bit bus width\n");
-+                      use_4bit = 1;
-+              } else {
-+                      printf("Use 1-bit bus width\n");
-+                      use_4bit = 0;
-+              }
-+      }
-+
-+      /* stop clock */
-+      jz_mmc_stop_clock();
-+
-+      /* mask all interrupts */
-+      REG_MSC_IMASK = 0xffff;
-+
-+      /* clear status */
-+      REG_MSC_IREG = 0xffff;
-+
-+      /* use 4-bit bus width when possible */
-+      if (use_4bit)
-+              cmdat |= MSC_CMDAT_BUS_WIDTH_4BIT;
-+
-+        /* Set command type and events */
-+      switch (request->cmd) {
-+      /* MMC core extra command */
-+      case MMC_CIM_RESET:
-+              cmdat |= MSC_CMDAT_INIT; /* Initialization sequence sent prior to command */
-+              break;
-+
-+      /* bc - broadcast - no response */
-+      case MMC_CMD_GO_IDLE_STATE:
-+      case MMC_CMD_SET_DSR:
-+              break;
-+
-+      /* bcr - broadcast with response */
-+      case MMC_CMD_SEND_OP_COND:
-+      case MMC_CMD_ALL_SEND_CID:
-+      case MMC_GO_IRQ_STATE:
-+              break;
-+
-+      /* adtc - addressed with data transfer */
-+      case MMC_READ_DAT_UNTIL_STOP:
-+      case MMC_CMD_READ_SINGLE_BLOCK:
-+      case MMC_CMD_READ_MULTIPLE_BLOCK:
-+      case SD_CMD_APP_SEND_SCR:
-+              cmdat |= MSC_CMDAT_DATA_EN | MSC_CMDAT_READ;
-+              events = MMC_EVENT_RX_DATA_DONE;
-+              break;
-+
-+      case MMC_WRITE_DAT_UNTIL_STOP:
-+      case MMC_CMD_WRITE_SINGLE_BLOCK:
-+      case MMC_CMD_WRITE_MULTIPLE_BLOCK:
-+      case MMC_PROGRAM_CID:
-+      case MMC_PROGRAM_CSD:
-+      case MMC_SEND_WRITE_PROT:
-+      case MMC_GEN_CMD:
-+      case MMC_LOCK_UNLOCK:
-+              cmdat |= MSC_CMDAT_DATA_EN | MSC_CMDAT_WRITE;
-+              events = MMC_EVENT_TX_DATA_DONE | MMC_EVENT_PROG_DONE;
-+
-+              break;
-+
-+      case MMC_CMD_STOP_TRANSMISSION:
-+              events = MMC_EVENT_PROG_DONE;
-+              break;
-+
-+      /* ac - no data transfer */
-+      default:
-+              break;
-+      }
-+
-+      /* Set response type */
-+      switch (request->rtype) {
-+      case RESPONSE_NONE:
-+              break;
-+
-+      case RESPONSE_R1B:
-+              cmdat |= MSC_CMDAT_BUSY;
-+              /*FALLTHRU*/
-+      case RESPONSE_R1:
-+              cmdat |= MSC_CMDAT_RESPONSE_R1;
-+              break;
-+      case RESPONSE_R2_CID:
-+      case RESPONSE_R2_CSD:
-+              cmdat |= MSC_CMDAT_RESPONSE_R2;
-+              break;
-+      case RESPONSE_R3:
-+              cmdat |= MSC_CMDAT_RESPONSE_R3;
-+              break;
-+      case RESPONSE_R4:
-+              cmdat |= MSC_CMDAT_RESPONSE_R4;
-+              break;
-+      case RESPONSE_R5:
-+              cmdat |= MSC_CMDAT_RESPONSE_R5;
-+              break;
-+      case RESPONSE_R6:
-+              cmdat |= MSC_CMDAT_RESPONSE_R6;
-+              break;
-+      default:
-+              break;
-+      }
-+
-+      /* Set command index */
-+      if (request->cmd == MMC_CIM_RESET) {
-+              REG_MSC_CMD = MMC_CMD_GO_IDLE_STATE;
-+      } else {
-+              REG_MSC_CMD = request->cmd;
-+      }
-+
-+        /* Set argument */
-+      REG_MSC_ARG = request->arg;
-+
-+      /* Set block length and nob */
-+      if (request->cmd == SD_CMD_APP_SEND_SCR) { /* get SCR from DataFIFO */
-+              REG_MSC_BLKLEN = 8;
-+              REG_MSC_NOB = 1;
-+      } else {
-+              REG_MSC_BLKLEN = request->block_len;
-+              REG_MSC_NOB = request->nob;
-+      }
-+
-+      /* Set command */
-+      REG_MSC_CMDAT = cmdat;
-+
-+      debug("Send cmd %d cmdat: %x arg: %x resp %d\n", request->cmd,
-+            cmdat, request->arg, request->rtype);
-+
-+        /* Start MMC/SD clock and send command to card */
-+      jz_mmc_start_clock();
-+
-+      /* Wait for command completion */
-+      while (timeout-- && !(REG_MSC_STAT & MSC_STAT_END_CMD_RES))
-+              ;
-+
-+      if (timeout == 0)
-+              return MMC_ERROR_TIMEOUT;
-+
-+      REG_MSC_IREG = MSC_IREG_END_CMD_RES; /* clear flag */
-+
-+      /* Check for status */
-+      retval = jz_mmc_check_status(request);
-+      if (retval) {
-+              return retval;
-+      }
-+
-+      /* Complete command with no response */
-+      if (request->rtype == RESPONSE_NONE) {
-+              return MMC_NO_ERROR;
-+      }
-+
-+      /* Get response */
-+      jz_mmc_get_response(request);
-+
-+      /* Start data operation */
-+      if (events & (MMC_EVENT_RX_DATA_DONE | MMC_EVENT_TX_DATA_DONE)) {
-+              if (events & MMC_EVENT_RX_DATA_DONE) {
-+                      if (request->cmd == SD_CMD_APP_SEND_SCR) {
-+                              /* SD card returns SCR register as data.
-+                                 MMC core expect it in the response buffer,
-+                                 after normal response. */
-+                              request->buffer = (u8 *)((u32)request->response + 5);
-+                      }
-+                      jz_mmc_receive_data(request);
-+              }
-+
-+              if (events & MMC_EVENT_TX_DATA_DONE) {
-+                      jz_mmc_transmit_data(request);
-+              }
-+
-+              /* Wait for Data Done */
-+              while (!(REG_MSC_IREG & MSC_IREG_DATA_TRAN_DONE))
-+                      ;
-+              REG_MSC_IREG = MSC_IREG_DATA_TRAN_DONE; /* clear status */
-+      }
-+
-+      /* Wait for Prog Done event */
-+      if (events & MMC_EVENT_PROG_DONE) {
-+              while (!(REG_MSC_IREG & MSC_IREG_PRG_DONE))
-+                      ;
-+              REG_MSC_IREG = MSC_IREG_PRG_DONE; /* clear status */
-+      }
-+
-+      /* Command completed */
-+
-+      return MMC_NO_ERROR;                     /* return successfully */
-+}
-+
-+int mmc_block_read(u8 *dst, ulong src, ulong len)
-+{
-+
-+      struct mmc_request request;
-+      struct mmc_response_r1 r1;
-+      int retval = 0;
-+
-+      if (len == 0)
-+              goto exit;
-+
-+      mmc_simple_cmd(&request, MMC_CMD_SEND_STATUS, mmcinfo.rca, RESPONSE_R1);
-+      retval = mmc_unpack_r1(&request, &r1, 0);
-+      if (retval && (retval != MMC_ERROR_STATE_MISMATCH))
-+              goto exit;
-+
-+      mmc_simple_cmd(&request, MMC_CMD_SET_BLOCKLEN, len, RESPONSE_R1);
-+      if (retval = mmc_unpack_r1(&request, &r1, 0))
-+              goto exit;
-+
-+      if (!sd2_0)
-+              src *= mmcinfo.block_len;
-+
-+      mmc_send_cmd(&request, MMC_CMD_READ_SINGLE_BLOCK, src, 1, len, RESPONSE_R1, dst);
-+      if (retval = mmc_unpack_r1(&request, &r1, 0))
-+              goto exit;
-+
-+exit:
-+      return retval;
-+}
-+
-+ulong mmc_bread(int dev_num, ulong blkstart, ulong blkcnt, ulong *dst)
-+{
-+      if (!mmc_ready) {
-+              printf("Please initial the MMC first\n");
-+              return -1;
-+      }
-+
-+      int i = 0;
-+      ulong dst_tmp = dst;
-+ 
-+      for (i = 0; i < blkcnt; i++) {
-+              if ((mmc_block_read((uchar *)(dst_tmp), blkstart, mmcinfo.block_len)) < 0)
-+                      return -1;
-+
-+              dst_tmp += mmcinfo.block_len;
-+              blkstart++;
-+      }
-+ 
-+      return i;
-+}
-+
-+int mmc_select_card(void)
-+{
-+      struct mmc_request request;
-+      struct mmc_response_r1 r1;
-+      int retval;
-+
-+      mmc_simple_cmd(&request, MMC_CMD_SELECT_CARD, mmcinfo.rca, RESPONSE_R1B);
-+      retval = mmc_unpack_r1(&request, &r1, 0);
-+      if (retval) {
-+              return retval;
-+      }
-+
-+      if (mmcinfo.sd) {
-+              mmc_simple_cmd(&request, MMC_CMD_APP_CMD,  mmcinfo.rca, RESPONSE_R1);
-+              retval = mmc_unpack_r1(&request,&r1,0);
-+              if (retval) {
-+                      return retval;
-+              }
-+#if defined(MMC_BUS_WIDTH_1BIT)               
-+              mmc_simple_cmd(&request, SET_BUS_WIDTH, 1, RESPONSE_R1);
-+#else
-+              mmc_simple_cmd(&request, SET_BUS_WIDTH, 2, RESPONSE_R1);
-+#endif
-+                retval = mmc_unpack_r1(&request,&r1,0);
-+                if (retval) {
-+                      return retval;
-+              }
-+      }
-+      return 0;
-+}
-+
-+/*
-+ * Configure card
-+ */
-+static void mmc_configure_card(void)
-+{
-+      u32 rate;
-+
-+      /* Get card info */
-+      if (sd2_0)
-+              mmcinfo.block_num = (mmcinfo.csd.c_size + 1) << 10;
-+      else
-+              mmcinfo.block_num = (mmcinfo.csd.c_size + 1) * (1 << (mmcinfo.csd.c_size_mult + 2));
-+
-+      mmcinfo.block_len = 1 << mmcinfo.csd.read_bl_len;
-+
-+      mmc_dev.if_type = IF_TYPE_SD;
-+      mmc_dev.part_type = PART_TYPE_DOS;
-+      mmc_dev.dev = 0;
-+      mmc_dev.lun = 0;
-+      mmc_dev.type = 0;
-+      mmc_dev.blksz = mmcinfo.block_len;
-+      mmc_dev.lba = mmcinfo.block_num;
-+      mmc_dev.removable = 0;
-+
-+      printf("%s Detected: %lu blocks of %lu bytes\n",
-+             sd2_0 == 1 ? "SDHC" : "SD",
-+             mmc_dev.lba,
-+             mmc_dev.blksz);
-+
-+      /* Fix the clock rate */
-+      rate = mmc_tran_speed(mmcinfo.csd.tran_speed);
-+      if (rate < MMC_CLOCK_SLOW)
-+              rate = MMC_CLOCK_SLOW;
-+      if ((mmcinfo.sd == 0) && (rate > MMC_CLOCK_FAST))
-+              rate = MMC_CLOCK_FAST;
-+        if ((mmcinfo.sd) && (rate > SD_CLOCK_FAST))
-+              rate = SD_CLOCK_FAST;
-+
-+      debug("%s: block_len=%d block_num=%d rate=%d\n", 
-+            __func__, mmcinfo.block_len, mmcinfo.block_num, rate);
-+
-+      jz_mmc_set_clock(mmcinfo.sd, rate);
-+}
-+
-+/*
-+ * State machine routines to initialize card(s)
-+ */
-+
-+/*
-+  CIM_SINGLE_CARD_ACQ  (frequency at 400 kHz)
-+  --- Must enter from GO_IDLE_STATE ---
-+  1. SD_SEND_OP_COND (SD Card) [CMD55] + [CMD41]
-+  2. SEND_OP_COND (Full Range) [CMD1]   {optional}
-+  3. SEND_OP_COND (Set Range ) [CMD1]
-+     If busy, delay and repeat step 2
-+  4. ALL_SEND_CID              [CMD2]
-+     If timeout, set an error (no cards found)
-+  5. SET_RELATIVE_ADDR         [CMD3]
-+  6. SEND_CSD                  [CMD9]
-+  7. SET_DSR                   [CMD4]    Only call this if (csd.dsr_imp).
-+  8. Set clock frequency (check available in csd.tran_speed)
-+ */
-+
-+#define MMC_INIT_DOING   0
-+#define MMC_INIT_PASSED  1
-+#define MMC_INIT_FAILED  2
-+
-+static int mmc_init_card_state(struct mmc_request *request)
-+{
-+      struct mmc_response_r1 r1;
-+      struct mmc_response_r3 r3;
-+      int retval;
-+      int ocr = 0x40300000;
-+      int limit_41 = 0;
-+
-+      switch (request->cmd) {
-+      case MMC_CMD_GO_IDLE_STATE: /* No response to parse */
-+              if (mmcinfo.sd)
-+                      mmc_simple_cmd(request, 8, 0x1aa, RESPONSE_R1);
-+              else
-+                      mmc_simple_cmd(request, MMC_CMD_SEND_OP_COND, MMC_OCR_ARG, RESPONSE_R3);
-+              break;
-+
-+      case 8:
-+              retval = mmc_unpack_r1(request,&r1,mmcinfo.state);
-+              mmc_simple_cmd(request, MMC_CMD_APP_CMD,  0, RESPONSE_R1);
-+              break;
-+
-+        case MMC_CMD_APP_CMD:
-+              retval = mmc_unpack_r1(request,&r1,mmcinfo.state);
-+              if (retval & (limit_41 < 100)) {
-+                      debug("%s: unable to MMC_APP_CMD error=%d (%s)\n", 
-+                            __func__, retval, mmc_result_to_string(retval));
-+                      limit_41++;
-+                      mmc_simple_cmd(request, SD_CMD_APP_SEND_OP_COND, ocr, RESPONSE_R3);
-+              } else if (limit_41 < 100) {
-+                      limit_41++;
-+                      mmc_simple_cmd(request, SD_CMD_APP_SEND_OP_COND, ocr, RESPONSE_R3);
-+              } else{
-+                      /* reset the card to idle*/
-+                      mmc_simple_cmd(request, MMC_CMD_GO_IDLE_STATE, 0, RESPONSE_NONE);
-+                      mmcinfo.sd = 0;
-+              }
-+              break;
-+
-+        case SD_CMD_APP_SEND_OP_COND:
-+                retval = mmc_unpack_r3(request, &r3);
-+                if (retval) {
-+                      debug("%s: try MMC card\n", __func__);
-+                      mmc_simple_cmd(request, SD_CMD_APP_SEND_OP_COND, MMC_OCR_ARG, RESPONSE_R3);
-+                      break;
-+              }
-+
-+                debug("%s: read ocr value = 0x%08x\n", __func__, r3.ocr);
-+
-+              if(!(r3.ocr & MMC_CARD_BUSY || ocr == 0)){
-+                      udelay(50000);
-+                      mmc_simple_cmd(request, MMC_CMD_APP_CMD, 0, RESPONSE_R1);
-+              } else {
-+                      mmcinfo.sd = 1; /* SD Card ready */
-+                      mmcinfo.state = CARD_STATE_READY;
-+                      mmc_simple_cmd(request, MMC_CMD_ALL_SEND_CID, 0, RESPONSE_R2_CID);
-+              }
-+              break;
-+
-+      case MMC_CMD_SEND_OP_COND:
-+              retval = mmc_unpack_r3(request, &r3);
-+              if (retval) {
-+                      debug("%s: failed SEND_OP_COND error=%d (%s)\n", 
-+                            __func__, retval, mmc_result_to_string(retval));
-+                      return MMC_INIT_FAILED;
-+              }
-+
-+              debug("%s: read ocr value = 0x%08x\n", __func__, r3.ocr);
-+              if (!(r3.ocr & MMC_CARD_BUSY)) {
-+                      mmc_simple_cmd(request, MMC_CMD_SEND_OP_COND, MMC_OCR_ARG, RESPONSE_R3);
-+              } else {
-+                      mmcinfo.sd = 0; /* MMC Card ready */
-+                      mmcinfo.state = CARD_STATE_READY;
-+                      mmc_simple_cmd(request, MMC_CMD_ALL_SEND_CID, 0, RESPONSE_R2_CID);
-+              }
-+              break;
-+
-+      case MMC_CMD_ALL_SEND_CID: 
-+              retval = mmc_unpack_cid( request, &mmcinfo.cid );
-+              /*FIXME:ignore CRC error for CMD2/CMD9/CMD10 */
-+              if ( retval && (retval != MMC_ERROR_CRC)) {
-+                      debug("mmc_init_card_state: unable to ALL_SEND_CID error=%d (%s)\n", 
-+                            retval, mmc_result_to_string(retval));
-+                      return MMC_INIT_FAILED;
-+              }
-+              mmcinfo.state = CARD_STATE_IDENT;
-+              if(mmcinfo.sd)
-+                      mmc_simple_cmd(request, MMC_CMD_SET_RELATIVE_ADDR, 0, RESPONSE_R6);
-+                else
-+                      mmc_simple_cmd(request, MMC_CMD_SET_RELATIVE_ADDR, ID_TO_RCA(mmcinfo.id) << 16, RESPONSE_R1);
-+              break;
-+
-+        case MMC_CMD_SET_RELATIVE_ADDR:
-+              if (mmcinfo.sd) {
-+                      retval = mmc_unpack_r6(request, &r1, mmcinfo.state, &mmcinfo.rca);
-+                      mmcinfo.rca = mmcinfo.rca << 16; 
-+                      debug("%s: Get RCA from SD: 0x%04x Status: %x\n",
-+                            __func__, mmcinfo.rca, r1.status);
-+                } else {
-+                      retval = mmc_unpack_r1(request,&r1,mmcinfo.state);
-+                      mmcinfo.rca = ID_TO_RCA(mmcinfo.id) << 16;
-+              }
-+              if (retval) {
-+                      debug("%s: unable to SET_RELATIVE_ADDR error=%d (%s)\n", 
-+                            __func__, retval, mmc_result_to_string(retval));
-+                      return MMC_INIT_FAILED;
-+              }
-+
-+              mmcinfo.state = CARD_STATE_STBY;
-+                mmc_simple_cmd(request, MMC_CMD_SEND_CSD, mmcinfo.rca, RESPONSE_R2_CSD);
-+
-+              break;
-+
-+      case MMC_CMD_SEND_CSD:
-+              retval = mmc_unpack_csd(request, &mmcinfo.csd);
-+              mmc_ready = 1;
-+              /*FIXME:ignore CRC error for CMD2/CMD9/CMD10 */
-+              if (retval && (retval != MMC_ERROR_CRC)) {
-+                      debug("%s: unable to SEND_CSD error=%d (%s)\n", 
-+                            __func__, retval, mmc_result_to_string(retval));
-+                      return MMC_INIT_FAILED;
-+              }
-+              if (mmcinfo.csd.dsr_imp) {
-+                      debug("%s: driver doesn't support setting DSR\n", __func__);
-+              }
-+              mmc_configure_card();
-+              return MMC_INIT_PASSED;
-+
-+      default:
-+              debug("%s: error!  Illegal last cmd %d\n", __func__, request->cmd);
-+              return MMC_INIT_FAILED;
-+      }
-+
-+      return MMC_INIT_DOING;
-+}
-+
-+int mmc_init_card(void)
-+{
-+      struct mmc_request request;
-+      int retval;
-+
-+      mmc_simple_cmd(&request, MMC_CIM_RESET, 0, RESPONSE_NONE); /* reset card */
-+      mmc_simple_cmd(&request, MMC_CMD_GO_IDLE_STATE, 0, RESPONSE_NONE);
-+      mmcinfo.sd = 1;  /* assuming a SD card */
-+
-+      while ((retval = mmc_init_card_state(&request)) == MMC_INIT_DOING)
-+              ;
-+
-+      if (retval == MMC_INIT_PASSED)
-+              return MMC_NO_ERROR;
-+      else
-+              return MMC_NO_RESPONSE;
-+}
-+
-+int mmc_legacy_init(int verbose)
-+{
-+      if (!__msc_card_detected())
-+              return 1;
-+
-+      /* Step-1: init GPIO */
-+      __gpio_as_msc();
-+      __msc_init_io();
-+
-+      /* Step-2: turn on power of card */
-+#if !defined(CONFIG_SAKC)
-+      __msc_enable_power();
-+#endif
-+
-+      /* Step-3: Reset MSC Controller. */
-+      __msc_reset();
-+
-+      /* Step-3: mask all IRQs. */
-+      MMC_IRQ_MASK();
-+
-+      /* Step-4: stop MMC/SD clock */
-+      jz_mmc_stop_clock();
-+      mmc_init_card();
-+      mmc_select_card();
-+
-+      mmc_dev.block_read = mmc_bread;
-+      fat_register_device(&mmc_dev,1); /* partitions start counting with 1 */
-+
-+      return 0;
-+}
-+
-+/*
-+ * Debugging functions
-+ */
-+static char * mmc_result_strings[] = {
-+      "NO_RESPONSE",
-+      "NO_ERROR",
-+      "ERROR_OUT_OF_RANGE",
-+      "ERROR_ADDRESS",
-+      "ERROR_BLOCK_LEN",
-+      "ERROR_ERASE_SEQ",
-+      "ERROR_ERASE_PARAM",
-+      "ERROR_WP_VIOLATION",
-+      "ERROR_CARD_IS_LOCKED",
-+      "ERROR_LOCK_UNLOCK_FAILED",
-+      "ERROR_COM_CRC",
-+      "ERROR_ILLEGAL_COMMAND",
-+      "ERROR_CARD_ECC_FAILED",
-+      "ERROR_CC",
-+      "ERROR_GENERAL",
-+      "ERROR_UNDERRUN",
-+      "ERROR_OVERRUN",
-+      "ERROR_CID_CSD_OVERWRITE",
-+      "ERROR_STATE_MISMATCH",
-+      "ERROR_HEADER_MISMATCH",
-+      "ERROR_TIMEOUT",
-+      "ERROR_CRC",
-+      "ERROR_DRIVER_FAILURE",
-+};
-+
-+char * mmc_result_to_string(int i)
-+{
-+      return mmc_result_strings[i+1];
-+}
-+
-+static char * card_state_strings[] = {
-+      "empty",
-+      "idle",
-+      "ready",
-+      "ident",
-+      "stby",
-+      "tran",
-+      "data",
-+      "rcv",
-+      "prg",
-+      "dis",
-+};
-+
-+static inline char * card_state_to_string(int i)
-+{
-+      return card_state_strings[i+1];
-+}
-+
-+/*
-+ * Utility functions
-+ */
-+
-+#define PARSE_U32(_buf,_index) \
-+      (((u32)_buf[_index]) << 24) | (((u32)_buf[_index+1]) << 16) | \
-+        (((u32)_buf[_index+2]) << 8) | ((u32)_buf[_index+3]);
-+
-+#define PARSE_U16(_buf,_index) \
-+      (((u16)_buf[_index]) << 8) | ((u16)_buf[_index+1]);
-+
-+int mmc_unpack_csd(struct mmc_request *request, struct mmc_csd *csd)
-+{
-+      u8 *buf = request->response;
-+      int num = 0;
-+
-+      if (request->result)
-+              return request->result;
-+
-+      if (buf[0] != 0x3f)
-+              return MMC_ERROR_HEADER_MISMATCH;
-+
-+      csd->csd_structure = (buf[1] & 0xc0) >> 6;
-+      if (csd->csd_structure)
-+              sd2_0 = 1;
-+      else
-+              sd2_0 = 0;
-+
-+      switch (csd->csd_structure) {
-+      case 0 :/* Version 1.01-1.10
-+               * Version 2.00/Standard Capacity */
-+              csd->taac               = buf[2];
-+              csd->nsac               = buf[3];
-+              csd->tran_speed         = buf[4];
-+              csd->ccc                = (((u16)buf[5]) << 4) | ((buf[6] & 0xf0) >> 4);
-+              csd->read_bl_len        = buf[6] & 0x0f;
-+              /* for support 2GB card*/
-+              if (csd->read_bl_len >= 10)
-+              {
-+                      num = csd->read_bl_len - 9;
-+                      csd->read_bl_len = 9;
-+              }
-+
-+              csd->read_bl_partial    = (buf[7] & 0x80) ? 1 : 0;
-+              csd->write_blk_misalign = (buf[7] & 0x40) ? 1 : 0;
-+              csd->read_blk_misalign  = (buf[7] & 0x20) ? 1 : 0;
-+              csd->dsr_imp            = (buf[7] & 0x10) ? 1 : 0;
-+              csd->c_size             = ((((u16)buf[7]) & 0x03) << 10) | (((u16)buf[8]) << 2) | (((u16)buf[9]) & 0xc0) >> 6;
-+
-+              if (num)
-+                      csd->c_size = csd->c_size << num;
-+
-+
-+              csd->vdd_r_curr_min     = (buf[9] & 0x38) >> 3;
-+              csd->vdd_r_curr_max     = buf[9] & 0x07;
-+              csd->vdd_w_curr_min     = (buf[10] & 0xe0) >> 5;
-+              csd->vdd_w_curr_max     = (buf[10] & 0x1c) >> 2;
-+              csd->c_size_mult        = ((buf[10] & 0x03) << 1) | ((buf[11] & 0x80) >> 7);
-+              csd->sector_size    = (buf[11] & 0x7c) >> 2;
-+              csd->erase_grp_size = ((buf[11] & 0x03) << 3) | ((buf[12] & 0xe0) >> 5);
-+              csd->wp_grp_size        = buf[12] & 0x1f;
-+              csd->wp_grp_enable      = (buf[13] & 0x80) ? 1 : 0;
-+              csd->default_ecc        = (buf[13] & 0x60) >> 5;
-+              csd->r2w_factor         = (buf[13] & 0x1c) >> 2;
-+              csd->write_bl_len       = ((buf[13] & 0x03) << 2) | ((buf[14] & 0xc0) >> 6);
-+              if (csd->write_bl_len >= 10)
-+                      csd->write_bl_len = 9;
-+
-+              csd->write_bl_partial   = (buf[14] & 0x20) ? 1 : 0;
-+              csd->file_format_grp    = (buf[15] & 0x80) ? 1 : 0;
-+              csd->copy               = (buf[15] & 0x40) ? 1 : 0;
-+              csd->perm_write_protect = (buf[15] & 0x20) ? 1 : 0;
-+              csd->tmp_write_protect  = (buf[15] & 0x10) ? 1 : 0;
-+              csd->file_format        = (buf[15] & 0x0c) >> 2;
-+              csd->ecc                = buf[15] & 0x03;
-+              break;
-+      case 1 :        /* Version 2.00/High Capacity */
-+              csd->taac               = 0;
-+              csd->nsac               = 0;
-+              csd->tran_speed         = buf[4];
-+              csd->ccc                = (((u16)buf[5]) << 4) | ((buf[6] & 0xf0) >> 4);
-+
-+              csd->read_bl_len        = 9;
-+              csd->read_bl_partial    = 0;
-+              csd->write_blk_misalign = 0;
-+              csd->read_blk_misalign  = 0;
-+              csd->dsr_imp            = (buf[7] & 0x10) ? 1 : 0;
-+              csd->c_size             = ((((u16)buf[8]) & 0x3f) << 16) | (((u16)buf[9]) << 8) | ((u16)buf[10]) ;
-+              csd->sector_size        = 0x7f;
-+              csd->erase_grp_size     = 0;
-+              csd->wp_grp_size        = 0;
-+              csd->wp_grp_enable      = 0;
-+              csd->default_ecc        = (buf[13] & 0x60) >> 5;
-+              csd->r2w_factor         = 4;/* Unused */
-+              csd->write_bl_len       = 9;
-+
-+              csd->write_bl_partial   = 0;
-+              csd->file_format_grp    = 0;
-+              csd->copy               = (buf[15] & 0x40) ? 1 : 0;
-+              csd->perm_write_protect = (buf[15] & 0x20) ? 1 : 0;
-+              csd->tmp_write_protect  = (buf[15] & 0x10) ? 1 : 0;
-+              csd->file_format        = 0;
-+              csd->ecc                = buf[15] & 0x03;
-+      }
-+
-+      return 0;
-+}
-+
-+int mmc_unpack_r1(struct mmc_request *request, struct mmc_response_r1 *r1, enum card_state state)
-+{
-+      u8 *buf = request->response;
-+
-+      if (request->result)
-+              return request->result;
-+
-+      r1->cmd    = buf[0];
-+      r1->status = PARSE_U32(buf,1);
-+
-+      debug("mmc_unpack_r1: cmd=%d status=%08x\n", r1->cmd, r1->status);
-+
-+      if (R1_STATUS(r1->status)) {
-+              if (r1->status & R1_OUT_OF_RANGE)       return MMC_ERROR_OUT_OF_RANGE;
-+              if (r1->status & R1_ADDRESS_ERROR)      return MMC_ERROR_ADDRESS;
-+              if (r1->status & R1_BLOCK_LEN_ERROR)    return MMC_ERROR_BLOCK_LEN;
-+              if (r1->status & R1_ERASE_SEQ_ERROR)    return MMC_ERROR_ERASE_SEQ;
-+              if (r1->status & R1_ERASE_PARAM)        return MMC_ERROR_ERASE_PARAM;
-+              if (r1->status & R1_WP_VIOLATION)       return MMC_ERROR_WP_VIOLATION;
-+              /*if (r1->status & R1_CARD_IS_LOCKED)     return MMC_ERROR_CARD_IS_LOCKED; */
-+              if (r1->status & R1_LOCK_UNLOCK_FAILED) return MMC_ERROR_LOCK_UNLOCK_FAILED;
-+              if (r1->status & R1_COM_CRC_ERROR)      return MMC_ERROR_COM_CRC;
-+              if (r1->status & R1_ILLEGAL_COMMAND)    return MMC_ERROR_ILLEGAL_COMMAND;
-+              if (r1->status & R1_CARD_ECC_FAILED)    return MMC_ERROR_CARD_ECC_FAILED;
-+              if (r1->status & R1_CC_ERROR)           return MMC_ERROR_CC;
-+              if (r1->status & R1_ERROR)              return MMC_ERROR_GENERAL;
-+              if (r1->status & R1_UNDERRUN)           return MMC_ERROR_UNDERRUN;
-+              if (r1->status & R1_OVERRUN)            return MMC_ERROR_OVERRUN;
-+              if (r1->status & R1_CID_CSD_OVERWRITE)  return MMC_ERROR_CID_CSD_OVERWRITE;
-+      }
-+
-+      if (buf[0] != request->cmd) 
-+              return MMC_ERROR_HEADER_MISMATCH;
-+
-+      /* This should be last - it's the least dangerous error */
-+
-+      return 0;
-+}
-+
-+int mmc_unpack_scr(struct mmc_request *request, struct mmc_response_r1 *r1, enum card_state state, u32 *scr)
-+{
-+        u8 *buf = request->response;
-+      if (request->result)
-+              return request->result;
-+
-+        *scr = PARSE_U32(buf, 5); /* Save SCR returned by the SD Card */
-+        return mmc_unpack_r1(request, r1, state);
-+
-+}
-+
-+int mmc_unpack_r6(struct mmc_request *request, struct mmc_response_r1 *r1, enum card_state state, int *rca)
-+{
-+      u8 *buf = request->response;
-+
-+      if (request->result)
-+              return request->result;
-+
-+        *rca = PARSE_U16(buf,1);  /* Save RCA returned by the SD Card */
-+
-+        *(buf+1) = 0;
-+        *(buf+2) = 0;
-+
-+        return mmc_unpack_r1(request, r1, state);
-+}
-+
-+int mmc_unpack_cid(struct mmc_request *request, struct mmc_cid *cid)
-+{
-+      int i;
-+      u8 *buf = request->response;
-+
-+      if (request->result) 
-+              return request->result;
-+
-+      cid->mid = buf[1];
-+      cid->oid = PARSE_U16(buf,2);
-+      for (i = 0 ; i < 5 ; i++)
-+              cid->pnm[i] = buf[4+i];
-+      cid->pnm[6] = 0;
-+      cid->prv = buf[10];
-+      cid->psn = PARSE_U32(buf,10);
-+      cid->mdt = buf[15];
-+
-+      printf("Man %02x OEM 0x%04x \"%s\" %d.%d 0x%08x "
-+             "Date %02u/%04u\n",
-+             cid->mid,
-+             cid->oid,
-+             cid->pnm, 
-+             cid->prv >> 4,
-+             cid->prv & 0xf, 
-+             cid->psn,
-+             cid->mdt & 0xf,
-+             (cid->mdt >> 4) + 2000);
-+
-+      if (buf[0] != 0x3f)
-+              return MMC_ERROR_HEADER_MISMATCH;
-+              return 0;
-+}
-+
-+int mmc_unpack_r3(struct mmc_request *request, struct mmc_response_r3 *r3)
-+{
-+      u8 *buf = request->response;
-+
-+      if (request->result)
-+              return request->result;
-+
-+      r3->ocr = PARSE_U32(buf,1);
-+      debug("mmc_unpack_r3: ocr=%08x\n", r3->ocr);
-+
-+      if (buf[0] != 0x3f)  return MMC_ERROR_HEADER_MISMATCH;
-+      return 0;
-+}
-+
-+#define KBPS 1
-+#define MBPS 1000
-+
-+static u32 ts_exp[] = { 100*KBPS, 1*MBPS, 10*MBPS, 100*MBPS, 0, 0, 0, 0 };
-+static u32 ts_mul[] = { 0,    1000, 1200, 1300, 1500, 2000, 2500, 3000, 
-+                      3500, 4000, 4500, 5000, 5500, 6000, 7000, 8000 };
-+
-+u32 mmc_tran_speed(u8 ts)
-+{
-+      u32 rate = ts_exp[(ts & 0x7)] * ts_mul[(ts & 0x78) >> 3];
-+
-+      if (rate <= 0) {
-+              debug("%s: error - unrecognized speed 0x%02x\n", __func__, ts);
-+              return 1;
-+      }
-+
-+      return rate;
-+}
-+
-+void mmc_send_cmd(struct mmc_request *request, int cmd, u32 arg, 
-+                u16 nob, u16 block_len, enum mmc_rsp_t rtype, u8 *buffer)
-+{
-+      request->cmd       = cmd;
-+      request->arg       = arg;
-+      request->rtype     = rtype;
-+      request->nob       = nob;
-+      request->block_len = block_len;
-+      request->buffer    = buffer;
-+      request->cnt       = nob * block_len;
-+
-+      jz_mmc_exec_cmd(request);
-+}
-diff --git a/drivers/mmc/jz_mmc.h b/drivers/mmc/jz_mmc.h
-new file mode 100644
-index 0000000..936c514
---- /dev/null
-+++ b/drivers/mmc/jz_mmc.h
-@@ -0,0 +1,176 @@
-+/*
-+ *  linux/drivers/mmc/jz_mmc.h
-+ *
-+ *  Author: Vladimir Shebordaev, Igor Oblakov
-+ *  Copyright:  MontaVista Software Inc.
-+ *
-+ *  $Id: jz_mmc.h,v 1.3 2007-06-15 08:04:20 jlwei Exp $
-+ *
-+ *  This program is free software; you can redistribute it and/or modify
-+ *  it under the terms of the GNU General Public License version 2 as
-+ *  published by the Free Software Foundation.
-+ */
-+#ifndef __MMC_JZMMC_H__
-+#define __MMC_JZMMC_H__
-+
-+#define ID_TO_RCA(x) ((x)+1)
-+#define MMC_OCR_ARG           0x00ff8000      /* Argument of OCR */
-+
-+/* Standard MMC/SD clock speeds */
-+#define MMC_CLOCK_SLOW    400000      /* 400 kHz for initial setup */
-+#define MMC_CLOCK_FAST  20000000      /* 20 MHz for maximum for normal operation */
-+#define SD_CLOCK_FAST   24000000      /* 24 MHz for SD Cards */
-+
-+/* Use negative numbers to disambiguate */
-+#define MMC_CIM_RESET            -1
-+#define SET_BUS_WIDTH            6    /* ac   [1:0] bus width    R1  */    
-+
-+#define R1_OUT_OF_RANGE               (1 << 31)       /* er, c */
-+#define R1_ADDRESS_ERROR      (1 << 30)       /* erx, c */
-+#define R1_BLOCK_LEN_ERROR    (1 << 29)       /* er, c */
-+#define R1_ERASE_SEQ_ERROR      (1 << 28)     /* er, c */
-+#define R1_ERASE_PARAM                (1 << 27)       /* ex, c */
-+#define R1_WP_VIOLATION               (1 << 26)       /* erx, c */
-+#define R1_CARD_IS_LOCKED     (1 << 25)       /* sx, a */
-+#define R1_LOCK_UNLOCK_FAILED (1 << 24)       /* erx, c */
-+#define R1_COM_CRC_ERROR      (1 << 23)       /* er, b */
-+#define R1_ILLEGAL_COMMAND    (1 << 22)       /* er, b */
-+#define R1_CARD_ECC_FAILED    (1 << 21)       /* ex, c */
-+#define R1_CC_ERROR           (1 << 20)       /* erx, c */
-+#define R1_ERROR              (1 << 19)       /* erx, c */
-+#define R1_UNDERRUN           (1 << 18)       /* ex, c */
-+#define R1_OVERRUN            (1 << 17)       /* ex, c */
-+#define R1_CID_CSD_OVERWRITE  (1 << 16)       /* erx, c, CID/CSD overwrite */
-+#define R1_WP_ERASE_SKIP      (1 << 15)       /* sx, c */
-+#define R1_CARD_ECC_DISABLED  (1 << 14)       /* sx, a */
-+#define R1_ERASE_RESET                (1 << 13)       /* sr, c */
-+#define R1_STATUS(x)            (x & 0xFFFFE000)
-+
-+#define MMC_CARD_BUSY 0x80000000      /* Card Power up status bit */
-+
-+#define MMC_PROGRAM_CID          26   /* adtc                    R1  */
-+#define MMC_PROGRAM_CSD          27   /* adtc                    R1  */
-+
-+#define MMC_GO_IRQ_STATE         40   /* bcr                     R5  */
-+#define MMC_GEN_CMD              56   /* adtc [0] RD/WR          R1b */
-+#define MMC_LOCK_UNLOCK          42   /* adtc                    R1b */
-+#define MMC_WRITE_DAT_UNTIL_STOP 20   /* adtc [31:0] data addr   R1  */
-+#define MMC_READ_DAT_UNTIL_STOP  11   /* adtc [31:0] dadr        R1  */
-+#define MMC_SEND_WRITE_PROT      30   /* adtc [31:0] wpdata addr R1  */
-+
-+
-+enum mmc_result_t {
-+      MMC_NO_RESPONSE        = -1,
-+      MMC_NO_ERROR           = 0,
-+      MMC_ERROR_OUT_OF_RANGE,
-+      MMC_ERROR_ADDRESS,
-+      MMC_ERROR_BLOCK_LEN,
-+      MMC_ERROR_ERASE_SEQ,
-+      MMC_ERROR_ERASE_PARAM,
-+      MMC_ERROR_WP_VIOLATION,
-+      MMC_ERROR_CARD_IS_LOCKED,
-+      MMC_ERROR_LOCK_UNLOCK_FAILED,
-+      MMC_ERROR_COM_CRC,
-+      MMC_ERROR_ILLEGAL_COMMAND,
-+      MMC_ERROR_CARD_ECC_FAILED,
-+      MMC_ERROR_CC,
-+      MMC_ERROR_GENERAL,
-+      MMC_ERROR_UNDERRUN,
-+      MMC_ERROR_OVERRUN,
-+      MMC_ERROR_CID_CSD_OVERWRITE,
-+      MMC_ERROR_STATE_MISMATCH,
-+      MMC_ERROR_HEADER_MISMATCH,
-+      MMC_ERROR_TIMEOUT,
-+      MMC_ERROR_CRC,
-+      MMC_ERROR_DRIVER_FAILURE,
-+};
-+
-+enum card_state {
-+      CARD_STATE_EMPTY = -1,
-+      CARD_STATE_IDLE  = 0,
-+      CARD_STATE_READY = 1,
-+      CARD_STATE_IDENT = 2,
-+      CARD_STATE_STBY  = 3,
-+      CARD_STATE_TRAN  = 4,
-+      CARD_STATE_DATA  = 5,
-+      CARD_STATE_RCV   = 6,
-+      CARD_STATE_PRG   = 7,
-+      CARD_STATE_DIS   = 8,
-+};
-+
-+enum mmc_rsp_t {
-+      RESPONSE_NONE   = 0,
-+      RESPONSE_R1     = 1,
-+      RESPONSE_R1B    = 2,
-+      RESPONSE_R2_CID = 3,
-+      RESPONSE_R2_CSD  = 4,
-+      RESPONSE_R3      = 5,
-+      RESPONSE_R4      = 6,
-+      RESPONSE_R5      = 7,
-+        RESPONSE_R6      = 8,
-+};
-+
-+struct mmc_response_r1 {
-+      u8  cmd;
-+      u32 status;
-+};
-+
-+struct mmc_response_r3 {  
-+      u32 ocr;
-+}; 
-+
-+/* the information structure of MMC/SD Card */
-+struct  mmc_info {
-+      int             id;     /* Card index */
-+        int             sd;     /* MMC or SD card */
-+        int             rca;    /* RCA */
-+        u32             scr;    /* SCR 63:32*/
-+      int             flags;  /* Ejected, inserted */
-+      enum card_state state;  /* empty, ident, ready, whatever */
-+
-+      /* Card specific information */
-+      struct mmc_cid  cid;
-+      struct mmc_csd  csd;
-+      u32             block_num;
-+      u32             block_len;
-+      u32             erase_unit;
-+};
-+
-+struct mmc_info mmcinfo;
-+
-+struct mmc_request {
-+      int               index;      /* Slot index - used for CS lines */
-+      int               cmd;        /* Command to send */
-+      u32               arg;        /* Argument to send */
-+      enum mmc_rsp_t    rtype;      /* Response type expected */
-+
-+      /* Data transfer (these may be modified at the low level) */
-+      u16               nob;        /* Number of blocks to transfer*/
-+      u16               block_len;  /* Block length */
-+      u8               *buffer;     /* Data buffer */
-+      u32               cnt;        /* Data length, for PIO */
-+
-+      /* Results */
-+      u8                response[18]; /* Buffer to store response - CRC is optional */
-+      enum mmc_result_t result;
-+};
-+
-+char * mmc_result_to_string(int);
-+int    mmc_unpack_csd(struct mmc_request *request, struct mmc_csd *csd);
-+int    mmc_unpack_r1(struct mmc_request *request, struct mmc_response_r1 *r1, enum card_state state);
-+int    mmc_unpack_r6(struct mmc_request *request, struct mmc_response_r1 *r1, enum card_state state, int *rca);
-+int    mmc_unpack_scr(struct mmc_request *request, struct mmc_response_r1 *r1, enum card_state state, u32 *scr);
-+int    mmc_unpack_cid(struct mmc_request *request, struct mmc_cid *cid);
-+int    mmc_unpack_r3(struct mmc_request *request, struct mmc_response_r3 *r3);
-+
-+void   mmc_send_cmd(struct mmc_request *request, int cmd, u32 arg, 
-+                   u16 nob, u16 block_len, enum mmc_rsp_t rtype, u8 *buffer);
-+u32    mmc_tran_speed(u8 ts);
-+void   jz_mmc_set_clock(int sd, u32 rate);
-+
-+static inline void mmc_simple_cmd(struct mmc_request *request, int cmd, u32 arg, enum mmc_rsp_t rtype)
-+{
-+      mmc_send_cmd( request, cmd, arg, 0, 0, rtype, 0);
-+}
-+
-+#endif /* __MMC_JZMMC_H__ */
-diff --git a/include/configs/qi_lb60.h b/include/configs/qi_lb60.h
-index 7bff444..7b33be0 100644
---- a/include/configs/qi_lb60.h
-+++ b/include/configs/qi_lb60.h
-@@ -31,6 +31,15 @@
- /*
-  * Miscellaneous configurable options
-  */
-+#define CONFIG_JZ4740_MMC
-+#define CONFIG_MMC            1
-+#define CONFIG_FAT            1
-+#define CONFIG_DOS_PARTITION  1
-+#define CONFIG_CMD_MMC
-+#define CONFIG_CMD_FAT
-+#define CONFIG_CMD_EXT2
-+
-+
- #define CONFIG_SYS_SDRAM_BASE         0x80000000      /* Cached addr */
- #define CONFIG_SYS_INIT_SP_OFFSET     0x400000
- #define CONFIG_SYS_LOAD_ADDR          0x80600000
-diff --git a/include/mmc.h b/include/mmc.h
-index a13e2bd..3c4761c 100644
---- a/include/mmc.h
-+++ b/include/mmc.h
-@@ -283,4 +283,44 @@ struct mmc *mmc_spi_init(uint bus, uint cs, uint speed, uint mode);
- int mmc_legacy_init(int verbose);
- #endif
-+struct mmc_csd
-+{
-+      u8      csd_structure:2,
-+              spec_vers:4,
-+              rsvd1:2;
-+      u8      taac;
-+      u8      nsac;
-+      u8      tran_speed;
-+      u16     ccc:12,
-+              read_bl_len:4;
-+      u32     c_size:22;
-+      u64     read_bl_partial:1,
-+              write_blk_misalign:1,
-+              read_blk_misalign:1,
-+              dsr_imp:1,
-+              rsvd2:2,
-+              vdd_r_curr_min:3,
-+              vdd_r_curr_max:3,
-+              vdd_w_curr_min:3,
-+              vdd_w_curr_max:3,
-+              c_size_mult:3,
-+              sector_size:5,
-+              erase_grp_size:5,
-+              wp_grp_size:5,
-+              wp_grp_enable:1,
-+              default_ecc:2,
-+              r2w_factor:3,
-+              write_bl_len:4,
-+              write_bl_partial:1,
-+              rsvd3:5;
-+      u8      file_format_grp:1,
-+              copy:1,
-+              perm_write_protect:1,
-+              tmp_write_protect:1,
-+              file_format:2,
-+              ecc:2;
-+      u8      crc:7;
-+      u8      one:1;
-+};
-+
- #endif /* _MMC_H_ */
--- 
-1.7.9.5
-
diff --git a/package/boot/uboot-xburst/patches/0004-add-more-boot-options-F1-F2-F3-F4-M-S.patch b/package/boot/uboot-xburst/patches/0004-add-more-boot-options-F1-F2-F3-F4-M-S.patch
deleted file mode 100644 (file)
index 73e0324..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-From c52b6168979d03fc31205444c3278c537787472a Mon Sep 17 00:00:00 2001
-From: Xiangfu <xiangfu@openmobilefree.net>
-Date: Wed, 10 Oct 2012 18:39:55 +0800
-Subject: [PATCH 4/6] add more boot options(F1/F2/F3/F4/M/S)
-
----
- arch/mips/include/asm/global_data.h |    3 +++
- arch/mips/lib/bootm.c               |   17 ++++++++++++++++-
- board/qi/qi_lb60/qi_lb60.c          |   26 +++++++++++++++++++++++---
- common/main.c                       |   21 +++++++++++++++++++--
- include/configs/qi_lb60.h           |   32 ++++++++++++++++++++++++++++++++
- 5 files changed, 93 insertions(+), 6 deletions(-)
-
-diff --git a/arch/mips/include/asm/global_data.h b/arch/mips/include/asm/global_data.h
-index 6e2cdc7..cd03d7e 100644
---- a/arch/mips/include/asm/global_data.h
-+++ b/arch/mips/include/asm/global_data.h
-@@ -59,6 +59,9 @@ typedef      struct  global_data {
-       unsigned long   env_valid;      /* Checksum of Environment valid? */
-       void            **jt;           /* jump table */
-       char            env_buf[32];    /* buffer for getenv() before reloc. */
-+#if defined(CONFIG_NANONOTE)
-+        unsigned long   boot_option;
-+#endif
- } gd_t;
- #include <asm-generic/global_data_flags.h>
-diff --git a/arch/mips/lib/bootm.c b/arch/mips/lib/bootm.c
-index 608c1a7..e00416b 100644
---- a/arch/mips/lib/bootm.c
-+++ b/arch/mips/lib/bootm.c
-@@ -47,10 +47,25 @@ int do_bootm_linux(int flag, int argc, char * const argv[],
-                       bootm_headers_t *images)
- {
-       void (*theKernel) (int, char **, char **, int *);
--      char *commandline = getenv("bootargs");
-+      char *commandline;
-       char env_buf[12];
-       char *cp;
-+#if defined(CONFIG_NANONOTE)
-+        if (gd->boot_option & BOOT_FROM_MEMCARD)
-+                commandline = getenv ("bootargsfromsd");
-+        else if (gd->boot_option & BOOT_WITH_F1)
-+                commandline = getenv ("bootargsf1");
-+        else if (gd->boot_option & BOOT_WITH_F2)
-+                commandline = getenv ("bootargsf2");
-+        else if (gd->boot_option & BOOT_WITH_F3)
-+                commandline = getenv ("bootargsf3");
-+        else if (gd->boot_option & BOOT_WITH_F4)
-+                commandline = getenv ("bootargsf4");
-+        else
-+#endif
-+                commandline = getenv ("bootargs");
-+
-       if ((flag != 0) && (flag != BOOTM_STATE_OS_GO))
-               return 1;
-diff --git a/board/qi/qi_lb60/qi_lb60.c b/board/qi/qi_lb60/qi_lb60.c
-index a2ba648..d622219 100644
---- a/board/qi/qi_lb60/qi_lb60.c
-+++ b/board/qi/qi_lb60/qi_lb60.c
-@@ -15,7 +15,7 @@ DECLARE_GLOBAL_DATA_PTR;
- static void gpio_init(void)
- {
--      unsigned int i;
-+      unsigned int i, j;
-       /* Initialize NAND Flash Pins */
-       __gpio_as_nand();
-@@ -42,14 +42,34 @@ static void gpio_init(void)
-       if (__gpio_get_pin(GPIO_KEYIN_BASE + 2) == 0){
-               printf("[S] pressed, enable UART0\n");
-+              gd->boot_option |= BOOT_WITH_ENABLE_UART;
-               __gpio_as_uart0();
-       } else {
-               __gpio_as_input(GPIO_KEYIN_8);
-               __gpio_enable_pull(GPIO_KEYIN_8);
-       }
--      /* enable the TP4, TP5 as UART0 */
--      __gpio_jtag_to_uart0();
-+      if (__gpio_get_pin(GPIO_KEYIN_BASE + 3) == 0) {
-+              printf("[M] pressed, boot from memory card\n");
-+              gd->boot_option |= BOOT_FROM_MEMCARD;
-+              __gpio_jtag_to_uart0();
-+      }
-+
-+      for (j = 0; j < 4; j++) {
-+              for (i = 0; i < 4; i++)
-+                      __gpio_set_pin(GPIO_KEYOUT_BASE + i);
-+
-+              __gpio_clear_pin(GPIO_KEYOUT_BASE + j);
-+
-+              if (__gpio_get_pin(GPIO_KEYIN_BASE) == 0) {
-+                      printf("[F%d] pressed", (j + 1));
-+                      gd->boot_option |= (1 << (j + 2));
-+                      /* BOOT_WITH_F1 (1 << 2) */
-+                      /* BOOT_WITH_F2 (1 << 3) */
-+                      /* BOOT_WITH_F3 (1 << 4) */
-+                      /* BOOT_WITH_F4 (1 << 5) */
-+              }
-+      }
-       __gpio_as_output(GPIO_AUDIO_POP);
-       __gpio_set_pin(GPIO_AUDIO_POP);
-diff --git a/common/main.c b/common/main.c
-index 9507cec..dbfb7ca 100644
---- a/common/main.c
-+++ b/common/main.c
-@@ -355,7 +355,11 @@ void main_loop (void)
- #if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)
-       s = getenv ("bootdelay");
-       bootdelay = s ? (int)simple_strtol(s, NULL, 10) : CONFIG_BOOTDELAY;
--
-+#if defined(CONFIG_NANONOTE)
-+      DECLARE_GLOBAL_DATA_PTR;
-+      if (gd->boot_option & BOOT_WITH_ENABLE_UART)
-+              bootdelay = 3;
-+# endif
-       debug ("### main_loop entered: bootdelay=%d\n\n", bootdelay);
- #if defined(CONFIG_MENU_SHOW)
-@@ -379,7 +383,20 @@ void main_loop (void)
-       }
-       else
- #endif /* CONFIG_BOOTCOUNT_LIMIT */
--              s = getenv ("bootcmd");
-+#if defined(CONFIG_NANONOTE)
-+              if (gd->boot_option & BOOT_FROM_MEMCARD)
-+                      s = getenv ("bootcmdfromsd");
-+              else if (gd->boot_option & BOOT_WITH_F1)
-+                      s = getenv ("bootcmdf1");
-+              else if (gd->boot_option & BOOT_WITH_F2)
-+                      s = getenv ("bootcmdf2");
-+              else if (gd->boot_option & BOOT_WITH_F3)
-+                      s = getenv ("bootcmdf3");
-+              else if (gd->boot_option & BOOT_WITH_F4)
-+                      s = getenv ("bootcmdf4");
-+              else
-+#endif
-+                      s = getenv ("bootcmd");
-       debug ("### main_loop: bootcmd=\"%s\"\n", s ? s : "<UNDEFINED>");
-diff --git a/include/configs/qi_lb60.h b/include/configs/qi_lb60.h
-index 7b33be0..52b370c 100644
---- a/include/configs/qi_lb60.h
-+++ b/include/configs/qi_lb60.h
-@@ -31,6 +31,7 @@
- /*
-  * Miscellaneous configurable options
-  */
-+#define CONFIG_NANONOTE
- #define CONFIG_JZ4740_MMC
- #define CONFIG_MMC            1
- #define CONFIG_FAT            1
-@@ -39,6 +40,37 @@
- #define CONFIG_CMD_FAT
- #define CONFIG_CMD_EXT2
-+#define CONFIG_CMD_UBIFS
-+#define CONFIG_CMD_UBI
-+#define CONFIG_MTD_PARTITIONS
-+#define CONFIG_MTD_DEVICE
-+#define CONFIG_CMD_MTDPARTS
-+#define CONFIG_CMD_UBI
-+#define CONFIG_CMD_UBIFS
-+#define CONFIG_LZO
-+#define CONFIG_RBTREE
-+
-+#define MTDIDS_DEFAULT                "nand0=jz4740-nand"
-+#define MTDPARTS_DEFAULT      "mtdparts=jz4740-nand:4M@0(uboot)ro,4M@4M(kernel)ro,512M@8M(rootfs)ro,-(data)ro"
-+
-+#define BOOT_FROM_MEMCARD     1
-+#define BOOT_WITH_ENABLE_UART (1 << 1)        /* Vaule for global_data.h gd->boot_option */
-+#define BOOT_WITH_F1          (1 << 2)
-+#define BOOT_WITH_F2          (1 << 3)
-+#define BOOT_WITH_F3          (1 << 4)
-+#define BOOT_WITH_F4          (1 << 5)
-+
-+#define CONFIG_EXTRA_ENV_SETTINGS \
-+      "bootcmdfromsd=mmc init; ext2load mmc 0 0x80600000 /boot/uImage; bootm;\0" \
-+      "bootargsfromsd=mem=32M console=tty0 console=ttyS0,57600n8 rootfstype=ext2 root=/dev/mmcblk0p1 rw rootwait\0" \
-+      "bootcmdf1=mmc init; ext2load mmc 0:1 0x80600000 /boot/uImage; bootm;\0" \
-+      "bootargsf1=mem=32M console=tty0 console=ttyS0,57600n8 rootfstype=ext2 root=/dev/mmcblk0p1 rw rootwait\0" \
-+      "bootcmdf2=mmc init; ext2load mmc 0:2 0x80600000 /boot/uImage; bootm;\0" \
-+      "bootargsf2=mem=32M console=tty0 console=ttyS0,57600n8 rootfstype=ext2 root=/dev/mmcblk0p2 rw rootwait\0" \
-+      "bootcmdf3=mmc init; ext2load mmc 0:3 0x80600000 /boot/uImage; bootm;\0" \
-+      "bootargsf3=mem=32M console=tty0 console=ttyS0,57600n8 rootfstype=ext2 root=/dev/mmcblk0p3 rw rootwait\0" \
-+      "bootcmdf4=mtdparts default;ubi part rootfs;ubifsmount rootfs;ubifsload 0x80600000 /boot/uImage; bootm;\0" \
-+      "bootargsf4=mem=32M console=tty0 console=ttyS0,57600n8 ubi.mtd=2 rootfstype=ubifs root=ubi0:rootfs rw rootwait"
- #define CONFIG_SYS_SDRAM_BASE         0x80000000      /* Cached addr */
- #define CONFIG_SYS_INIT_SP_OFFSET     0x400000
--- 
-1.7.9.5
-
diff --git a/package/boot/uboot-xburst/patches/0005-add-nanonote-lcd-support.patch b/package/boot/uboot-xburst/patches/0005-add-nanonote-lcd-support.patch
deleted file mode 100644 (file)
index 2c550f7..0000000
+++ /dev/null
@@ -1,847 +0,0 @@
-From ca8c5216cfd3ad3fda9867ed2d157ae5a209834b Mon Sep 17 00:00:00 2001
-From: Xiangfu <xiangfu@openmobilefree.net>
-Date: Wed, 10 Oct 2012 22:05:27 +0800
-Subject: [PATCH 5/6] add nanonote lcd support
-
----
- arch/mips/include/asm/global_data.h |    1 +
- arch/mips/include/asm/jz4740.h      |   90 ++++++++
- arch/mips/lib/board.c               |    6 +
- common/lcd.c                        |    9 +-
- drivers/video/Makefile              |    1 +
- drivers/video/nanonote_gpm940b0.c   |  400 +++++++++++++++++++++++++++++++++++
- drivers/video/nanonote_gpm940b0.h   |  135 ++++++++++++
- include/configs/qi_lb60.h           |    7 +
- include/lcd.h                       |   52 ++++-
- 9 files changed, 697 insertions(+), 4 deletions(-)
- create mode 100644 drivers/video/nanonote_gpm940b0.c
- create mode 100644 drivers/video/nanonote_gpm940b0.h
-
-diff --git a/arch/mips/include/asm/global_data.h b/arch/mips/include/asm/global_data.h
-index cd03d7e..7cec2de 100644
---- a/arch/mips/include/asm/global_data.h
-+++ b/arch/mips/include/asm/global_data.h
-@@ -44,6 +44,7 @@ typedef      struct  global_data {
-       unsigned long   per_clk;        /* Peripheral bus clock */
-       unsigned long   mem_clk;        /* Memory bus clock */
-       unsigned long   dev_clk;        /* Device clock */
-+        unsigned long   fb_base;        /* base address of framebuffer */
-       /* "static data" needed by most of timer.c */
-       unsigned long   tbl;
-       unsigned long   lastinc;
-diff --git a/arch/mips/include/asm/jz4740.h b/arch/mips/include/asm/jz4740.h
-index 68287fb..13724a2 100644
---- a/arch/mips/include/asm/jz4740.h
-+++ b/arch/mips/include/asm/jz4740.h
-@@ -1312,5 +1312,95 @@ do {                                                            \
-       while (REG_MSC_STAT & MSC_STAT_IS_RESETTING);           \
- } while (0)
-+/*************************************************************************
-+ * LCD (LCD Controller)
-+ *************************************************************************/
-+#define REG32(addr)   *((volatile u32 *)(addr))
-+
-+#define       CPM_BASE        0xB0000000
-+#define CPM_CPCCR     (CPM_BASE+0x00)
-+#define REG_CPM_CPCCR REG32(CPM_CPCCR)
-+
-+#define       LCD_BASE        0xB3050000
-+#define LCD_CFG               (LCD_BASE + 0x00) /* LCD Configure Register */
-+#define LCD_VSYNC     (LCD_BASE + 0x04) /* Vertical Synchronize Register */
-+#define LCD_HSYNC     (LCD_BASE + 0x08) /* Horizontal Synchronize Register */
-+#define LCD_VAT               (LCD_BASE + 0x0c) /* Virtual Area Setting Register */
-+#define LCD_DAH               (LCD_BASE + 0x10) /* Display Area Horizontal Start/End Point */
-+#define LCD_DAV               (LCD_BASE + 0x14) /* Display Area Vertical Start/End Point */
-+#define LCD_PS                (LCD_BASE + 0x18) /* PS Signal Setting */
-+#define LCD_CLS               (LCD_BASE + 0x1c) /* CLS Signal Setting */
-+#define LCD_SPL               (LCD_BASE + 0x20) /* SPL Signal Setting */
-+#define LCD_REV               (LCD_BASE + 0x24) /* REV Signal Setting */
-+#define LCD_CTRL      (LCD_BASE + 0x30) /* LCD Control Register */
-+#define LCD_STATE     (LCD_BASE + 0x34) /* LCD Status Register */
-+#define LCD_IID               (LCD_BASE + 0x38) /* Interrupt ID Register */
-+#define LCD_DA0               (LCD_BASE + 0x40) /* Descriptor Address Register 0 */
-+#define LCD_SA0               (LCD_BASE + 0x44) /* Source Address Register 0 */
-+#define LCD_FID0      (LCD_BASE + 0x48) /* Frame ID Register 0 */
-+#define LCD_CMD0      (LCD_BASE + 0x4c) /* DMA Command Register 0 */
-+#define LCD_DA1               (LCD_BASE + 0x50) /* Descriptor Address Register 1 */
-+#define LCD_SA1               (LCD_BASE + 0x54) /* Source Address Register 1 */
-+#define LCD_FID1      (LCD_BASE + 0x58) /* Frame ID Register 1 */
-+#define LCD_CMD1      (LCD_BASE + 0x5c) /* DMA Command Register 1 */
-+
-+#define REG_LCD_CFG   REG32(LCD_CFG)
-+#define REG_LCD_VSYNC REG32(LCD_VSYNC)
-+#define REG_LCD_HSYNC REG32(LCD_HSYNC)
-+#define REG_LCD_VAT   REG32(LCD_VAT)
-+#define REG_LCD_DAH   REG32(LCD_DAH)
-+#define REG_LCD_DAV   REG32(LCD_DAV)
-+#define REG_LCD_PS    REG32(LCD_PS)
-+#define REG_LCD_CLS   REG32(LCD_CLS)
-+#define REG_LCD_SPL   REG32(LCD_SPL)
-+#define REG_LCD_REV   REG32(LCD_REV)
-+#define REG_LCD_CTRL  REG32(LCD_CTRL)
-+#define REG_LCD_STATE REG32(LCD_STATE)
-+#define REG_LCD_IID   REG32(LCD_IID)
-+#define REG_LCD_DA0   REG32(LCD_DA0)
-+#define REG_LCD_SA0   REG32(LCD_SA0)
-+#define REG_LCD_FID0  REG32(LCD_FID0)
-+#define REG_LCD_CMD0  REG32(LCD_CMD0)
-+#define REG_LCD_DA1   REG32(LCD_DA1)
-+#define REG_LCD_SA1   REG32(LCD_SA1)
-+#define REG_LCD_FID1  REG32(LCD_FID1)
-+#define REG_LCD_CMD1  REG32(LCD_CMD1)
-+
-+#define LCD_CTRL_BPP_BIT      0  /* Bits Per Pixel */
-+#define LCD_CTRL_BPP_MASK     (0x07 << LCD_CTRL_BPP_BIT)
-+  #define LCD_CTRL_BPP_1      (0 << LCD_CTRL_BPP_BIT) /* 1 bpp */
-+  #define LCD_CTRL_BPP_2      (1 << LCD_CTRL_BPP_BIT) /* 2 bpp */
-+  #define LCD_CTRL_BPP_4      (2 << LCD_CTRL_BPP_BIT) /* 4 bpp */
-+  #define LCD_CTRL_BPP_8      (3 << LCD_CTRL_BPP_BIT) /* 8 bpp */
-+  #define LCD_CTRL_BPP_16     (4 << LCD_CTRL_BPP_BIT) /* 15/16 bpp */
-+  #define LCD_CTRL_BPP_18_24  (5 << LCD_CTRL_BPP_BIT) /* 18/24/32 bpp */
-+
-+#define LCD_CTRL_BST_BIT      28  /* Burst Length Selection */
-+#define LCD_CTRL_BST_MASK     (0x03 << LCD_CTRL_BST_BIT)
-+  #define LCD_CTRL_BST_4      (0 << LCD_CTRL_BST_BIT) /* 4-word */
-+  #define LCD_CTRL_BST_8      (1 << LCD_CTRL_BST_BIT) /* 8-word */
-+  #define LCD_CTRL_BST_16     (2 << LCD_CTRL_BST_BIT) /* 16-word */
-+#define LCD_CTRL_RGB565               (0 << 27) /* RGB565 mode */
-+#define LCD_CTRL_RGB555               (1 << 27) /* RGB555 mode */
-+#define LCD_CTRL_OFUP         (1 << 26) /* Output FIFO underrun protection enable */
-+#define LCD_CTRL_FRC_BIT      24  /* STN FRC Algorithm Selection */
-+#define LCD_CTRL_FRC_MASK     (0x03 << LCD_CTRL_FRC_BIT)
-+  #define LCD_CTRL_FRC_16     (0 << LCD_CTRL_FRC_BIT) /* 16 grayscale */
-+  #define LCD_CTRL_FRC_4      (1 << LCD_CTRL_FRC_BIT) /* 4 grayscale */
-+  #define LCD_CTRL_FRC_2      (2 << LCD_CTRL_FRC_BIT) /* 2 grayscale */
-+
-+#define CPM_LPCDR     (CPM_BASE+0x64)
-+#define CPM_CLKGR     (CPM_BASE+0x20)
-+#define REG_CPM_LPCDR REG32(CPM_LPCDR)
-+#define REG_CPM_CLKGR REG32(CPM_CLKGR)
-+
-+#define __cpm_start_tcu()     (REG_CPM_CLKGR &= ~CPM_CLKGR_TCU)
-+#define __cpm_stop_lcd()      (REG_CPM_CLKGR |= CPM_CLKGR_LCD)
-+#define __cpm_set_pixdiv(v) \
-+      (REG_CPM_LPCDR = (REG_CPM_LPCDR & ~CPM_LPCDR_PIXDIV_MASK) | ((v) << (CPM_LPCDR_PIXDIV_BIT)))
-+#define __cpm_set_ldiv(v) \
-+      (REG_CPM_CPCCR = (REG_CPM_CPCCR & ~CPM_CPCCR_LDIV_MASK) | ((v) << (CPM_CPCCR_LDIV_BIT)))
-+#define __cpm_start_lcd()     (REG_CPM_CLKGR &= ~CPM_CLKGR_LCD)
-+
- #endif        /* !__ASSEMBLY__ */
- #endif        /* __JZ4740_H__ */
-diff --git a/arch/mips/lib/board.c b/arch/mips/lib/board.c
-index b14b33e..c2e64d9 100644
---- a/arch/mips/lib/board.c
-+++ b/arch/mips/lib/board.c
-@@ -172,6 +172,12 @@ void board_init_f(ulong bootflag)
-       addr &= ~(4096 - 1);
-       debug("Top of RAM usable for U-Boot at: %08lx\n", addr);
-+#ifdef CONFIG_LCD
-+        /* reserve memory for LCD display (always full pages) */
-+        addr = lcd_setmem (addr);
-+        gd->fb_base = addr;
-+#endif /* CONFIG_LCD */
-+
-       /* Reserve memory for U-Boot code, data & bss
-        * round down to next 16 kB limit
-        */
-diff --git a/common/lcd.c b/common/lcd.c
-index b6be800..af1281a 100644
---- a/common/lcd.c
-+++ b/common/lcd.c
-@@ -263,6 +263,13 @@ static void lcd_drawchars(ushort x, ushort y, uchar *str, int count)
-                                               lcd_color_fg : lcd_color_bg;
-                               bits <<= 1;
-                       }
-+#elif LCD_BPP == LCD_COLOR32
-+                       uint *m = (uint *)d;
-+                       for (c=0; c<32; ++c) {
-+                               *m++ = (bits & 0x80) ?
-+                                     lcd_color_fg : lcd_color_bg;
-+                               bits <<= 1;
-+                       }
- #endif
-               }
- #if LCD_BPP == LCD_MONOCHROME
-@@ -509,7 +516,7 @@ static inline ushort *configuration_get_cmap(void)
-       return (ushort *)&(cp->lcd_cmap[255 * sizeof(ushort)]);
- #elif defined(CONFIG_ATMEL_LCD)
-       return (ushort *)(panel_info.mmio + ATMEL_LCDC_LUT(0));
--#elif !defined(CONFIG_ATMEL_HLCD) && !defined(CONFIG_EXYNOS_FB)
-+#elif !defined(CONFIG_ATMEL_HLCD) && !defined(CONFIG_EXYNOS_FB) && !defined(CONFIG_VIDEO_GPM940B0)
-       return panel_info.cmap;
- #else
- #if defined(CONFIG_LCD_LOGO)
-diff --git a/drivers/video/Makefile b/drivers/video/Makefile
-index ebb6da8..03625bc 100644
---- a/drivers/video/Makefile
-+++ b/drivers/video/Makefile
-@@ -50,6 +50,7 @@ COBJS-$(CONFIG_VIDEO_SED13806) += sed13806.o
- COBJS-$(CONFIG_VIDEO_SM501) += sm501.o
- COBJS-$(CONFIG_VIDEO_SMI_LYNXEM) += smiLynxEM.o videomodes.o
- COBJS-$(CONFIG_VIDEO_VCXK) += bus_vcxk.o
-+COBJS-$(CONFIG_VIDEO_GPM940B0) += nanonote_gpm940b0.o
- COBJS := $(sort $(COBJS-y))
- SRCS  := $(COBJS:.o=.c)
-diff --git a/drivers/video/nanonote_gpm940b0.c b/drivers/video/nanonote_gpm940b0.c
-new file mode 100644
-index 0000000..11efb72
---- /dev/null
-+++ b/drivers/video/nanonote_gpm940b0.c
-@@ -0,0 +1,400 @@
-+/*
-+ * JzRISC lcd controller
-+ *
-+ * Xiangfu Liu <xiangfu@sharism.cc>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.        See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#include <config.h>
-+#include <common.h>
-+#include <lcd.h>
-+
-+#include <asm/io.h>               /* virt_to_phys() */
-+#include <asm/jz4740.h>
-+
-+#include "nanonote_gpm940b0.h"
-+
-+#define align2(n) (n)=((((n)+1)>>1)<<1)
-+#define align4(n) (n)=((((n)+3)>>2)<<2)
-+#define align8(n) (n)=((((n)+7)>>3)<<3)
-+
-+struct jzfb_info {
-+      unsigned int cfg;       /* panel mode and pin usage etc. */
-+      unsigned int w;
-+      unsigned int h;
-+      unsigned int bpp;       /* bit per pixel */
-+      unsigned int fclk;      /* frame clk */
-+      unsigned int hsw;       /* hsync width, in pclk */
-+      unsigned int vsw;       /* vsync width, in line count */
-+      unsigned int elw;       /* end of line, in pclk */
-+      unsigned int blw;       /* begin of line, in pclk */
-+      unsigned int efw;       /* end of frame, in line count */
-+      unsigned int bfw;       /* begin of frame, in line count */
-+};
-+
-+static struct jzfb_info jzfb = {
-+      MODE_8BIT_SERIAL_TFT | PCLK_N | HSYNC_N | VSYNC_N,
-+      320, 240, 32, 70, 1, 1, 273, 140, 1, 20
-+};
-+
-+vidinfo_t panel_info = {
-+      320, 240, LCD_BPP,
-+};
-+
-+void *lcd_base;
-+void *lcd_console_address;
-+int lcd_line_length;
-+int lcd_color_fg;
-+int lcd_color_bg;
-+short console_col;
-+short console_row;
-+
-+static int jz_lcd_init_mem(void *lcdbase, vidinfo_t *vid)
-+{
-+      u_long palette_mem_size;
-+      struct jz_fb_info *fbi = &vid->jz_fb;
-+      int fb_size = vid->vl_row * (vid->vl_col * NBITS (vid->vl_bpix)) / 8;
-+
-+      fbi->screen = (u_long)lcdbase;
-+      fbi->palette_size = 256;
-+      palette_mem_size = fbi->palette_size * sizeof(u16);
-+
-+      debug("jz_lcd.c palette_mem_size = 0x%08lx\n", (u_long) palette_mem_size);
-+      /* locate palette and descs at end of page following fb */
-+      fbi->palette = (u_long)lcdbase + fb_size + PAGE_SIZE - palette_mem_size;
-+
-+      return 0;
-+}
-+
-+static void jz_lcd_desc_init(vidinfo_t *vid)
-+{
-+      struct jz_fb_info * fbi;
-+      fbi = &vid->jz_fb;
-+      fbi->dmadesc_fblow = (struct jz_fb_dma_descriptor *)((unsigned int)fbi->palette - 3*16);
-+      fbi->dmadesc_fbhigh = (struct jz_fb_dma_descriptor *)((unsigned int)fbi->palette - 2*16);
-+      fbi->dmadesc_palette = (struct jz_fb_dma_descriptor *)((unsigned int)fbi->palette - 1*16);
-+
-+      #define BYTES_PER_PANEL  (vid->vl_col * vid->vl_row * NBITS(vid->vl_bpix) / 8)
-+
-+      /* populate descriptors */
-+      fbi->dmadesc_fblow->fdadr = virt_to_phys(fbi->dmadesc_fblow);
-+      fbi->dmadesc_fblow->fsadr = virt_to_phys((void *)(fbi->screen + BYTES_PER_PANEL));
-+      fbi->dmadesc_fblow->fidr  = 0;
-+      fbi->dmadesc_fblow->ldcmd = BYTES_PER_PANEL / 4 ;
-+
-+      fbi->fdadr1 = virt_to_phys(fbi->dmadesc_fblow); /* only used in dual-panel mode */
-+
-+      fbi->dmadesc_fbhigh->fsadr = virt_to_phys((void *)fbi->screen);
-+      fbi->dmadesc_fbhigh->fidr = 0;
-+      fbi->dmadesc_fbhigh->ldcmd =  BYTES_PER_PANEL / 4; /* length in word */
-+
-+      fbi->dmadesc_palette->fsadr = virt_to_phys((void *)fbi->palette);
-+      fbi->dmadesc_palette->fidr  = 0;
-+      fbi->dmadesc_palette->ldcmd = (fbi->palette_size * 2)/4 | (1<<28);
-+
-+      if(NBITS(vid->vl_bpix) < 12) {
-+              /* assume any mode with <12 bpp is palette driven */
-+              fbi->dmadesc_palette->fdadr = virt_to_phys(fbi->dmadesc_fbhigh);
-+              fbi->dmadesc_fbhigh->fdadr = virt_to_phys(fbi->dmadesc_palette);
-+              /* flips back and forth between pal and fbhigh */
-+              fbi->fdadr0 = virt_to_phys(fbi->dmadesc_palette);
-+      } else {
-+              /* palette shouldn't be loaded in true-color mode */
-+              fbi->dmadesc_fbhigh->fdadr = virt_to_phys((void *)fbi->dmadesc_fbhigh);
-+              fbi->fdadr0 = virt_to_phys(fbi->dmadesc_fbhigh); /* no pal just fbhigh */
-+      }
-+}
-+
-+static int  jz_lcd_hw_init(vidinfo_t *vid)
-+{
-+      struct jz_fb_info *fbi = &vid->jz_fb;
-+      unsigned int val = 0;
-+      unsigned int pclk;
-+      unsigned int stnH;
-+      int pll_div;
-+
-+      /* Setting Control register */
-+      switch (jzfb.bpp) {
-+      case 1:
-+              val |= LCD_CTRL_BPP_1;
-+              break;
-+      case 2:
-+              val |= LCD_CTRL_BPP_2;
-+              break;
-+      case 4:
-+              val |= LCD_CTRL_BPP_4;
-+              break;
-+      case 8:
-+              val |= LCD_CTRL_BPP_8;
-+              break;
-+      case 15:
-+              val |= LCD_CTRL_RGB555;
-+      case 16:
-+              val |= LCD_CTRL_BPP_16;
-+              break;
-+      case 17 ... 32:
-+              val |= LCD_CTRL_BPP_18_24;      /* target is 4bytes/pixel */
-+              break;
-+
-+      default:
-+              printf("jz_lcd.c The BPP %d is not supported\n", jzfb.bpp);
-+              val |= LCD_CTRL_BPP_16;
-+              break;
-+      }
-+
-+      switch (jzfb.cfg & MODE_MASK) {
-+      case MODE_STN_MONO_DUAL:
-+      case MODE_STN_COLOR_DUAL:
-+      case MODE_STN_MONO_SINGLE:
-+      case MODE_STN_COLOR_SINGLE:
-+              switch (jzfb.bpp) {
-+              case 1:
-+                      /* val |= LCD_CTRL_PEDN; */
-+              case 2:
-+                      val |= LCD_CTRL_FRC_2;
-+                      break;
-+              case 4:
-+                      val |= LCD_CTRL_FRC_4;
-+                      break;
-+              case 8:
-+              default:
-+                      val |= LCD_CTRL_FRC_16;
-+                      break;
-+              }
-+              break;
-+      }
-+
-+      val |= LCD_CTRL_BST_16;         /* Burst Length is 16WORD=64Byte */
-+      val |= LCD_CTRL_OFUP;           /* OutFIFO underrun protect */
-+
-+      switch (jzfb.cfg & MODE_MASK) {
-+      case MODE_STN_MONO_DUAL:
-+      case MODE_STN_COLOR_DUAL:
-+      case MODE_STN_MONO_SINGLE:
-+      case MODE_STN_COLOR_SINGLE:
-+              switch (jzfb.cfg & STN_DAT_PINMASK) {
-+              case STN_DAT_PIN1:
-+                      /* Do not adjust the hori-param value. */
-+                      break;
-+              case STN_DAT_PIN2:
-+                      align2(jzfb.hsw);
-+                      align2(jzfb.elw);
-+                      align2(jzfb.blw);
-+                      break;
-+              case STN_DAT_PIN4:
-+                      align4(jzfb.hsw);
-+                      align4(jzfb.elw);
-+                      align4(jzfb.blw);
-+                      break;
-+              case STN_DAT_PIN8:
-+                      align8(jzfb.hsw);
-+                      align8(jzfb.elw);
-+                      align8(jzfb.blw);
-+                      break;
-+              }
-+              break;
-+      }
-+
-+      REG_LCD_CTRL = val;
-+
-+      switch (jzfb.cfg & MODE_MASK) {
-+      case MODE_STN_MONO_DUAL:
-+      case MODE_STN_COLOR_DUAL:
-+      case MODE_STN_MONO_SINGLE:
-+      case MODE_STN_COLOR_SINGLE:
-+              if (((jzfb.cfg & MODE_MASK) == MODE_STN_MONO_DUAL) ||
-+                  ((jzfb.cfg & MODE_MASK) == MODE_STN_COLOR_DUAL))
-+                      stnH = jzfb.h >> 1;
-+              else
-+                      stnH = jzfb.h;
-+
-+              REG_LCD_VSYNC = (0 << 16) | jzfb.vsw;
-+              REG_LCD_HSYNC = ((jzfb.blw+jzfb.w) << 16) | (jzfb.blw+jzfb.w+jzfb.hsw);
-+
-+              /* Screen setting */
-+              REG_LCD_VAT = ((jzfb.blw + jzfb.w + jzfb.hsw + jzfb.elw) << 16) | (stnH + jzfb.vsw + jzfb.bfw + jzfb.efw);
-+              REG_LCD_DAH = (jzfb.blw << 16) | (jzfb.blw + jzfb.w);
-+              REG_LCD_DAV = (0 << 16) | (stnH);
-+
-+              /* AC BIAs signal */
-+              REG_LCD_PS = (0 << 16) | (stnH+jzfb.vsw+jzfb.efw+jzfb.bfw);
-+
-+              break;
-+
-+      case MODE_TFT_GEN:
-+      case MODE_TFT_SHARP:
-+      case MODE_TFT_CASIO:
-+      case MODE_TFT_SAMSUNG:
-+      case MODE_8BIT_SERIAL_TFT:
-+      case MODE_TFT_18BIT:
-+              REG_LCD_VSYNC = (0 << 16) | jzfb.vsw;
-+              REG_LCD_HSYNC = (0 << 16) | jzfb.hsw;
-+              REG_LCD_DAV =((jzfb.vsw+jzfb.bfw) << 16) | (jzfb.vsw +jzfb.bfw+jzfb.h);
-+              REG_LCD_DAH = ((jzfb.hsw + jzfb.blw) << 16) | (jzfb.hsw + jzfb.blw + jzfb.w );
-+              REG_LCD_VAT = (((jzfb.blw + jzfb.w + jzfb.elw + jzfb.hsw)) << 16) \
-+                      | (jzfb.vsw + jzfb.bfw + jzfb.h + jzfb.efw);
-+              break;
-+      }
-+
-+      switch (jzfb.cfg & MODE_MASK) {
-+      case MODE_TFT_SAMSUNG:
-+      {
-+              unsigned int total, tp_s, tp_e, ckv_s, ckv_e;
-+              unsigned int rev_s, rev_e, inv_s, inv_e;
-+
-+              pclk = val * (jzfb.w + jzfb.hsw + jzfb.elw + jzfb.blw) *
-+                      (jzfb.h + jzfb.vsw + jzfb.efw + jzfb.bfw); /* Pixclk */
-+
-+              total = jzfb.blw + jzfb.w + jzfb.elw + jzfb.hsw;
-+              tp_s = jzfb.blw + jzfb.w + 1;
-+              tp_e = tp_s + 1;
-+              ckv_s = tp_s - pclk/(1000000000/4100);
-+              ckv_e = tp_s + total;
-+              rev_s = tp_s - 11;      /* -11.5 clk */
-+              rev_e = rev_s + total;
-+              inv_s = tp_s;
-+              inv_e = inv_s + total;
-+              REG_LCD_CLS = (tp_s << 16) | tp_e;
-+              REG_LCD_PS = (ckv_s << 16) | ckv_e;
-+              REG_LCD_SPL = (rev_s << 16) | rev_e;
-+              REG_LCD_REV = (inv_s << 16) | inv_e;
-+              jzfb.cfg |= STFT_REVHI | STFT_SPLHI;
-+              break;
-+      }
-+      case MODE_TFT_SHARP:
-+      {
-+              unsigned int total, cls_s, cls_e, ps_s, ps_e;
-+              unsigned int spl_s, spl_e, rev_s, rev_e;
-+              total = jzfb.blw + jzfb.w + jzfb.elw + jzfb.hsw;
-+              spl_s = 1;
-+              spl_e = spl_s + 1;
-+              cls_s = 0;
-+              cls_e = total - 60;     /* > 4us (pclk = 80ns) */
-+              ps_s = cls_s;
-+              ps_e = cls_e;
-+              rev_s = total - 40;     /* > 3us (pclk = 80ns) */
-+              rev_e = rev_s + total;
-+              jzfb.cfg |= STFT_PSHI; 
-+              REG_LCD_SPL = (spl_s << 16) | spl_e;
-+              REG_LCD_CLS = (cls_s << 16) | cls_e;
-+              REG_LCD_PS = (ps_s << 16) | ps_e;
-+              REG_LCD_REV = (rev_s << 16) | rev_e;
-+              break;
-+      }
-+      case MODE_TFT_CASIO:
-+              break;
-+      }
-+
-+      /* Configure the LCD panel */
-+      REG_LCD_CFG = jzfb.cfg;
-+
-+      /* Timing setting */
-+      __cpm_stop_lcd();
-+
-+      val = jzfb.fclk; /* frame clk */
-+      if ( (jzfb.cfg & MODE_MASK) != MODE_8BIT_SERIAL_TFT) {
-+              pclk = val * (jzfb.w + jzfb.hsw + jzfb.elw + jzfb.blw) *
-+                      (jzfb.h + jzfb.vsw + jzfb.efw + jzfb.bfw); /* Pixclk */
-+      } else {
-+              /* serial mode: Hsync period = 3*Width_Pixel */
-+              pclk = val * (jzfb.w*3 + jzfb.hsw + jzfb.elw + jzfb.blw) *
-+                      (jzfb.h + jzfb.vsw + jzfb.efw + jzfb.bfw); /* Pixclk */
-+      }
-+
-+      if (((jzfb.cfg & MODE_MASK) == MODE_STN_COLOR_SINGLE) ||
-+          ((jzfb.cfg & MODE_MASK) == MODE_STN_COLOR_DUAL))
-+              pclk = (pclk * 3);
-+
-+      if (((jzfb.cfg & MODE_MASK) == MODE_STN_COLOR_SINGLE) ||
-+          ((jzfb.cfg & MODE_MASK) == MODE_STN_COLOR_DUAL) ||
-+          ((jzfb.cfg & MODE_MASK) == MODE_STN_MONO_SINGLE) ||
-+          ((jzfb.cfg & MODE_MASK) == MODE_STN_MONO_DUAL))
-+              pclk = pclk >> ((jzfb.cfg & STN_DAT_PINMASK) >> 4);
-+
-+      if (((jzfb.cfg & MODE_MASK) == MODE_STN_COLOR_DUAL) ||
-+          ((jzfb.cfg & MODE_MASK) == MODE_STN_MONO_DUAL))
-+              pclk >>= 1;
-+
-+      pll_div = (REG_CPM_CPCCR & CPM_CPCCR_PCS); /* clock source,0:pllout/2 1: pllout */
-+      pll_div = pll_div ? 1 : 2;
-+      val = (__cpm_get_pllout() / pll_div) / pclk;
-+      val--;
-+      if (val > 0x1ff) {
-+              printf("CPM_LPCDR too large, set it to 0x1ff\n");
-+              val = 0x1ff;
-+      }
-+      __cpm_set_pixdiv(val);
-+
-+      val = pclk * 3 ;        /* LCDClock > 2.5*Pixclock */
-+      if (val > 150000000) {
-+              printf("Warning: LCDClock=%d\n, LCDClock must less or equal to 150MHz.\n", val);
-+              printf("Change LCDClock to 150MHz\n");
-+              val = 150000000;
-+      }
-+      val = (__cpm_get_pllout() / pll_div) / val;
-+      val--;
-+      if (val > 0x1f) {
-+              printf("CPM_CPCCR.LDIV too large, set it to 0x1f\n");
-+              val = 0x1f;
-+      }
-+      __cpm_set_ldiv( val );
-+      REG_CPM_CPCCR |= CPM_CPCCR_CE ; /* update divide */
-+
-+      __cpm_start_lcd();
-+      udelay(1000);
-+
-+      REG_LCD_DA0 = fbi->fdadr0; /* frame descripter*/
-+
-+      if (((jzfb.cfg & MODE_MASK) == MODE_STN_COLOR_DUAL) ||
-+          ((jzfb.cfg & MODE_MASK) == MODE_STN_MONO_DUAL))
-+              REG_LCD_DA1 = fbi->fdadr1; /* frame descripter*/
-+
-+      return 0;
-+}
-+
-+void lcd_ctrl_init (void *lcdbase)
-+{
-+      __lcd_display_pin_init();
-+      __lcd_display_on() ;
-+
-+      jz_lcd_init_mem(lcdbase, &panel_info);
-+      jz_lcd_desc_init(&panel_info);
-+      jz_lcd_hw_init(&panel_info);
-+
-+}
-+
-+/*
-+ * Before enabled lcd controller, lcd registers should be configured correctly.
-+ */
-+void lcd_enable (void)
-+{
-+      REG_LCD_CTRL &= ~(1<<4); /* LCDCTRL.DIS */
-+      REG_LCD_CTRL |= 1<<3;    /* LCDCTRL.ENA*/
-+}
-+
-+void lcd_disable (void)
-+{
-+      REG_LCD_CTRL |= (1<<4);
-+}
-+
-+void lcd_setcolreg (ushort regno, ushort red, ushort green, ushort blue)
-+{
-+}
-+
-+void lcd_initcolregs (void)
-+{
-+}
-diff --git a/drivers/video/nanonote_gpm940b0.h b/drivers/video/nanonote_gpm940b0.h
-new file mode 100644
-index 0000000..efe491e
---- /dev/null
-+++ b/drivers/video/nanonote_gpm940b0.h
-@@ -0,0 +1,135 @@
-+/*
-+ * JzRISC lcd controller
-+ *
-+ * Xiangfu Liu <xiangfu@sharism.cc>
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of
-+ * the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.        See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-+ * MA 02111-1307 USA
-+ */
-+
-+#ifndef __QI_LB60_GPM940B0_H__
-+#define __QI_LB60_GPM940B0_H__
-+
-+struct lcd_desc{
-+      unsigned int next_desc; /* LCDDAx */
-+      unsigned int databuf;   /* LCDSAx */
-+      unsigned int frame_id;  /* LCDFIDx */ 
-+      unsigned int cmd;       /* LCDCMDx */
-+};
-+
-+#define MODE_MASK             0x0f
-+#define MODE_TFT_GEN          0x00
-+#define MODE_TFT_SHARP                0x01
-+#define MODE_TFT_CASIO                0x02
-+#define MODE_TFT_SAMSUNG      0x03
-+#define MODE_CCIR656_NONINT   0x04
-+#define MODE_CCIR656_INT      0x05
-+#define MODE_STN_COLOR_SINGLE 0x08
-+#define MODE_STN_MONO_SINGLE  0x09
-+#define MODE_STN_COLOR_DUAL   0x0a
-+#define MODE_STN_MONO_DUAL    0x0b
-+#define MODE_8BIT_SERIAL_TFT    0x0c
-+
-+#define MODE_TFT_18BIT          (1<<7)
-+
-+#define STN_DAT_PIN1  (0x00 << 4)
-+#define STN_DAT_PIN2  (0x01 << 4)
-+#define STN_DAT_PIN4  (0x02 << 4)
-+#define STN_DAT_PIN8  (0x03 << 4)
-+#define STN_DAT_PINMASK       STN_DAT_PIN8
-+
-+#define STFT_PSHI     (1 << 15)
-+#define STFT_CLSHI    (1 << 14)
-+#define STFT_SPLHI    (1 << 13)
-+#define STFT_REVHI    (1 << 12)
-+
-+#define SYNC_MASTER   (0 << 16)
-+#define SYNC_SLAVE    (1 << 16)
-+
-+#define DE_P          (0 << 9)
-+#define DE_N          (1 << 9)
-+
-+#define PCLK_P                (0 << 10)
-+#define PCLK_N                (1 << 10)
-+
-+#define HSYNC_P               (0 << 11)
-+#define HSYNC_N               (1 << 11)
-+
-+#define VSYNC_P               (0 << 8)
-+#define VSYNC_N               (1 << 8)
-+
-+#define DATA_NORMAL   (0 << 17)
-+#define DATA_INVERSE  (1 << 17)
-+
-+
-+/* Jz LCDFB supported I/O controls. */
-+#define FBIOSETBACKLIGHT      0x4688
-+#define FBIODISPON            0x4689
-+#define FBIODISPOFF           0x468a
-+#define FBIORESET             0x468b
-+#define FBIOPRINT_REG         0x468c
-+
-+/*
-+ * LCD panel specific definition
-+ */
-+#define MODE  (0xc9)          /* 8bit serial RGB */
-+
-+#define __spi_write_reg1(reg, val)            \
-+do {                                          \
-+      unsigned char no;                       \
-+      unsigned short value;                   \
-+      unsigned char a=reg;                    \
-+      unsigned char b=val;                    \
-+      __gpio_set_pin(SPEN);                   \
-+      __gpio_set_pin(SPCK);                   \
-+      __gpio_clear_pin(SPDA);                 \
-+      __gpio_clear_pin(SPEN);                 \
-+      value=((a<<8)|(b&0xFF));                \
-+      for(no=0;no<16;no++)                    \
-+      {                                       \
-+              __gpio_clear_pin(SPCK);         \
-+              if((value&0x8000)==0x8000)      \
-+                      __gpio_set_pin(SPDA);   \
-+              else                            \
-+                      __gpio_clear_pin(SPDA); \
-+              __gpio_set_pin(SPCK);           \
-+              value=(value<<1);               \
-+      }                                       \
-+      __gpio_set_pin(SPEN);                   \
-+} while (0)
-+
-+#define __lcd_display_pin_init()              \
-+do {                                          \
-+      __cpm_start_tcu();                      \
-+      __gpio_as_output(SPEN); /* use SPDA */  \
-+      __gpio_as_output(SPCK); /* use SPCK */  \
-+      __gpio_as_output(SPDA); /* use SPDA */  \
-+} while (0)
-+
-+#define __lcd_display_on()                    \
-+do {                                          \
-+      __spi_write_reg1(0x05, 0x1e);           \
-+      __spi_write_reg1(0x05, 0x5e);           \
-+      __spi_write_reg1(0x07, 0x8d);           \
-+      __spi_write_reg1(0x13, 0x01);           \
-+      __spi_write_reg1(0x05, 0x5f);           \
-+} while (0)
-+
-+#define __lcd_display_off()                   \
-+do {                                          \
-+      __spi_write_reg1(0x05, 0x5e);           \
-+} while (0)
-+
-+#endif /* __QI_LB60_GPM940B0_H__ */
-diff --git a/include/configs/qi_lb60.h b/include/configs/qi_lb60.h
-index 52b370c..d3e78ad 100644
---- a/include/configs/qi_lb60.h
-+++ b/include/configs/qi_lb60.h
-@@ -32,6 +32,13 @@
-  * Miscellaneous configurable options
-  */
- #define CONFIG_NANONOTE
-+
-+#define CONFIG_LCD
-+#define CONFIG_SYS_WHITE_ON_BLACK
-+#define LCD_BPP                       LCD_COLOR32
-+#define CONFIG_VIDEO_GPM940B0
-+
-+
- #define CONFIG_JZ4740_MMC
- #define CONFIG_MMC            1
- #define CONFIG_FAT            1
-diff --git a/include/lcd.h b/include/lcd.h
-index 42070d7..6de5482 100644
---- a/include/lcd.h
-+++ b/include/lcd.h
-@@ -263,8 +263,44 @@ typedef struct vidinfo {
- void init_panel_info(vidinfo_t *vid);
--#else
-+#elif defined(CONFIG_JZSOC)
-+/*
-+ * LCD controller stucture for JZSOC: JZ4740
-+ */
-+struct jz_fb_dma_descriptor {
-+       u_long  fdadr;          /* Frame descriptor address register */
-+       u_long  fsadr;          /* Frame source address register */
-+       u_long  fidr;           /* Frame ID register */
-+       u_long  ldcmd;          /* Command register */
-+};
-+
-+/*
-+ * Jz LCD info
-+ */
-+struct jz_fb_info {
-+
-+       u_long  fdadr0; /* physical address of frame/palette descriptor */
-+       u_long  fdadr1; /* physical address of frame descriptor */
-+
-+       /* DMA descriptors */
-+       struct  jz_fb_dma_descriptor *  dmadesc_fblow;
-+       struct  jz_fb_dma_descriptor *  dmadesc_fbhigh;
-+       struct  jz_fb_dma_descriptor *  dmadesc_palette;
-+       u_long  screen;         /* address of frame buffer */
-+       u_long  palette;        /* address of palette memory */
-+       u_int   palette_size;
-+};
-+typedef struct vidinfo {
-+       ushort  vl_col;         /* Number of columns (i.e. 640) */
-+       ushort  vl_row;         /* Number of rows (i.e. 480) */
-+       u_char  vl_bpix;        /* Bits per pixel, 0 = 1, 1 = 2, 2 = 4, 3 = 8 */
-+
-+       struct jz_fb_info jz_fb;
-+} vidinfo_t;
-+
-+extern vidinfo_t panel_info;
-+#else
- typedef struct vidinfo {
-       ushort  vl_col;         /* Number of columns (i.e. 160) */
-       ushort  vl_row;         /* Number of rows (i.e. 100) */
-@@ -318,6 +354,7 @@ void lcd_show_board_info(void);
- #define LCD_COLOR4    2
- #define LCD_COLOR8    3
- #define LCD_COLOR16   4
-+#define LCD_COLOR32   5
- /*----------------------------------------------------------------------*/
- #if defined(CONFIG_LCD_INFO_BELOW_LOGO)
-@@ -369,7 +406,7 @@ void lcd_show_board_info(void);
- # define CONSOLE_COLOR_GREY   14
- # define CONSOLE_COLOR_WHITE  15      /* Must remain last / highest   */
--#else
-+#elif LCD_BPP == LCD_COLOR16
- /*
-  * 16bpp color definitions
-@@ -377,6 +414,15 @@ void lcd_show_board_info(void);
- # define CONSOLE_COLOR_BLACK  0x0000
- # define CONSOLE_COLOR_WHITE  0xffff  /* Must remain last / highest   */
-+#elif LCD_BPP == LCD_COLOR32
-+/*
-+ * 18,24,32 bpp color definitions
-+ */
-+# define CONSOLE_COLOR_BLACK   0x00000000
-+# define CONSOLE_COLOR_WHITE   0xffffffff /* Must remain last / highest */
-+
-+#else
-+
- #endif /* color definitions */
- /************************************************************************/
-@@ -406,7 +452,7 @@ void lcd_show_board_info(void);
- #if LCD_BPP == LCD_MONOCHROME
- # define COLOR_MASK(c)                ((c)      | (c) << 1 | (c) << 2 | (c) << 3 | \
-                                (c) << 4 | (c) << 5 | (c) << 6 | (c) << 7)
--#elif (LCD_BPP == LCD_COLOR8) || (LCD_BPP == LCD_COLOR16)
-+#elif (LCD_BPP == LCD_COLOR8) || (LCD_BPP == LCD_COLOR16) || (LCD_BPP == LCD_COLOR32)
- # define COLOR_MASK(c)                (c)
- #else
- # error Unsupported LCD BPP.
--- 
-1.7.9.5
-
diff --git a/package/boot/uboot-xburst/patches/0006-enable-silent-console.patch b/package/boot/uboot-xburst/patches/0006-enable-silent-console.patch
deleted file mode 100644 (file)
index ebd6a6a..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-From 5eb4d4c598f2806bd1b3d1140e917bfead7851ad Mon Sep 17 00:00:00 2001
-From: Xiangfu <xiangfu@openmobilefree.net>
-Date: Wed, 10 Oct 2012 23:51:26 +0800
-Subject: [PATCH 6/6] enable silent console
-
----
- common/console.c          |   16 ++++++++++++++++
- include/configs/qi_lb60.h |    2 ++
- 2 files changed, 18 insertions(+)
-
-diff --git a/common/console.c b/common/console.c
-index 1177f7d..e8a2078 100644
---- a/common/console.c
-+++ b/common/console.c
-@@ -685,6 +685,14 @@ done:
-       gd->flags |= GD_FLG_DEVINIT;    /* device initialization completed */
-+#ifdef CONFIG_SILENT_CONSOLE
-+      /* Check one more time the contents of the silent environment
-+       * variable, because if the environment is loaded from NAND it was
-+       * not available when console_init_f() was called */
-+      if (getenv("silent") != NULL)
-+              gd->flags |= GD_FLG_SILENT;
-+#endif
-+
-       stdio_print_current_devices();
- #ifdef CONFIG_SYS_CONSOLE_ENV_OVERWRITE
-@@ -760,6 +768,14 @@ int console_init_r(void)
-       gd->flags |= GD_FLG_DEVINIT;    /* device initialization completed */
-+#ifdef CONFIG_SILENT_CONSOLE
-+      /* Check one more time the contents of the silent environment
-+       * variable, because if the environment is loaded from NAND it was
-+       * not available when console_init_f() was called */
-+      if (getenv("silent") != NULL)
-+              gd->flags |= GD_FLG_SILENT;
-+#endif
-+
-       stdio_print_current_devices();
-       /* Setting environment variables */
-diff --git a/include/configs/qi_lb60.h b/include/configs/qi_lb60.h
-index d3e78ad..a3534ff 100644
---- a/include/configs/qi_lb60.h
-+++ b/include/configs/qi_lb60.h
-@@ -102,6 +102,8 @@
- #define CONFIG_SYS_NO_FLASH
- #define CONFIG_SYS_FLASH_BASE 0 /* init flash_base as 0 */
-+#define CONFIG_SILENT_CONSOLE         1       /* Enable silent console */
-+
- /*
-  * Command line configuration
-  */
--- 
-1.7.9.5
-
index 99d85ab0491ac04c2dbbfbed61884c805ace9253..bd9a1a10f29618d79fb943486bba8a96b7e380ce 100644 (file)
@@ -446,6 +446,7 @@ endef
 
 $(eval $(call KernelPackage,ne2k-pci))
 
+
 define KernelPackage/e1000
   SUBMENU:=$(NETWORK_DEVICES_MENU)
   TITLE:=Intel(R) PRO/1000 PCI cards kernel support
index c4a9b2d15fd56c7331726cfb10e15c7acc673e8c..d583887602d2e3b337a9f878ef0aa7e58b36d8c2 100644 (file)
@@ -85,12 +85,20 @@ country AT: DFS-ETSI
        # 60 GHz band channels 1-4, ref: Etsi En 302 567
        (57000 - 66000 @ 2160), (40)
 
+# Source:
+# https://www.legislation.gov.au/Details/F2016C00432
+# Both DFS-ETSI and DFS-FCC are acceptable per AS/NZS 4268 Appendix B.
+# The EIRP for DFS bands can be increased by 3dB if TPC is implemented.
+# In order to allow 80MHz operation between 5650-5730MHz the upper boundary
+# of this more restrictive band has been shifted up by 5MHz from 5725MHz.
 country AU: DFS-ETSI
-       (2402 - 2482 @ 40), (20)
-       (5170 - 5250 @ 80), (17), AUTO-BW
-       (5250 - 5330 @ 80), (24), DFS, AUTO-BW
-       (5490 - 5710 @ 160), (24), DFS
-       (5735 - 5835 @ 80), (30)
+       (2400 - 2483.5 @ 40), (36)
+       (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW
+       (5250 - 5350 @ 80), (20), NO-OUTDOOR, AUTO-BW, DFS
+       (5470 - 5600 @ 80), (27), DFS
+       (5650 - 5730 @ 80), (27), DFS
+       (5730 - 5850 @ 80), (36)
+       (57000 - 66000 @ 2160), (43), NO-OUTDOOR
 
 country AW: DFS-ETSI
        (2402 - 2482 @ 40), (20)
@@ -230,9 +238,9 @@ country BZ: DFS-JP
 
 country CA: DFS-FCC
        (2402 - 2472 @ 40), (30)
-       (5170 - 5250 @ 80), (17), AUTO-BW
-       (5250 - 5330 @ 80), (24), DFS, AUTO-BW
-       (5490 - 5600 @ 80), (24), DFS
+       (5150 - 5250 @ 80), (23), AUTO-BW
+       (5250 - 5350 @ 80), (24), DFS, AUTO-BW
+       (5470 - 5600 @ 80), (24), DFS
        (5650 - 5730 @ 80), (24), DFS
        (5735 - 5835 @ 80), (30)
 
@@ -580,11 +588,10 @@ country IL: DFS-ETSI
        (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
        (5250 - 5350 @ 80), (200 mW), NO-OUTDOOR, DFS, AUTO-BW
 
-country IN: DFS-JP
+country IN:
        (2402 - 2482 @ 40), (20)
-       (5170 - 5250 @ 80), (20), AUTO-BW
-       (5250 - 5330 @ 80), (20), DFS, AUTO-BW
-       (5735 - 5835 @ 80), (20)
+       (5150 - 5350 @ 160), (23)
+       (5725 - 5875 @ 80), (23)
 
 country IR: DFS-JP
        (2402 - 2482 @ 40), (20)
index 7d517a11ebbddd8de323729a1b49f724f327f17e..403069b8166aeb323a716e9335753b9880b46fa5 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=om-watchdog
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_VERSION:=1
 
 include $(INCLUDE_DIR)/package.mk
@@ -24,12 +24,6 @@ define Package/om-watchdog/description
  This package contains the hw watchdog script for the OM1P and OM2P device.
 endef
 
-define Build/Prepare
-endef
-
-define Build/Compile
-endef
-
 define Build/Compile
 endef
 
@@ -40,6 +34,4 @@ define Package/om-watchdog/install
        $(INSTALL_BIN) ./files/om-watchdog $(1)/sbin/om-watchdog
 endef
 
-
 $(eval $(call BuildPackage,om-watchdog))
-
index 4ba6beafb63edc9cfa80995db76ab421b10d08ec..906ee665fd85be7a8e9f42fe1d4679258d17ff71 100644 (file)
@@ -16,37 +16,46 @@ get_gpio() {
                local board=$(ar71xx_board_name)
 
                case "$board" in
-                       "om2p" | \
-                       "om2pv4" | \
-                       "om2p-hs" | \
-                       "om2p-hsv2" | \
-                       "om2p-hsv3" | \
-                       "om2p-hsv4" | \
-                       "om5p-acv2")
-                               return 12
-                               ;;
-                       "om2pv2" | \
-                       "om2p-lc")
-                               return 26
-                               ;;
-                       "om5p" | \
-                       "om5p-an")
-                               return 11
-                               ;;
-                       "om5p-ac")
-                               return 17
-                               ;;
-                       "mr600v2")
-                               return 15
-                               ;;
-                       "mr900" | \
-                       "mr900v2" | \
-                       "mr1750" | \
-                       "mr1750v2" | \
-                       "a40" | \
-                       "a60")
-                               return 16
-                               ;;
+               "a40"|\
+               "a60"|\
+               "mr1750"|\
+               "mr1750v2"|\
+               "mr900"|\
+               "mr900v2")
+                       return 16
+                       ;;
+               "mr600v2")
+                       return 15
+                       ;;
+               "om2p"|\
+               "om2p-hs"|\
+               "om2p-hsv2"|\
+               "om2p-hsv3"|\
+               "om2p-hsv4"|\
+               "om2pv4"|\
+               "om5p-acv2")
+                       return 12
+                       ;;
+               "om2p-lc"|\
+               "om2pv2")
+                       return 26
+                       ;;
+               "om5p"|\
+               "om5p-an")
+                       return 11
+                       ;;
+               "om5p-ac")
+                       return 17
+                       ;;
+               esac
+       elif [ -r /lib/ramips.sh ]; then
+               . /lib/ramips.sh
+               local board=$(ramips_board_name)
+
+               case "$board" in
+               "rut5xx")
+                       return 11
+                       ;;
                esac
        else
                #we assume it is om1p in this case
index 2c4c626236671170e8842d8f2c814a84f7099d37..3eefa2e012d3415dacf065cef79348af3e4e2867 100644 (file)
@@ -5,9 +5,9 @@ PKG_RELEASE=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(LEDE_GIT)/project/uclient.git
-PKG_SOURCE_DATE:=2017-09-06
-PKG_SOURCE_VERSION:=24d6eded73dec427fc4a3a20cc73c94227f59c31
-PKG_MIRROR_HASH:=e884ae0c859baa20a5c7f3d924022f8e1f57d28474dbe5fed1efb8fb97790dd0
+PKG_SOURCE_DATE:=2017-11-02
+PKG_SOURCE_VERSION:=4b87d83160fec70d50b7fcd736a8c538c28a016c
+PKG_MIRROR_HASH:=4bbb4d5f295ebdcd67fec87a6794168bea2176a42cb2907c47d8566fb33dafb3
 CMAKE_INSTALL:=1
 
 PKG_BUILD_DEPENDS:=ustream-ssl
diff --git a/package/luci/.buildpath b/package/luci/.buildpath
deleted file mode 100644 (file)
index 81fa646..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<buildpath>
-       <buildpathentry kind="src" path="src"/>
-       <buildpathentry kind="con" path="org.eclipse.dltk.launching.INTERPRETER_CONTAINER"/>
-</buildpath>
diff --git a/package/luci/.cproject b/package/luci/.cproject
deleted file mode 100644 (file)
index e1a4774..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?fileVersion 4.0.0?>
-
-<cproject>
-<storageModule moduleId="org.eclipse.cdt.core.settings">
-<cconfiguration id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341">
-<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-<configuration artifactName="luci" buildProperties="" description="" id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341" name="Preference Configuration" parent="org.eclipse.cdt.build.core.prefbase.cfg">
-<folderInfo id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341." name="/" resourcePath="">
-<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.407447051" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
-<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.407447051.1470931541" name=""/>
-<builder id="org.eclipse.cdt.build.core.settings.default.builder.823611263" keepEnvironmentInBuildfile="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
-<tool id="org.eclipse.cdt.build.core.settings.holder.libs.1685234798" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
-<tool id="org.eclipse.cdt.build.core.settings.holder.570824141" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
-<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.491129717" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
-<listOptionValue builtIn="false" value="/usr/include/lua5.1"/>
-<listOptionValue builtIn="false" value="/usr/include"/>
-</option>
-<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.858094059" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
-</tool>
-<tool id="org.eclipse.cdt.build.core.settings.holder.344617955" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
-<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.564526987" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
-<listOptionValue builtIn="false" value="/usr/include/lua5.1"/>
-<listOptionValue builtIn="false" value="/usr/include"/>
-</option>
-<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1426860237" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
-</tool>
-<tool id="org.eclipse.cdt.build.core.settings.holder.869454750" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
-<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.838425449" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
-<listOptionValue builtIn="false" value="/usr/include/lua5.1"/>
-<listOptionValue builtIn="false" value="/usr/include"/>
-</option>
-<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1755775295" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
-</tool>
-</toolChain>
-</folderInfo>
-</configuration>
-</storageModule>
-<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341" moduleId="org.eclipse.cdt.core.settings" name="Preference Configuration">
-<externalSettings/>
-<extensions>
-<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-</extensions>
-</storageModule>
-<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
-<storageModule moduleId="scannerConfiguration">
-<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="makefileGenerator">
-<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<scannerConfigBuildInfo instanceId="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341">
-<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="makefileGenerator">
-<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-</scannerConfigBuildInfo>
-</storageModule>
-</cconfiguration>
-</storageModule>
-<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-<project id="luci.null.949486034" name="luci"/>
-</storageModule>
-</cproject>
diff --git a/package/luci/.project b/package/luci/.project
deleted file mode 100644 (file)
index 11b398b..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-       <name>luci</name>
-       <comment></comment>
-       <projects>
-       </projects>
-       <buildSpec>
-               <buildCommand>
-                       <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
-                       <triggers>clean,full,incremental,</triggers>
-                       <arguments>
-                               <dictionary>
-                                       <key>?name?</key>
-                                       <value></value>
-                               </dictionary>
-                               <dictionary>
-                                       <key>org.eclipse.cdt.make.core.append_environment</key>
-                                       <value>true</value>
-                               </dictionary>
-                               <dictionary>
-                                       <key>org.eclipse.cdt.make.core.autoBuildTarget</key>
-                                       <value>all</value>
-                               </dictionary>
-                               <dictionary>
-                                       <key>org.eclipse.cdt.make.core.buildArguments</key>
-                                       <value></value>
-                               </dictionary>
-                               <dictionary>
-                                       <key>org.eclipse.cdt.make.core.buildCommand</key>
-                                       <value>make</value>
-                               </dictionary>
-                               <dictionary>
-                                       <key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
-                                       <value>clean</value>
-                               </dictionary>
-                               <dictionary>
-                                       <key>org.eclipse.cdt.make.core.contents</key>
-                                       <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
-                               </dictionary>
-                               <dictionary>
-                                       <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
-                                       <value>false</value>
-                               </dictionary>
-                               <dictionary>
-                                       <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
-                                       <value>true</value>
-                               </dictionary>
-                               <dictionary>
-                                       <key>org.eclipse.cdt.make.core.enableFullBuild</key>
-                                       <value>true</value>
-                               </dictionary>
-                               <dictionary>
-                                       <key>org.eclipse.cdt.make.core.fullBuildTarget</key>
-                                       <value>all</value>
-                               </dictionary>
-                               <dictionary>
-                                       <key>org.eclipse.cdt.make.core.stopOnError</key>
-                                       <value>true</value>
-                               </dictionary>
-                               <dictionary>
-                                       <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
-                                       <value>true</value>
-                               </dictionary>
-                       </arguments>
-               </buildCommand>
-               <buildCommand>
-                       <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
-                       <arguments>
-                       </arguments>
-               </buildCommand>
-       </buildSpec>
-       <natures>
-               <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
-               <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
-               <nature>org.eclipse.cdt.core.cnature</nature>
-               <nature>org.eclipse.dltk.lua.core.nature</nature>
-       </natures>
-</projectDescription>
diff --git a/package/luci/CONTRIBUTING.md b/package/luci/CONTRIBUTING.md
deleted file mode 100644 (file)
index e4edf0c..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-# Contributing Guidelines
-
-## Patches and Pull requests:
-
-If you want to contribute a change to LuCI, please either send a patch using git send-email
-or open a "pull request" against the openwrt/luci repository.
-
-Regardless of whether you send a patch or open a pull request, please try to follow these rules:
-
-* Have a useful subject prefixed with the component name
-    (E.g.: "luci-mod-admin-full: fix wifi channel selection on multiple STA networks")
-* Shortly explain the changes made and - if applicable - the reasoning behind them
-* Commit message of each commit should include a Signed-off-by line
-    (See <https://dev.openwrt.org/wiki/SubmittingPatches#a10.Signyourwork>)
-       
-In case you like to send patches by mail, please use the [LuCI mailinglist](https://lists.subsignal.org/mailman/listinfo/luci)
-or the [OpenWrt Development List](https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel).
-
-If you send via the OpenWrt list, include a "[luci]" tag in your subject line.
-For general information on patch submission, follow the [OpenWrt patch submission guideline](https://dev.openwrt.org/wiki/SubmittingPatches).
-
-## Advice on pull requests:
-
-Pull requests are the easiest way to contribute changes to git repos at Github. They are the preferred contribution method, as they offer a nice way for commenting and amending the proposed changes.
-
-* You need a local "fork" of the Github repo.
-* Use a "feature branch" for your changes. That separates the changes in the pull request from your other changes and makes it easy to edit/amend commits in the pull request. Workflow using "feature_x" as the example:
-  - Update your local git fork to the tip (of the master, usually)
-  - Create the feature branch with `git checkout -b feature_x`
-  - Edit changes and commit them locally
-  - Push them to your Github fork by `git push -u origin feature_x`. That creates the "feature_x" branch at your Github fork and sets it as the remote of this branch
-  - When you now visit Github, you should see a proposal to create a pull request
-
-* If you later need to add new commits to the pull request, you can simply commit the changes to the local branch and then use `git push` to automatically update the pull request.
-
-* If you need to change something in the existing pull request (e.g. to add a missing signed-off-by line to the commit message), you can use `git push -f` to overwrite the original commits. That is easy and safe when using a feature branch. Example workflow:
-  - Checkout the feature branch by `git checkout feature_x`
-  - Edit changes and commit them locally. If you are just updating the commit message in the last commit, you can use `git commit --amend` to do that
-  - If you added several new commits or made other changes that require cleaning up, you can use `git rebase -i HEAD~X` (X = number of commits to edit) to possibly squash some commits
-  - Push the changed commits to Github with `git push -f` to overwrite the original commits in the "feature_x" branch with the new ones. The pull request gets automatically updated
-
-## If you have commit access:
-
-* Do NOT use git push --force.
-* Use Pull Requests if you are unsure and to suggest changes to other developers.
-
-## Gaining commit access:
-
-* Commit access will be granted to responsible contributors who have made
-  useful pull requests and / or feedback or patches to this repository or
-  OpenWrt in general. Please include your request for commit access in your
-  next pull request or ticket.
-
-## Release Branches:
-
-* Branches named "for-XX.YY" or "luci-X.Y" (e.g. "for-15.05") are release branches.
-* These branches are built with the respective OpenWrt release and are created
-  during the release stabilisation phase.
-* Please ONLY cherry-pick or commit security and bug-fixes to these branches.
-* Do NOT add new packages and do NOT do major upgrades of packages here.
-* If you are unsure if your change is suitable, please use a pull request.
-
diff --git a/package/luci/README.md b/package/luci/README.md
deleted file mode 100644 (file)
index 48863a4..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# OpenWrt luci feed
-
-## Description
-
-This is the OpenWrt "luci"-feed containing LuCI - OpenWrt Configuration Interface.
-
-## Usage
-
-This feed is enabled by default. Your feeds.conf.default (or feeds.conf) should contain a line like:
-```
-src-git luci https://github.com/openwrt/luci.git
-```
-
-To install all its package definitions, run:
-```
-./scripts/feeds update luci
-./scripts/feeds install -a -p luci
-```
-
-## API Reference
-
-You can browse the generated API documentation [directly on Github](http://htmlpreview.github.io/?http://raw.githubusercontent.com/openwrt/luci/master/documentation/api/index.html).
-
-## Development
-
-Documentation for developing and extending LuCI can be found [in the Wiki](https://github.com/openwrt/luci/wiki)
-
-## License
-
-See [LICENSE](LICENSE) file.
-## Package Guidelines
-
-See [CONTRIBUTING.md](CONTRIBUTING.md) file.
diff --git a/package/luci/THANKYOU b/package/luci/THANKYOU
deleted file mode 100644 (file)
index f0519bd..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-I'd like to thank the following people for contributing to this software:
-
-* Anton Popov
-       - for rewriting the openwrt.org theme
-
-* Florian Fainelli (OpenWrt)
-       - for the french translation
-
-* Alina Friedrichsen
-       - for the reworked translation system, help on standards compliance and accessibility
-       
-* Yanira
-       - several applications and bugreports
-
-
-Also a big thank you goes to:
-       
-* Mono (Freifunk Halle)
-       - for donating a Linksys WRT54GL for development purposes
-       
-* tetzlav (Freifunk Leipzig)
-       - for donating several boards for testing and his feedback
-       
-* Mickey (Freifunk Hannover)
-       - for his feedback and fixes for the OpenWrt builds
-       
index e2ef1ef2148d042cf469e03f9a2acdbc5b0c6c07..4bb404c25cddfd6d5fa2a54278612ffbeeb0fe44 100644 (file)
@@ -9,9 +9,9 @@ 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_first("adblock", "adblock", "adb_trigger") then
-       m = SimpleForm("error", nil, translate("Please update your adblock config file to use this package. ")
-       .. translatef("In OPKG use the '--force-maintainer' option to overwrite the pre-existing config file or download a fresh default config from "
+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
@@ -23,16 +23,10 @@ m = Map("adblock", translate("Adblock"),
        translate("Configuration of the adblock package to block ad/abuse domains by using DNS. ")
        .. translatef("For further information "
        .. "<a href=\"%s\" target=\"_blank\">"
-       .. "see online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md"))
+       .. "check the online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md"))
 
 function m.on_after_commit(self)
-       function e4.validate(self, value)
-               if value == "0" then
-                       luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1")
-               else
-                       luci.sys.call("/etc/init.d/adblock start >/dev/null 2>&1")
-               end
-       end
+       luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1")
        luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
 end
 
@@ -44,7 +38,7 @@ local parse = json.parse(fs.readfile(adbinput) or "")
 if parse then
        status  = parse.data.adblock_status
        version = parse.data.adblock_version
-       domains = parse.data.blocked_domains
+       domains = parse.data.overall_domains
        fetch   = parse.data.fetch_utility
        backend = parse.data.dns_backend
        rundate = parse.data.last_rundate
@@ -82,14 +76,13 @@ o2 = s:option(ListValue, "adb_dns", translate("DNS Backend (DNS Directory)"),
        .. 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("unbound", "unbound (/var/lib/unbound)")
-o2:value("named", "bind (/var/lib/bind)")
+o2:value("named", "named (/var/lib/bind)")
 o2:value("kresd", "kresd (/etc/kresd)")
 o2:value("dnscrypt-proxy","dnscrypt-proxy (/tmp)")
-o2.default = "dnsmasq"
 o2.rmempty = false
 
 o3 = s:option(ListValue, "adb_trigger", translate("Startup Trigger"),
-       translate("List of available network interfaces. By default the startup will be triggered by the 'wan' interface.<br />")
+       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")
@@ -149,7 +142,7 @@ else
        dv4.value = backend
 end
 
-dv5 = s:option(DummyValue, "", translate("Overall Blocked Domains"))
+dv5 = s:option(DummyValue, "", translate("Overall Domains"))
 dv5.template = "adblock/runtime"
 if parse == nil then
        dv5.value = translate("n/a")
@@ -170,7 +163,7 @@ end
 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: Please don't select big lists or many lists at once on low memory devices to prevent OOM exceptions!"))
+       .. 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"
 
 name = bl:option(Flag, "enabled", translate("Enabled"))
@@ -185,12 +178,11 @@ function ssl.cfgvalue(self, section)
                return translate("No")
        end
 end
-
 des = bl:option(DummyValue, "adb_src_desc", translate("Description"))
 
 -- Extra options
 
-e = m:section(NamedSection, "global", "adblock", translate("Extra Options"),
+e = m:section(NamedSection, "extra", "adblock", translate("Extra Options"),
        translate("Options for further tweaking in case the defaults are not suitable for you."))
 
 e1 = e:option(Flag, "adb_debug", translate("Verbose Debug Logging"),
@@ -204,34 +196,47 @@ e2.default = e2.disabled
 e2.rmempty = false
 
 e3 = e:option(Flag, "adb_forcesrt", translate("Force Overall Sort"),
-       translate("Enable memory intense overall sort / duplicate removal on low memory devices (&lt; 64 MB RAM)"))
+       translate("Enable memory intense overall sort / duplicate removal on low memory devices (&lt; 64 MB free RAM)"))
 e3.default = e3.disabled
 e3.rmempty = false
 
-e4 = e:option(Flag, "adb_manmode", translate("Manual / Backup mode"),
-       translate("Do not automatically update blocklists during startup, use blocklist backups instead."))
+e4 = e:option(Flag, "adb_backup", translate("Enable Blocklist Backup"),
+       translate("Create compressed blocklist backups, they will be used in case of download errors or during startup in backup mode."))
 e4.default = e4.disabled
 e4.rmempty = false
 
-e5 = e:option(Flag, "adb_backup", translate("Enable Blocklist Backup"),
-       translate("Create compressed blocklist backups, they will be used in case of download errors or during startup in manual mode."))
-e5.default = e5.disabled
-e5.rmempty = false
+e5 = e:option(Value, "adb_backupdir", translate("Backup Directory"),
+       translate("Target directory for adblock backups. Please use only non-volatile disks, e.g. an external usb stick."))
+e5:depends("adb_backup", 1)
+e5.datatype = "directory"
+e5.default = "/mnt"
+e5.rmempty = true
 
-e6 = e:option(Value, "adb_backupdir", translate("Backup Directory"),
-       translate("Target directory for adblock backups. Please use only non-volatile disks, no ram/tmpfs drives."))
-e6.datatype = "directory"
-e6.default = "/mnt"
-e6.rmempty = false
+e6 = e:option(Flag, "adb_backup_mode", translate("Backup Mode"),
+       translate("Do not automatically update blocklists during startup, use blocklist backups instead."))
+e6:depends("adb_backup", 1)
+e6.default = e6.disabled
+e6.rmempty = true
 
-e7 = e:option(Value, "adb_dnsdir", translate("DNS Directory"),
+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"),
        translate("Target directory for the generated blocklist 'adb_list.overall'."))
-e7.datatype = "directory"
-e7.optional = true
+e8.datatype = "directory"
+e8.optional = true
 
-e8 = e:option(Value, "adb_triggerdelay", translate("Trigger Delay"),
+e9 = 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
+
+e10 = e:option(Value, "adb_triggerdelay", translate("Trigger Delay"),
        translate("Additional trigger delay in seconds before adblock processing begins."))
-e8.datatype = "range(1,60)"
-e8.optional = true
+e10.datatype = "range(1,60)"
+e10.optional = true
 
 return m
index 53493a18fb2d249026abc91a06d7ab51a29c16c4..2233a15e316bee93203f50e22b91cc5c1f6d10b0 100644 (file)
@@ -6,5 +6,8 @@
                font-size: 12px;
                font-family: monospace;
                resize: none;
+               white-space: pre;
+               overflow-wrap: normal;
+               overflow-x: scroll;
        }
 </style>
index 1901228634df60ecd99a4a46c06092c6fb4b8172..af3414c9972915441e15c487df714514081dffde 100644 (file)
@@ -38,15 +38,21 @@ 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: Please don't select big lists or many lists at once on low memory "
-"devices to prevent OOM exceptions!"
+"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!"
 msgstr ""
-"Attenzione: Per favore non selezionare grandi liste o molte liste alla volta "
-"su dispositivi con poca memoria per prevenire errori OOM!"
 
 msgid ""
 "Choose 'none' to disable automatic startups, 'timed' to use a classic "
@@ -66,10 +72,8 @@ msgstr ""
 
 msgid ""
 "Create compressed blocklist backups, they will be used in case of download "
-"errors or during startup in manual mode."
+"errors or during startup in backup mode."
 msgstr ""
-"Crea i backup compressi delle liste di blocco, saranno usati in caso di "
-"errori di download o durante l'avvio in modalità manuale."
 
 msgid "DNS Backend (DNS Directory)"
 msgstr ""
@@ -90,6 +94,12 @@ msgstr ""
 msgid "Download Utility (SSL Library)"
 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>"
+msgstr ""
+
 msgid "Edit Blacklist"
 msgstr "Modifica Lista Nera"
 
@@ -107,10 +117,8 @@ msgstr "Attiva Backup Lista di Blocco"
 
 msgid ""
 "Enable memory intense overall sort / duplicate removal on low memory devices "
-"(&lt; 64 MB RAM)"
+"(&lt; 64 MB free RAM)"
 msgstr ""
-"Attiva l'ordinamento globale / rimozione duplicati stressante per la memoria "
-"su dispositivi con poca memoria (&lt; 64 MB RAM)"
 
 msgid "Enable verbose debug logging in case of any processing error."
 msgstr ""
@@ -130,11 +138,9 @@ msgstr ""
 "adatta, p.e. 'libustream-ssl' o wget 'built-in'."
 
 msgid ""
-"For further information <a href=\"%s\" target=\"_blank\">see online "
+"For further information <a href=\"%s\" target=\"_blank\">check the online "
 "documentation</a>"
 msgstr ""
-"Per ulteriori informazioni <a href=\"%s\" target=\"_blank\">vedi "
-"documentazione online</a>"
 
 msgid "Force Local DNS"
 msgstr "Forza DNS Locale"
@@ -142,14 +148,8 @@ msgstr "Forza DNS Locale"
 msgid "Force Overall Sort"
 msgstr "Forza Ordinamento Globale"
 
-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>"
+msgid "Full path to the whitelist file."
 msgstr ""
-"In OPKG usa l'opzione '--force-maintainer' per sovrascrivere il pre-"
-"esistente file di configurazione o scarica una nuova configurazione di "
-"default da <a href=\"%s\" target=\"_blank\">qui</a>"
 
 msgid "Input file not found, please check your configuration."
 msgstr "File di input non trovato, per favore controlla la tua configurazione."
@@ -168,11 +168,9 @@ msgstr ""
 "nella sezione 'Avanzato'.<br />"
 
 msgid ""
-"List of available network interfaces. By default the startup will be "
-"triggered by the 'wan' interface.<br />"
+"List of available network interfaces. Usually the startup will be triggered "
+"by the 'wan' interface.<br />"
 msgstr ""
-"Lista delle interfacce di rete disponibili. Per default l'avvio sarà "
-"innescato dall'interfaccia 'wan'.<br />"
 
 msgid ""
 "List of supported DNS backends with their default list export directory.<br /"
@@ -184,9 +182,6 @@ msgstr ""
 msgid "Loading"
 msgstr "Caricando"
 
-msgid "Manual / Backup mode"
-msgstr "Modalità Manuale / Backup"
-
 msgid "No"
 msgstr "No"
 
@@ -196,8 +191,8 @@ msgstr ""
 "Opzioni per ulteriori modifiche in caso che quelle di default non ti sono "
 "adatte."
 
-msgid "Overall Blocked Domains"
-msgstr "Totale Domini Bloccati"
+msgid "Overall Domains"
+msgstr ""
 
 msgid "Overview"
 msgstr "Riassunto"
@@ -213,10 +208,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."
+msgid "Please update your adblock config file to use this package.<br />"
 msgstr ""
-"Per favore aggiorna il tuo file configurazione di adblock per usare questo "
-"pacchetto."
 
 msgid "Query"
 msgstr "Interrogazione"
@@ -250,11 +243,9 @@ msgid "Suspend / Resume Adblock"
 msgstr "Sospendi / Riprendi Adblock"
 
 msgid ""
-"Target directory for adblock backups. Please use only non-volatile disks, no "
-"ram/tmpfs drives."
+"Target directory for adblock backups. Please use only non-volatile disks, e."
+"g. an external usb stick."
 msgstr ""
-"Directory per i backup di adblock. Per favore usa solo dischi non volatili, "
-"non dischi ram/tmpfs."
 
 msgid "Target directory for the generated blocklist 'adb_list.overall'."
 msgstr "Directory per la lista di blocco generata 'adb_list.overall'."
@@ -318,6 +309,12 @@ msgstr "Vedi Registro"
 msgid "Waiting for command to complete..."
 msgstr "Aspettando che il comando venga completato..."
 
+msgid "Whitelist File"
+msgstr ""
+
+msgid "Whitelist Mode"
+msgstr ""
+
 msgid "Yes"
 msgstr "Sì"
 
@@ -335,3 +332,65 @@ msgstr "n/d"
 
 msgid "paused"
 msgstr "in pausa"
+
+#~ msgid ""
+#~ "Caution: Please don't select big lists or many lists at once on low "
+#~ "memory devices to prevent OOM exceptions!"
+#~ msgstr ""
+#~ "Attenzione: Per favore non selezionare grandi liste o molte liste alla "
+#~ "volta su dispositivi con poca memoria per prevenire errori OOM!"
+
+#~ msgid ""
+#~ "Create compressed blocklist backups, they will be used in case of "
+#~ "download errors or during startup in manual mode."
+#~ msgstr ""
+#~ "Crea i backup compressi delle liste di blocco, saranno usati in caso di "
+#~ "errori di download o durante l'avvio in modalità manuale."
+
+#~ msgid ""
+#~ "Enable memory intense overall sort / duplicate removal on low memory "
+#~ "devices (&lt; 64 MB RAM)"
+#~ msgstr ""
+#~ "Attiva l'ordinamento globale / rimozione duplicati stressante per la "
+#~ "memoria su dispositivi con poca memoria (&lt; 64 MB RAM)"
+
+#~ msgid ""
+#~ "For further information <a href=\"%s\" target=\"_blank\">see online "
+#~ "documentation</a>"
+#~ msgstr ""
+#~ "Per ulteriori informazioni <a href=\"%s\" target=\"_blank\">vedi "
+#~ "documentazione online</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 ""
+#~ "In OPKG usa l'opzione '--force-maintainer' per sovrascrivere il pre-"
+#~ "esistente file di configurazione o scarica una nuova configurazione di "
+#~ "default da <a href=\"%s\" target=\"_blank\">qui</a>"
+
+#~ msgid ""
+#~ "List of available network interfaces. By default the startup will be "
+#~ "triggered by the 'wan' interface.<br />"
+#~ msgstr ""
+#~ "Lista delle interfacce di rete disponibili. Per default l'avvio sarà "
+#~ "innescato dall'interfaccia 'wan'.<br />"
+
+#~ msgid "Manual / Backup mode"
+#~ msgstr "Modalità Manuale / Backup"
+
+#~ msgid "Overall Blocked Domains"
+#~ msgstr "Totale Domini Bloccati"
+
+#~ msgid "Please update your adblock config file to use this package."
+#~ msgstr ""
+#~ "Per favore aggiorna il tuo file configurazione di adblock per usare "
+#~ "questo pacchetto."
+
+#~ msgid ""
+#~ "Target directory for adblock backups. Please use only non-volatile disks, "
+#~ "no ram/tmpfs drives."
+#~ msgstr ""
+#~ "Directory per i backup di adblock. Per favore usa solo dischi non "
+#~ "volatili, non dischi ram/tmpfs."
index 86ff36379dd66a9becc63f68a1c3c1c8c52b33bc..becef993fdeac5533ff9b202fdd52791040440ac 100644 (file)
@@ -8,7 +8,7 @@ msgstr ""
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.3\n"
+"X-Generator: Poedit 2.0.4\n"
 "Language: ja\n"
 
 msgid "-------"
@@ -38,15 +38,25 @@ 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: Please don't select big lists or many lists at once on low memory "
-"devices to prevent OOM exceptions!"
+"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!"
 msgstr ""
-"警告: メモリー容量の小さいデバイスでは OutOfMemory (OOM) 例外を防ぐため、大き"
-"いリストや一度にたくさんのリストを選択しないでください。"
+"警告: RAM の空き容量が 64MB に満たないメモリー容量の小さいデバイスでは、 "
+"OutOfMemory (OOM) 例外を防ぐために、多くのリストを選択しないようにしてくださ"
+"い。5 - 6個のリストで十分です。"
 
 msgid ""
 "Choose 'none' to disable automatic startups, 'timed' to use a classic "
@@ -67,11 +77,11 @@ msgstr ""
 
 msgid ""
 "Create compressed blocklist backups, they will be used in case of download "
-"errors or during startup in manual mode."
+"errors or during startup in backup mode."
 msgstr ""
 "圧縮されたブロックリストのバックアップを作成します。これは、リストのダウン"
-"ã\83­ã\83¼ã\83\89ã\81\8cã\82¨ã\83©ã\83¼ã\81®å ´å\90\88ã\80\81ã\81¾ã\81\9fã\81¯ã\83\9eã\83\8bã\83¥ã\82¢ã\83« ã\83¢ã\83¼ã\83\89ã\81§ã\82µã\83¼ã\83\93ã\82¹ã\82\92èµ·å\8b\95æ\99\82ã\81«ä½¿ç\94¨ã\81\95ã\82\8cã\81¾"
-"す。"
+"ã\83­ã\83¼ã\83\89ã\81\8cã\82¨ã\83©ã\83¼ã\81®å ´å\90\88ã\80\81ã\81¾ã\81\9fã\81¯ã\83\90ã\83\83ã\82¯ã\82¢ã\83\83ã\83\97 ã\83¢ã\83¼ã\83\89ã\81§ã\82µã\83¼ã\83\93ã\82¹ã\82\92èµ·å\8b\95ã\81\97ã\81\9få ´å\90\88ã\81«ä½¿ç\94¨"
+"ã\81\95ã\82\8cã\81¾ã\81\99ã\80\82"
 
 msgid "DNS Backend (DNS Directory)"
 msgstr "DNS バックエンド(DNS ディレクトリ)"
@@ -92,6 +102,15 @@ 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 "ブラックリストの編集"
 
@@ -109,10 +128,10 @@ msgstr "ブロックリスト バックアップの有効化"
 
 msgid ""
 "Enable memory intense overall sort / duplicate removal on low memory devices "
-"(&lt; 64 MB RAM)"
+"(&lt; 64 MB free RAM)"
 msgstr ""
-"メモリー容量の少ないデバイス(RAM 64MB 未満)において、一時ファイル内の全体的"
-"なソート及び重複の除去を有効にします。"
+"メモリー容量の少ないデバイス(RAM 空き領域 64MB 未満)において、一時ファイル"
+"内の全体的なソート及び重複の除去を有効にします。"
 
 msgid "Enable verbose debug logging in case of any processing error."
 msgstr ""
@@ -132,11 +151,11 @@ msgstr ""
 "例: 'libustream-ssl' または wget 'built-in'"
 
 msgid ""
-"For further information <a href=\"%s\" target=\"_blank\">see online "
+"For further information <a href=\"%s\" target=\"_blank\">check the online "
 "documentation</a>"
 msgstr ""
-"詳細な情報は<a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a>を確"
-"認してください。"
+"詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a> を"
+"認してください。"
 
 msgid "Force Local DNS"
 msgstr "ローカル DNS の強制"
@@ -144,14 +163,8 @@ msgstr "ローカル DNS の強制"
 msgid "Force Overall Sort"
 msgstr "全体ソートの強制"
 
-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 "Full path to the whitelist file."
+msgstr "ホワイトリスト ファイルへのフルパスです。"
 
 msgid "Input file not found, please check your configuration."
 msgstr "入力ファイルが見つかりません。設定を確認してください。"
@@ -170,11 +183,11 @@ msgstr ""
 "で設定することができます。<br />"
 
 msgid ""
-"List of available network interfaces. By default the startup will be "
-"triggered by the 'wan' interface.<br />"
+"List of available network interfaces. Usually the startup will be triggered "
+"by the 'wan' interface.<br />"
 msgstr ""
-"利用可能なネットワーク インターフェースの一覧です。デフォルトでは 'wan' イン"
-"ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81«ã\82\88ã\82\8aã\82¹ã\82¿ã\83¼ã\83\88ã\82¢ã\83\83ã\83\97ã\81\8cã\83\88ã\83ªã\82¬ã\81\95ã\82\8cã\81¾ã\81\99ã\80\82"
+"利用可能なネットワーク インターフェースの一覧です。通常、 'wan' インター"
+"ã\83\95ã\82§ã\83¼ã\82¹ã\81«ã\82\88ã\82\8aã\82¹ã\82¿ã\83¼ã\83\88ã\82¢ã\83\83ã\83\97ã\81\8cã\83\88ã\83ªã\82¬ã\81\95ã\82\8cã\81¾ã\81\99ã\80\82<br />"
 
 msgid ""
 "List of supported DNS backends with their default list export directory.<br /"
@@ -186,9 +199,6 @@ msgstr ""
 msgid "Loading"
 msgstr "読込中"
 
-msgid "Manual / Backup mode"
-msgstr "手動 / バックアップ モード"
-
 msgid "No"
 msgstr "いいえ"
 
@@ -196,8 +206,8 @@ msgid ""
 "Options for further tweaking in case the defaults are not suitable for you."
 msgstr "デフォルト設定が適切でない場合、追加で設定するためのオプションです。"
 
-msgid "Overall Blocked Domains"
-msgstr "å\85¨ä½\93ã\81®ã\83\96ã\83­ã\83\83ã\82¯æ¸\88ã\81¿ã\83\89ã\83¡ã\82¤ã\83³"
+msgid "Overall Domains"
+msgstr "全体のドメイン"
 
 msgid "Overview"
 msgstr "概要"
@@ -213,9 +223,10 @@ msgstr ""
 msgid "Please edit this file directly in a terminal session."
 msgstr "ターミナル セッションで直接このファイルを編集してください。"
 
-msgid "Please update your adblock config file to use this package."
+msgid "Please update your adblock config file to use this package.<br />"
 msgstr ""
 "このパッケージを使用するには、既存の Adblock 設定ファイルを更新してください。"
+"<br />"
 
 msgid "Query"
 msgstr "検索"
@@ -249,11 +260,11 @@ msgid "Suspend / Resume Adblock"
 msgstr "Adblock の一時停止 / 再開"
 
 msgid ""
-"Target directory for adblock backups. Please use only non-volatile disks, no "
-"ram/tmpfs drives."
+"Target directory for adblock backups. Please use only non-volatile disks, e."
+"g. an external usb stick."
 msgstr ""
-"Adblock バックアップの保存先ディレクトリです。 RAM/tmpfs ドライブではなく、不"
-"揮発性のドライブのみを使用してください。"
+"Adblock バックアップの保存先ディレクトリです。 外部 USB フラッシュメモリなど"
+"の不揮発性ドライブのみを使用してください。"
 
 msgid "Target directory for the generated blocklist 'adb_list.overall'."
 msgstr "生成されたブロックリスト 'adb_list.overall' の保存先ディレクトリです。"
@@ -317,6 +328,12 @@ msgstr "ログファイルを見る"
 msgid "Waiting for command to complete..."
 msgstr "コマンド実行中です..."
 
+msgid "Whitelist File"
+msgstr "ホワイトリスト ファイル"
+
+msgid "Whitelist Mode"
+msgstr "ホワイトリスト モード"
+
 msgid "Yes"
 msgstr "はい"
 
index b4c8675f07d776b67fded728317e0032723ec48d..f51791f48dd0de9c1e0ba998883312118417a43d 100644 (file)
@@ -41,12 +41,20 @@ 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: Please don't select big lists or many lists at once on low memory "
-"devices to prevent OOM exceptions!"
+"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!"
 msgstr ""
 
 msgid ""
@@ -65,10 +73,8 @@ msgstr ""
 
 msgid ""
 "Create compressed blocklist backups, they will be used in case of download "
-"errors or during startup in manual mode."
+"errors or during startup in backup mode."
 msgstr ""
-"Crie backups comprimidos das listas de bloqueio, eles serão usados em caso "
-"de erro dedownload ou durante o início em modo manual."
 
 msgid "DNS Backend (DNS Directory)"
 msgstr ""
@@ -89,6 +95,12 @@ 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"
 
@@ -106,10 +118,8 @@ msgstr "Habilitar cópia de segurança da lista de bloqueio"
 
 msgid ""
 "Enable memory intense overall sort / duplicate removal on low memory devices "
-"(&lt; 64 MB RAM)"
+"(&lt; 64 MB free RAM)"
 msgstr ""
-"Ativar tipo geral intenso de memória / duplicar remoção em dispositivos com "
-"pouca memória (&lt; 64 MB RAM)"
 
 msgid "Enable verbose debug logging in case of any processing error."
 msgstr ""
@@ -128,11 +138,9 @@ msgstr ""
 "SSL adequada, e.x. 'libustream-ssl' ou o wget 'built-in'."
 
 msgid ""
-"For further information <a href=\"%s\" target=\"_blank\">see online "
+"For further information <a href=\"%s\" target=\"_blank\">check the online "
 "documentation</a>"
 msgstr ""
-"Para outras informações <a href=\"%s\" target=\"_blank\">veja a documentação "
-"online</a>"
 
 msgid "Force Local DNS"
 msgstr "Force o DNS local"
@@ -140,10 +148,7 @@ msgstr "Force o DNS local"
 msgid "Force Overall Sort"
 msgstr "Force Tipo Geral"
 
-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>"
+msgid "Full path to the whitelist file."
 msgstr ""
 
 msgid "Input file not found, please check your configuration."
@@ -161,8 +166,8 @@ msgid ""
 msgstr ""
 
 msgid ""
-"List of available network interfaces. By default the startup will be "
-"triggered by the 'wan' interface.<br />"
+"List of available network interfaces. Usually the startup will be triggered "
+"by the 'wan' interface.<br />"
 msgstr ""
 
 msgid ""
@@ -173,9 +178,6 @@ msgstr ""
 msgid "Loading"
 msgstr "Carregando"
 
-msgid "Manual / Backup mode"
-msgstr "Manual / Modo backup"
-
 msgid "No"
 msgstr "Não"
 
@@ -185,7 +187,7 @@ msgstr ""
 "Opções para aprimoramentos adicionais caso as opções padrão não sejam "
 "suficientes para você."
 
-msgid "Overall Blocked Domains"
+msgid "Overall Domains"
 msgstr ""
 
 msgid "Overview"
@@ -199,7 +201,7 @@ 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."
+msgid "Please update your adblock config file to use this package.<br />"
 msgstr ""
 
 msgid "Query"
@@ -233,8 +235,8 @@ msgid "Suspend / Resume Adblock"
 msgstr "Suspender / Resumir adblock"
 
 msgid ""
-"Target directory for adblock backups. Please use only non-volatile disks, no "
-"ram/tmpfs drives."
+"Target directory for adblock backups. Please use only non-volatile disks, e."
+"g. an external usb stick."
 msgstr ""
 
 msgid "Target directory for the generated blocklist 'adb_list.overall'."
@@ -296,6 +298,12 @@ msgstr "Ver arquivo de log"
 msgid "Waiting for command to complete..."
 msgstr "Aguardando por comando para completar..."
 
+msgid "Whitelist File"
+msgstr ""
+
+msgid "Whitelist Mode"
+msgstr ""
+
 msgid "Yes"
 msgstr "Sim"
 
@@ -314,6 +322,30 @@ msgstr "n/d"
 msgid "paused"
 msgstr ""
 
+#~ msgid ""
+#~ "Create compressed blocklist backups, they will be used in case of "
+#~ "download errors or during startup in manual mode."
+#~ msgstr ""
+#~ "Crie backups comprimidos das listas de bloqueio, eles serão usados em "
+#~ "caso de erro dedownload ou durante o início em modo manual."
+
+#~ msgid ""
+#~ "Enable memory intense overall sort / duplicate removal on low memory "
+#~ "devices (&lt; 64 MB RAM)"
+#~ msgstr ""
+#~ "Ativar tipo geral intenso de memória / duplicar remoção em dispositivos "
+#~ "com pouca memória (&lt; 64 MB RAM)"
+
+#~ msgid ""
+#~ "For further information <a href=\"%s\" target=\"_blank\">see online "
+#~ "documentation</a>"
+#~ msgstr ""
+#~ "Para outras informações <a href=\"%s\" target=\"_blank\">veja a "
+#~ "documentação online</a>"
+
+#~ msgid "Manual / Backup mode"
+#~ msgstr "Manual / Modo backup"
+
 #~ msgid "Blocked domains (overall)"
 #~ msgstr "Domínios bloqueados (total)"
 
index 4cb932c6017293b48da0d0d77b72105c85387217..503c5f6ef7deb85a63c775f49d6173951ed069c9 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8\n"
 
 msgid "-------"
-msgstr ""
+msgstr "-------"
 
 msgid "Adblock"
 msgstr "Adblock"
@@ -11,10 +11,10 @@ msgid "Adblock Logfile"
 msgstr "Adblock's loggfil"
 
 msgid "Adblock Status"
-msgstr ""
+msgstr "Status för Adblock"
 
 msgid "Adblock Version"
-msgstr "Version för Adblock"
+msgstr "Version av Adblock"
 
 msgid "Additional trigger delay in seconds before adblock processing begins."
 msgstr ""
@@ -28,18 +28,29 @@ 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: Please don't select big lists or many lists at once on low memory "
-"devices to prevent OOM exceptions!"
+"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!"
 msgstr ""
 
 msgid ""
 "Choose 'none' to disable automatic startups, 'timed' to use a classic "
 "timeout (default 30 sec.) or select another trigger interface."
 msgstr ""
+"Välj 'inga' för att stänga av automatiska uppstarter, 'tidsinställd för att "
+"använda ett klassiskt avbrott (30 sek. är standard) eller välj ett annat "
+"utlösande gränssnitt."
 
 msgid "Collecting data..."
 msgstr "Samlar in data..."
@@ -52,14 +63,14 @@ msgstr ""
 
 msgid ""
 "Create compressed blocklist backups, they will be used in case of download "
-"errors or during startup in manual mode."
+"errors or during startup in backup mode."
 msgstr ""
 
 msgid "DNS Backend (DNS Directory)"
-msgstr ""
+msgstr "DNS-bakände (DNS-mapp)"
 
 msgid "DNS Directory"
-msgstr ""
+msgstr "DNS-mapp"
 
 msgid "Description"
 msgstr "Beskrivning"
@@ -74,6 +85,12 @@ 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"
 
@@ -91,7 +108,7 @@ msgstr "Aktivera säkerhetskopiering av blockeringslistan"
 
 msgid ""
 "Enable memory intense overall sort / duplicate removal on low memory devices "
-"(&lt; 64 MB RAM)"
+"(&lt; 64 MB free RAM)"
 msgstr ""
 
 msgid "Enable verbose debug logging in case of any processing error."
@@ -109,11 +126,9 @@ msgid ""
 msgstr ""
 
 msgid ""
-"For further information <a href=\"%s\" target=\"_blank\">see online "
+"For further information <a href=\"%s\" target=\"_blank\">check the online "
 "documentation</a>"
 msgstr ""
-"För mer information <a href=\"%s\" target=\"_blank\">se dokumentationen på "
-"internet</a>"
 
 msgid "Force Local DNS"
 msgstr "Tvinga lokal DNS"
@@ -121,10 +136,7 @@ msgstr "Tvinga lokal DNS"
 msgid "Force Overall Sort"
 msgstr ""
 
-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>"
+msgid "Full path to the whitelist file."
 msgstr ""
 
 msgid "Input file not found, please check your configuration."
@@ -135,7 +147,7 @@ msgid "Invalid domain specified!"
 msgstr "Ogiltig domän angiven!"
 
 msgid "Last Run"
-msgstr ""
+msgstr "Kördes senast"
 
 msgid ""
 "List URLs and Shallalist category selections are configurable in the "
@@ -143,8 +155,8 @@ msgid ""
 msgstr ""
 
 msgid ""
-"List of available network interfaces. By default the startup will be "
-"triggered by the 'wan' interface.<br />"
+"List of available network interfaces. Usually the startup will be triggered "
+"by the 'wan' interface.<br />"
 msgstr ""
 
 msgid ""
@@ -155,9 +167,6 @@ msgstr ""
 msgid "Loading"
 msgstr "Laddar"
 
-msgid "Manual / Backup mode"
-msgstr "Manuell / Säkerhetskopieringsläge"
-
 msgid "No"
 msgstr "Nej"
 
@@ -165,7 +174,7 @@ msgid ""
 "Options for further tweaking in case the defaults are not suitable for you."
 msgstr ""
 
-msgid "Overall Blocked Domains"
+msgid "Overall Domains"
 msgstr ""
 
 msgid "Overview"
@@ -179,7 +188,7 @@ 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."
+msgid "Please update your adblock config file to use this package.<br />"
 msgstr ""
 
 msgid "Query"
@@ -192,7 +201,7 @@ msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
 msgstr ""
 
 msgid "Resume"
-msgstr ""
+msgstr "Återuppta"
 
 msgid "Runtime Information"
 msgstr "Information om körtid"
@@ -204,17 +213,17 @@ msgid "Save"
 msgstr "Spara"
 
 msgid "Startup Trigger"
-msgstr ""
+msgstr "Uppstartslösare"
 
 msgid "Suspend"
-msgstr ""
+msgstr "Stäng av"
 
 msgid "Suspend / Resume Adblock"
 msgstr "Upphäv / Återuppta adblock"
 
 msgid ""
-"Target directory for adblock backups. Please use only non-volatile disks, no "
-"ram/tmpfs drives."
+"Target directory for adblock backups. Please use only non-volatile disks, e."
+"g. an external usb stick."
 msgstr ""
 
 msgid "Target directory for the generated blocklist 'adb_list.overall'."
@@ -271,23 +280,51 @@ msgstr "Visa loggfil"
 msgid "Waiting for command to complete..."
 msgstr "Väntar på att kommandot ska slutföras..."
 
+msgid "Whitelist File"
+msgstr ""
+
+msgid "Whitelist Mode"
+msgstr ""
+
 msgid "Yes"
 msgstr "Ja"
 
 msgid "disabled"
-msgstr ""
+msgstr "inaktiverad"
 
 msgid "enabled"
-msgstr ""
+msgstr "aktiverad"
 
 msgid "error"
-msgstr ""
+msgstr "fel"
 
 msgid "n/a"
 msgstr "n/a"
 
 msgid "paused"
-msgstr ""
+msgstr "pausad"
+
+#~ msgid ""
+#~ "Caution: Please don't select big lists or many lists at once on low "
+#~ "memory devices to prevent OOM exceptions!"
+#~ msgstr ""
+#~ "Försiktig: Vänligen välj inte stora listor eller många listor på samma "
+#~ "gång för enheter med lite minne för att undvika OOM-undantag!"
+
+#~ msgid ""
+#~ "For further information <a href=\"%s\" target=\"_blank\">see online "
+#~ "documentation</a>"
+#~ msgstr ""
+#~ "För mer information <a href=\"%s\" target=\"_blank\">se dokumentationen "
+#~ "på internet</a>"
+
+#~ msgid "Manual / Backup mode"
+#~ msgstr "Manuell / Säkerhetskopieringsläge"
+
+#~ msgid "Please update your adblock config file to use this package."
+#~ msgstr ""
+#~ "Vänligen uppdatera din adblock's konfigurationsfil till att använda det "
+#~ "här paketet."
 
 #~ msgid "Blocked domains (overall)"
 #~ msgstr "Blockerade domäner (övergripande)"
index c6ad66baa3492fbf7e9e6c57c12927e3109486c7..9698333515b2f12214efb6f774dbaa28b69bd640 100644 (file)
@@ -28,12 +28,20 @@ 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: Please don't select big lists or many lists at once on low memory "
-"devices to prevent OOM exceptions!"
+"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!"
 msgstr ""
 
 msgid ""
@@ -50,7 +58,7 @@ msgstr ""
 
 msgid ""
 "Create compressed blocklist backups, they will be used in case of download "
-"errors or during startup in manual mode."
+"errors or during startup in backup mode."
 msgstr ""
 
 msgid "DNS Backend (DNS Directory)"
@@ -70,6 +78,12 @@ msgstr ""
 msgid "Download Utility (SSL Library)"
 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>"
+msgstr ""
+
 msgid "Edit Blacklist"
 msgstr ""
 
@@ -87,7 +101,7 @@ msgstr ""
 
 msgid ""
 "Enable memory intense overall sort / duplicate removal on low memory devices "
-"(&lt; 64 MB RAM)"
+"(&lt; 64 MB free RAM)"
 msgstr ""
 
 msgid "Enable verbose debug logging in case of any processing error."
@@ -105,7 +119,7 @@ msgid ""
 msgstr ""
 
 msgid ""
-"For further information <a href=\"%s\" target=\"_blank\">see online "
+"For further information <a href=\"%s\" target=\"_blank\">check the online "
 "documentation</a>"
 msgstr ""
 
@@ -115,10 +129,7 @@ msgstr ""
 msgid "Force Overall Sort"
 msgstr ""
 
-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>"
+msgid "Full path to the whitelist file."
 msgstr ""
 
 msgid "Input file not found, please check your configuration."
@@ -136,8 +147,8 @@ msgid ""
 msgstr ""
 
 msgid ""
-"List of available network interfaces. By default the startup will be "
-"triggered by the 'wan' interface.<br />"
+"List of available network interfaces. Usually the startup will be triggered "
+"by the 'wan' interface.<br />"
 msgstr ""
 
 msgid ""
@@ -148,9 +159,6 @@ msgstr ""
 msgid "Loading"
 msgstr ""
 
-msgid "Manual / Backup mode"
-msgstr ""
-
 msgid "No"
 msgstr ""
 
@@ -158,7 +166,7 @@ msgid ""
 "Options for further tweaking in case the defaults are not suitable for you."
 msgstr ""
 
-msgid "Overall Blocked Domains"
+msgid "Overall Domains"
 msgstr ""
 
 msgid "Overview"
@@ -172,7 +180,7 @@ msgstr ""
 msgid "Please edit this file directly in a terminal session."
 msgstr ""
 
-msgid "Please update your adblock config file to use this package."
+msgid "Please update your adblock config file to use this package.<br />"
 msgstr ""
 
 msgid "Query"
@@ -206,8 +214,8 @@ msgid "Suspend / Resume Adblock"
 msgstr ""
 
 msgid ""
-"Target directory for adblock backups. Please use only non-volatile disks, no "
-"ram/tmpfs drives."
+"Target directory for adblock backups. Please use only non-volatile disks, e."
+"g. an external usb stick."
 msgstr ""
 
 msgid "Target directory for the generated blocklist 'adb_list.overall'."
@@ -258,6 +266,12 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
+msgid "Whitelist File"
+msgstr ""
+
+msgid "Whitelist Mode"
+msgstr ""
+
 msgid "Yes"
 msgstr ""
 
index d5f5104a05e2ad60e237160822bf4f2c486233fb..08032cab04a21731c668c3d7cf5e10bd0f83e684 100644 (file)
@@ -1,20 +1,22 @@
 # liushuyu <liushuyu_011@163.com>, 2017.
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-04-15 21:35-0600\n"
-"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
-"Language-Team: Chinese <kde-i18n-doc@kde.org>\n"
+"PO-Revision-Date: 2017-10-28 16:06+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"
-"X-Generator: Poedit 2.0.1\n"
+"X-Generator: Gtranslator 2.91.7\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
 msgid "-------"
-msgstr ""
+msgstr "-------"
 
 msgid "Adblock"
 msgstr "Adblock"
@@ -23,35 +25,45 @@ msgid "Adblock Logfile"
 msgstr "Adblock 日志文件"
 
 msgid "Adblock Status"
-msgstr ""
+msgstr "Adblock 状态"
 
 msgid "Adblock Version"
 msgstr "Adblock 版本"
 
 msgid "Additional trigger delay in seconds before adblock processing begins."
-msgstr ""
+msgstr "触发 Adblock 开始处理前的额外延迟(以秒为单位)。"
 
 msgid "Advanced"
 msgstr "高级"
 
 msgid "Available blocklist sources."
-msgstr "可用的 blocklist 来源"
+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: Please don't select big lists or many lists at once on low memory "
-"devices to prevent OOM exceptions!"
+"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!"
 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 "正在收集数据..."
@@ -62,14 +74,14 @@ msgstr "Adblock 配置工具,通过 DNS 来拦截广告和阻止域名。"
 
 msgid ""
 "Create compressed blocklist backups, they will be used in case of download "
-"errors or during startup in manual mode."
+"errors or during startup in backup mode."
 msgstr ""
 
 msgid "DNS Backend (DNS Directory)"
-msgstr ""
+msgstr "DNS 后端(DNS 目录)"
 
 msgid "DNS Directory"
-msgstr ""
+msgstr "DNS 目录"
 
 msgid "Description"
 msgstr "描述"
@@ -77,9 +89,15 @@ msgstr "描述"
 msgid ""
 "Do not automatically update blocklists during startup, use blocklist backups "
 "instead."
-msgstr ""
+msgstr "启动期间不要自动更新 blocklists,改用 blocklists 的备份。"
 
 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"
@@ -92,21 +110,21 @@ msgid "Edit Whitelist"
 msgstr "编辑白名单"
 
 msgid "Enable Adblock"
-msgstr "启用Adblock"
+msgstr "启用 Adblock"
 
 msgid "Enable Blocklist Backup"
-msgstr "启用拦截规则备份"
+msgstr "启用 Blocklist 备份"
 
 msgid ""
 "Enable memory intense overall sort / duplicate removal on low memory devices "
-"(&lt; 64 MB RAM)"
+"(&lt; 64 MB free RAM)"
 msgstr ""
 
 msgid "Enable verbose debug logging in case of any processing error."
-msgstr ""
+msgstr "在出现任何处理错误的情况下启用详细调试日志记录。"
 
 msgid "Enabled"
-msgstr "启用"
+msgstr "å·²å\90¯ç\94¨"
 
 msgid "Extra Options"
 msgstr "额外选项"
@@ -115,62 +133,58 @@ msgid ""
 "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
 "'libustream-ssl' or the wget 'built-in'."
 msgstr ""
+"对于 SSL 保护的 blocklist 源,您需要一个合适的 SSL 库,例如'libustream-"
+"ssl'或 wget'built-in'。"
 
 msgid ""
-"For further information <a href=\"%s\" target=\"_blank\">see online "
+"For further information <a href=\"%s\" target=\"_blank\">check the online "
 "documentation</a>"
 msgstr ""
 
 msgid "Force Local DNS"
-msgstr ""
+msgstr "强制本地 DNS"
 
 msgid "Force Overall Sort"
-msgstr ""
+msgstr "强制整体排序"
 
-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>"
+msgid "Full path to the whitelist file."
 msgstr ""
 
 msgid "Input file not found, please check your configuration."
-msgstr ""
+msgstr "输入文件未找到,请检查您的配置。"
 
 msgid "Invalid domain specified!"
 msgstr "无效域名!"
 
 msgid "Last Run"
-msgstr ""
+msgstr "最后运行"
 
 msgid ""
 "List URLs and Shallalist category selections are configurable in the "
 "'Advanced' section.<br />"
-msgstr ""
+msgstr "列表 URL 和 Shallalist 类别选择可在“高级”选项卡中配置。<br />"
 
 msgid ""
-"List of available network interfaces. By default the startup will be "
-"triggered by the 'wan' interface.<br />"
+"List of available network interfaces. Usually the startup will be triggered "
+"by the 'wan' interface.<br />"
 msgstr ""
 
 msgid ""
 "List of supported DNS backends with their default list export directory.<br /"
 ">"
-msgstr ""
+msgstr "支持的 DNS 后端列表及其默认列表导出目录。<br />"
 
 msgid "Loading"
 msgstr "加载中"
 
-msgid "Manual / Backup mode"
-msgstr ""
-
 msgid "No"
 msgstr "否"
 
 msgid ""
 "Options for further tweaking in case the defaults are not suitable for you."
-msgstr "在默认设置并不适合时的额外选项。"
+msgstr "在默认设置并不适合时的额外选项。"
 
-msgid "Overall Blocked Domains"
+msgid "Overall Domains"
 msgstr ""
 
 msgid "Overview"
@@ -180,89 +194,91 @@ 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 ""
+msgstr "请在终端会话中直接编辑此文件。"
 
-msgid "Please update your adblock config file to use this package."
+msgid "Please update your adblock config file to use this package.<br />"
 msgstr ""
 
 msgid "Query"
 msgstr "查询"
 
 msgid "Query domains"
-msgstr ""
+msgstr "查询域"
 
 msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
-msgstr ""
+msgstr "将所有 DNS 查询从“lan”区域重定向到本地解析器。"
 
 msgid "Resume"
-msgstr ""
+msgstr "恢复"
 
 msgid "Runtime Information"
 msgstr "运行信息"
 
 msgid "SSL req."
-msgstr ""
+msgstr "SSL 要求"
 
 msgid "Save"
-msgstr ""
+msgstr "保存"
 
 msgid "Startup Trigger"
-msgstr ""
+msgstr "启动触发器"
 
 msgid "Suspend"
-msgstr ""
+msgstr "暂停"
 
 msgid "Suspend / Resume Adblock"
 msgstr "暂停/恢复 Adblock"
 
 msgid ""
-"Target directory for adblock backups. Please use only non-volatile disks, no "
-"ram/tmpfs drives."
+"Target directory for adblock backups. Please use only non-volatile disks, e."
+"g. an external usb stick."
 msgstr ""
 
 msgid "Target directory for the generated blocklist 'adb_list.overall'."
-msgstr ""
+msgstr "生成的 blocklist 'adb_list.overall'的目标目录。"
 
 msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
-msgstr ""
+msgstr "文件大小太大,无法在 LuCI(&gt; 512 KB)中进行在线编辑。"
 
 msgid ""
 "This form allows you to modify the content of the adblock blacklist (%s)."
 "<br />"
-msgstr ""
+msgstr "此表单允许您修改 adblock 黑名单(%s)的内容。<br />"
 
 msgid ""
 "This form allows you to modify the content of the adblock whitelist (%s)."
 "<br />"
-msgstr ""
+msgstr "此表单允许您修改 adblock 白名单(%s)的内容。<br />"
 
 msgid ""
 "This form allows you to modify the content of the main adblock configuration "
 "file (/etc/config/adblock)."
-msgstr ""
+msgstr "此表单允许您修改主要 adblock 配置文件(/etc/config/adblock)的内容。"
 
 msgid ""
 "This form allows you to query active block lists for certain domains, e.g. "
 "for whitelisting."
-msgstr ""
+msgstr "此表单允许您查询某些域的活动块列表,例如用于列出白名单。"
 
 msgid ""
 "This form shows the syslog output, pre-filtered for adblock related messages "
 "only."
-msgstr ""
+msgstr "此表单显示系统日志输出,仅针对 adblock 相关的消息进行了预筛选。"
 
 msgid ""
 "To overwrite the default path use the 'DNS Directory' option in the extra "
 "section below."
-msgstr ""
+msgstr "要覆盖默认路径,请使用下面额外部分中的“DNS 目录”选项。"
 
 msgid "Trigger Delay"
 msgstr "触发延迟"
 
 msgid "Verbose Debug Logging"
-msgstr ""
+msgstr "详细的调试记录"
 
 msgid "View Logfile"
 msgstr "查看日志文件"
@@ -270,23 +286,79 @@ msgstr "查看日志文件"
 msgid "Waiting for command to complete..."
 msgstr "正在执行命令..."
 
+msgid "Whitelist File"
+msgstr ""
+
+msgid "Whitelist Mode"
+msgstr ""
+
 msgid "Yes"
 msgstr "是"
 
 msgid "disabled"
-msgstr ""
+msgstr "已禁用"
 
 msgid "enabled"
-msgstr ""
+msgstr "已启用"
 
 msgid "error"
-msgstr ""
+msgstr "错误"
 
 msgid "n/a"
-msgstr ""
+msgstr "不可用"
 
 msgid "paused"
-msgstr ""
+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 后端"
diff --git a/package/luci/applications/luci-app-adblock/po/zh-tw/adblock.po b/package/luci/applications/luci-app-adblock/po/zh-tw/adblock.po
new file mode 100644 (file)
index 0000000..f838fa0
--- /dev/null
@@ -0,0 +1,455 @@
+# liushuyu <liushuyu_011@163.com>, 2017.
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2017-10-28 16:06+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"
+"X-Generator: Gtranslator 2.91.7\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgid "-------"
+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 開始處理前的額外延遲(以秒為單位)。"
+
+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!"
+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 "啟動期間不要自動更新 blocklists,改用 blocklists 的備份。"
+
+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 "編輯黑名單"
+
+msgid "Edit Configuration"
+msgstr "編輯設定"
+
+msgid "Edit Whitelist"
+msgstr "編輯白名單"
+
+msgid "Enable Adblock"
+msgstr "啟用 Adblock"
+
+msgid "Enable Blocklist Backup"
+msgstr "啟用 Blocklist 備份"
+
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB free RAM)"
+msgstr ""
+
+msgid "Enable verbose debug logging in case of any processing error."
+msgstr "在出現任何處理錯誤的情況下啟用詳細除錯日誌記錄。"
+
+msgid "Enabled"
+msgstr "已啟用"
+
+msgid "Extra Options"
+msgstr "額外選項"
+
+msgid ""
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget '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 "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 "輸入檔案未找到,請檢查您的配置。"
+
+msgid "Invalid domain specified!"
+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 />"
+msgstr ""
+
+msgid ""
+"List of supported DNS backends with their default list export directory.<br /"
+">"
+msgstr "支援的 DNS 後端列表及其預設列表匯出目錄。<br />"
+
+msgid "Loading"
+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 update your adblock config file to use this package.<br />"
+msgstr ""
+
+msgid "Query"
+msgstr "查詢"
+
+msgid "Query domains"
+msgstr "查詢域"
+
+msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
+msgstr "將所有 DNS 查詢從“lan”區域重定向到本地解析器。"
+
+msgid "Resume"
+msgstr "恢復"
+
+msgid "Runtime Information"
+msgstr "執行資訊"
+
+msgid "SSL req."
+msgstr "SSL 要求"
+
+msgid "Save"
+msgstr "儲存"
+
+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 ""
+
+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 ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr "此表單允許您修改 adblock 黑名單(%s)的內容。<br />"
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr "此表單允許您修改 adblock 白名單(%s)的內容。<br />"
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr "此表單允許您修改主要 adblock 配置檔案(/etc/config/adblock)的內容。"
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr "此表單允許您查詢某些域的活動塊列表,例如用於列出白名單。"
+
+msgid ""
+"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 "詳細的除錯記錄"
+
+msgid "View Logfile"
+msgstr "檢視日誌檔案"
+
+msgid "Waiting for command to complete..."
+msgstr "正在執行命令..."
+
+msgid "Whitelist File"
+msgstr ""
+
+msgid "Whitelist Mode"
+msgstr ""
+
+msgid "Yes"
+msgstr "是"
+
+msgid "disabled"
+msgstr "已禁用"
+
+msgid "enabled"
+msgstr "已啟用"
+
+msgid "error"
+msgstr "錯誤"
+
+msgid "n/a"
+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 "Available blocklist sources ("
+#~ msgstr "可用攔截列表來源("
+
+#~ msgid ""
+#~ "File with whitelisted hosts/domains that are allowed despite being on a "
+#~ "blocklist."
+#~ msgstr "允許的主機/域名列表"
+
+#~ msgid "Global options"
+#~ msgstr "全域性選項"
+
+#~ msgid "Whitelist file"
+#~ msgstr "白名單檔案"
+
+#~ msgid "see list details"
+#~ msgstr "檢視列表詳情"
+
+#~ msgid "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伺服器。"
index cac09d76a6fb5bc8ef9b41c2c14626f93879f94a..20d77cbcf7e7960255b4350021c4ba4040e18016 100644 (file)
@@ -1,5 +1,5 @@
 msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
 
 msgid "Action"
 msgstr "Åtgärd"
@@ -74,9 +74,9 @@ msgid ""
 "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."
+"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 "
@@ -94,12 +94,13 @@ msgid ""
 "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."
+"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!"
+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!"
index 823699d7bd4095223006cd9686f4ffbdd49f836e..0b7eea21c7663298d3a46e614c21423670eda50c 100644 (file)
-msgid "Aria2"
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
+msgid ""
 msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"PO-Revision-Date: 2017-10-28 16:10+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
-msgid "Aria2 is a multi-protocol &amp; multi-source download utility, here you can configure the settings."
-msgstr "Aria2 是一个支持多协议多线程的下载器, 你可以在这里对其进行配置"
-
-msgid "Aria2 Status"
-msgstr "Aria2 状态"
+msgid "\"Falloc\" is not available in all cases."
+msgstr "\"Falloc\" 并不是在所有情况下都可用"
 
-msgid "Open YAAW"
-msgstr "打开YAAW"
+msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
+msgstr "启用<abbr title=\"分布式哈希表\">DHT</abbr>"
 
-msgid "Open WebUI-Aria2"
-msgstr "打开WebUI-Aria2"
+msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
+msgstr "启用<abbr title=\"本地节点发现\">LPD</abbr>"
 
-msgid "The Aria2 service is running."
-msgstr "Aria2 正在运行"
+msgid "Additional Bt tracker enabled"
+msgstr "添加额外的Tracker"
 
-msgid "The Aria2 service is not running."
-msgstr "Aria2 未运行"
+msgid "Aria2"
+msgstr "Aria2"
 
 msgid "Aria2 Settings"
 msgstr "Aria2 配置"
 
-msgid "General settings"
-msgstr "一般设置"
-
-msgid "Files and Locations"
-msgstr "文件和目录"
+msgid "Aria2 Status"
+msgstr "Aria2 状态"
 
-msgid "Enabled"
-msgstr "启用"
+msgid ""
+"Aria2 is a multi-protocol &amp; multi-source download utility, here you can "
+"configure the settings."
+msgstr "Aria2 是一个支持多协议多线程的下载器, 您可以在这里对其进行配置。"
 
-msgid "Task Settings"
-msgstr "任务设置"
+msgid "Autosave session interval"
+msgstr "定时保存会话间隔"
 
 msgid "BitTorrent Settings"
-msgstr "BT设置"
+msgstr "BitTorrent 设置"
 
-msgid "Run daemon as user"
-msgstr "以此用户权限运行"
+msgid "BitTorrent listen port"
+msgstr "BitTorrent 监听端口"
 
-msgid "RPC port"
-msgstr "RPC端口"
+msgid "Collecting data..."
+msgstr "正在收集数据..."
 
-msgid "RPC authentication method"
-msgstr "RPC认证方式"
+msgid "Config file directory"
+msgstr "配置文件目录"
 
-msgid "No Authentication"
-msgstr "无认证"
+msgid "Debug"
+msgstr "调试"
 
-msgid "Username & Password"
-msgstr "用户名与密码"
+msgid "Default download directory"
+msgstr "默认下载目录"
 
-msgid "Token"
-msgstr "令牌"
+msgid "Disk cache"
+msgstr "磁盘缓存"
 
-msgid "RPC username"
-msgstr "RPC用户名"
+msgid "Enable log"
+msgstr "启用日志"
 
-msgid "RPC password"
-msgstr "RPC密码"
+msgid "Enabled"
+msgstr "启用"
 
-msgid "RPC Token"
-msgstr "RPC令牌"
+msgid "Error"
+msgstr "错误"
 
-msgid "Generate Randomly"
-msgstr "é\9a\8fæ\9cºç\94\9fæ\88\90"
+msgid "Extra Settings"
+msgstr "é\99\84å\8a é\80\89项"
 
-msgid "Enable log"
-msgstr "å\90¯ç\94¨æ\97¥å¿\97"
+msgid "Falloc"
+msgstr "å¿«é\80\9f allocï¼\88Fallocï¼\89"
 
-msgid "Log file is in the config file dir."
-msgstr "æ\97¥å¿\97æ\96\87件å\9c¨é\85\8dç½®æ\96\87件ç\9b®å½\95ä¸\8b"
+msgid "Files and Locations"
+msgstr "æ\96\87件å\92\8cç\9b®å½\95"
 
-msgid "Log level"
-msgstr "日志记录等级"
+msgid "Follow torrent"
+msgstr "自动添加下载的种子"
 
-msgid "Debug"
-msgstr "调试"
+msgid "General Settings"
+msgstr ""
+
+msgid "Generate Randomly"
+msgstr "随机生成"
 
 msgid "Info"
 msgstr "信息"
 
-msgid "Notice"
-msgstr "注意"
+msgid "List of additional Bt tracker"
+msgstr "附加 Bt tracker 列表"
 
-msgid "Warn"
-msgstr "警告"
+msgid "List of extra settings"
+msgstr "附加选项列表"
 
-msgid "Error"
-msgstr "错误"
+msgid "Log file is in the config file dir."
+msgstr "日志文件在配置文件目录下"
 
-msgid "Config file directory"
-msgstr "配置文件目录"
+msgid "Log level"
+msgstr "日志记录等级"
 
-msgid "Default download directory"
-msgstr "默认下载目录"
+msgid "Max concurrent downloads"
+msgstr "最大同时下载任务数"
 
-msgid "Disk cache"
-msgstr "磁盘缓存"
+msgid "Max connection per server"
+msgstr "单服务器最大连接数"
 
-msgid "in bytes, You can append K or M."
-msgstr "å\8d\95ä½\8d B, ä½ å\8f¯ä»¥å\9c¨æ\95°å­\97å\90\8eè·\9fä¸\8a K æ\88\96 M"
+msgid "Max number of peers per torrent"
+msgstr "å\8d\95个ç§\8då­\90æ\9c\80大è¿\9eæ\8e¥æ\95°"
 
-msgid "Preallocation"
-msgstr "磁盘预分配"
+msgid "Max number of split"
+msgstr "单文件最大线程数"
 
-msgid "Off"
-msgstr "关闭"
+msgid "Min split size"
+msgstr "最小文件分片大小"
 
-msgid "Prealloc"
-msgstr ""
+msgid "No Authentication"
+msgstr "无认证"
 
-msgid "Trunc"
-msgstr ""
+msgid "Notice"
+msgstr "注意"
 
-msgid "Falloc"
-msgstr ""
+msgid "Off"
+msgstr "关闭"
 
-msgid "\"Falloc\" is not available in all cases."
-msgstr "\"Falloc\" 并不是在所有情况下都可用"
+msgid "Open WebUI-Aria2"
+msgstr "打开 WebUI-Aria2"
 
-msgid "Overall speed limit enabled"
-msgstr "启用全局限速"
+msgid "Open YAAW"
+msgstr "打开 YAAW"
 
 msgid "Overall download limit"
 msgstr "全局下载限速"
 
-msgid "in bytes/sec, You can append K or M."
-msgstr "å\8d\95ä½\8d B/s, ä½ å\8f¯ä»¥å\9c¨æ\95°å­\97å\90\8eè·\9fä¸\8a K æ\88\96 M"
+msgid "Overall speed limit enabled"
+msgstr "å\90¯ç\94¨å\85¨å±\80é\99\90é\80\9f"
 
 msgid "Overall upload limit"
 msgstr "全局上传限速"
 
-msgid "Per task speed limit enabled"
-msgstr "启用单任务限速"
-
 msgid "Per task download limit"
 msgstr "单任务下载限速"
 
+msgid "Per task speed limit enabled"
+msgstr "启用单任务限速"
+
 msgid "Per task upload limit"
 msgstr "单任务上传限速"
 
-msgid "Max concurrent downloads"
-msgstr "最大同时下载任务数"
+msgid "Prealloc"
+msgstr "预分配"
 
-msgid "Max connection per server"
-msgstr "单服务器最大连接数"
+msgid "Preallocation"
+msgstr "磁盘预分配"
 
-msgid "Min split size"
-msgstr "最小文件分片大小"
+msgid "Prefix of peer ID"
+msgstr "Peer ID 前缀"
 
-msgid "Max number of split"
-msgstr "单文件最大线程数"
+msgid "RPC Token"
+msgstr "RPC 令牌"
 
-msgid "Autosave session interval"
-msgstr "定时保存会话间隔"
+msgid "RPC authentication method"
+msgstr "RPC 认证方式"
 
-msgid "Sec"
-msgstr ""
+msgid "RPC password"
+msgstr "RPC 密码"
 
-msgid "User agent value"
-msgstr "用户代理(UA)"
+msgid "RPC port"
+msgstr "RPC 端口"
 
-msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
-msgstr "启用<abbr title=\"分布式哈希表\">DHT</abbr>"
+msgid "RPC username"
+msgstr "RPC 用户名"
 
-msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
-msgstr "启用<abbr title=\"本地节点发现\">LPD</abbr>"
+msgid "Run daemon as user"
+msgstr "以此用户权限运行"
 
-msgid "Follow torrent"
-msgstr "自动添加下载的种子"
+msgid "Sec"
+msgstr ""
 
-msgid "BitTorrent listen port"
-msgstr "BT监听端口"
+msgid "Task Settings"
+msgstr "任务设置"
 
-msgid "Max number of peers per torrent"
-msgstr "单个种子最大连接数"
+msgid "The Aria2 service is not running."
+msgstr "Aria2 未运行"
 
-msgid "Additional Bt tracker enabled"
-msgstr "添加额外的Tracker"
+msgid "The Aria2 service is running."
+msgstr "Aria2 正在运行"
 
-msgid "List of additional Bt tracker"
-msgstr "附加Tracker列表"
+msgid "Token"
+msgstr "令牌"
 
-msgid "Prefix of peer ID"
-msgstr "Peer ID前缀"
+msgid "Trunc"
+msgstr ""
 
-msgid "Extra Settings"
-msgstr "附加选项"
+msgid "Use WebSocket"
+msgstr "使用 WebSocket"
 
-msgid "List of extra settings"
-msgstr "附加选项列表"
+msgid "User agent value"
+msgstr "用户代理(UA)"
+
+msgid "Username & Password"
+msgstr "用户名与密码"
 
 msgid "View Json-RPC URL"
 msgstr "查看 Json-RPC URL"
 
-msgid "Use WebSocket"
-msgstr "使用WebSocket"
+msgid "Warn"
+msgstr "警告"
+
+msgid "in bytes, You can append K or M."
+msgstr "单位 B, 您可以在数字后跟上 K 或 M。"
+
+msgid "in bytes/sec, You can append K or M."
+msgstr "单位 B/s, 您可以在数字后跟上 K 或 M。"
+
+#~ msgid "General settings"
+#~ msgstr "基本设置"
diff --git a/package/luci/applications/luci-app-aria2/po/zh-tw/aria2.po b/package/luci/applications/luci-app-aria2/po/zh-tw/aria2.po
new file mode 100644 (file)
index 0000000..d6782cf
--- /dev/null
@@ -0,0 +1,221 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"PO-Revision-Date: 2017-10-28 16:10+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+msgid "\"Falloc\" is not available in all cases."
+msgstr "\"Falloc\" 並不是在所有情況下都可用"
+
+msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
+msgstr "啟用<abbr title=\"分散式雜湊表\">DHT</abbr>"
+
+msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
+msgstr "啟用<abbr title=\"本地節點發現\">LPD</abbr>"
+
+msgid "Additional Bt tracker enabled"
+msgstr "新增額外的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 "配置檔案目錄"
+
+msgid "Debug"
+msgstr "除錯"
+
+msgid "Default download directory"
+msgstr "預設下載目錄"
+
+msgid "Disk cache"
+msgstr "磁碟快取"
+
+msgid "Enable log"
+msgstr "啟用日誌"
+
+msgid "Enabled"
+msgstr "啟用"
+
+msgid "Error"
+msgstr "錯誤"
+
+msgid "Extra Settings"
+msgstr "附加選項"
+
+msgid "Falloc"
+msgstr "快速 alloc(Falloc)"
+
+msgid "Files and Locations"
+msgstr "檔案和目錄"
+
+msgid "Follow torrent"
+msgstr "自動新增下載的種子"
+
+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 "日誌檔案在配置檔案目錄下"
+
+msgid "Log level"
+msgstr "日誌記錄等級"
+
+msgid "Max concurrent downloads"
+msgstr "最大同時下載任務數"
+
+msgid "Max connection per server"
+msgstr "單伺服器最大連線數"
+
+msgid "Max number of peers per torrent"
+msgstr "單個種子最大連線數"
+
+msgid "Max number of split"
+msgstr "單檔案最大執行緒數"
+
+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 "全域性下載限速"
+
+msgid "Overall speed limit enabled"
+msgstr "啟用全侷限速"
+
+msgid "Overall upload limit"
+msgstr "全域性上傳限速"
+
+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 "磁碟預分配"
+
+msgid "Prefix of peer ID"
+msgstr "Peer 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 "以此使用者許可權執行"
+
+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 "使用 WebSocket"
+
+msgid "User agent value"
+msgstr "使用者代理(UA)"
+
+msgid "Username & Password"
+msgstr "使用者名稱與密碼"
+
+msgid "View Json-RPC URL"
+msgstr "檢視 Json-RPC URL"
+
+msgid "Warn"
+msgstr "警告"
+
+msgid "in bytes, You can append K or M."
+msgstr "單位 B, 您可以在數字後跟上 K 或 M。"
+
+msgid "in bytes/sec, You can append K or M."
+msgstr "單位 B/s, 您可以在數字後跟上 K 或 M。"
+
+#~ msgid "General settings"
+#~ msgstr "基本設定"
index 8d7a6163dea75825ff6185014338108f132203cb..dbb572bd28dc999652a0eeb43117b1d0dccaeb98 100644 (file)
@@ -4,7 +4,7 @@
 include $(TOPDIR)/rules.mk
 
 LUCI_TITLE:=LuCI support for attended sysupgrades
-LUCI_DEPENDS:=+luci-base +uhttpd-mod-ubus +rpcd-mod-attendedsysupgrade
+LUCI_DEPENDS:=+luci-base +uhttpd-mod-ubus +attendedsysupgrade-common +cgi-io
 
 include ../../luci.mk
 
index 1e423b49f0b53e7fda0fc6ad1ed38f4143bcc9a9..4ea67ce70a9d4890d3c175ea682e638d435d561f 100644 (file)
     end
 
     apply_acls("/usr/share/rpcd/acl.d/attendedsysupgrade.json", luci.dispatcher.context.authsession)
-    apply_acls("/usr/share/rpcd/acl.d/packagelist.json", luci.dispatcher.context.authsession)
 %>
 <%+header%>
 <h2 name="content"><%:Attended Sysupgrade%></h2>
-<div class="container">
-       <div style="display: none" id="update_info" class="alert-message info"></div>
-       <div style="display: none" id="update_error" class="alert-message danger"></div>
+<div class="cbi-map-descr">
+       Easily search and install new releases and package upgrades. Sysupgrade firmware are created on demand based on locally installed packages.
 </div>
-<input class="cbi-button" value="search for updates" onclick="update_request()" type="button" id="update_button">
+<div style="display: none" id="info_box" class="alert-message info"></div>
+<div style="display: none" id="error_box" class="alert-message danger"></div>
 <div style="display: none" id="packages" class="alert-message success"></div>
-<div class="cbi-value" id="update_packages_container" style="display: block">
-       <label class="cbi-value-title" for="keep">search for package updates:</label>
-       <div class="cbi-value-field">
-               <input type="checkbox" name="update_packages" id="update_packages" />
-       </div>
-</div>
-<div class="cbi-value" id="keep_container" style="display: none">
-       <label class="cbi-value-title" for="keep">keep settings:</label>
-       <div class="cbi-value-field">
-               <input type="checkbox" name="keep" id="keep" checked="checked" />
-       </div>
-</div>
-
+<p>
+<textarea style="display: none; width: 100%;" id="edit_packages" rows="15"></textarea>
+</p>
+<fieldset class="cbi-section">
+       <form method="post" action="">
+               <div class="cbi-selection-node">
+                       <div class="cbi-value" id="keep_container" style="display: none">
+                               <div class="cbi-section-descr">
+                                       Check "Keep settings" to retain the current configuration (requires a compatible firmware).
+                               </div>
+                               <label class="cbi-value-title" for="keep">Keep settings:</label>
+                               <div class="cbi-value-field">
+                                       <input name="keep" id="keep" checked="checked" type="checkbox">
+                               </div>
+                       </div>
+                       <div class="cbi-value" id="edit_button" style="display: none">
+                               <div class="cbi-value-field">
+                                       <input class="cbi-button" value="Edit installed packages" onclick="edit_packages()" type="button">
+                               </div>
+                       </div>
+                       <div class="cbi-value cbi-value" id="server_div" style="display:none">
+                               <label class="cbi-value-title" for="server">Server:</label>
+                               <div class="cbi-value-field">
+                                       <input onclick="edit_server()" class="cbi-button cbi-button-edit" value="" type="button" id="server" name="server">
+                               </div>
+                       </div>
+                       <div class="cbi-value cbi-value-last">
+                               <div class="cbi-value-field">
+                                       <input class="cbi-button cbi-button-apply" value="Search for upgrades" style="display: none" onclick="upgrade_check()" type="button" id="upgrade_button">
+                               </div>
+                       </div>
+               </div>
+       </form>
+</fieldset>
 <script type="text/javascript">
-
-latest_version = "";
 data = {};
-ubus_counter = 1
 origin = document.location.href.replace(location.pathname, "")
 ubus_url = origin + "/ubus/"
 
-// requests to the update server
+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) {
-       url = data.update_server + "/" + path
        request_dict.distro = data.release.distribution;
        request_dict.target = data.release.target.split("\/")[0];
        request_dict.subtarget = data.release.target.split("\/")[1];
-       var xmlhttp = new XMLHttpRequest();
-       xmlhttp.open("POST", url, true);
-       xmlhttp.setRequestHeader("Content-type", "application/json");
-       xmlhttp.send(JSON.stringify(request_dict));
-       xmlhttp.onerror = function(e) {
-               update_error("update server down")
+       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";
        }
-       xmlhttp.addEventListener('load', function(event) {
-               callback(xmlhttp)
+       request.addEventListener('load', function(event) {
+               callback(request)
        });
 }
 
-// requests ubus via rpcd
-function ubus_request(command, argument, params, callback) {
-       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 ]
-       ubus_counter++
-       var xmlhttp = new XMLHttpRequest();
-       xmlhttp.open("POST", ubus_url, true);
-       xmlhttp.setRequestHeader("Content-type", "application/json");
-       xmlhttp.onerror = function(e) {
-               setTimeout(back_online, 5000)
-       }
-       xmlhttp.addEventListener('load', function(event) {
-               if(command === "uci") {
-                       ubus_request_callback_uci(xmlhttp, callback)
-               } else {
-                       ubus_request_callback(xmlhttp, callback)
-               }
-       });
-       xmlhttp.send(JSON.stringify(request_data));
+// initial setup, get system information
+function setup() {
+       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();
 }
 
-// handle ubus_requests, set variables or perform functions
-function ubus_request_callback(response_object, callback) {
-       if(response_object.status === 200) {
-               console.log(callback)
-               if(typeof callback === "string") {
-                       response_json = JSON.parse(response_object.responseText).result[1]
-                       if (callback == "release") {
-                               latest_version = response_json.release.version
-                       }
-                       data[callback] = response_json[callback]
+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 {
-                       callback(response_object)
+                       document.getElementById("upgrade_button").style.display = "block";
+                       document.getElementById("server_div").style.display = "block";
+                       document.getElementById("server").value = data.url;
                }
-       } else {
-               console.log(respons_object.responseText)
        }
 }
 
-function ubus_request_callback_uci(response_object, callback) {
-       if(response_object.status === 200) {
-               console.log(callback)
-               response_json = JSON.parse(response_object.responseText).result[1].value
-               data[callback] = response_json
+function uci_get(option) {
+       // simple wrapper to get a uci value store in data.<option>
+       ubus_call("uci", "get", option, option["option"])
+}
 
-               document.getElementById("update_packages").checked = data.update_packages;
-       } else {
-               console.log(respons_object.responseText)
+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);
 }
 
-// initial setup, get system information
-function setup() {
-       data["ubus_rpc_session"] = "<%=luci.dispatcher.context.authsession%>"
-       ubus_request("packagelist", "list", {}, "packagelist");
-       ubus_request("system", "board", {}, "release");
-       ubus_request("system", "board", {}, "board_name");
-       ubus_request("system", "board", {}, "model");
-       ubus_request("uci", "get", { "config": "attendedsysupgrade", "section": "updateserver", "option": "url" }, "update_server")
-       ubus_request("uci", "get", { "config": "attendedsysupgrade", "section": "updateclient", "option": "update_packages" }, "update_packages")
+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;
 }
 
-// shows notification if update is available
-function update_info(info_output) {
-       document.getElementById("update_info").style.display = "block";
-       document.getElementById("update_info").innerHTML = 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 update_error(error_output) {
-       document.getElementById("update_error").style.display = "block";
-       document.getElementById("update_error").innerHTML = error_output;
-       document.getElementById("update_info").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)
 }
 
-// asks server for news updates, actually only based on relesae not packages
-function update_request() {
-       console.log("update_request")
-       request_dict = {}
-       request_dict.version = data.release.version;
-       request_dict.packages = data.packagelist;
-       if (document.getElementById("update_packages").checked == 1) {
-               request_dict.update_packages = 1
+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;
        }
-       server_request(request_dict, "update-request", update_request_callback)
-}
+       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)
 
-function update_request_callback(response_object) {
-       if (response_object.status === 500) {
-               // python crashed
-               update_error("internal server error, please try again later")
-               console.log("update server issue")
-       } else if (response_object.status === 502) {
-               // python part offline
-               update_error("internal server error, please try again later")
-               console.log("update server issue")
-       } else if (response_object.status === 503) {
-               // handle overload
-               update_error("server overloaded, retry in 5 minutes")
-               console.log("server overloaded")
-               setTimeout(update_request, 300000)
-       } else if (response_object.status === 201) {
-               update_info("imagebuilder not ready, please wait")
-               console.log("setting up imagebuilder")
-               setTimeout(update_request, 5000)
-       } else if (response_object.status === 204) {
-               // no updates
-               update_info("no updates available")
-       } else if (response_object.status === 400) {
-               // bad request
-               console.log(response_object.responseText)
-               response_object_content = JSON.parse(response_object.responseText)
-               update_error(response_object_content.error)
-       } else if (response_object.status === 200) {
-               // new release/updates
-               response_object_content = JSON.parse(response_object.responseText)
-               update_request_200(response_object_content)
+       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 back_online() {
-       ubus_request("session", "login", {}, back_online_callback)
 }
 
-function back_online_callback(response_object) {
-       if (response_object.status != 200) {
-               setTimeout(back_online, 5000)
+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 {
-               update_info("upgrade successfull!")
-               document.getElementById("update_button").value = "reload page";
-               document.getElementById("update_button").onclick = function() { location.reload(); }
+               request_dict.packages = data.packages;
        }
 
+       server_request(request_dict, "api/upgrade-request", upgrade_request_callback)
 }
 
-function update_request_200(response_content) {
-       info_output = ""
-       if(response_content.version != undefined) {
-               info_output += "<h3>new update available</h3>"
-               info_output += data.release.version + " to " + response_content.version
-               latest_version = response_content.version;
-       }
-       if(response_content.updates != undefined) {
-               info_output += "<h3>package updates available</h3>"
-               for (update in response_content.updates) {
-                       info_output += "<b>" + update + "</b>: " + response_content.updates[update][1] + " to " + response_content.updates[update][0] + "</br>"
-               }
+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>'
        }
-       data.packages = response_content.packages
-       update_info(info_output)
-       document.getElementById("update_button").value = "request image";
-       document.getElementById("update_packages_container").style.display = "none";
-       document.getElementById("update_button").onclick = image_request;
+       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;
 }
 
-// request the image, need merge with update_request
-function image_request() {
-       console.log("image_request")
-       document.getElementById("update_packages_container").style.display = "none";
-       request_dict = {}
-       request_dict.version = latest_version;
-       request_dict.board = data.board_name
-       request_dict.packages = data.packages;
-       request_dict.model = data.model
-       server_request(request_dict, "image-request", image_request_handler)
+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 image_request_handler(response) {
-       if (response.status === 400) {
-               response_content = JSON.parse(response.responseText)
-               update_error(response_content.error)
-       } else if (response.status === 500) {
-               image_request_500()
-       } else if (response.status === 503) {
-               update_error("please wait. server overloaded")
-               // handle overload
-               setTimeout(image_request, 30000)
-       } else if (response.status === 201) {
-               response_content = JSON.parse(response.responseText)
-               if(response_content.queue != undefined) {
-                       // in queue
-                       update_info("please wait. you are in queue position " + response_content.queue)
-                       console.log("queued")
-               } else {
-                       update_info("imagebuilder not ready, please wait")
-                       console.log("setting up imagebuilder")
-               }
-               setTimeout(image_request, 5000)
-       } else if (response.status === 206) {
-               // building
-               console.log("building")
-               update_info("building image")
-               setTimeout(image_request, 5000)
-       } else if (response.status === 200) {
-               // ready to download
-               response_content = JSON.parse(response.responseText)
-               update_info("image created")
-               document.getElementById("update_button").value = "sysupgrade"
-               document.getElementById("update_button").onclick = function() {download_image(response_content.url); }
-               document.getElementById("keep_container").style.display = "block";
+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")
        }
 }
 
-
-// uploads received blob data to the server using cgi-io
 function upload_image(blob) {
-       var upload_request = new XMLHttpRequest();
+       // 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/sysupgrade.bin")
+       form_data.append("filename", "/tmp/firmware.bin")
        form_data.append("filemode", 755) // insecure?
        form_data.append("filedata", blob)
 
-       upload_request.addEventListener('load', function(event) {
-               // this checksum should be parsed
-               document.getElementById("update_info").innerHTML = "flashing... please wait" // show fancy indicator http://www.ajaxload.info/
+       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")
+       });
 
-               ubus_request("attendedsysupgrade", "sysupgrade", { "keep_settings": document.getElementById("keep").checked }, 'done');
-       });
+       request.open('POST', origin + '/cgi-bin/cgi-upload');
+       request.send(form_data);
+}
 
-       upload_request.addEventListener('error', function(event) {
-               document.getElementById("update_info").innerHTML = "uploading failed, please retry"
-       });
 
-       upload_request.open('POST', origin + '/cgi-bin/cgi-upload');
-       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();
+       }
 }
 
-// download image from server once the url was received by image_request
-function download_image(url) {
-       console.log("download_image")
-       document.getElementById("update_button").value = "flashing..."
-       document.getElementById("update_button").disabled = true;
-       var download_request = new XMLHttpRequest();
-       download_request.open("GET", 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)
+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.getElementById("update_info").innerHTML = "downloading image"
-       download_request.send();
+       });
 }
-
 document.onload = setup()
 </script>
 
diff --git a/package/luci/applications/luci-app-attendedsysupgrade/root/etc/uci-defaults/40_luci-attendedsysupgrade b/package/luci/applications/luci-app-attendedsysupgrade/root/etc/uci-defaults/40_luci-attendedsysupgrade
new file mode 100755 (executable)
index 0000000..832744f
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+rm -rf /tmp/luci-indexcache /tmp/luci-modulecache/
+/etc/init.d/uhttpd restart
+
+return 0
diff --git a/package/luci/applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json b/package/luci/applications/luci-app-attendedsysupgrade/root/usr/share/rpcd/acl.d/attendedsysupgrade.json
new file mode 100644 (file)
index 0000000..7549319
--- /dev/null
@@ -0,0 +1,31 @@
+{
+       "attendedsysupgrade": {
+               "description": "attended sysupgrade via rpcd and luci",
+               "read": {
+                       "ubus": {
+                               "rpc-sys": [
+                                       "upgrade_start",
+                                       "packagelist"
+                               ],
+                               "system": [
+                                       "board",
+                                       "info"
+                               ],
+                               "uci": [
+                                       "get", "set", "commit"
+                               ]
+                       },
+                       "uci": [
+                               "attendedsysupgrade"
+                       ]
+               },
+               "write": {
+                       "cgi-io": [
+                               "upload"
+                       ],
+                       "uci": [
+                               "attendedsysupgrade"
+                       ]
+               }
+       }
+}
index f9e0634b8b9077d8c5cba6666a3d7f400f7ab78b..45eff986b27fb9abe648270cee87c985502e7e3f 100644 (file)
@@ -10,7 +10,7 @@ msgid ""
 "correctly, you can add exceptions manually below."
 msgstr ""
 "自动检测上游 IP 是否会被当前配置所阻止,当检测到会被阻止时将会添加例外。如果"
-"自动检测无法正常工作,可以在下面手动添加例外。"
+"自动检测无法正常工作,可以在下面手动添加例外。"
 
 msgid "Auto-detect upstream IP"
 msgstr "自动检测上游 IP"
@@ -38,8 +38,8 @@ 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 ""
-"这里的规则优先于阻止规则被使用。如果在双重 NAT 之后并且自动检测功能不起作"
-"用,请在这里添加上游网络的白名单。"
+"这里的规则优先于阻止规则被使用。如果在双重 NAT 之后并且自动检测功能不起作"
+"用,请在这里添加上游网络的白名单。"
 
 msgid ""
 "This function blocks packets with private address destinations from going "
diff --git a/package/luci/applications/luci-app-bcp38/po/zh-tw/bcp38.po b/package/luci/applications/luci-app-bcp38/po/zh-tw/bcp38.po
new file mode 100644 (file)
index 0000000..7900cb3
--- /dev/null
@@ -0,0 +1,52 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Allowed IP ranges"
+msgstr "允許的 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 "阻止的 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 ""
+"這裡的規則優先於阻止規則被使用。如果您在雙重 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> 傳送到網際網路上。對於 IPv6,僅安裝源特定的預設路由,因"
+"此不需要 BCP38 防火牆路由。"
index f1f452518cc31f711bed91cba859d7c933a60f7f..157c07695f8efbeb98839a87141b0129e067316e 100644 (file)
@@ -103,7 +103,7 @@ msgstr ""
 msgid ""
 "This page allows you to configure custom shell commands which can be easily "
 "invoked from the web interface."
-msgstr "只要可以從web介輕易調用, 這頁面允許自定shell指令."
+msgstr "只要可以從web介輕易調用, 這頁面允許自定shell指令."
 
 msgid "Waiting for command to complete..."
 msgstr "等待完整命令中..."
index 3b9d5f48de9508989667c7dfe10eb71c5b17363a..4b8d2f844e2e4b7fb1049ccb185876cfc46f330b 100644 (file)
@@ -725,7 +725,7 @@ msgid "missing / required"
 msgstr "mancante / richiesto"
 
 msgid "must be greater or equal 'Check Interval'"
-msgstr "deve essere più grande o uguale "Controlla Intervallo'"
+msgstr "deve essere più grande o uguale 'Controlla Intervallo'"
 
 msgid "must start with 'http://'"
 msgstr "deve iniziare con 'http://'"
index 91bb756b373300fcd1bf4ae166eeeed599ac7571..f004f8282f39d6724c54e5f706ddf4ab02ff541b 100644 (file)
@@ -1,18 +1,22 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 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: 2015-04-23 13:00+0800\n"
-"Last-Translator: Syrone Wong <wong.syrone@gmail.com>\n"
+"PO-Revision-Date: 2017-10-29 14:14+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 1.8.4\n"
+"X-Generator: Gtranslator 2.91.7\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 
 msgid "&"
-msgstr ""
+msgstr "&"
 
 msgid "-- custom --"
 msgstr "-- 自定义 --"
@@ -24,7 +28,7 @@ msgid "Advanced Settings"
 msgstr "高级设置"
 
 msgid "Allow non-public IP's"
-msgstr "允许非公网IP"
+msgstr "允许非公网 IP"
 
 msgid "Applying changes"
 msgstr "正在应用更改"
@@ -35,11 +39,11 @@ msgstr "基础设置"
 msgid ""
 "Below a list of configuration tips for your system to run Dynamic DNS "
 "updates without limitations"
-msgstr "以下是一个能够让你的系统不受限制地进行动态DNS更新的设置贴士."
+msgstr "以下是一个能够让您的系统不受限制地进行动态 DNS 更新设置的提示列表"
 
 msgid ""
 "Below is a list of configured DDNS configurations and their current state."
-msgstr "ä¸\80ä¸\8bæ\98¯å½\93å\89\8då·²ç»\8fé\85\8d置好ç\9a\84DDNS设置项å\88\97表以å\8f\8aå®\83们ç\9a\84å½\93å\89\8dç\8a¶æ\80\81."
+msgstr "以ä¸\8bæ\98¯å½\93å\89\8då·²ç»\8fé\85\8d置好ç\9a\84 DDNS è®¾ç½®é¡¹å\88\97表以å\8f\8aå®\83们ç\9a\84å½\93å\89\8dç\8a¶æ\80\81ã\80\82"
 
 msgid "Bind Network"
 msgstr "使用的接口"
@@ -50,23 +54,27 @@ msgstr "不支持绑定到一个指定的网络"
 msgid ""
 "BusyBox's nslookup and Wget do not support to specify the IP version to use "
 "for communication with DDNS Provider!"
-msgstr "与DDNS供应商通讯时BusyBox的nslookup和Wget不支持设置特定的IP协议版本."
+msgstr ""
+"与 DDNS 供应商通讯时,BusyBox 的 nslookup 和 Wget 不支持设置特定的 IP 协议版"
+"本。"
 
 msgid ""
 "BusyBox's nslookup and hostip do not support to specify to use TCP instead "
 "of default UDP when requesting DNS server!"
 msgstr ""
+"向 DNS 服务器查询时,BusyBox 的 nslookup 和 hostip 不支持使用 TCP 而不是默认"
+"的 UDP!"
 
 msgid ""
 "BusyBox's nslookup in the current compiled version does not handle given DNS "
 "Servers correctly!"
-msgstr ""
+msgstr "当前编译版本中 BusyBox 的 nslookup 在处理给定的 DNS 服务器不正确!"
 
 msgid "Casual users should not change this setting"
 msgstr "普通用户不应该改变这个设置"
 
 msgid "Change provider"
-msgstr ""
+msgstr "更改提供者"
 
 msgid "Check Interval"
 msgstr "检查时间周期"
@@ -83,10 +91,10 @@ msgstr "设置"
 msgid ""
 "Configure here the details for all Dynamic DNS services including this LuCI "
 "application."
-msgstr "在这里修改动态DNS服务的详细配置"
+msgstr "在这里修改动态 DNS 服务的详细配置。"
 
 msgid "Configure here the details for selected Dynamic DNS service."
-msgstr "在这里修改选择的DDNS服务的详细配置"
+msgstr "在这里修改选择的 DDNS 服务的详细配置。"
 
 msgid "Current setting"
 msgstr "当前设置"
@@ -96,76 +104,76 @@ msgid ""
 ">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设置为0),这是默认设置."
+"现在,DDNS 更新在开机或者接口动作时不会被触发。<br />如果您手工运行 DDNS 脚本"
+"的话(例如使用 cron 时把 force_interval 设置为 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 />你可以在这里开始/停止每一个"
-"设置的条目.它在下次重启之前一直有效."
+"现在,DDNS 更新在开机或者接口动作时不会被触发。<br />您可以在这里开始/停止每"
+"一个设置的条目。它在下次重启之前一直有效。"
 
 msgid "Custom update script to be used for updating your DDNS Provider."
-msgstr "用来更新动态DNS的自定义脚本"
+msgstr "用来更新动态 DNS 的自定义脚本。"
 
 msgid "Custom update-URL"
-msgstr "自定义更新URL"
+msgstr "自定义更新 URL"
 
 msgid "Custom update-script"
 msgstr "自定义更新脚本"
 
 msgid "DDNS Autostart disabled"
-msgstr "DDNS自动启动已禁用."
+msgstr "DDNS 自动启动已禁用。"
 
 msgid "DDNS Client Configuration"
-msgstr ""
+msgstr "DDNS 客户端配置"
 
 msgid "DDNS Client Documentation"
-msgstr ""
+msgstr "DDNS 客户端文档"
 
 msgid "DDNS Service provider"
-msgstr "DDNS服务提供商"
+msgstr "DDNS 服务提供商"
 
 msgid "DNS requests via TCP not supported"
-msgstr "不支持使用TCP进行DNS解析"
+msgstr "不支持使用 TCP 进行 DNS 解析"
 
 msgid "DNS-Server"
-msgstr "DNS服务器"
+msgstr "DNS-服务器"
 
 msgid "Date format"
 msgstr "日期格式"
 
 msgid "Defines the Web page to read systems IPv4-Address from"
-msgstr "设定用来读取系统IPv4地址的网页"
+msgstr "设定用来读取系统 IPv4 地址的网页"
 
 msgid "Defines the Web page to read systems IPv6-Address from"
-msgstr "设定用来读取系统IPv6地址的网页"
+msgstr "设定用来读取系统 IPv6 地址的网页"
 
 msgid "Defines the interface to read systems IP-Address from"
-msgstr "设定用来读取系统IP地址的接口"
+msgstr "设定用来读取系统 IP 地址的接口"
 
 msgid "Defines the network to read systems IPv4-Address from"
-msgstr "设定用来读取系统IPv4地址的网络"
+msgstr "设定用来读取系统 IPv4 地址的网络"
 
 msgid "Defines the network to read systems IPv6-Address from"
-msgstr "设定用来读取系统IPv6地址的网络"
+msgstr "设定用来读取系统 IPv6 地址的网络"
 
 msgid ""
 "Defines the source to read systems IPv4-Address from, that will be send to "
 "the DDNS provider"
-msgstr "设定IPv4地址的来源.这将会被发送给DDNS提供商"
+msgstr "设定 IPv4 地址的来源。这将会被发送给 DDNS 提供商"
 
 msgid ""
 "Defines the source to read systems IPv6-Address from, that will be send to "
 "the DDNS provider"
-msgstr "设定IPv6地址的来源.这将会被发送给DDNS提供商"
+msgstr "设定 IPv6 地址的来源。这将会被发送给 DDNS 提供商"
 
 msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider"
-msgstr "设定哪一个IP地址(IPv4或IPv6)会被发送给DDNS提供商"
+msgstr "设定哪一个 IP 地址(IPv4 或 IPv6)会被发送给 DDNS 提供商"
 
 msgid "Details for"
-msgstr "详情:"
+msgstr "详情"
 
 msgid "Directory contains Log files for each running section"
 msgstr "保存每一个运行中的设置的运行日志的目录"
@@ -178,18 +186,18 @@ msgid "Disabled"
 msgstr "已禁用"
 
 msgid "Domain"
-msgstr ""
+msgstr "域名"
 
 msgid "Dynamic DNS"
-msgstr "动态DNS"
+msgstr "动态 DNS"
 
 msgid ""
 "Dynamic DNS allows that your router can be reached with a fixed hostname "
 "while having a dynamically changing IP address."
-msgstr "动态DNS允许为拥有动态IP的主机配置一个固定的可访问域名."
+msgstr "动态 DNS 允许为拥有动态 IP 的主机配置一个固定的可访问域名。"
 
 msgid "Enable secure communication with DDNS provider"
-msgstr "启用安全连接与DDNS供应商联系"
+msgstr "启用安全连接与 DDNS 提供商联系"
 
 msgid "Enabled"
 msgstr "已启用"
@@ -219,8 +227,8 @@ msgid ""
 "Follow this link<br />You will find more hints to optimize your system to "
 "run DDNS scripts with all options"
 msgstr ""
-"打开这个链接<br />你将会得到更多关于如何通过所有设置项优化你的系统以运行DDNS"
-"脚本的提示."
+"打开这个链接<br />您将会得到更多关于如何通过所有设置项优化您的系统以运行 "
+"DDNS 脚本的提示"
 
 msgid "For detailed information about parameter settings look here."
 msgstr "请看这里获得关于参数设置的详细信息"
@@ -229,91 +237,92 @@ msgid "For supported codes look here"
 msgstr "查看这里获取支持的编码"
 
 msgid "Force IP Version"
-msgstr "强制设定IP版本"
+msgstr "强制设定 IP 版本"
 
 msgid "Force IP Version not supported"
-msgstr "不支持强制设定IP版本"
+msgstr "不支持强制设定 IP 版本"
 
 msgid "Force Interval"
 msgstr "设定周期"
 
 msgid "Force TCP on DNS"
-msgstr "强制使用TCP进行DNS查询"
+msgstr "强制使用 TCP 进行 DNS 查询"
 
 msgid "Forced IP Version don't matched"
-msgstr "强制设定的IP版本不匹配"
+msgstr "强制设定的 IP 版本不匹配"
 
 msgid "Format"
 msgstr "格式"
 
 msgid "Format: IP or FQDN"
-msgstr "格式:IP或者FQDN"
+msgstr "格式:IP 或者 FQDN"
 
 msgid ""
 "GNU Wget will use the IP of given network, cURL will use the physical "
 "interface."
-msgstr "GNU Wget将会使用给定的网络的IP地址,而cURL将会使用物理接口"
+msgstr "GNU Wget 将会使用给定的网络的 IP 地址,而 cURL 将会使用物理接口。"
 
 msgid "Global Settings"
 msgstr "全局设置"
 
 msgid "HTTPS not supported"
-msgstr "不支持HTTPS"
+msgstr "不支持 HTTPS"
 
 msgid "Hints"
 msgstr "提示"
 
 msgid "Hostname/FQDN to validate, if IP update happen or necessary"
-msgstr ""
+msgstr "主机名/FQDN 验证,如果 IP 更新发生或必要"
 
 msgid "IP address source"
-msgstr "IP地址来源"
+msgstr "IP 地址来源"
 
 msgid "IP address version"
-msgstr "IP地址版本"
+msgstr "IP 地址版本"
 
 msgid "IPv4-Address"
-msgstr "IPv4地址"
+msgstr "IPv4 地址"
 
 msgid "IPv6 address must be given in square brackets"
-msgstr "IPv6地址必须填写在中括号(\"[  ]\")内"
+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<br />请查看 OpenWrt 首页的介绍以启用 "
+"IPv6 支持<br />或者更新您的系统到最新 OpenWrt 版本"
 
 msgid "IPv6 not supported"
-msgstr "IPv6不被支持"
+msgstr "IPv6 不被支持"
 
 msgid "IPv6-Address"
-msgstr "IPv6地址"
+msgstr "IPv6 地址"
 
 msgid "If both cURL and GNU Wget are installed, Wget is used by default."
-msgstr "如果cURL和GNU Wget同时被安装,那么Wget将会被优先使用."
+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 ""
-"如果服务配置被禁用那么它将不能被启动.<br />无论是通过LuCI页面或者是通过终端."
+"如果服务配置被禁用,那么它将不能被启动。<br />无论是通过 LuCI 页面或者是通过"
+"终端。"
 
 msgid "If using secure communication you should verify server certificates!"
-msgstr ""
+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')"
+"如果您需要同时更新 IPv4 和 IPv6 地址,您需要单独添加两个配置项(例"
+"如'myddns_ipv4'和'myddns_ipv6'"
 
 msgid ""
 "In some versions cURL/libcurl in OpenWrt is compiled without proxy support."
-msgstr "OpenWrt中,cURL/libcurl的某些版本编译时没有启用代理服务器支持"
+msgstr "OpenWrt 中,cURL/libcurl 的某些版本编译时没有启用代理服务器支持"
 
 msgid "Info"
 msgstr "信息"
@@ -322,6 +331,7 @@ 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 "接口"
@@ -329,18 +339,18 @@ msgstr "接口"
 msgid ""
 "Interval to check for changed IP<br />Values below 5 minutes == 300 seconds "
 "are not supported"
-msgstr "检查IP是否改变的时间隔<br />不支持低于5分钟(300秒)的数值."
+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将会让脚本仅执行一次"
-"<br />不支持低于\"检查时间周期\"的数值(除了0)."
+"强制向提供商更新 DDNS 的时间周期<br />将这个参数设置为 0 则会让脚本仅执行一次"
+"<br />不支持小于\"检查时间周期\"的数值(除了 0)。"
 
 msgid "It is NOT recommended for casual users to change settings on this page."
-msgstr "强烈不建议初次使用的用户修改本页设定."
+msgstr "强烈不建议初次使用的用户修改本页设定"
 
 msgid "Last Update"
 msgstr "上次更新"
@@ -364,26 +374,28 @@ msgid "Log to syslog"
 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 "包含SSL支持的GNU Wget或者cURL均未被安装.无法选择一个网络用于通信."
+msgstr "包含 SSL 支持的 GNU Wget 或者 cURL 均未安装,无法选择网络用于通信。"
 
 msgid ""
 "Neither GNU Wget with SSL nor cURL installed to support secure updates via "
 "HTTPS protocol."
 msgstr ""
+"包含 SSL 支持的 GNU Wget 或者 cURL 均未安装,无法通过 HTTPS 协议进行安全的更"
+"新。"
 
 msgid "Network"
 msgstr "网络"
 
 msgid "Network on which the ddns-updater scripts will be started"
-msgstr "DDNS更新脚本将会被运行于该网络"
+msgstr "DDNS 更新脚本将会运行于该网络"
 
 msgid "Never"
 msgstr "从不"
@@ -392,7 +404,7 @@ msgid "Next Update"
 msgstr "下次更新"
 
 msgid "No certificates found"
-msgstr ""
+msgstr "找不到证书"
 
 msgid "No data"
 msgstr "无数据"
@@ -401,7 +413,7 @@ msgid "No logging"
 msgstr "无日志"
 
 msgid "Non-public and by default blocked IP's"
-msgstr "非公网IP以及默认被锁定的IP"
+msgstr "非公网 IP 以及默认被锁定的 IP"
 
 msgid "Notice"
 msgstr "提示"
@@ -410,40 +422,40 @@ msgid "Number of last lines stored in log files"
 msgstr "日志文件中的最后几行"
 
 msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication."
-msgstr "可选:强制使用仅IPv4/IPv6通信."
+msgstr "可选:强制仅使用 IPv4/IPv6 通信。"
 
 msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests."
-msgstr "可选:强制使用TCP而非UDP请求DNS."
+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地址\""
+msgstr "可选:使用非默认 DNS 服务器检测\"已注册的 IP 地址\"。"
 
 msgid "On Error the script will retry the failed action after given time"
-msgstr "当出错时,脚本将会重试失败的动作的次数"
+msgstr "当出错时脚本将会重试失败的动作的次数"
 
 msgid "On Error the script will stop execution after given number of retrys"
-msgstr "当出错时,脚本将会重试该次数之后退出"
+msgstr "当出错时脚本将会重试该次数之后退出"
 
 msgid "OpenWrt Wiki"
-msgstr ""
+msgstr "OpenWrt Wiki"
 
 msgid "Optional Encoded Parameter"
-msgstr ""
+msgstr "可选编码参数"
 
 msgid "Optional Parameter"
-msgstr ""
+msgstr "可选参数"
 
 msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)"
-msgstr ""
+msgstr "可选:替换更新 URL(已编码 URL)中的 [PARAMENC]"
 
 msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)"
-msgstr ""
+msgstr "可选:替换更新 URL(未编码 URL)中的 [PARAMENC]"
 
 msgid "Overview"
 msgstr "总览"
@@ -458,7 +470,7 @@ msgid "Password"
 msgstr "密码"
 
 msgid "Path to CA-Certificate"
-msgstr "CA证书路径"
+msgstr "CA 证书路径"
 
 msgid "Please [Save & Apply] your changes first"
 msgstr "请先保存并应用您的设置"
@@ -470,25 +482,25 @@ msgid "Please update to the current version!"
 msgstr "请更新到最新版本!"
 
 msgid "Process ID"
-msgstr "处理ID"
+msgstr "进程 ID"
 
 msgid "Read / Reread log file"
 msgstr "读取/重新读取日志文件"
 
 msgid "Really change DDNS provider?"
-msgstr ""
+msgstr "确定更改 DDNS 提供商吗?"
 
 msgid "Registered IP"
-msgstr "已注册的IP地址"
+msgstr "已注册的 IP 地址"
 
 msgid "Replaces [DOMAIN] in Update-URL"
-msgstr "在更新URL中使用[DOMAIN]替换域名"
+msgstr "替换更新 URL 中的 [DOMAIN]"
 
 msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)"
-msgstr "在更新URL中使用[PASSWORD]替换密码"
+msgstr "替换更新 URL(已编码 URL)中的 [PASSWORD]"
 
 msgid "Replaces [USERNAME] in Update-URL (URL-encoded)"
-msgstr "在更新URL中使用[USERNAME]替换用户名"
+msgstr "替换更新 URL(已编码 URL)中的 [USERNAME]"
 
 msgid "Run once"
 msgstr "运行一次"
@@ -503,13 +515,13 @@ msgid "Software update required"
 msgstr "需要进行软件更新"
 
 msgid "Specifying a DNS-Server is not supported"
-msgstr ""
+msgstr "不支持指定 DNS 服务器"
 
 msgid "Start"
-msgstr "启ç\94¨"
+msgstr "启å\8a¨"
 
 msgid "Start / Stop"
-msgstr "启用/禁用"
+msgstr "启动 / 停止"
 
 msgid "Status directory"
 msgstr "状态目录"
@@ -523,7 +535,7 @@ msgid ""
 msgstr "当前已安装的'ddns-scripts'软件包暂不支持所有可用设置项"
 
 msgid "The default setting of '0' will retry infinite."
-msgstr ""
+msgstr "默认设置“0”将无限重试。"
 
 msgid "There is no service configured."
 msgstr "没有已经配置好的服务项"
@@ -532,16 +544,16 @@ msgid "Timer Settings"
 msgstr "计时器设定"
 
 msgid "To change global settings click here"
-msgstr "点击这里更改全局设置"
+msgstr "点击这里更改全局设置"
 
 msgid "To use cURL activate this option."
-msgstr "选中这个项以使用cURL"
+msgstr "选中此项以使用 cURL"
 
 msgid "URL"
 msgstr "URL"
 
 msgid "URL to detect"
-msgstr "用于检测的URL"
+msgstr "用于检测的 URL"
 
 msgid "Unknown error"
 msgstr "未知错误"
@@ -550,25 +562,26 @@ msgid ""
 "Update URL to be used for updating your DDNS Provider.<br />Follow "
 "instructions you will find on their WEB page."
 msgstr ""
-"DDNS提供商用于更新DDNS的URL<br />跟随教程你将会在它们的网站上提供这个URL."
+"DDNS 提供商用于更新 DDNS 的 URL。<br />跟随教程,您可以在它们的网站上找到这"
+"个 URL。"
 
 msgid "Update error"
 msgstr "更新错误"
 
 msgid "Use HTTP Secure"
-msgstr "使用HTTPS"
+msgstr "使用 HTTPS"
 
 msgid "Use cURL"
-msgstr "使用cURL"
+msgstr "使用 cURL"
 
 msgid "User defined script to read systems IP-Address"
-msgstr "使用设定的脚本来读取系统IP地址"
+msgstr "使用设定的脚本来读取系统 IP 地址"
 
 msgid "Username"
 msgstr "用户名"
 
 msgid "Using specific DNS Server not supported"
-msgstr ""
+msgstr "不支持使用特定的 DNS 服务器"
 
 msgid "Verify"
 msgstr "验证"
@@ -587,49 +600,51 @@ msgstr "等待"
 
 msgid ""
 "Writes detailed messages to log file. File will be truncated automatically."
-msgstr "向日志中写入详细信息.文件将会被自动减小."
+msgstr "向日志中写入详细信息。文件将自动缩小。"
 
 msgid ""
 "Writes log messages to syslog. Critical Errors will always be written to "
 "syslog."
-msgstr "把日志写入系统日志.无论是否启用这项,错误信息总是会被写入系统日志"
+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 ""
+"如果您需要指定 DNS 服务器来检测您注册的 IP,您应该安装“bind-host”或“knot-"
+"host”或“drill”或“hostip”软件包。"
 
 msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' package for DNS "
 "requests."
-msgstr ""
+msgstr "您应该为 DNS 请求安装“bind-host”或“knot-host”或“drill”软件包。"
 
 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 ""
+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 ""
+msgstr "您应该安装“wget”或“uclient-fetch”软件包,或替换 libcurl。"
 
 msgid "cURL is installed, but libcurl was compiled without proxy support."
-msgstr "cURL已经安装,但是libcurl编译时没有启用代理支持."
+msgstr "cURL 已经安装,但是 libcurl 编译时没有启用代理支持。"
 
 msgid "cURL without Proxy Support"
-msgstr "cURL包含代理支持"
+msgstr "cURL 没有包含代理支持"
 
 msgid "can not detect local IP. Please select a different Source combination"
-msgstr "不能确定本地IP.请更换IP来源."
+msgstr "无法确定本地 IP。请更换 IP 来源。"
 
 msgid "can not resolve host:"
-msgstr "不能解析主机:"
+msgstr "无法解析主机:"
 
 msgid "config error"
 msgstr "配置错误"
@@ -641,7 +656,7 @@ msgid "directory or path/file"
 msgstr "目录或者到文件的路径"
 
 msgid "either url or script could be set"
-msgstr "接受URL或者脚本"
+msgstr "接受 URL 或者脚本"
 
 msgid "enable here"
 msgstr "在这里启用"
@@ -659,16 +674,16 @@ msgid "installed"
 msgstr "已安装"
 
 msgid "invalid FQDN / required - Sample"
-msgstr ""
+msgstr "FQDN 无效 / 必需 - 示例"
 
 msgid "minimum value '0'"
-msgstr "最小值0"
+msgstr "最小值 0"
 
 msgid "minimum value '1'"
-msgstr "最小值1"
+msgstr "最小值 1"
 
 msgid "minimum value 5 minutes == 300 seconds"
-msgstr "最小值为5分钟(300秒)"
+msgstr "最小值为 5 分钟(300 秒)"
 
 msgid "minutes"
 msgstr "分钟"
@@ -683,7 +698,7 @@ msgid "must start with 'http://'"
 msgstr "必须以'http://'开头"
 
 msgid "nc (netcat) can not connect"
-msgstr "nc(netcat)不可连接"
+msgstr "nc(netcat)不可连接"
 
 msgid "never"
 msgstr "从不"
@@ -692,10 +707,10 @@ msgid "no data"
 msgstr "无数据"
 
 msgid "not found or not executable - Sample: '/path/to/script.sh'"
-msgstr "未找到或者不可执行 - 示例: '/path/to/script.sh'"
+msgstr "未找到或者不可执行 - 示例:“/path/to/script.sh”"
 
 msgid "nslookup can not resolve host"
-msgstr "nslookup不能解析主机"
+msgstr "nslookup 不能解析主机"
 
 msgid "or"
 msgstr "或者"
@@ -710,10 +725,10 @@ msgid "please remove entry"
 msgstr "请移除该字段"
 
 msgid "please select 'IPv4' address version"
-msgstr "请设定IPv4地址"
+msgstr "请设定 IPv4 地址"
 
 msgid "please select 'IPv4' address version in"
-msgstr "请设定IPv4地址于"
+msgstr "请设定 IPv4 地址于"
 
 msgid "please set to 'default'"
 msgstr "请设置为\"默认\""
@@ -728,7 +743,7 @@ msgid "seconds"
 msgstr "秒"
 
 msgid "to run HTTPS without verification of server certificates (insecure)"
-msgstr "使用HTTPS但不检查服务器证书(不安全)"
+msgstr "使用 HTTPS 但不检查服务器证书(不安全)"
 
 msgid "unknown error"
 msgstr "未知错误"
@@ -737,7 +752,7 @@ msgid "unspecific error"
 msgstr "未指定的错误"
 
 msgid "use hostname, FQDN, IPv4- or IPv6-Address"
-msgstr "使用主机名或IPv4/IPv6地址"
+msgstr "使用主机名或 IPv4/IPv6 地址"
 
 #~ msgid ""
 #~ "Neither GNU Wget with SSL nor cURL installed to support updates via HTTPS "
@@ -745,13 +760,13 @@ msgstr "使用主机名或IPv4/IPv6地址"
 #~ msgstr "包含SSL支持的GNU Wget或者cURL均未被安装.无法使用HTTPS更新DDNS"
 
 #~ msgid "You should install BIND host package for DNS requests."
-#~ msgstr "需要安装BIND以请求DNS记录."
+#~ msgstr "需要安装BIND以请求DNS记录."
 
 #~ msgid "You should install GNU Wget with SSL (preferred) or cURL package."
-#~ msgstr "需要安装包含SSL支持的GNU Wget(推荐)或是cURL软件包."
+#~ msgstr "需要安装包含SSL支持的GNU Wget(推荐)或是cURL软件包."
 
 #~ msgid "You should install GNU Wget with SSL or cURL package."
-#~ msgstr "需要安装包含SSL支持的GNU Wget或是cURL软件包."
+#~ msgstr "需要安装包含SSL支持的GNU Wget或是cURL软件包."
 
 #~ msgid "You should install GNU Wget with SSL or replace libcurl."
-#~ msgstr "需要安装包含SSL支持的GNU Wget或替换libcurl."
+#~ msgstr "需要安装包含SSL支持的GNU Wget或替换libcurl."
index ae0aaba8d913984e01662731cce73a122387312f..f378b39738f83315e627cb25328a4917600d1b3b 100644 (file)
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 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: 2013-08-07 15:53+0200\n"
-"Last-Translator: Ethan <ethan42411@gmail.com>\n"
-"Language-Team: \n"
+"PO-Revision-Date: 2017-10-29 14:14+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\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: Poedit 1.8.4\n"
+"X-Generator: Gtranslator 2.91.7\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\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 "允許非公網 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 ""
+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 ""
+"與 DDNS 供應商通訊時,BusyBox 的 nslookup 和 Wget 不支援設定特定的 IP 協議版"
+"本。"
 
 msgid ""
 "BusyBox's nslookup and hostip do not support to specify to use TCP instead "
 "of default UDP when requesting DNS server!"
 msgstr ""
+"向 DNS 伺服器查詢時,BusyBox 的 nslookup 和 hostip 不支援使用 TCP 而不是預設"
+"的 UDP!"
 
 msgid ""
 "BusyBox's nslookup in the current compiled version does not handle given DNS "
 "Servers correctly!"
-msgstr ""
+msgstr "當前編譯版本中 BusyBox 的 nslookup 在處理給定的 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 "配置錯誤"
 
 msgid "Configuration"
-msgstr ""
+msgstr "設定"
 
 msgid ""
 "Configure here the details for all Dynamic DNS services including this LuCI "
 "application."
-msgstr ""
+msgstr "在這裡修改動態 DNS 服務的詳細配置。"
 
 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 設定為 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 />您可以在這裡開始/停止每"
+"一個設定的條目。它在下次重啟之前一直有效。"
 
 msgid "Custom update script to be used for updating your DDNS Provider."
-msgstr ""
+msgstr "用來更新動態 DNS 的自定義指令碼。"
 
 msgid "Custom update-URL"
-msgstr "自訂更新的URL"
+msgstr "自定義更新 URL"
 
 msgid "Custom update-script"
-msgstr ""
+msgstr "自定義更新指令碼"
 
 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 "DDNS 服務提供商"
 
 msgid "DNS requests via TCP not supported"
-msgstr ""
+msgstr "不支援使用 TCP 進行 DNS 解析"
 
 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 ""
+msgstr "設定 IPv4 位址的來源。這將會被髮送給 DDNS 提供商"
 
 msgid ""
 "Defines the source to read systems IPv6-Address from, that will be send to "
 "the DDNS provider"
-msgstr ""
+msgstr "設定 IPv6 位址的來源。這將會被髮送給 DDNS 提供商"
 
 msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider"
-msgstr ""
+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"
+msgstr "動態 DNS"
 
 msgid ""
 "Dynamic DNS allows that your router can be reached with a fixed hostname "
 "while having a dynamically changing IP address."
-msgstr ""
-"動態DNS允許為主機配置一個固定的網域名稱,但該網路名稱卻是對應到動態的IP位置"
+msgstr "動態 DNS 允許為擁有動態 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 "錯誤重試計數"
 
 msgid "Error Retry Interval"
-msgstr ""
+msgstr "錯誤重試間隔"
 
 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 ""
+msgstr "請看這裡獲得關於引數設定的詳細資訊"
 
 msgid "For supported codes look here"
-msgstr ""
+msgstr "檢視這裡獲取支援的編碼"
 
 msgid "Force IP Version"
-msgstr ""
+msgstr "強制設定 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 或者 FQDN"
 
 msgid ""
 "GNU Wget will use the IP of given network, cURL will use the physical "
 "interface."
-msgstr ""
+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 ""
+msgstr "主機名/FQDN 驗證,如果 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 版本"
 
 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 ""
+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 ""
+"如果服務配置被禁用,那麼它將不能被啟動。<br />無論是通過 LuCI 頁面或者是通過"
+"終端。"
 
 msgid "If using secure communication you should verify server certificates!"
-msgstr ""
+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 ""
+msgstr "OpenWrt 中,cURL/libcurl 的某些版本編譯時沒有啟用代理伺服器支援"
 
 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 "面"
+msgstr "面"
 
 msgid ""
 "Interval to check for changed IP<br />Values below 5 minutes == 300 seconds "
 "are not supported"
-msgstr ""
+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 則會讓指令碼僅執行一"
+"次<br />不支援小於\"檢查時間週期\"的數值(除了 0)。"
 
 msgid "It is NOT recommended for casual users to change settings on this page."
-msgstr ""
+msgstr "強烈不建議初次使用的使用者修改本頁設定。"
 
 msgid "Last Update"
-msgstr ""
+msgstr "上次更新"
 
 msgid "Loading"
-msgstr ""
+msgstr "載入中"
 
 msgid "Log File Viewer"
-msgstr ""
+msgstr "日誌檢視器"
 
 msgid "Log directory"
-msgstr ""
+msgstr "日誌目錄"
 
 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 "包含 SSL 支援的 GNU Wget 或者 cURL 均未安裝,無法選擇網路用於通訊。"
 
 msgid ""
 "Neither GNU Wget with SSL nor cURL installed to support secure updates via "
 "HTTPS protocol."
 msgstr ""
+"包含 SSL 支援的 GNU Wget 或者 cURL 均未安裝,無法通過 HTTPS 協議進行安全的更"
+"新。"
 
 msgid "Network"
 msgstr "網路"
 
 msgid "Network on which the ddns-updater scripts will be started"
-msgstr ""
+msgstr "DDNS 更新指令碼將會運行於該網路"
 
 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 以及預設被鎖定的 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 ""
+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 ""
+msgstr "可選:使用非預設 DNS 伺服器檢測\"已註冊的 IP 位址\"。"
 
 msgid "On Error the script will retry the failed action after given time"
-msgstr ""
+msgstr "當出錯時,指令碼將會重試失敗的動作的次數"
 
 msgid "On Error the script will stop execution after given number of retrys"
-msgstr ""
+msgstr "當出錯時,指令碼將會重試該次數之後退出"
 
 msgid "OpenWrt Wiki"
-msgstr ""
+msgstr "OpenWrt Wiki"
 
 msgid "Optional Encoded Parameter"
-msgstr ""
+msgstr "可選編碼引數"
 
 msgid "Optional Parameter"
-msgstr ""
+msgstr "可選引數"
 
 msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)"
-msgstr ""
+msgstr "可選:替換更新 URL(已編碼 URL)中的 [PARAMENC]"
 
 msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)"
-msgstr ""
+msgstr "可選:替換更新 URL(未編碼 URL)中的 [PARAMENC]"
 
 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 "已註冊的 IP 位址"
 
 msgid "Replaces [DOMAIN] in Update-URL"
-msgstr ""
+msgstr "替換更新 URL 中的 [DOMAIN]"
 
 msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)"
-msgstr ""
+msgstr "替換更新 URL(已編碼 URL)中的 [PASSWORD]"
 
 msgid "Replaces [USERNAME] in Update-URL (URL-encoded)"
-msgstr ""
+msgstr "替換更新 URL(已編碼 URL)中的 [USERNAME]"
 
 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 ""
+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 ""
+"DDNS 提供商用於更新 DDNS 的 URL。<br />跟隨教程,您可以在它們的網站上找到這"
+"個 URL。"
 
 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 ""
+msgstr "向日志中寫入詳細資訊。檔案將自動縮小。"
 
 msgid ""
 "Writes log messages to syslog. Critical Errors will always be written to "
 "syslog."
-msgstr ""
+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 ""
+"如果您需要指定 DNS 伺服器來檢測您註冊的 IP,您應該安裝“bind-host”或“knot-"
+"host”或“drill”或“hostip”軟體包。"
 
 msgid ""
 "You should install 'bind-host' or 'knot-host' or 'drill' package for DNS "
 "requests."
-msgstr ""
+msgstr "您應該為 DNS 請求安裝“bind-host”或“knot-host”或“drill”軟體包。"
 
 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 ""
+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 ""
+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。請更換 IP 來源。"
 
 msgid "can not resolve host:"
-msgstr ""
+msgstr "無法解析主機:"
 
 msgid "config error"
-msgstr ""
+msgstr "配置錯誤"
 
 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 "FQDN 無效 / 必需 - 示例"
 
 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 ""
+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 位址"
+
+#~ msgid ""
+#~ "Neither GNU Wget with SSL nor cURL installed to support updates via HTTPS "
+#~ "protocol."
+#~ msgstr "包含SSL支援的GNU Wget或者cURL均未被安裝.無法使用HTTPS更新DDNS"
+
+#~ msgid "You should install BIND host package for DNS requests."
+#~ msgstr "您需要安裝BIND以請求DNS記錄."
+
+#~ msgid "You should install GNU Wget with SSL (preferred) or cURL package."
+#~ msgstr "您需要安裝包含SSL支援的GNU Wget(推薦)或是cURL軟體包."
+
+#~ msgid "You should install GNU Wget with SSL or cURL package."
+#~ msgstr "您需要安裝包含SSL支援的GNU Wget或是cURL軟體包."
+
+#~ msgid "You should install GNU Wget with SSL or replace libcurl."
+#~ msgstr "您需要安裝包含SSL支援的GNU Wget或替換libcurl."
index 3cb3169998bff63c9bdb27584405f1bd582ac049..2d62488451e50bb22fdd283621243ea50e7ee431 100644 (file)
@@ -20,14 +20,14 @@ msgstr "診斷"
 msgid ""
 "The diagnostics available under this menu depend on what modules you have "
 "installed on your device."
-msgstr "這選單下的診斷機制可運用性, 端看設備上已安裝的模組而定"
+msgstr "這選單下的診斷機制可運用性, 端看設備上已安裝的模組而定"
 
 msgid ""
 "The entries in the menu allow you to perform diagnostic tests on your system "
 "to aid in troubleshooting."
-msgstr "選單內的項目允許在系統內執行診斷測試以便解決疑難雜症"
+msgstr "選單內的項目允許在系統內執行診斷測試以便解決疑難雜症"
 
 msgid ""
 "With this menu you can configure network diagnostics, such as network device "
 "scans and ping tests."
-msgstr "採用這選項可以讓設定網路診斷, 例如網路設備掃描跟ping的測試."
+msgstr "採用這選項可以讓設定網路診斷, 例如網路設備掃描跟ping的測試."
index c735323955cc08102d1bce2b9476b955bfd3f087..d68116bf7b660f2dba8eb74838e87ae846f45f3d 100644 (file)
@@ -91,7 +91,7 @@ msgid "MAC range and information used to override system and IEEE databases"
 msgstr ""
 
 msgid "Milliseconds to sleep between requests (default 100)"
-msgstr ""
+msgstr "Millisekunder att sova mellan förfrågningar (100 är standard)"
 
 msgid "Model"
 msgstr "Modell"
@@ -109,7 +109,7 @@ msgid "Networks to scan for devices"
 msgstr "Nätverk att skanna efter enheter i"
 
 msgid "Networks to scan for supported devices"
-msgstr ""
+msgstr "Nätverk att skanna efter enheter som stöds"
 
 msgid "No SIP devices"
 msgstr "Inga SIP-enheter"
@@ -118,10 +118,10 @@ msgid "No devices detected"
 msgstr "Upptäckte inga enheter"
 
 msgid "Number of times to send requests (default 1)"
-msgstr ""
+msgstr "Antalet gånger att skicka förfrågningar (1 är standard)"
 
 msgid "OUI Owner"
-msgstr ""
+msgstr "OUI-ägare"
 
 msgid ""
 "Override the information returned by the MAC to Device Info Script (mac-to-"
@@ -129,13 +129,13 @@ msgid ""
 msgstr ""
 
 msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
+msgstr "Utför skanningar (det här kan ta ett par minuter)"
 
 msgid "Phone Information"
 msgstr "Information om telefon"
 
 msgid "Phone Scan"
-msgstr "Skanning av telefon"
+msgstr "Skanna telefon"
 
 msgid "Phone Scanning Configuration"
 msgstr "Konfiguration av skanning i telefon"
@@ -156,7 +156,7 @@ 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 ""
+msgstr "Information om SIP-enhet"
 
 msgid "SIP Device Scan"
 msgstr ""
@@ -195,7 +195,7 @@ msgid "Time to wait for responses in seconds (default 10)"
 msgstr "Tid att vänta på svar i sekunder (standard 10)"
 
 msgid "Timeout"
-msgstr ""
+msgstr "Avbrott"
 
 msgid "Use Configuration"
 msgstr "Använd konfiguration"
index 6d6790a839c275a6dc19411813ff27a0281a0e04..9f6472e7ded78090f9cbd9122105a3972750dd9f 100644 (file)
@@ -17,8 +17,8 @@ function index()
        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", "view_reslist"}, call("view_reslist"), _("View Resolver List"), 130).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", "view_reslist"}, call("view_reslist"), _("View Resolver List"), 140).leaf = true
 end
 
 function view_reslist()
@@ -27,6 +27,12 @@ function view_reslist()
 end
 
 function logread()
-       local logfile = util.trim(util.exec("logread -e 'dnscrypt-proxy'"))
+       local logfile
+
+       if nixio.fs.access("/var/log/messages") then
+               logfile = util.trim(util.exec("cat /var/log/messages | grep 'dnscrypt-proxy'"))
+       else
+               logfile = util.trim(util.exec("logread -e 'dnscrypt-proxy'"))
+       end
        templ.render("dnscrypt-proxy/logread", {title = i18n.translate("DNSCrypt-Proxy Logfile"), content = logfile})
 end
index d22abbfd398b400f4afbb3d62f4923638859dff2..6e75ac9f97dd3af2513ecf0be0df6743edc7112d 100644 (file)
@@ -7,6 +7,8 @@ local uci_input = "/etc/config/dhcp"
 
 if not nxfs.access(uci_input) then
        m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+       m.reset = false
+       m.submit = false
        return m
 end
 
diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua
new file mode 100644 (file)
index 0000000..f172b15
--- /dev/null
@@ -0,0 +1,39 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local nxfs      = require("nixio.fs")
+local util      = require("luci.util")
+local res_input = "/etc/resolv-crypt.conf"
+
+if not nxfs.access(res_input) then
+       m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+       m.reset = false
+       m.submit = false
+       return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("dnscrypt-proxy/config_css"))
+m.submit = translate("Save")
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+       translate("This form allows you to modify the content of the resolv-crypt configuration file (/etc/resolv-crypt.conf)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+       return nxfs.readfile(res_input) or ""
+end
+
+function f.write(self, section, data)
+       return nxfs.writefile(res_input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+       return true
+end
+
+return m
index 7ab84ab7fa09d7cfd1cf5e001efe8491882e8378..368c6673ad5cfa6c242325e03d0a4568567fdba7 100644 (file)
@@ -11,15 +11,16 @@ local plug_cnt  = tonumber(luci.sys.exec("env -i /usr/sbin/dnscrypt-proxy --vers
 local res_list  = {}
 local url       = "https://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-resolvers.csv"
 
-if not fs.access("/lib/libustream-ssl.so") then
-       m = SimpleForm("error", nil, translate("SSL support not available, please install an libustream-ssl variant to use this package."))
-       m.submit = false
-       m.reset = false
-       return m
-end
-
 if not fs.access(res_input) then
-       luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1")
+       if not fs.access("/lib/libustream-ssl.so") then
+               m = SimpleForm("error", nil, translate("No default resolver list and no SSL support available.<br />")
+                       .. translate("Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv' to use this package."))
+               m.submit = false
+               m.reset = false
+               return m
+       else
+               luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1")
+       end
 end
 
 if not uci:get_first("dnscrypt-proxy", "global") then
@@ -29,23 +30,64 @@ if not uci:get_first("dnscrypt-proxy", "global") then
 end
 
 for line in io.lines(res_input) do
-       local name = line:match("^[%w_.-]*")
-       res_list[#res_list + 1] = { name = name }
+       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
 end
 
 m = Map("dnscrypt-proxy", translate("DNSCrypt-Proxy"),
        translate("Configuration of the DNSCrypt-Proxy package. ")
-       .. translate("Keep in mind to configure Dnsmasq as well. ")
        .. translatef("For further information "
        .. "<a href=\"%s\" target=\"_blank\">"
        .. "see the wiki online</a>", "https://wiki.openwrt.org/inbox/dnscrypt"))
+m:chain("dhcp")
 
 function m.on_after_commit(self)
-       luci.sys.call("env -i /etc/init.d/dnsmasq restart >/dev/null 2>&1")
+       function d1.validate(self, value, s1)
+               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
+                               uci:set("dhcp", s1, "resolvfile", "/tmp/resolv.conf.auto")
+                       else
+                               uci:set("dhcp", s1, "resolvfile", "/etc/resolv-crypt.conf")
+                       end
+                       local server_list = {}
+                       local cnt = 1
+                       uci:foreach("dnscrypt-proxy", "dnscrypt-proxy", function(s)
+                               server_list[cnt] = s['address'] .. "#" .. s['port']
+                               cnt = cnt + 1
+                       end)
+                       server_list[cnt] = "/pool.ntp.org/8.8.8.8"
+                       uci:set_list("dhcp", s1, "server", server_list)
+                       if cnt > 2 then
+                               uci:set("dhcp", s1, "allservers", 1)
+                       else
+                               uci:set("dhcp", s1, "allservers", 0)
+                       end
+                       uci:save("dhcp")
+                       uci:commit("dhcp")
+               end
+               return value
+       end
        luci.sys.call("env -i /etc/init.d/dnscrypt-proxy restart >/dev/null 2>&1")
+       luci.sys.call("env -i /etc/init.d/dnsmasq restart >/dev/null 2>&1")
 end
 
-s = m:section(TypedSection, "global", translate("General options"))
+s = m:section(TypedSection, "global", translate("General Options"))
 s.anonymous = true
 
 -- Main dnscrypt-proxy resource list
@@ -62,21 +104,53 @@ o3 = s:option(DummyValue, "", translate("File Checksum"))
 o3.template = "dnscrypt-proxy/res_options"
 o3.value = luci.sys.exec("sha256sum " .. res_input .. " | awk '{print $1}'")
 
-btn = s:option(Button, "", translate("Refresh Resolver List"))
-btn.inputtitle = translate("Refresh List")
-btn.inputstyle = "apply"
-btn.disabled = false
-function btn.write(self, section, value)
-       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"))
+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'."))
+       btn1.inputtitle = translate("Refresh List")
+       btn1.inputstyle = "apply"
+       btn1.disabled = false
+       function btn1.write()
+               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'."))
+       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
+       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 "
+               .. "<a href=\"%s\" target=\"_blank\">"
+               .. "see the wiki online</a>", "https://wiki.openwrt.org/inbox/dnscrypt"))
+       btn2.inputtitle = translate("Create Config File")
+       btn2.inputstyle = "apply"
+       btn2.disabled = false
+       function btn2.write()
+               luci.sys.call("env -i echo 'options timeout:1' > '/etc/resolv-crypt.conf'")
+               luci.http.redirect(luci.dispatcher.build_url("admin", "services", "dnscrypt-proxy"))
+       end
+else
+       btn2 = s:option(Button, "", translate("Create Custom Config File"),
+               translate("The config file '/etc/resolv-crypt.conf' already exist.<br />")
+               .. translate("Please edit the file manually in the 'Advanced' section."))
+       btn2.inputtitle = translate("-------")
+       btn2.inputstyle = "button"
+       btn2.disabled = true
 end
 
 -- Trigger settings
 
-t = s:option(DynamicList, "procd_trigger", translate("Startup Trigger"),
-       translate("By default the DNSCrypt-Proxy startup will be triggered by ifup events of multiple network interfaces. ")
-       .. translate("To restrict the trigger, add only the relevant network interface(s). ")
-       .. translate("Usually the 'wan' interface should work for most users."))
+t = s:option(ListValue, "procd_trigger", translate("Startup Trigger"),
+       translate("By default the DNSCrypt-Proxy startup will be triggered by ifup events of 'All' available network interfaces.<br />")
+       .. translate("To restrict the trigger, select only the relevant network interface. Usually the 'wan' interface should work for most users."))
+t:value("", "All")
 if dump then
        local i, v
        for i, v in ipairs(dump.interface) do
@@ -85,57 +159,38 @@ if dump then
                end
        end
 end
+t.default = procd_trigger or "All"
 t.rmempty = true
 
--- Extra options
-
-ds = s:option(DummyValue, "_dummy", translate("Extra options"),
-       translate("Options for further tweaking in case the defaults are not suitable for you."))
-ds.template = "cbi/nullsection"
-
-btn = 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. ")
-       .. translatef("For further information "
-       .. "<a href=\"%s\" target=\"_blank\">"
-       .. "see the wiki online</a>", "https://wiki.openwrt.org/inbox/dnscrypt"))
-btn.inputtitle = translate("Create Config File")
-btn.inputstyle = "apply"
-btn.disabled = false
-function btn.write(self, section, value)
-       if not fs.access("/etc/resolv-crypt.conf") then
-               luci.sys.call("env -i echo 'options timeout:1' > '/etc/resolv-crypt.conf'")
-       end
-end
-
 -- Mandatory options per instance
 
-s = m:section(TypedSection, "dnscrypt-proxy", translate("Instance options"))
+s = m:section(TypedSection, "dnscrypt-proxy", translate("Instance Options"))
 s.anonymous = true
 s.addremove = true
 
-o1 = s:option(Value, "address", translate("IP Address"),
+i1 = s:option(Value, "address", translate("IP Address"),
        translate("The local IPv4 or IPv6 address. The latter one should be specified within brackets, e.g. '[::1]'."))
-o1.default = address or "127.0.0.1"
-o1.rmempty = false
+i1.default = address or "127.0.0.1"
+i1.rmempty = false
 
-o2 = s:option(Value, "port", translate("Port"),
+i2 = s:option(Value, "port", translate("Port"),
        translate("The listening port for DNS queries."))
-o2.datatype = "port"
-o2.default = port
-o2.rmempty = false
-
-o3 = s:option(ListValue, "resolver", translate("Resolver"),
-       translate("Name of the remote DNS service for resolving queries."))
-o3.datatype = "hostname"
-o3.widget = "select"
+i2.datatype = "port"
+i2.default = port
+i2.rmempty = false
+
+i3 = s:option(ListValue, "resolver", translate("Resolver (LOC/SEC/NOLOG)"),
+       translate("Name of the remote DNS service for resolving queries incl. Location, DNSSEC- and NOLOG-Flag."))
+i3.datatype = "hostname"
+i3.widget = "select"
 local i, v
 for i, v in ipairs(res_list) do
-       if v.name ~= "Name" then
-               o3:value(v.name)
+       if v.name then
+               i3:value(v.name, v.name .. " (" .. v.location .. "/" .. v.dnssec .. "/" .. v.nolog .. ")")
        end
 end
-o3.default = resolver
-o3.rmempty = false
+i3.default = resolver
+i3.rmempty = false
 
 -- Extra options per instance
 
@@ -174,4 +229,17 @@ if plug_cnt > 0 then
        e6.optional = true
 end
 
-return m
+-- Dnsmasq options
+
+m1 = Map("dhcp")
+
+s1 = m1:section(TypedSection, "dnsmasq", translate("Dnsmasq Options"))
+s1.anonymous = true
+
+d1 = s1:option(Flag, "", translate("Transfer Options To Dnsmasq"),
+       translate("Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />")
+       .. translate("Please note: This may change the values for 'noresolv', 'resolvfile', 'allservers' and the list 'server' settings."))
+d1.default = d1.enabled
+d1.rmempty = false
+
+return m, m1
index 0328df2279959bacb11976970dac883d6a0f7d39..2cd01c019e5d8ebb5a34d7454aa88e0790807ec0 100644 (file)
@@ -7,17 +7,24 @@ msgstr ""
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.3\n"
+"X-Generator: Poedit 2.0.4\n"
 "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "Language: ja\n"
 
+msgid "-------"
+msgstr "(利用不可)"
+
 msgid "Advanced"
 msgstr "詳細"
 
 msgid "Alternate Resolver List"
 msgstr "代替 リゾルバ リスト"
 
+msgid ""
+"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />"
+msgstr "Dnsmasq の構成に、DNSCrypt-Proxy を指定する設定を適用します。<br />"
+
 msgid "Blacklist"
 msgstr "ブラックリスト"
 
@@ -26,26 +33,26 @@ msgstr "IPv6 のブロック"
 
 msgid ""
 "By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
-"multiple network interfaces."
+"'All' available network interfaces.<br />"
 msgstr ""
-"ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81§ã\81¯ã\80\81 DNSCrypt-Proxy ã\81¯å\85¨ã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81® ifup ã\82¤ã\83\99"
-"ã\83³ã\83\88ã\81«ã\82\88ã\82\8aã\83\88ã\83ªã\82¬ã\81\95ã\82\8cèµ·å\8b\95ã\81\97ã\81¾ã\81\99ã\80\82"
+"ã\83\87ã\83\95ã\82©ã\83«ã\83\88ã\81§ã\81¯ã\80\81 DNSCrypt-Proxy ã\81¯å\88©ç\94¨å\8f¯è\83½ã\81ªå\85¨ã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹"
+"ã\81® ifup ã\82¤ã\83\99ã\83³ã\83\88ã\81«ã\82\88ã\82\8aã\83\88ã\83ªã\82¬ã\81\95ã\82\8cèµ·å\8b\95ã\81\97ã\81¾ã\81\99ã\80\82<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."
+"upstream timeouts with multiple DNSCrypt instances.<br />"
 msgstr ""
 "複数の DNSCrypt インスタンスで DNS アップストリーム タイムアウトの設定値を共"
 "用するため、 'options timeout:1' を含めた '/etc/resolv-crypt.conf' を作成しま"
-"す。"
+"す。<br />"
 
 msgid "Create Config File"
 msgstr "設定ファイルの作成"
 
-msgid "Create custom config file"
+msgid "Create Custom Config File"
 msgstr "カスタム設定ファイルの作成"
 
 msgid "DNS Query Logfile"
@@ -66,21 +73,28 @@ msgstr "デフォルト リゾルバ リスト"
 msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
 msgstr "DNSCrypt-Proxy の高速化のため、IPv6 を無効化します。"
 
+msgid "Dnsmasq Options"
+msgstr "Dnsmasq オプション"
+
+msgid "Download the current resolver list from 'download.dnscrypt.org'."
+msgstr ""
+"現在のリゾルバ リストを 'download.dnscrypt.org' からダウンロードします。"
+
 msgid "Edit DNSCrypt-Proxy Configuration"
 msgstr "DNSCrypt-Proxy 設定の編集"
 
 msgid "Edit Dnsmasq Configuration"
 msgstr "Dnsmasq 設定の編集"
 
+msgid "Edit Resolvcrypt Configuration"
+msgstr "Resolvcrypt 設定の編集"
+
 msgid "Enable Caching to speed up DNSCcrypt-Proxy."
 msgstr "DNSCrypt-Proxy の高速化のため、キャッシュ機能を有効化します。"
 
 msgid "Ephemeral Keys"
 msgstr "一時的なキー"
 
-msgid "Extra options"
-msgstr "拡張オプション"
-
 msgid "File Checksum"
 msgstr "ファイル チェックサム"
 
@@ -94,8 +108,8 @@ msgstr ""
 "詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン Wiki</a> を確認して"
 "ください。"
 
-msgid "General options"
-msgstr "全般設定"
+msgid "General Options"
+msgstr "全般オプション"
 
 msgid "IP Address"
 msgstr "IP アドレス"
@@ -107,12 +121,9 @@ msgstr ""
 msgid "Input file not found, please check your configuration."
 msgstr "入力ファイルが見つかりません。設定を確認してください。"
 
-msgid "Instance options"
+msgid "Instance Options"
 msgstr "インスタンス オプション"
 
-msgid "Keep in mind to configure Dnsmasq as well."
-msgstr "Dnsmasq を適切に設定する必要があることに留意してください。"
-
 msgid "Local Cache"
 msgstr "ローカル キャッシュ"
 
@@ -129,16 +140,47 @@ msgstr ""
 "受信した DNS クエリをファイルに記録します。これにより、ネットワークで何が起き"
 "ているかをリアルタイムに把握することが可能です。"
 
-msgid "Name of the remote DNS service for resolving queries."
-msgstr "クエリの名前解決を行う、リモートの DNS サービス名です。"
-
 msgid ""
-"Options for further tweaking in case the defaults are not suitable for you."
-msgstr "デフォルト設定が適切でない場合、追加で設定するためのオプションです。"
+"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- "
+"and NOLOG-Flag."
+msgstr ""
+"クエリの名前解決を行う、ロケーション, DNSSECの有無, NOLOG フラグを含めたリ"
+"モート DNS サービスの名前です。"
+
+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 'download.dnscrypt.org'."
+msgstr ""
+"現在のリゾルバ リストを 'download.dnscrypt.org' からダウンロードするために、 "
+"'libustream-ssl' ライブラリをインストールしてください。"
+
+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', 'list server' の設"
+"定値を変更する場合があります。"
+
 msgid "Port"
 msgstr "ポート"
 
@@ -148,15 +190,8 @@ msgstr "リストのリフレッシュ"
 msgid "Refresh Resolver List"
 msgstr "リゾルバ リストのリフレッシュ"
 
-msgid "Resolver"
-msgstr "リゾルバ"
-
-msgid ""
-"SSL support not available, please install an libustream-ssl variant to use "
-"this package."
-msgstr ""
-"SSL サポートが利用できません。このパッケージを使用するには libustream-ssl 等"
-"をインストールし、 SSL サポートを有効にしてください。"
+msgid "Resolver (LOC/SEC/NOLOG)"
+msgstr "リゾルバ(LOC/SEC/NOLOG)"
 
 msgid "Save"
 msgstr "保存"
@@ -167,6 +202,9 @@ msgstr "デフォルトとは異なるリゾルバ リストを設定します
 msgid "Startup Trigger"
 msgstr "スタートアップ トリガ"
 
+msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />"
+msgstr "設定ファイル '/etc/resolv-crypt.conf' は既に存在しています。<br />"
+
 msgid "The listening port for DNS queries."
 msgstr "DNS クエリを待ち受けるポートです。"
 
@@ -199,6 +237,13 @@ msgstr ""
 "このフォームでは、メインの Dnsmasq 設定ファイル (/etc/config/dhcp) の内容を変"
 "更することができます。"
 
+msgid ""
+"This form allows you to modify the content of the resolv-crypt configuration "
+"file (/etc/resolv-crypt.conf)."
+msgstr ""
+"このフォームでは、 resolv-crypt 設定ファイル(/etc/resolv-crypt.conf)の内容"
+"を変更することができます。"
+
 msgid "This form shows the content of the current DNSCrypt Resolver List."
 msgstr ""
 "このフォームには、現在の DNSCrypt リゾルバ リストの内容が表示されます。"
@@ -217,13 +262,15 @@ msgstr ""
 "このオプションは、通常よりも CPU リソースを多く使用するほか、ほとんどの "
 "DNSCrypt サーバーでは不要なものです。"
 
-msgid "To restrict the trigger, add only the relevant network interface(s)."
+msgid ""
+"To restrict the trigger, select only the relevant network interface. Usually "
+"the 'wan' interface should work for most users."
 msgstr ""
-"ã\83\88ã\83ªã\82¬ã\82\92é\99\90å®\9aã\81\99ã\82\8bã\81«ã\81¯ã\80\81é\81©å\88\87ã\81ªã\83\8dã\83\83ã\83\88ã\83¯ã\83¼ã\82¯ ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81®ã\81¿ã\82\92追å\8a ã\81\97ã\81¦ã\81\8fã\81 ã\81\95"
-"ã\81\84。"
+"ã\83\88ã\83ªã\82¬ã\82\92é\99\90å®\9aã\81\99ã\82\8bã\81«ã\81¯ã\80\81é\81©å\88\87ã\81ªã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\82\92é\81¸æ\8a\9eã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82é\80\9a常ã\80\81 'wan' "
+"ã\82¤ã\83³ã\82¿ã\83¼ã\83\95ã\82§ã\83¼ã\82¹ã\81\8cã\81»ã\81¨ã\82\93ã\81©ã\81®ã\83¦ã\83¼ã\82¶ã\83¼ã\81«é\81©ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99。"
 
-msgid "Usually the 'wan' interface should work for most users."
-msgstr "通常、 'wan' インターフェースがほとんどのユーザーに適しています。"
+msgid "Transfer Options To Dnsmasq"
+msgstr "Dnsmasq の転送オプション"
 
 msgid "View Logfile"
 msgstr "ログファイルの確認"
index ea83e7a1849e05bb5e48e4d57fa4b9a51199dfe9..59bded87b82d9522da6a77a95e88a3b5709ec7d4 100644 (file)
@@ -1,12 +1,19 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8"
 
+msgid "-------"
+msgstr ""
+
 msgid "Advanced"
 msgstr ""
 
 msgid "Alternate Resolver List"
 msgstr ""
 
+msgid ""
+"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />"
+msgstr ""
+
 msgid "Blacklist"
 msgstr ""
 
@@ -15,7 +22,7 @@ msgstr ""
 
 msgid ""
 "By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
-"multiple network interfaces."
+"'All' available network interfaces.<br />"
 msgstr ""
 
 msgid "Configuration of the DNSCrypt-Proxy package."
@@ -23,13 +30,13 @@ msgstr ""
 
 msgid ""
 "Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS "
-"upstream timeouts with multiple DNSCrypt instances."
+"upstream timeouts with multiple DNSCrypt instances.<br />"
 msgstr ""
 
 msgid "Create Config File"
 msgstr ""
 
-msgid "Create custom config file"
+msgid "Create Custom Config File"
 msgstr ""
 
 msgid "DNS Query Logfile"
@@ -50,19 +57,25 @@ msgstr ""
 msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
 msgstr ""
 
+msgid "Dnsmasq Options"
+msgstr ""
+
+msgid "Download the current resolver list from 'download.dnscrypt.org'."
+msgstr ""
+
 msgid "Edit DNSCrypt-Proxy Configuration"
 msgstr ""
 
 msgid "Edit Dnsmasq Configuration"
 msgstr ""
 
-msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgid "Edit Resolvcrypt Configuration"
 msgstr ""
 
-msgid "Ephemeral Keys"
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
 msgstr ""
 
-msgid "Extra options"
+msgid "Ephemeral Keys"
 msgstr ""
 
 msgid "File Checksum"
@@ -76,7 +89,7 @@ msgid ""
 "online</a>"
 msgstr ""
 
-msgid "General options"
+msgid "General Options"
 msgstr ""
 
 msgid "IP Address"
@@ -88,10 +101,7 @@ msgstr ""
 msgid "Input file not found, please check your configuration."
 msgstr ""
 
-msgid "Instance options"
-msgstr ""
-
-msgid "Keep in mind to configure Dnsmasq as well."
+msgid "Instance Options"
 msgstr ""
 
 msgid "Local Cache"
@@ -106,16 +116,38 @@ msgid ""
 "is happening on the network."
 msgstr ""
 
-msgid "Name of the remote DNS service for resolving queries."
+msgid ""
+"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- "
+"and NOLOG-Flag."
 msgstr ""
 
-msgid ""
-"Options for further tweaking in case the defaults are not suitable for you."
+msgid "No SSL support available.<br />"
+msgstr ""
+
+msgid "No default resolver list and no SSL support available.<br />"
 msgstr ""
 
 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 'download.dnscrypt.org'."
+msgstr ""
+
+msgid ""
+"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv' to use this package."
+msgstr ""
+
+msgid ""
+"Please note: This may change the values for 'noresolv', 'resolvfile', "
+"'allservers' and the list 'server' settings."
+msgstr ""
+
 msgid "Port"
 msgstr ""
 
@@ -125,12 +157,7 @@ msgstr ""
 msgid "Refresh Resolver List"
 msgstr ""
 
-msgid "Resolver"
-msgstr ""
-
-msgid ""
-"SSL support not available, please install an libustream-ssl variant to use "
-"this package."
+msgid "Resolver (LOC/SEC/NOLOG)"
 msgstr ""
 
 msgid "Save"
@@ -142,6 +169,9 @@ msgstr ""
 msgid "Startup Trigger"
 msgstr ""
 
+msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />"
+msgstr ""
+
 msgid "The listening port for DNS queries."
 msgstr ""
 
@@ -165,6 +195,11 @@ msgid ""
 "file (/etc/config/dhcp)."
 msgstr ""
 
+msgid ""
+"This form allows you to modify the content of the resolv-crypt configuration "
+"file (/etc/resolv-crypt.conf)."
+msgstr ""
+
 msgid "This form shows the content of the current DNSCrypt Resolver List."
 msgstr ""
 
@@ -178,10 +213,12 @@ msgid ""
 "server."
 msgstr ""
 
-msgid "To restrict the trigger, add only the relevant network interface(s)."
+msgid ""
+"To restrict the trigger, select only the relevant network interface. Usually "
+"the 'wan' interface should work for most users."
 msgstr ""
 
-msgid "Usually the 'wan' interface should work for most users."
+msgid "Transfer Options To Dnsmasq"
 msgstr ""
 
 msgid "View Logfile"
index f2faab8809fa16f0a834b3a5182f0ab3ac406283..f21d49250afed0e5280862c11d4dde24e20e9f41 100644 (file)
@@ -1,7 +1,15 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
-"Last-Translator: Hing-wang Liao <kuoruan@gmail.com>\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"PO-Revision-Date: 2017-10-28 18:56+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "%s in %s"
 msgstr "%s 位于 %s"
@@ -62,7 +70,7 @@ msgid ""
 "otherwise covered by the firewall framework. The commands are executed after "
 "each firewall restart, right after the default ruleset has been loaded."
 msgstr ""
-"自定义规则允许执行不属于防火墙框架的任意 iptables 命令。每次重启防火墙时,"
+"自定义规则允许执行不属于防火墙框架的任意 iptables 命令。每次重启防火墙时,"
 "在默认的规则运行后这些命令将立即执行。"
 
 msgid "Destination IP address"
@@ -384,7 +392,7 @@ msgid ""
 "forwarded traffic between different networks within the zone. <em>Covered "
 "networks</em> specifies which available networks are members of this zone."
 msgstr ""
-"本节定义 %q 的通用属性, <em>入站数据</em>和<em>出站数据</em>选项用于设置此区"
+"本节定义 %q 的通用属性,<em>入站数据</em>和<em>出站数据</em>选项用于设置此区"
 "域入站和出站流量的默认策略,<em>转发</em>选项描述该区域内不同网络之间的流量转"
 "发策略。<em>覆盖网络</em>指定从属于这个区域的网络。"
 
@@ -441,7 +449,7 @@ msgstr "星期"
 msgid ""
 "You may specify multiple by selecting \"-- custom --\" and then entering "
 "protocols separated by space."
-msgstr "也可以选择“--自定义--”来定义多个协议,在多个协议间需加空格。"
+msgstr "也可以选择“--自定义--”来定义多个协议,在多个协议间需加空格。"
 
 msgid "Zone %q"
 msgstr "区域 %q"
index fff89cbcdf4105fcdd649e8c70d00f20af855c96..eceef36632d6004afbb3742eabccd9a5c4975bb1 100644 (file)
@@ -1,42 +1,42 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-21 12: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"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"PO-Revision-Date: 2017-10-28 18:56+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "%s in %s"
-msgstr "%s 在 %s 之中"
+msgstr "%s 位於 %s"
 
 msgid "%s%s with %s"
-msgstr "%s%s å\90\8c %s"
+msgstr "%s%s å\92\8c %s"
 
 msgid "%s, %s in %s"
-msgstr " %s, %s 在 %s 之中"
+msgstr "%s, %s 位於 %s"
 
 msgid "(Unnamed Entry)"
-msgstr "(未命名的項目)"
+msgstr "(未命名條目)"
 
 msgid "(Unnamed Rule)"
-msgstr "(未命名的規則)"
+msgstr "(未命名規則)"
 
 msgid "(Unnamed SNAT)"
-msgstr "(未命名的來源NAT)"
+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> ä¸\94限制到 %s"
+msgstr "<var>%s</var> ä¸¦限制到 %s"
 
 msgid "Action"
 msgstr "動作"
@@ -48,63 +48,63 @@ msgid "Add and edit..."
 msgstr "新增並編輯..."
 
 msgid "Advanced Settings"
-msgstr "é\80²階設定"
+msgstr "é«\98階設定"
 
 msgid "Allow forward from <em>source zones</em>:"
-msgstr "允許從<em>source zones</em>轉發:"
+msgstr "允許從<em>源區域</em>轉發:"
 
 msgid "Allow forward to <em>destination zones</em>:"
-msgstr "允許從 <em>destination zones</em>轉發:"
+msgstr "允許轉發到<em>目標區域</em>:"
 
 msgid "Any"
-msgstr "任"
+msgstr "任"
 
 msgid "Covered networks"
-msgstr "已覆蓋的網路"
+msgstr "覆蓋網路"
 
 msgid "Custom Rules"
-msgstr "自訂的規則群"
+msgstr "自定義規則"
 
 msgid ""
 "Custom rules allow you to execute arbitrary iptables commands which are not "
 "otherwise covered by the firewall framework. The commands are executed after "
 "each firewall restart, right after the default ruleset has been loaded."
 msgstr ""
-"自定義規則允許你執行這是不以其他方式涉及的防火牆框架arbitrary的iptables命令。"
-"該å\91½ä»¤æ\98¯æ¯\8få\80\8bé\98²ç\81«ç\89\86é\87\8då\95\9få¾\8cå\9f·è¡\8cï¼\8cé»\98èª\8dè¦\8få\89\87é\9b\86å·²ç¶\93å\8a è¼\89ä¹\8bå¾\8cã\80\82"
+"自定義規則允許您執行不屬於防火牆框架的任意 iptables 命令。每次重啟防火牆時,"
+"å\9c¨é \90設ç\9a\84è¦\8få\89\87å\9f·è¡\8cå¾\8cé\80\99äº\9bå\91½ä»¤å°\87ç«\8bå\8d³å\9f·è¡\8cã\80\82"
 
 msgid "Destination IP address"
-msgstr "目標IP位址"
+msgstr "目標 IP 位址"
 
 msgid "Destination address"
 msgstr "目標位址"
 
 msgid "Destination port"
-msgstr "目埠"
+msgstr "目埠"
 
 msgid "Destination zone"
-msgstr "目標區"
+msgstr "目標區"
 
 msgid "Do not rewrite"
-msgstr "不要改寫"
+msgstr "不寫"
 
 msgid "Drop invalid packets"
-msgstr "丟棄不正確的封包群"
+msgstr "丟棄無效資料包"
 
 msgid "Enable"
 msgstr "啟用"
 
 msgid "Enable NAT Loopback"
-msgstr "å\95\93ç\94¨NATå\9b\9eå\82³"
+msgstr "å\95\9fç\94¨ NAT ç\92°å\9b\9e"
 
 msgid "Enable SYN-flood protection"
-msgstr "啟用SYN-flood攻擊的保護"
+msgstr "啟用 SYN-flood 防禦"
 
 msgid "Enable logging on this zone"
-msgstr "å\95\9fç\94¨æ\97¥èª\8cè¨\98é\8c\84é\80\99å\8d\80"
+msgstr "å\95\9fç\94¨æ­¤å\8d\80å\9f\9fç\9a\84æ\97¥èª\8cè¨\98é\8c\84"
 
 msgid "External IP address"
-msgstr "外部IP位址"
+msgstr "外部 IP 位址"
 
 msgid "External port"
 msgstr "外部埠"
@@ -113,22 +113,22 @@ msgid "External zone"
 msgstr "外部區域"
 
 msgid "Extra arguments"
-msgstr "é¡\8då¤\96å\8f\83數"
+msgstr "é\99\84å\8a å¼\95數"
 
 msgid "Firewall"
 msgstr "防火牆"
 
 msgid "Firewall - Custom Rules"
-msgstr "防火牆-自訂規則"
+msgstr "防火牆 - 自定義規則"
 
 msgid "Firewall - Port Forwards"
-msgstr "防火牆-埠轉發"
+msgstr "防火牆 - 埠轉發"
 
 msgid "Firewall - Traffic Rules"
-msgstr "防火牆-流量規則"
+msgstr "防火牆 - 通訊規則"
 
 msgid "Firewall - Zone Settings"
-msgstr "防火牆-區域設定"
+msgstr "防火牆 - 區域設定"
 
 msgid "Force connection tracking"
 msgstr "強制連線追蹤"
@@ -140,19 +140,19 @@ msgid "Forward to"
 msgstr "轉發到"
 
 msgid "Friday"
-msgstr ""
+msgstr "星期五"
 
 msgid "From %s in %s"
-msgstr "從%s在%s"
+msgstr "來自 %s 位於 %s"
 
 msgid "From %s in %s with source %s"
-msgstr "從%s在%s與來源%"
+msgstr "來自 %s 位於 %s 源於 %s"
 
 msgid "From %s in %s with source %s and %s"
-msgstr "從%s在%s與來源%s和%s"
+msgstr "來自 %s 位於 %s 源埠 %s 源 MAC %s"
 
 msgid "General Settings"
-msgstr "ä¸\80è\88¬è¨­å®\9a"
+msgstr "å\9fºæ\9c¬è¨­å®\9a"
 
 msgid "IPv4"
 msgstr "IPv4"
@@ -161,205 +161,205 @@ msgid "IPv4 and IPv6"
 msgstr "IPv4 和 IPv6"
 
 msgid "IPv4 only"
-msgstr "僅IPv4"
+msgstr "僅 IPv4"
 
 msgid "IPv6"
 msgstr "IPv6"
 
 msgid "IPv6 only"
-msgstr "僅IPv6"
+msgstr "僅 IPv6"
 
 msgid "Input"
-msgstr "輸入"
+msgstr "入站資料"
 
 msgid "Inter-Zone Forwarding"
-msgstr "å\85§é\83¨-å\8d\80è½\89發"
+msgstr "å\9f è§¸發"
 
 msgid "Internal IP address"
-msgstr "內部的IP位址"
+msgstr "內部 IP 位址"
 
 msgid "Internal port"
-msgstr "內部的埠號"
+msgstr "內部"
 
 msgid "Internal zone"
-msgstr "內部區"
+msgstr "內部區"
 
 msgid "Limit log messages"
-msgstr "é\99\90å\88¶æ\97¥èª\8cè¨\8aæ\81¯æ\95¸"
+msgstr "é\99\90å\88¶æ\97¥èª\8cè³\87è¨\8a"
 
 msgid "MSS clamping"
-msgstr "MSS調節"
+msgstr "MSS 鉗制"
 
 msgid "Masquerading"
-msgstr "偽裝"
+msgstr "IP 動態偽裝"
 
 msgid "Match"
-msgstr "匹配"
+msgstr "匹配規則"
 
 msgid "Match ICMP type"
-msgstr "匹配的ICMP型態"
+msgstr "匹配 ICMP 型別"
 
 msgid "Match forwarded traffic to the given destination port or port range."
-msgstr "匹配已轉發的流量到給定的目標埠或者範圍埠"
+msgstr "匹配指定目標埠或目標埠範圍的轉發流量。"
 
 msgid ""
 "Match incoming traffic directed at the given destination port or port range "
 "on this host"
-msgstr "匹配輸入的流量到主機上給定的目標埠或者範圍埠"
+msgstr "匹配指向此主機上指定目標埠或目標埠範圍的入站流量。"
 
 msgid ""
 "Match incoming traffic originating from the given source port or port range "
 "on the client host."
-msgstr "å¾\9e給å®\9aç\9a\84ä¾\86æº\90å\9f æ\88\96ç¯\84å\9c\8då\9f å\9c¨å®¢æ\88¶ç«¯ä¸»æ©\9fä¸\8aç\9a\84å\8c¹é\85\8då\82³å\85¥æµ\81é\87\8få§\8bç\99¼。"
+msgstr "å\8c¹é\85\8dä¾\86è\87ªå®¢æ\88¶ç«¯ä¸»æ©\9fä¸\8aæ\8c\87å®\9aæº\90å\9f æ\88\96æº\90å\9f ç¯\84å\9c\8dç\9a\84å\85¥ç«\99æµ\81é\87\8f。"
 
 msgid "Monday"
-msgstr ""
+msgstr "星期一"
 
 msgid "Month Days"
-msgstr ""
+msgstr "日期"
 
 msgid "Name"
-msgstr "名"
+msgstr "名"
 
 msgid "New SNAT rule"
-msgstr "新的來源NAT規則"
+msgstr "新建 SNAT 規則"
 
 msgid "New forward rule"
-msgstr "新轉發規則"
+msgstr "新轉發規則"
 
 msgid "New input rule"
-msgstr "新入規則"
+msgstr "新建進入規則"
 
 msgid "New port forward"
-msgstr "新轉發埠"
+msgstr "新建埠轉發"
 
 msgid "New source NAT"
-msgstr "新來源埠"
+msgstr "新建 Source NAT"
 
 msgid "Only match incoming traffic directed at the given IP address."
-msgstr "僅匹配傳入流量予給定的IP地址."
+msgstr "僅匹配指定目的 IP 位址的入站流量。"
 
 msgid "Only match incoming traffic from these MACs."
-msgstr "僅匹配從這些MAC群的傳入流量."
+msgstr "僅匹配來自這些 MAC 的入站流量。"
 
 msgid "Only match incoming traffic from this IP or range."
-msgstr "僅匹配從這個IP或範圍IP給傳入流量."
+msgstr "僅匹配來自此 IP 或 IP 範圍的入站流量。"
 
 msgid ""
 "Only match incoming traffic originating from the given source port or port "
 "range on the client host"
-msgstr "僅匹配從給定的來源埠或範圍埠的客戶端主機上給傳入流量."
+msgstr "僅匹配源自客戶端主機上給定源埠或源埠範圍的入站流量。"
 
 msgid "Open ports on router"
-msgstr "開啟路由器上的埠號群"
+msgstr "開啟路由器"
 
 msgid "Other..."
 msgstr "其它..."
 
 msgid "Output"
-msgstr "輸出"
+msgstr "出站資料"
 
 msgid "Passes additional arguments to iptables. Use with care!"
-msgstr "通行額外的參數到 iptables上. 使用要小心!"
+msgstr "傳遞到 iptables 的額外引數。小心使用!"
 
 msgid "Port Forwards"
-msgstr "埠轉"
+msgstr "埠轉"
 
 msgid ""
 "Port forwarding allows remote computers on the Internet to connect to a "
 "specific computer or service within the private LAN."
-msgstr "埠轉發允許遠端網際網路上的電腦來連接到在私人區網內指定的電腦或服務."
+msgstr "埠轉發允許 Internet 上的遠端計算機連線到內部網路中的特定計算機或服務。"
 
 msgid "Protocol"
-msgstr "協"
+msgstr "協"
 
 msgid ""
 "Redirect matched incoming traffic to the given port on the internal host"
-msgstr "é\87\8då°\8eå\90\91å·²å\8c¹é\85\8då\82³å\85¥æµ\81é\87\8få\88°å\85§é\83¨ä¸»æ©\9fä¸\8aç\9a\84æ\8c\87å®\9a埠"
+msgstr "é\87\8då®\9aå\90\91å\8c¹é\85\8dç\9a\84å\85¥ç«\99æµ\81é\87\8få\88°å\85§é\83¨ä¸»æ©\9fç\9a\84埠"
 
 msgid "Redirect matched incoming traffic to the specified internal host"
-msgstr "é\87\8då°\8eå\90\91å·²å\8c¹é\85\8då\82³å\85¥æµ\81é\87\8få\88°å\85§é\83¨ä¸»æ©\9fä¸\8a"
+msgstr "é\87\8då®\9aå\90\91å\8c¹é\85\8dç\9a\84å\85¥ç«\99æµ\81é\87\8få\88°æ\8c\87å®\9aç\9a\84å\85§é\83¨ä¸»æ©\9f"
 
 msgid "Restart Firewall"
-msgstr ""
+msgstr "重啟防火牆"
 
 msgid "Restrict Masquerading to given destination subnets"
-msgstr "限制偽裝到已給予的目標子網路"
+msgstr "要限制 IP 動態偽裝的目標子網"
 
 msgid "Restrict Masquerading to given source subnets"
-msgstr "限制偽裝到已給予的來源子網路"
+msgstr "要限制 IP 動態偽裝的源子網"
 
 msgid "Restrict to address family"
-msgstr "限制的位址群"
+msgstr "限制位址"
 
 msgid "Rewrite matched traffic to the given address."
-msgstr "改寫已匹配的流量到給定的位址."
+msgstr "將匹配流量的源位址改寫成指定位址。"
 
 msgid ""
 "Rewrite matched traffic to the given source port. May be left empty to only "
 "rewrite the IP address."
-msgstr "改寫已匹配的流量到給定的來源埠. 或許可以保留空白到唯一改寫的IP位址."
+msgstr "將匹配流量的源埠改寫成指定埠。留空只改寫 IP 位址。"
 
 msgid "Rewrite to source %s"
-msgstr "æ\94¹å¯«å\88°ä¾\86æº\90 %s"
+msgstr "æº\90ä½\8då\9d\80æ\94¹å¯«æ\88\90 %s"
 
 msgid "Rewrite to source %s, %s"
-msgstr "æ\94¹å¯«å\88°ä¾\86æº\90 %s, %s"
+msgstr "æº\90ä½\8då\9d\80æ\94¹å¯«æ\88\90 %s, %s"
 
 msgid "SNAT IP address"
-msgstr "來源NAT IP 位址"
+msgstr "SNAT IP 位址"
 
 msgid "SNAT port"
-msgstr "來源NAT IP 埠"
+msgstr "SNAT 埠"
 
 msgid "Saturday"
-msgstr ""
+msgstr "星期六"
 
 msgid "Source IP address"
-msgstr "源 IP 位址"
+msgstr "源 IP 位址"
 
 msgid "Source MAC address"
-msgstr "來源 MAC硬體位址"
+msgstr "源 MAC 位址"
 
 msgid "Source NAT"
-msgstr "來源NAT"
+msgstr "Source NAT"
 
 msgid ""
 "Source NAT is a specific form of masquerading which allows fine grained "
 "control over the source IP used for outgoing traffic, for example to map "
 "multiple WAN addresses to internal subnets."
 msgstr ""
-"來源NAT是偽裝的一種特殊形式,它允許對輸出流量的來源IP進行精細控制, 例如要對映"
-"å\88°å¤\9aå\80\8bWANä½\8då\9d\80å\88°å\85§é\83¨å­\90網路群ä¸\8a."
+"Source NAT 是一種特殊形式的封包偽裝,它允許精細的控制傳出流量的源 IP,例如:"
+"å°\87å¤\9aå\80\8b WAN ä½\8då\9d\80å°\8dæ\98 å\88°å\85§é\83¨å­\90網ã\80\82"
 
 msgid "Source address"
-msgstr "源位址"
+msgstr "源位址"
 
 msgid "Source port"
-msgstr "源埠"
+msgstr "源埠"
 
 msgid "Source zone"
-msgstr "來源區"
+msgstr "源區域"
 
 msgid "Start Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "開始日期(yyyy-mm-dd)"
 
 msgid "Start Time (hh:mm:ss)"
-msgstr ""
+msgstr "開始時間(hh:mm:ss)"
 
 msgid "Stop Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "停止日期(yyyy-mm-dd)"
 
 msgid "Stop Time (hh:mm:ss)"
-msgstr ""
+msgstr "停止時間(hh:mm:ss)"
 
 msgid "Sunday"
-msgstr ""
+msgstr "星期日"
 
 msgid ""
 "The firewall creates zones over your network interfaces to control network "
 "traffic flow."
-msgstr "防火牆對你的網路建立區域以便控制網路流向."
+msgstr "防火牆通過在網路介面上建立區域來控制網路流量。"
 
 msgid ""
 "The options below control the forwarding policies between this zone (%s) and "
@@ -369,22 +369,21 @@ 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 ""
-"下列的選項控制這區域(%s)和其它區轉發策略.<em>目地區</em> 覆蓋<strong>從 %q 起"
-"源的 </strong>已轉發的流量.<em>來源區</em>匹配從其它區域<strong>針對 %q</"
-"strong>的轉發流量.轉發規則是<em>單向的</em>."
+"以下選項可以控制區域(%s)和其它區域間的轉發規則。<em>目標區域</em>接收"
+"<strong>源自 %q</strong> 的轉發流量。<em>源區域</em>匹配從<strong>目標為 %q</"
+"strong> 的區域的需轉發流量。轉發規則的作用是<em>單向</em>的,例如:一條允許"
+"從 lan 到 wan 的轉發規則並不隱含有允許相反方向從 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 ""
-"這頁面允許你修改這個轉發埠項目的進階選項. 在大多數情況下,不需要修改這些設定."
+msgstr "本頁面可以更改埠轉發的高階設定。大多數情況下,不需要更改這些設定。"
 
 msgid ""
 "This page allows you to change advanced properties of the traffic rule "
 "entry, such as matched source and destination hosts."
-msgstr "這頁面允許改變進階流量規則項目的進階設置, 例如匹配的來源和目標主機."
+msgstr "本頁面可以更改通訊規則的高階設定,比如:需匹配的源主機和目標主機。"
 
-#, 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 "
@@ -392,91 +391,91 @@ msgid ""
 "forwarded traffic between different networks within the zone. <em>Covered "
 "networks</em> specifies which available networks are members of this zone."
 msgstr ""
-"本節定義 %q 的通用屬性.在<em>輸入</em>和<em>輸出</em>選項設置交通進出的默認策"
-"略,而在<em>轉發</em>的選項描述在這區域內不同網路的轉發流量.<em>已覆蓋的網路群"
-"</em>指定特定區域成員可以是被運用的網路."
+"本節定義 %q 的通用屬性,<em>入站資料</em>和<em>出站資料</em>選項用於設定此區"
+"域入站和出站流量的預設策略,<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在上的<var>此設備</var>的%s的"
+msgstr "到 %s 在 %s 位於<var>本裝置</var>"
 
 msgid "To %s in %s"
-msgstr "到%s在%s"
+msgstr "到 %s 位於 %s"
 
 msgid "To %s on <var>this device</var>"
-msgstr "到%s上的<var>此設備</var>的"
+msgstr "到 %s 位於<var>本裝置</var>"
 
 msgid "To %s, %s in %s"
-msgstr "到%s,%s的%s中"
+msgstr "到 %s, %s 位於 %s"
 
 msgid "To source IP"
-msgstr "來源IP"
+msgstr "到源 IP"
 
 msgid "To source port"
-msgstr "源埠"
+msgstr "源埠"
 
 msgid "Traffic Rules"
-msgstr "流量規則"
+msgstr "通訊規則"
 
 msgid ""
 "Traffic rules define policies for packets traveling between different zones, "
 "for example to reject traffic between certain hosts or to open WAN ports on "
 "the router."
 msgstr ""
-"流量規則定義在不同區域之間竄行封包的策略,例如要拒絕特定主機群的流量或者要打開"
-"路由器上WAN埠。"
+"通訊規則定義了不同區域間的資料包傳輸策略,例如:拒絕一些主機之間的通訊,開放"
+"路由器 WAN 上的埠。"
 
 msgid "Tuesday"
-msgstr ""
+msgstr "星期二"
 
 msgid "Via %s"
-msgstr "通過%s的"
+msgstr "通過 %s"
 
 msgid "Via %s at %s"
-msgstr "通過%s在%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 "你可以以選擇\"-- 自訂 --\"並且打入由空格分開的協定來做多重指定."
+msgstr "您也可以選擇“--自定義--”來定義多個協議,在多個協議間需加空格。"
 
 msgid "Zone %q"
 msgstr "區域 %q"
 
 msgid "Zone ⇒ Forwardings"
-msgstr "區域 ⇒ 轉發進行"
+msgstr "區域 ⇒ 轉發"
 
 msgid "Zones"
-msgstr "域"
+msgstr "域"
 
 msgid "accept"
 msgstr "接受"
 
 msgid "any"
-msgstr "任意"
+msgstr "所有"
 
 msgid "any host"
-msgstr "任意埠"
+msgstr "所有主機"
 
 msgid "any router IP"
-msgstr "任意路由器IP"
+msgstr "所有路由 IP"
 
 msgid "any zone"
-msgstr "任意區"
+msgstr "所有區域"
 
 msgid "don't track"
-msgstr "ä¸\8dè¦\81追蹤"
+msgstr "ä¸\8dè·\9f蹤"
 
 msgid "drop"
 msgstr "丟棄"
@@ -485,10 +484,4 @@ msgid "reject"
 msgstr "拒絕"
 
 msgid "traffic"
-msgstr ""
-
-#~ msgid "-- Please choose --"
-#~ msgstr "-- 請選擇 --"
-
-#~ msgid "-- custom --"
-#~ msgstr "-- 自訂 --"
+msgstr "通訊"
index ff0aabc3ce627714d6d1ffdf547343cdfcf82566..6a07b1dce95aeccf6a55543f4101a8a503666599 100644 (file)
@@ -33,7 +33,7 @@ msgid ""
 "connection as a fallback. If you do not want this and instead block that "
 "traffic then you should select this option."
 msgstr ""
-"如果没有缺省的mesh网络路由,则使用属于防火墙区域内的Internet连接作为备用路由。如果你不想要这个,而是阻止该流量,那么你应该选择此选项。"
+"如果没有缺省的mesh网络路由,则使用属于防火墙区域内的Internet连接作为备用路由。如果您不想要这个,而是阻止该流量,那么您应该选择此选项。"
 
 msgid ""
 "If your own gateway is not available then fallback to the mesh default "
@@ -53,5 +53,5 @@ msgid ""
 "'Ego Mode'). Your own traffic is then sent via your internet connection "
 "while traffic originating from the mesh will use another gateway in the mesh."
 msgstr ""
-"这些页面用于某些防火墙区域设置策略路由。这是非常有用的,如果你需要自己使用自己的互联网连接,但你不想把它分享给其他人(这就是为什么它也被称为“自我模式'"
-")。你自己的流量,通过你的互联网连接发送,而mesh中的数据包将使用mesh中另外的网关。"
+"这些页面用于某些防火墙区域设置策略路由。这是非常有用的,如果您需要自己使用自己的互联网连接,但您不想把它分享给其他人(这就是为什么它也被称为“自我模式'"
+")。您自己的流量,通过您的互联网连接发送,而mesh中的数据包将使用mesh中另外的网关。"
index 65ef012450ce7dc18d23fe3dfa59cc7887ce7b5d..9e5057e701a2d350726a7711c8b4e96df71706a7 100644 (file)
@@ -3,6 +3,7 @@
 #-- Licensed to the public under the GNU General Public License v2.
 . /lib/functions/network.sh
 
+[ "$(uci -q get fwknopd.@access[0].KEY)" != "CHANGEME" ] && exit 0
 uci batch <<EOF
        add ucitrack fwknopd
        set ucitrack.@fwknopd[-1].init=fwknopd
index abca5d3e5a3016506d0fbcc5332fc2aa06dee4a0..48850bd361ff4172f30ad259ad0dcd5860da7380 100644 (file)
@@ -4,23 +4,23 @@ if [ "$1" != "" ]; then
 entry_num=$1
 fi
 
-key_base64=$(uci get fwknopd.@access[$entry_num].KEY_BASE64)
-key=$(uci get fwknopd.@access[$entry_num].KEY)
-hmac_key_base64=$(uci get fwknopd.@access[$entry_num].HMAC_KEY_BASE64)
-hmac_key=$(uci get fwknopd.@access[$entry_num].HMAC_KEY)
+key_base64=$(uci -q get fwknopd.@access[$entry_num].KEY_BASE64)
+key=$(uci -q get fwknopd.@access[$entry_num].KEY)
+hmac_key_base64=$(uci -q get fwknopd.@access[$entry_num].HMAC_KEY_BASE64)
+hmac_key=$(uci -q get fwknopd.@access[$entry_num].HMAC_KEY)
 
-if [ $key_base64 != "" ]; then
+if [ "$key_base64" != "" ]; then
 qr="KEY_BASE64:$key_base64"
 fi
-if [ $key != "" ]; then
+if [ "$key" != "" ]; then
 qr="$qr KEY:$key"
 
 fi
-if [ $hmac_key_base64 != "" ]; then
+if [ "$hmac_key_base64" != "" ]; then
 qr="$qr HMAC_KEY_BASE64:$hmac_key_base64"
 fi
-if [ $hmac_key != "" ]; then
+if [ "$hmac_key" != "" ]; then
 qr="$qr HMAC_KEY:$hmac_key"
 fi
 
-qrencode -o - "$qr"
+qrencode -t svg -I -o - "$qr"
index d5d0707f1705f88623988b27471bb153018764df..b04c88018363b8ad8873c62cd413d631c1e6b0dc 100644 (file)
@@ -20,7 +20,7 @@ msgid "Channel"
 msgstr "频道"
 
 msgid "Check this to protect your LAN from other nodes or clients"
-msgstr "选择此项,隔离其他节点或客户端的攻击来保护的局域网"
+msgstr "选择此项,隔离其他节点或客户端的攻击来保护的局域网"
 
 msgid "Cleanup config"
 msgstr "清空配置"
@@ -76,14 +76,14 @@ msgstr "保护LAN口"
 
 msgid ""
 "Select this to allow others to use your connection to access the internet."
-msgstr "选择这项来允许其它程序用这个连接来接入因特网"
+msgstr "选择这项来允许其它程序用这个连接来接入因特网"
 
 #, fuzzy
 msgid "Send router advertisements on this device."
 msgstr "在这个设备上发送路由广播"
 
 msgid "Share your internet connection"
-msgstr "分享的Internet连接"
+msgstr "分享的Internet连接"
 
 msgid ""
 "The IP range from which clients are assigned ip addresses (e.g. "
index 99ef68cbcaad12e9588b403bf083b2dc805f5b5d..067d08cf0ae7d54c7f7c1bad336e916de4ce1239 100644 (file)
@@ -91,6 +91,10 @@ s:taboption("advanced", Flag, "enable_tivo", translate("Enable TIVO:"),
        translate("Set this to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO."))
 o.rmempty = true
 
+s:taboption("advanced", Flag, "wide_links", translate("Allow wide links:"),
+       translate("Set this to allow serving content outside the media root (via symlinks)."))
+o.rmempty = true
+
 o = s:taboption("advanced", Flag, "strict_dlna", translate("Strict to DLNA standard:"),
        translate("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."))
 o.rmempty = true
@@ -126,7 +130,7 @@ o:value("P", translate("Pictures"))
 
 
 s:taboption("general", DynamicList, "media_dir", translate("Media directories:"),
-       translate("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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."))
+       translate("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."))
 
 
 o = s:taboption("general", DynamicList, "album_art_names", translate("Album art names:"),
index bf160080ec1c67e6d187782700a6fe689ee75043..dadcf04aeb310bfac02e58c366e458c7fcec48b1 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Ajusts avançats"
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -112,6 +115,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -131,7 +138,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index bf5a7f442c45effec50fb02c519ca14854b852d2..f4cbd76ec041ba4f1728219e5cce7ba746fed4f9 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Pokročilé nastavení"
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -114,6 +117,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -133,7 +140,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 22cb0f7e9e18caf4cf603e122fad9dacead1ff7f..d001696874591b70b0233428554d931992fc341c 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Erweiterte Einstellungen"
 msgid "Album art names:"
 msgstr "Dateinamen für Cover-Bilder:"
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr "Angekündigte Modellnummer:"
 
@@ -122,6 +125,10 @@ msgstr ""
 "Diesen Wert setzen um das Verzeichnis zu bestimmen in dem miniDLNA seine "
 "Protokolldateien ablegt."
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -149,7 +156,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Spezifiziert die zu durchsuchenden Medienverzeichnisse. Durch Voranstellung "
 "eines Buchstaben gefolgt von einem Komma kann ein Verzeichnis auf einen "
index 48c6188390b1363379a33672a5b71a7fc2f72696..d319afd2384eb46420d264914394d086af10760f 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -109,6 +112,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -128,7 +135,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 5934d42e9ed56337c7efd589af95e1ea008d3b94..ca5bc3b5937ff2a64e0b61063ebc6d1fe3c17f5f 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr "Album art names:"
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr "Announced model number:"
 
@@ -120,6 +123,10 @@ msgstr ""
 "Set this if you would like to specify the directory where you want MiniDLNA "
 "to store its log file."
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -145,12 +152,12 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "Specify the path to the MiniSSDPd socket."
index 5f6b3964f3ff685935b4b9ab8a09182e27b1c1b1..f71e9a2b9e09fe3466238d1a89eedd643c5edf37 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Configuración avanzada"
 msgid "Album art names:"
 msgstr "Imágenes de álbumes:"
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr "Número de modelo declarado:"
 
@@ -120,6 +123,10 @@ msgid ""
 "to store its log file."
 msgstr "Indicar el directorio donde MiniDLNA guardará su archivo de registro."
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr "Inotify descubrirá automáticamente nuevos archivos."
@@ -142,12 +149,12 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Directorio a explorar. Si quiere restringir el directorio a un contenido "
 "específico puede añadir el tipo ('A' par audio, 'V' para vídeo o 'P' para "
-"imágenes), seguido por una coma al nombre del directorio (ej. media_dir=A,/"
-"mnt/media/Music). Se puede establecer varios directorios."
+"imágenes), seguido por una coma al nombre del directorio (ej. A,/mnt/media/"
+"Music). Se puede establecer varios directorios."
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "Camino al socket de MiniSSDPd."
index d638b0cba741a2e5a4863e5a11fd394de4c9a66d..498dea6c80731acaf0371c969ea82626a961ac9c 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -109,6 +112,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -128,7 +135,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 48c6188390b1363379a33672a5b71a7fc2f72696..d319afd2384eb46420d264914394d086af10760f 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -109,6 +112,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -128,7 +135,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 52fbe749eb366b0d8fb10f8f939800cc781e48c6..c1371afd9eaf52147f693424b3489d186769fabb 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Haladó beállítások"
 msgid "Album art names:"
 msgstr "Borító album nevek:"
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr "Közölt modellszám:"
 
@@ -122,6 +125,10 @@ msgstr ""
 "Áttítsa be, ha meg szeretné adni azt a könyvtárat, ahová a MiniDLNA a napló "
 "állományait mentse."
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -147,12 +154,12 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Állítsa be a vizsgálandó könyvtárra. Ha a könyvtárat egy adott típusú "
 "tartalom szerint szeretné korlátozni, akkor a neve előtt vesszővel "
 "elválasztva megadhatja a típust ('A' az audió, 'V' a videó, 'P' a képek "
-"számára. pl.: media_dir=A,/mnt/media/Music). Több könyvtár is megadható."
+"számára. pl.: A,/mnt/media/Music). Több könyvtár is megadható."
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "A MiniSSDPd socket elérési útját határozza meg."
index 1c0abc672229d3e12e0f9ef16e998187705f89e3..4ecc3d4ae5e9fbaff0b791d5b463576cdc9025bd 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Opzioni avanzate"
 msgid "Album art names:"
 msgstr "Nome Copertina Album:"
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr "Numero modello annunciato:"
 
@@ -101,8 +104,7 @@ msgid ""
 "Serial number the miniDLNA daemon will report to clients in its XML "
 "description."
 msgstr ""
-"Serial number che il server miniDLNA invierà ai client nella descrizione "
-"XML."
+"Serial number che il server miniDLNA invierà ai client nella descrizione XML."
 
 msgid ""
 "Set this if you want to customize the name that shows up on your clients."
@@ -122,6 +124,10 @@ msgstr ""
 "Impostare questa opzione se si desidera specificare la cartella in cui si "
 "desidera che MiniDLNA archivi i propri file di registro."
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -132,8 +138,8 @@ msgid ""
 "Set this to enable support for streaming .jpg and .mp3 files to a TiVo "
 "supporting HMO."
 msgstr ""
-"Impostare questo per abilitare il supporto per lo streaming di file .jpg e "
-".mp3 ad un supporto TiVo che supporta HMO."
+"Impostare questo per abilitare il supporto per lo streaming di file .jpg e ."
+"mp3 ad un supporto TiVo che supporta HMO."
 
 msgid ""
 "Set this to strictly adhere to DLNA standards. This will allow server-side "
@@ -149,13 +155,13 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Impostare la cartella che si desidera sottoporre a scansione. Se si desidera "
 "limitare la directory per un tipo di contenuto specifico, è possibile "
 "anteporre il tipo ('A' per l'audio, 'V' per video, 'P' per le immagini), "
-"seguito da una virgola, nella cartella (es. media_dir = A,/mnt/media/Music). "
-"Cartelle multiple possono essere specificate."
+"seguito da una virgola, nella cartella (es. A,/mnt/media/Music). Cartelle "
+"multiple possono essere specificate."
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "Specificare il percorso del socket MiniSSDPd."
@@ -170,8 +176,7 @@ msgid ""
 "The miniDLNA service is active, serving %d audio, %d video and %d image "
 "files."
 msgstr ""
-"Il servizio miniDLNA è attivo, servo %d audio, %d video, %d file di "
-"immagine."
+"Il servizio miniDLNA è attivo, servo %d audio, %d video, %d file di immagine."
 
 msgid "The miniDLNA service is not running."
 msgstr "Il servizio miniDLNA non è in esecuzione."
index 4cfc3385b922d64f18507a4854fbd9e87311c0b7..de2eb9b57e178275f4825b75e56466b069923ce7 100644 (file)
@@ -1,21 +1,25 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-04-10 09:10+0200\n"
-"Last-Translator: Kentaro <kentaro.matsuyama@gmail.com>\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-10-25 22:33+0900\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
 "Language-Team: none\n"
 "Language: ja\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Poedit 2.0.4\n"
+"POT-Creation-Date: \n"
 
 msgid "Advanced Settings"
 msgstr "詳細設定"
 
 msgid "Album art names:"
-msgstr "アルバムアートワーク・ファイル名:"
+msgstr "アルバムアートワーク ファイル名:"
+
+msgid "Allow wide links:"
+msgstr "ワイド リンクの許可:"
 
 msgid "Announced model number:"
 msgstr "通知するモデル番号:"
@@ -116,6 +120,12 @@ msgid ""
 "to store its log file."
 msgstr "miniDLNAが書きだすログファイルのディレクトリパスを設定してください。"
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+"シンボリックリンクを通してメディア ルート外のコンテンツの提供を許可するには、"
+"このオプションを有効にしてください。"
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -143,13 +153,13 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "miniDLNA がスキャンするディレクトリを設定します。ディレクトリを特定のコンテン"
 "ツに制限したい場合、タイプをパスのはじめに付け、コンマ記号で区切ることで設定"
 "できます ('A'=オーディオ \"audio\", 'V'=ビデオ \"video\", 'P'=写真 \"images"
-"\", 例: media_dir=A,/mnt/media/Music)。また、このオプションは複数のディレクト"
-"リを登録可能です。"
+"\", 例: A,/mnt/media/Music)。また、このオプションは複数のディレクトリを登録可"
+"能です。"
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "MiniSSDPd ソケットのパスを設定してください。"
@@ -164,8 +174,8 @@ 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 サービスは稼働していません。"
index 8df98a821fe99a017f8c03a66832da6c5d5f65bd..7372c90a83c63f4eea0b86523bb60bc35462a9dc 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -108,6 +111,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -127,7 +134,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 4b24712f7473d722b2acb8025c488f599629b4b5..daf19965640870ed2438481a54a99f799f10f5b5 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Avanserte Innstillinger"
 msgid "Album art names:"
 msgstr "Albumbilder navn:"
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr "Annonsert modellnummer:"
 
@@ -60,8 +63,8 @@ msgid ""
 "MiniDLNA is server software with the aim of being fully compliant with DLNA/"
 "UPnP-AV clients."
 msgstr ""
-"MiniDLNA er serverprogramvare som sikter på å være fullt kompatibel med DLNA"
-"/UPnP-AV klienter."
+"MiniDLNA er serverprogramvare som sikter på å være fullt kompatibel med DLNA/"
+"UPnP-AV klienter."
 
 msgid ""
 "Model number the miniDLNA daemon will report to clients in its XML "
@@ -121,6 +124,10 @@ msgstr ""
 "Her kan en definere hvilken katalog som MiniDLNA skal bruke til å lagre log "
 "filen i."
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -147,12 +154,12 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Her kan en velge den katalogen som blir skannet. Om du ønsker å begrense "
 "katalogen til en spesifikk innholdstype kan sette en bokstav foran ('A' for "
-"lyd, 'V' for video, 'P' for bilder), etterfulgt av et komma og katalogen. "
-"(f.eks media_dir=A,/mnt/media/Musikk). Flere kataloger kan brukes."
+"lyd, 'V' for video, 'P' for bilder), etterfulgt av et komma og katalogen. (f."
+"eks A,/mnt/media/Musikk). Flere kataloger kan brukes."
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "Angi banen til MiniSSDPd socketen."
index b4a8a6f676b30b79ac52d106fc7b23167fbcde63..8c03b51556db5a88cedb2aa0780600c83aca91fc 100644 (file)
@@ -18,6 +18,9 @@ msgstr "Ustawienia zaawansowane"
 msgid "Album art names:"
 msgstr "Nazwy okładek albumów:"
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr "Rozgłaszany model:"
 
@@ -120,6 +123,10 @@ msgstr ""
 "Ustaw to, jeśli chcesz podać folder, w którym miniDLNA powinien przechowywać "
 "dzienniki (logi)."
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -146,12 +153,12 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Ustaw tu folder, który chcesz skanować. Jeśli chcesz ograniczyć folder do "
 "konkretnego typu zawartości, możesz poprzedzić ścieżkę typem (\"A\" dla "
-"audio, \"V\" dla wideo, \"P\" dla obrazów) i przecinkiem (np media_dir=A,/"
-"mnt/media/Muzyka). Możesz podać kilka folderów."
+"audio, \"V\" dla wideo, \"P\" dla obrazów) i przecinkiem (np A,/mnt/media/"
+"Muzyka). Możesz podać kilka folderów."
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "Podaj ścieżkę do gniazda (socketu) miniSSDPd."
index 3d53abd466cda37085576d908703938b9de41deb..5ae9226d1897b9c6e198029f6c6ac1d0607dfd74 100644 (file)
@@ -14,6 +14,9 @@ msgstr "Configuração Avançada"
 msgid "Album art names:"
 msgstr "Nomes do Álbum artistico: "
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr "numero de modelo anunciado:"
 
@@ -121,6 +124,10 @@ msgstr ""
 "Defina esta opção se você gostaria de especificar o diretório onde você "
 "deseja MiniDLNA para armazenar seu arquivo de log."
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -148,13 +155,13 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Defina esta opção para o diretório que você deseja verificar. Se você quiser "
 "restringir o diretório para um tipo específico de conteúdo, você pode "
 "prefixar o tipo ('A' para áudio, 'V' para o vídeo, 'P' para imagens), "
-"seguido por uma vírgula, para o diretório (por exemplo media_dir = A, / "
-"mnt / media / Música). Vários diretórios podem ser especificados."
+"seguido por uma vírgula, para o diretório (por exemplo A, / mnt / media / "
+"Música). Vários diretórios podem ser especificados."
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "Especifique o caminho para o soquete MiniSSDPd."
index 96132cdf610439e88b347fe30446b5032d4c857b..dbd835f509e94ea245159ea17baa08afe61fde8c 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Definições Avançadas"
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr "Número modelo anunciado:"
 
@@ -116,6 +119,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -135,7 +142,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index cba5fe6a7a18b86bb64a2e8f440ef5056157521c..5e79cd2cf77ded8738e710088f00ac19c07898d8 100644 (file)
@@ -18,6 +18,9 @@ msgstr "Setări avansate"
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -113,6 +116,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -132,7 +139,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 539e8ca03df72a993188a0cdaecb7b0a4e22f0c8..28ae3165a945a4907dbe0d2b2da065dbe9f87dee 100644 (file)
@@ -20,6 +20,9 @@ msgstr "Расширенные настройки"
 msgid "Album art names:"
 msgstr "Имена обложек альбома:"
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr "Номер модели:"
 
@@ -122,6 +125,10 @@ msgid ""
 "to store its log file."
 msgstr "Папка, в которой miniDLNA будет хранить свой файл журнала."
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -148,13 +155,13 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Директории, которые необходимо сканировать. Если вы хотите установить "
 "ограничение на определённый тип содержимого в директории, вы можете написать "
 "тип ('A' для аудио, 'V' для видео, 'P' для изображений) перед путём к "
-"директории, за которым следует запятая (напр. media_dir=A,/mnt/media/Music). "
-"Ð\9cожеÑ\82 Ð±Ñ\8bÑ\82Ñ\8c Ñ\83казано Ð½ÐµÑ\81колÑ\8cко Ð´Ð¸Ñ\80екÑ\82оÑ\80ий."
+"директории, за которым следует запятая (напр. A,/mnt/media/Music). Может "
+"быть указано несколько директорий."
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "Укажите путь к сокету MiniSSDPd."
index 19c3e536d4667424ba3e67b8ef4a3191b32e468b..2968311d2af963cfa63b24be17157798c903905b 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -109,6 +112,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -128,7 +135,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 51a3f3a63fa0e33d84951e0ca3b65cff7d2971a3..d06abfd4cde9e3f57c3a3665b65abcbda630ff74 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -110,6 +113,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -129,7 +136,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 2b35d1e716617df9f6d053ef6cd55e71c5bad5f0..0f22c674dd579411e8047659ff83c318695c06de 100644 (file)
@@ -7,6 +7,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -102,6 +105,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -121,7 +128,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 070d64c4e8ad4d921e7fa1b95564c3521689732b..1eeba3f1bcf5145b18cd153eeb52ed8846481bb2 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -109,6 +112,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -128,7 +135,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 7df732fb0f00b991fbd507c9fbce08f27a398545..db23241cc5cf6830b9b970070005d098ed4661e0 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -110,6 +113,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -129,7 +136,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 070d64c4e8ad4d921e7fa1b95564c3521689732b..1eeba3f1bcf5145b18cd153eeb52ed8846481bb2 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -109,6 +112,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -128,7 +135,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 998975689fa8cc121107c3c83bcdfeb4bb2351dd..76ebcdade259e703401226090fcee6b4e745ff7a 100644 (file)
@@ -17,6 +17,9 @@ msgstr "高级设置"
 msgid "Album art names:"
 msgstr "专辑封面名称:"
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr "通告型号:"
 
@@ -112,6 +115,10 @@ msgid ""
 "to store its log file."
 msgstr "设置miniDLNA日志目录"
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr "设定启用inotify监控,自动发现新的文件。"
@@ -129,15 +136,16 @@ msgstr ""
 "设定严格遵守DLNA标准。这将允许服务器端降小大尺寸JPEG图像,在(至少)索尼DLNA"
 "的产品这可能会降低JPEG服务性能。"
 
-# 如果写成media_dir=A,/mnt/media/Music,uci会报错。实际上应该是A,/mnt/media/Music,这样生成的minidlna.conf刚好是media_dir=A,/mnt/media/Music
+# 如果写成A,/mnt/media/Music,uci会报错。实际上应该是A,/mnt/media/Music,这样生成的minidlna.conf刚好是A,/mnt/media/Music
 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
-"设置要扫描的目录。如果你想限制特定内容类型的目录,你可以在前面加上类型(用于音频'A','V'视频,'P'图片),其次是用逗号分隔的目录(如A,/mnt"
-"/媒体/音乐)。可以指定多个目录。"
+"设置要扫描的目录。如果您想限制特定内容类型的目录,您可以在前面加上类型(用于"
+"音频'A','V'视频,'P'图片),其次是用逗号分隔的目录(如A,/mnt/媒体/音乐)。可"
+"以指定多个目录。"
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "指定MiniSSDPd socket的路径。"
index 1af32809935986c5e9af90a58a1bb67a1dddfd08..2c636757d29fb997d4eac575560beb5bef67eeca 100644 (file)
@@ -17,6 +17,9 @@ msgstr "進階設定值"
 msgid "Album art names:"
 msgstr "專輯名稱"
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr "已宣告型號數量"
 
@@ -112,6 +115,10 @@ msgid ""
 "to store its log file."
 msgstr ""
 
+msgid ""
+"Set this to allow serving content outside the media root (via symlinks)."
+msgstr ""
+
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
 msgstr ""
@@ -131,7 +138,7 @@ 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. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index c8c122ad48a795439848192fd2d3755423501f90..5ee5fb39f3f30e4f11b76d4453ad130ee212aac5 100644 (file)
@@ -64,19 +64,19 @@ function interfaceWarnings() -- display status and warning messages at the top o
                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>"
+               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>"
+               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: Some interfaces have no default route in the main routing table!") .. "</strong></font>"
        end
        if errorNetConfigList ~= " " then
-               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces are configured incorrectly or not at all in /etc/config/network!") .. "</strong></font>"
+               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: Some interfaces are configured incorrectly or not at all in /etc/config/network!") .. "</strong></font>"
        end
        if errorNoMetricList ~= " " then
-               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces have no metric configured in /etc/config/network!") .. "</strong></font>"
+               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: Some interfaces have no metric configured in /etc/config/network!") .. "</strong></font>"
        end
        if errorDuplicateMetricList ~= " " then
-               warnings = warnings .. "<br /><br /><font color=\"ff0000\"><strong>" .. translate("WARNING: some interfaces have duplicate metrics configured in /etc/config/network!") .. "</strong></font>"
+               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
index 0318091d6c6009179e0595094a090552b6ab7af4..a7d7c5af7e5789a52173ec8b8ac4f99b66bf6e96 100644 (file)
@@ -50,21 +50,21 @@ 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>"
+               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>"
+               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>"
+               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>"
+               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>"
+               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
index 06a0fec668bce08f8425f6972969d15809b01e2a..feb62dc8a307f7d4f8bf5daa905d8f1228b7c4f8 100644 (file)
@@ -9,7 +9,7 @@ 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>"
+               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
index 0f4c5950a0c7b481ab018cb0fc871b8530822ddc..9cb4756fc802207ec9241401fb1d9c7c9336b4b2 100644 (file)
@@ -17,7 +17,7 @@ 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>"
+               return "<font color=\"ff0000\"><strong>" .. translate("WARNING: Some rules have a port configured with no or improper protocol specified! Please configure a specific protocol!") .. "</strong></font>"
        else
                return ""
        end
index 25a96f5c8f3ef63020aa4749b2bdee16c7b782df..cb1b45d2611a38ffd8ef0a20a62329197eadb6e2 100644 (file)
@@ -13,7 +13,7 @@ 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>"
+               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
index 72c5dddab9412099e80b15d871d2085af6ab7f00..34a9f1f3b38948ec97152181171b08ebee749f71 100644 (file)
@@ -524,90 +524,90 @@ msgstr ""
 "警告: %d 個のインターフェースが、最大個数の 250個 を超えて設定されています!"
 
 msgid ""
-"WARNING: Some policies have names exceeding the maximum of 15 characters!"
-msgstr ""
-"警告: 最大文字数の 15 文字を超える名前が設定されているポリシーがあります!"
-
-msgid ""
-"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"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 "
+"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/"
+"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!"
+"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!"
+"WARNING: Some interfaces have no metric configured in /etc/config/network!"
 msgstr ""
 "警告: /etc/config/network で、メトリックを設定されていないインターフェースが"
 "あります!"
 
 msgid ""
-"WARNING: some rules have a port configured with no or improper protocol "
+"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/"
+"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 "
+"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!"
+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!"
+"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/"
+"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!"
+"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 "
+"WARNING: This rule is incorrectly configured with no or improper protocol "
 "specified! Please configure a specific protocol!"
 msgstr ""
 "警告: このルールは不適切なプロトコルが指定されているか、または何も指定されて"
index e63d8adc2e2b6c7fe1de0410a371cf32d7f4aa0a..ed9fdb131df17491bdafdc9ad6cd311c0e51b6ef 100644 (file)
@@ -450,65 +450,65 @@ msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
 msgstr ""
 
 msgid ""
-"WARNING: Some policies have names exceeding the maximum of 15 characters!"
-msgstr ""
-
-msgid ""
-"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"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 "
+"WARNING: Some interfaces have a higher reliability requirement than there "
 "are tracking IP addresses!"
 msgstr ""
 
 msgid ""
-"WARNING: some interfaces have duplicate metrics configured in /etc/config/"
+"WARNING: Some interfaces have duplicate metrics configured in /etc/config/"
 "network!"
 msgstr ""
 
 msgid ""
-"WARNING: some interfaces have no default route in the main routing table!"
+"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!"
+"WARNING: Some interfaces have no metric configured in /etc/config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: Some policies have names exceeding the maximum of 15 characters!"
 msgstr ""
 
 msgid ""
-"WARNING: some rules have a port configured with no or improper protocol "
+"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/"
+"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 "
+"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!"
+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!"
+"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/"
+"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!"
+"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 "
+"WARNING: This rule is incorrectly configured with no or improper protocol "
 "specified! Please configure a specific protocol!"
 msgstr ""
 
index b133e8b1d9ce437904aa205d3df3b153bdac9f9a..d0b92a6df1e1d8dc2c149d5faa5c0c0a8742faee 100644 (file)
@@ -1,7 +1,15 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
-"Last-Translator: Hsing-Wang Liao <kuoruan@gmail.com>\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"PO-Revision-Date: 2017-10-28 16:58+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "%d hour"
 msgstr "%d 小时"
@@ -22,10 +30,10 @@ msgid ""
 "Acceptable values: 1-100. This many Tracking IP addresses must respond for "
 "the link to be deemed up"
 msgstr ""
-"取值范围1-100。这个设置项指定了当多少个 IP 地址能够连通时接口会被认为在线"
+"取值范围1-100。这个设置项指定了当多少个 IP 地址能够连通时接口会被认为在线"
 
 msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
-msgstr "取值范围1-100。如果不填写,默认值为 1"
+msgstr "取值范围1-100。如果不填写,默认值为 1"
 
 msgid "Advanced"
 msgstr "高级"
@@ -67,17 +75,17 @@ msgid "Diagnostics"
 msgstr "诊断"
 
 msgid "Disabled"
-msgstr "禁用"
+msgstr "禁用"
 
 msgid ""
 "Downed interface will be deemed up after this many successful ping tests"
 msgstr "当 Ping 成功次数达到这个数值后,已经被认为离线的接口将会重新上线"
 
 msgid "Enabled"
-msgstr "启用"
+msgstr "å·²å\90¯ç\94¨"
 
 msgid "Enter value in hex, starting with <code>0x</code>"
-msgstr ""
+msgstr "输入十六进制值,以 <code>0x</code> 开头"
 
 msgid "Error collecting troubleshooting information"
 msgstr "收集故障排除信息时出错"
@@ -86,13 +94,13 @@ msgid "Errors"
 msgstr "错误"
 
 msgid "Expect interface state on up event"
-msgstr ""
+msgstr "在 up 事件发生时的预期接口状态"
 
 msgid "Failure interval"
 msgstr "故障检测间隔"
 
 msgid "Firewall mask"
-msgstr ""
+msgstr "防火墙掩码"
 
 msgid "Flush conntrack table"
 msgstr "刷新连接跟踪表"
@@ -101,10 +109,10 @@ msgid "Flush global firewall conntrack table on interface events"
 msgstr "在接口事件触发时刷新全局防火墙连接跟踪表"
 
 msgid "Globals"
-msgstr ""
+msgstr "全局"
 
 msgid "Globals mwan3 options"
-msgstr ""
+msgstr "全局 mwan3 选项"
 
 msgid "Hotplug Script"
 msgstr "Hotplug 脚本"
@@ -125,7 +133,7 @@ msgid "IPv6"
 msgstr "IPv6"
 
 msgid "Initial state"
-msgstr ""
+msgstr "初始状态"
 
 msgid "Interface"
 msgstr "接口"
@@ -137,10 +145,10 @@ msgid "Interface down"
 msgstr "接口离线"
 
 msgid "Interface up"
-msgstr "接口线"
+msgstr "接口线"
 
 msgid "Interface will be deemed down after this many failed ping tests"
-msgstr "当 Ping 失败次数达到这个数值后接口会被认为离线"
+msgstr "当 Ping 失败次数达到这个数值后接口会被认为离线"
 
 msgid "Interfaces"
 msgstr "接口"
@@ -149,13 +157,13 @@ msgid "Internet Protocol"
 msgstr "互联网协议"
 
 msgid "Keep failure interval"
-msgstr ""
+msgstr "保持故障检测间隔"
 
 msgid "Keep ping failure interval during failure state"
-msgstr ""
+msgstr "在故障状态期间保持的 Ping 故障检测间隔"
 
 msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :"
-msgstr "最近 50 条 MWAN 系统日志,最新条目排在顶部:"
+msgstr "最近 50 条 MWAN 系统日志,最新条目排在顶部"
 
 msgid "Last resort"
 msgstr "备用成员"
@@ -167,7 +175,7 @@ msgid "Loading"
 msgstr "载入中"
 
 msgid "Local source interface"
-msgstr ""
+msgstr "本地源接口"
 
 msgid "MWAN Config"
 msgstr "MWAN 配置文件"
@@ -221,16 +229,16 @@ msgid ""
 msgstr ""
 "MWAN 支持最多 250 个物理或逻辑接口。<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 ""
 "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\")不含引号"
+"可以输入一个或多个端口(例如“22”或者“80,443”)或者是一个端口范围(例"
+"如“1024:2048”)不含引号"
 
 msgid "Member"
 msgstr "成员"
@@ -260,8 +268,8 @@ msgid ""
 "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
 "youtube.com/youtube\")"
 msgstr ""
-"匹配 IPset 规则列表名称。需要先配置 /etc/dnsmasq.conf 中的 IPset 规则 (例如: "
-"\"ipset=/youtube.com/youtube\")"
+"匹配 IPset 规则列表名称。需要先配置 /etc/dnsmasq.conf 中的 IPset 规则(例"
+"如:“ipset=/youtube.com/youtube”)"
 
 msgid "Network Config"
 msgstr "网络配置文件"
@@ -288,13 +296,13 @@ msgid "Offline"
 msgstr "离线"
 
 msgid "Online"
-msgstr ""
+msgstr "在线"
 
 msgid "Online (tracking active)"
-msgstr "å\9c¨çº¿ï¼\88追踪启用中)"
+msgstr "å\9c¨çº¿ï¼\88è·\9f踪启用中)"
 
 msgid "Online (tracking off)"
-msgstr "å\9c¨çº¿ï¼\88追踪已关闭)"
+msgstr "å\9c¨çº¿ï¼\88è·\9f踪已关闭)"
 
 msgid "Overview"
 msgstr "概况"
@@ -381,7 +389,7 @@ msgstr ""
 "的任意一个设置项使用相同的名称"
 
 msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
-msgstr "单位为秒。接受的值1-1000000。留空则使用默认值 600 秒"
+msgstr "单位为秒。接受的值1-1000000。留空则使用默认值 600 秒"
 
 msgid "Source address"
 msgstr "源地址"
@@ -402,7 +410,7 @@ msgid "Stop MWAN"
 msgstr "停止 MWAN"
 
 msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
-msgstr "支持 CIDR 记法(例如\"192.168.100.0/24\")不含引号"
+msgstr "支持 CIDR 记法(例如\"192.168.100.0/24\")不含引号"
 
 msgid "There are currently %d of 250 supported interfaces configured"
 msgstr "当前已配置 %d 个接口,最大支持 250 个"
@@ -429,27 +437,35 @@ msgid ""
 "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 的内容"
+msgstr "这里允许修改 /etc/config/mwan3 的内容"
 
 msgid "This section allows you to modify the contents of /etc/config/network"
-msgstr "这里允许修改 /etc/config/network 的内容"
+msgstr "这里允许修改 /etc/config/network 的内容"
 
 msgid "This section allows you to modify the contents of /etc/config/wireless"
-msgstr "这里允许修改 /etc/config/wireless 的内容"
+msgstr "这里允许修改 /etc/config/wireless 的内容"
 
 msgid "Tracking IP"
-msgstr "追踪的 IP"
+msgstr "è·\9f踪的 IP"
 
 msgid "Tracking hostname or IP address"
-msgstr "追踪的主机或 IP 地址"
+msgstr "è·\9f踪的主机或 IP 地址"
 
 msgid "Tracking method"
-msgstr ""
+msgstr "跟踪方式"
 
 msgid "Tracking reliability"
-msgstr "追踪可靠性"
+msgstr "è·\9f踪可靠性"
 
 msgid "Traffic Rules"
 msgstr "流量规则"
@@ -470,77 +486,77 @@ msgstr "故障排除数据"
 msgid ""
 "Use the IP address of this interface as source IP address for traffic "
 "initiated by the router itself"
-msgstr ""
+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!"
+msgstr "警告已配置 %d 个接口,超过最大值 250!"
 
 msgid ""
-"WARNING: Some policies have names exceeding the maximum of 15 characters!"
-msgstr "警告: 某些策略的名称超过了 15 个字符!"
-
-msgid ""
-"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"WARNING: Some interfaces are configured incorrectly or not at all in /etc/"
 "config/network!"
-msgstr "警告某些接口配置不正确或未配置到 /etc/config/network!"
+msgstr "警告某些接口配置不正确或未配置到 /etc/config/network!"
 
 msgid ""
-"WARNING: some interfaces have a higher reliability requirement than there "
+"WARNING: Some interfaces have a higher reliability requirement than there "
 "are tracking IP addresses!"
-msgstr "警告: 某些接口的追踪可靠性要求大于了追踪 IP 地址总数!"
+msgstr "警告:某些接口的跟踪可靠性要求大于了跟踪 IP 地址总数!"
 
 msgid ""
-"WARNING: some interfaces have duplicate metrics configured in /etc/config/"
+"WARNING: Some interfaces have duplicate metrics configured in /etc/config/"
 "network!"
-msgstr "警告: 某些接口在 /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 default route in the main routing table!"
-msgstr "警告: 某些接口在主路由表中没有默认路由!"
+"WARNING: Some interfaces have no metric configured in /etc/config/network!"
+msgstr "警告:某些接口没有在 /etc/config/network 中配置跃点数!"
 
 msgid ""
-"WARNING: some interfaces have no metric configured in /etc/config/network!"
-msgstr "警告: 某些接口没有在 /etc/config/network 中配置跃点数!"
+"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 "
+"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/"
+"WARNING: This and other interfaces have duplicate metrics configured in /etc/"
 "config/network!"
-msgstr "警告此接口和其他接口在 /etc/config/network 中配置了相同的跃点数!"
+msgstr "警告此接口和其他接口在 /etc/config/network 中配置了相同的跃点数!"
 
 msgid ""
-"WARNING: this interface has a higher reliability requirement than there are "
+"WARNING: This interface has a higher reliability requirement than there are "
 "tracking IP addresses!"
-msgstr "警告: 此接口的追踪可靠性要求大于了追踪 IP 地址总数!"
+msgstr "警告:此接口的跟踪可靠性要求大于了跟踪 IP 地址总数!"
 
-msgid "WARNING: this interface has no default route in the main routing table!"
-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 "警告此接口没有在 /etc/config/network 中配置跃点数!"
+"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/"
+"WARNING: This interface is configured incorrectly or not at all in /etc/"
 "config/network!"
-msgstr "警告此接口配置不正确或未配置到 /etc/config/network!"
+msgstr "警告此接口配置不正确或未配置到 /etc/config/network!"
 
 msgid ""
-"WARNING: this policy's name is %d characters exceeding the maximum of 15!"
-msgstr "警告此策略的名称具有 %d 个字符,超过了 15 个字符!"
+"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 "
+"WARNING: This rule is incorrectly configured with no or improper protocol "
 "specified! Please configure a specific protocol!"
-msgstr "警告此规则没有配置或配置了不正确的协议,请重新指定协议!"
+msgstr "警告此规则没有配置或配置了不正确的协议,请重新指定协议!"
 
 msgid "Waiting for MWAN to %s..."
 msgstr "等待 MWAN %s..."
@@ -580,13 +596,13 @@ msgid "never"
 msgstr "从不"
 
 msgid "restart"
-msgstr ""
+msgstr "重启"
 
 msgid "start"
-msgstr ""
+msgstr "启动"
 
 msgid "stop"
-msgstr ""
+msgstr "停止"
 
 msgid "unreachable (reject)"
 msgstr "不可达(拒绝)"
@@ -607,7 +623,7 @@ msgstr "不可达(拒绝)"
 #~ "ifdown)<br />$INTERFACE is the interface name (wan1, wan2, etc.)<br />"
 #~ "$DEVICE is the device name attached to the interface (eth0.1, eth1, etc.)"
 #~ msgstr ""
-#~ "这里允许修改 /etc/hotplug.d/iface/16-mwancustom 的内容<br />这可以在接"
+#~ "这里允许修改 /etc/hotplug.d/iface/16-mwancustom 的内容<br />这可以在接"
 #~ "口 ifup 或 ifdown Hotplug 事件时运行系统命令或脚本<br /><br />注意:<br />"
 #~ "脚本的第一行必须是 &#34;#!/bin/sh&#34; 不含引号<br />以#开头的行是注释,"
 #~ "不会执行<br /><br />可用变量:<br />$ACTION 是 Hotplug 事件(ifup, ifdown)"
diff --git a/package/luci/applications/luci-app-mwan3/po/zh-tw/mwan3.po b/package/luci/applications/luci-app-mwan3/po/zh-tw/mwan3.po
new file mode 100644 (file)
index 0000000..04711ac
--- /dev/null
@@ -0,0 +1,630 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"PO-Revision-Date: 2017-10-28 16:58+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+msgid "%d hour"
+msgstr "%d 小時"
+
+msgid "%d minute"
+msgstr "%d 分鐘"
+
+msgid "%d minutes"
+msgstr "%d 分鐘"
+
+msgid "%d second"
+msgstr "%d 秒"
+
+msgid "%d seconds"
+msgstr "%d 秒"
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+"取值範圍:1-100。這個設定項指定了當多少個 IP 位址能夠連通時介面會被認為線上"
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr "取值範圍:1-100。如果不填寫,預設值為 1"
+
+msgid "Advanced"
+msgstr "高階"
+
+msgid "Check IP rules"
+msgstr "檢查 IP 規則"
+
+msgid "Check routing table"
+msgstr "檢查路由表"
+
+msgid "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 "Diagnostics"
+msgstr "診斷"
+
+msgid "Disabled"
+msgstr "已禁用"
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr "當 Ping 成功次數達到這個數值後,已經被認為離線的介面將會重新上線"
+
+msgid "Enabled"
+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 "Expect interface state on up event"
+msgstr "在 up 事件發生時的預期介面狀態"
+
+msgid "Failure interval"
+msgstr "故障檢測間隔"
+
+msgid "Firewall mask"
+msgstr "防火牆掩碼"
+
+msgid "Flush conntrack table"
+msgstr "重新整理連線跟蹤表"
+
+msgid "Flush global firewall conntrack table on interface events"
+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 "IPset"
+msgstr "IPset"
+
+msgid "IPv4"
+msgstr "IPv4"
+
+msgid "IPv6"
+msgstr "IPv6"
+
+msgid "Initial state"
+msgstr "初始狀態"
+
+msgid "Interface"
+msgstr "介面"
+
+msgid "Interface Status"
+msgstr "介面狀態"
+
+msgid "Interface down"
+msgstr "介面離線"
+
+msgid "Interface up"
+msgstr "介面線上"
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr "當 Ping 失敗次數達到這個數值後,介面會被認為離線"
+
+msgid "Interfaces"
+msgstr "介面"
+
+msgid "Internet Protocol"
+msgstr "網際網路協議"
+
+msgid "Keep failure interval"
+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 "備用成員"
+
+msgid "Load Balancing"
+msgstr "負載均衡"
+
+msgid "Loading"
+msgstr "載入中"
+
+msgid "Local source interface"
+msgstr "本地源介面"
+
+msgid "MWAN Config"
+msgstr "MWAN 配置檔案"
+
+msgid "MWAN Detailed Status"
+msgstr "MWAN 詳細狀態"
+
+msgid "MWAN Interface Configuration"
+msgstr "MWAN 介面配置"
+
+msgid "MWAN Interface Configuration - %s"
+msgstr "MWAN 介面配置 - %s"
+
+msgid "MWAN Interface Diagnostics"
+msgstr "MWAN 介面診斷"
+
+msgid "MWAN Interface Live Status"
+msgstr "MWAN 介面實時狀態"
+
+msgid "MWAN Interface Systemlog"
+msgstr "MWAN 介面系統日誌"
+
+msgid "MWAN Member Configuration"
+msgstr "MWAN 成員配置"
+
+msgid "MWAN Member Configuration - %s"
+msgstr "MWAN 成員配置 - %s"
+
+msgid "MWAN Policy Configuration"
+msgstr "MWAN 策略配置"
+
+msgid "MWAN Policy Configuration - %s"
+msgstr "MWAN 策略配置 - %s"
+
+msgid "MWAN Rule Configuration"
+msgstr "MWAN 規則配置"
+
+msgid "MWAN Rule Configuration - %s"
+msgstr "MWAN 規則配置 - %s"
+
+msgid "MWAN Service Control"
+msgstr "MWAN 服務控制"
+
+msgid ""
+"MWAN supports up to 250 physical and/or logical interfaces<br />MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network<br />Names must match the interface name found in /etc/config/"
+"network (see advanced tab)<br />Names may contain characters A-Z, a-z, 0-9, "
+"_ and no spaces<br />Interfaces may not share the same name as configured "
+"members, policies or rules"
+msgstr ""
+"MWAN 支援最多 250 個物理或邏輯介面。<br />MWAN 要求所有介面必須在 /etc/"
+"config/network 中設定唯一的閘道器躍點。<br />名稱必須與 /etc/config/network "
+"中的介面名稱匹配。(可檢視“高階”選項卡)<br />名稱允許包括 A-Z、a-z、0-9、_ "
+"但是不能有空格。<br />介面不應該與成員、策略、規則中的任意一個設定項使用相同"
+"的名稱"
+
+msgid ""
+"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
+"as a portrange (eg \"1024:2048\") without quotes"
+msgstr ""
+"可以輸入一個或多個埠(例如“22”或者“80,443”)或者是一個埠範圍(例"
+"如“1024:2048”)不含引號"
+
+msgid "Member"
+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-、0-9、_ 但是不能有空格。<br />成員不應該與介面、策略、規"
+"則中的任意一個設定項使用相同的名稱"
+
+msgid "Members assigned"
+msgstr "分配的成員"
+
+msgid "Metric"
+msgstr "躍點數"
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+"匹配 IPset 規則列表名稱。需要先配置 /etc/dnsmasq.conf 中的 IPset 規則(例"
+"如:“ipset=/youtube.com/youtube”)"
+
+msgid "Network Config"
+msgstr "網路配置檔案"
+
+msgid "No"
+msgstr "否"
+
+msgid "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 "Offline"
+msgstr "離線"
+
+msgid "Online"
+msgstr "線上"
+
+msgid "Online (tracking active)"
+msgstr "線上(跟蹤啟用中)"
+
+msgid "Online (tracking off)"
+msgstr "線上(跟蹤已關閉)"
+
+msgid "Overview"
+msgstr "概況"
+
+msgid "Ping count"
+msgstr "Ping 計數"
+
+msgid "Ping default gateway"
+msgstr "Ping 預設閘道器"
+
+msgid "Ping interval"
+msgstr "Ping 間隔"
+
+msgid "Ping interval during failure detection"
+msgstr "故障檢測期間的 Ping 間隔"
+
+msgid "Ping interval during failure recovering"
+msgstr "故障恢復期間的 Ping 間隔"
+
+msgid "Ping size"
+msgstr "Ping 大小"
+
+msgid "Ping timeout"
+msgstr "Ping 超時"
+
+msgid "Ping tracking IP"
+msgstr "Ping 跟蹤 IP"
+
+msgid "Policies"
+msgstr "策略"
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic<br />Member interfaces with lower metrics are used "
+"first. Interfaces with the same metric load-balance<br />Load-balanced "
+"member interfaces distribute more traffic out those with higher weights<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
+"15 characters or less<br />Policies may not share the same name as "
+"configured interfaces, members or rules"
+msgstr ""
+"“策略”把成員進行分組,告訴 MWAN 如何分配“規則”中使用這一策略的流量<br />擁有"
+"較低躍點數的成員將會被優先使用。擁有相同躍點數的成員把流量進行負載均衡。<br /"
+">進行負載均衡的成員之間擁有較高比重的成員將會被分配到更多流量。<br />名稱允許"
+"包括A-Z、a-z、0-9、_ 但是不能有空格。名稱應該在 15 個字元以內<br />策略不應該"
+"與介面、成員、規則中的任意一個設定項使用相同的名稱"
+
+msgid "Policy"
+msgstr "策略"
+
+msgid "Policy assigned"
+msgstr "分配的策略"
+
+msgid "Protocol"
+msgstr "通訊協議"
+
+msgid "Recovery interval"
+msgstr "故障恢復間隔"
+
+msgid "Restart MWAN"
+msgstr "重啟 MWAN"
+
+msgid "Rule"
+msgstr "規則"
+
+msgid "Rules"
+msgstr "規則"
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy based on IP "
+"address, port or protocol<br />Rules are matched from top to bottom. Rules "
+"below a matching rule are ignored. Traffic not matching any rule is routed "
+"using the main routing table<br />Traffic destined for known (other than "
+"default) networks is handled by the main routing table. Traffic matching a "
+"rule, but all WAN interfaces for that policy are down will be blackholed<br /"
+">Names may contain characters A-Z, a-z, 0-9, _ and no spaces<br />Rules may "
+"not share the same name as configured interfaces, members or policies"
+msgstr ""
+"“規則”基於 IP 位址、協議、埠把流量劃分到指定的“策略”中。<br />規則按照從上到"
+"下的順序進行匹配。除了第一條能夠匹配一次通訊的規則以外,其它規則將被忽略。不"
+"匹配任何規則的通訊將會由系統預設路由表進行。<br />來自已知的網路的轉發流量由"
+"系統預設路由表接手,然後 MWAN 從中匹配出相應的流量並轉移到 MWAN 自己的路由"
+"表。但是所有被劃分到一個無法使用的策略的流量將會無法正常進行路由。<br />名稱"
+"允許包括A-Z、a-z、0-9、_ 但是不能有空格。<br />規則不應該與介面、成員、策略中"
+"的任意一個設定項使用相同的名稱"
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr "單位為秒。接受的值:1-1000000。留空則使用預設值 600 秒"
+
+msgid "Source address"
+msgstr "源位址"
+
+msgid "Source port"
+msgstr "源埠"
+
+msgid "Start MWAN"
+msgstr "啟動 MWAN"
+
+msgid "Sticky"
+msgstr "粘滯模式"
+
+msgid "Sticky timeout"
+msgstr "粘滯超時"
+
+msgid "Stop MWAN"
+msgstr "停止 MWAN"
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr "支援 CIDR 記法(例如:\"192.168.100.0/24\")不含引號"
+
+msgid "There are currently %d of 250 supported interfaces configured"
+msgstr "當前已配置 %d 個介面,最大支援 250 個"
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr "這裡顯示了這個介面在 /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 "通過 ping 此主機或 IP 位址來確定鏈路是否線上。留空則認為介面始終線上"
+
+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 "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 位址"
+
+msgid "Tracking method"
+msgstr "跟蹤方式"
+
+msgid "Tracking reliability"
+msgstr "跟蹤可靠性"
+
+msgid "Traffic Rules"
+msgstr "流量規則"
+
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+"來自相同源 IP 的流量,如果已經匹配過此規則並且在粘滯超時時間內,將會使用相同"
+"的 WAN 介面"
+
+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 ""
+"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 "Weight"
+msgstr "比重"
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr "當所有策略成員都無法使用的時候,對使用該策略的流量使用這個操作"
+
+msgid "Wireless Config"
+msgstr "無線配置"
+
+msgid "Yes"
+msgstr "是"
+
+msgid "always"
+msgstr "總是"
+
+msgid "blackhole (drop)"
+msgstr "黑洞(丟棄)"
+
+msgid "default (use main routing table)"
+msgstr "預設(使用主路由表)"
+
+msgid "ifdown"
+msgstr "ifdown"
+
+msgid "ifup"
+msgstr "ifup"
+
+msgid "never"
+msgstr "從不"
+
+msgid "restart"
+msgstr "重啟"
+
+msgid "start"
+msgstr "啟動"
+
+msgid "stop"
+msgstr "停止"
+
+msgid "unreachable (reject)"
+msgstr "不可達(拒絕)"
+
+#~ msgid "Restore default hotplug script"
+#~ msgstr "恢復預設的 hotplug 指令碼"
+
+#~ msgid "Restore..."
+#~ msgstr "恢復..."
+
+#~ msgid ""
+#~ "This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
+#~ "mwancustom<br />This is useful for running system commands and/or scripts "
+#~ "based on interface ifup or ifdown hotplug events<br /><br />Notes:<br /"
+#~ ">The first line of the script must be &#34;#!/bin/sh&#34; without "
+#~ "quotes<br />Lines beginning with # are comments and are not executed<br /"
+#~ "><br />Available variables:<br />$ACTION is the hotplug event (ifup, "
+#~ "ifdown)<br />$INTERFACE is the interface name (wan1, wan2, etc.)<br />"
+#~ "$DEVICE is the device name attached to the interface (eth0.1, eth1, etc.)"
+#~ msgstr ""
+#~ "這裡允許您修改 /etc/hotplug.d/iface/16-mwancustom 的內容<br />這可以在接"
+#~ "口 ifup 或 ifdown Hotplug 事件時執行系統命令或指令碼<br /><br />注意:<br /"
+#~ ">指令碼的第一行必須是 &#34;#!/bin/sh&#34; 不含引號<br />以#開頭的行是註"
+#~ "釋,不會執行<br /><br />可用變數:<br />$ACTION 是 Hotplug 事件(ifup, "
+#~ "ifdown)<br />$INTERFACE 是介面名稱(wan1、wan2 等)<br />$DEVICE 是連線到"
+#~ "介面的設備名稱 (eth0.1、eth1 等)"
diff --git a/package/luci/applications/luci-app-noddos/Makefile b/package/luci/applications/luci-app-noddos/Makefile
new file mode 100644 (file)
index 0000000..4c2b904
--- /dev/null
@@ -0,0 +1,18 @@
+# Copyright (C) 2017 Steven Hessing (steven.hessing@gmail.com)
+# Based on initial implementation by Stan Grishin (stangri@melmac.net)
+# This is free software, licensed under the GNU General Public License v3.
+
+include $(TOPDIR)/rules.mk
+
+PKG_LICENSE:=GPLv3
+PKG_MAINTAINER:=Steven Hessing <steven.hessing@gmail.com>
+
+LUCI_TITLE:=Noddos Service Web UI
+LUCI_DESCRIPTION:=Provides Web UI for Noddos service.
+LUCI_DEPENDS:=+luci +noddos
+LUCI_PKGARCH:=all
+PKG_RELEASE:=1
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-noddos/htdocs/cgi-bin/clientdetails b/package/luci/applications/luci-app-noddos/htdocs/cgi-bin/clientdetails
new file mode 100755 (executable)
index 0000000..6ff4ce5
--- /dev/null
@@ -0,0 +1,91 @@
+#!/usr/bin/lua
+
+-- clientdetails.lua : Provides details about client devices discovered by Noddos
+-- Copyright (C) 2017 Steven Hessing (steven.hessing@gmail.com)
+-- This is free software, licensed under the GNU General Public License v3.
+
+require "nixio.fs"
+
+print ("Content-type: Text/html\n")
+local info = os.getenv("QUERY_STRING")
+
+local params = {}
+local echo = {}
+
+function print_row(key)
+       print ("<tr><th>")
+       print (key)
+       print ("</th><td>")
+       print (device[key])
+       print ("</td></tr>")
+end
+
+for name, value in string.gmatch(info .. '&', '(.-)%=(.-)%&') do
+    value = string.gsub(value , '%+', ' ')
+    value = string.gsub(value , '%%(%x%x)', function(dpc)
+        return string.char(tonumber(dpc,16))
+               end )
+       params[name] = value
+
+    value = string.gsub(value, "%&", "&amp;")
+    value = string.gsub(value, "%<", "&lt;")
+    value = string.gsub(value, '%"', "&quot;")
+    echo[name] = value
+end
+
+device = {}
+profile = {}
+
+if nixio.fs.access("/var/lib/noddos/DeviceDump.json") then
+        io.input("/var/lib/noddos/DeviceDump.json")
+        local t = io.read("*all")
+       local json = require "luci.jsonc"
+        local devdump = json.parse(t)
+        for i, v in ipairs(devdump) do
+                               if v.MacAddress == params["mac"] then
+                        device = v
+                end
+        end
+        io.input("/var/lib/noddos/DeviceProfiles.json")
+        t = io.read("*all")
+        local temp = json.parse(t)
+        for i, v in ipairs(temp) do
+                if device.DeviceProfileUuid == v.DeviceProfileUuid then
+                        profile = v
+                end
+        end
+end
+pagetop = [[
+<html>
+  <head>
+    <title>Client Details by Noddos</title>
+    <meta charset="utf-8">
+    <!--[if lt IE 9]><script src="/luci-static/bootstrap/html5.js?v=git-17.100.70571-29fabe2"></script><![endif]-->
+    <meta name="viewport" content="initial-scale=1.0">
+    <link rel="stylesheet" href="/luci-static/bootstrap/cascade.css?v=git-17.100.70571-29fabe2">
+    <link rel="stylesheet" media="only screen and (max-device-width: 854px)" href="/luci-static/bootstrap/mobile.css?v=git-17.100.70571-29fabe2" type="text/css" />
+    <link rel="shortcut icon" href="/luci-static/bootstrap/favicon.ico">
+    <script src="/luci-static/resources/xhr.js?v=git-17.100.70571-29fabe2"></script>
+  </head>
+  <body text=blue>
+    <h1>Client Details</h1>
+]]
+print (pagetop)
+
+if params["mac"] ~= nil then
+       print ("<table>")
+       for i, key in ipairs{"MacAddress", "Ipv4Address", "Ipv6Address", "DeviceProfileUuid", "DhcpHostname", "DhcpVendor", "SsdpFriendlyName", "SsdpLocation", "SsdpManufacturer", "SsdpModelName", "SsdpModelUrl", "SsdpSerialNumber", "SsdpServer","SsdpUserAgent", "MdnsDeviceUrl", "MdnsHw", "MdnsManufacturer", "MdnsModelName", "MdnsOs", "WsDiscoveryTypes", "WsDiscoveryXaddrs", "DnsQueries"} do
+               print_row(key)
+       end
+       print ("</table>")
+else 
+       print ("no mac address specified")
+end
+
+pagebase = [[<br><br>
+Client Details by
+<a href=http://www.noddos.io>Noddos</a>
+</body></html>
+]]
+
+print (pagebase)
diff --git a/package/luci/applications/luci-app-noddos/luasrc/controller/noddos.lua b/package/luci/applications/luci-app-noddos/luasrc/controller/noddos.lua
new file mode 100644 (file)
index 0000000..c45e24b
--- /dev/null
@@ -0,0 +1,10 @@
+-- Copyright 2017 Steven Hessing (steven.hessing@gmail.com)
+-- This is free software, licensed under the GNU General Public License v3.
+-- /usr/lib/lua/luci/controller/noddos.lua
+
+module("luci.controller.noddos", package.seeall)
+function index()
+    entry({"admin", "status", "noddos"}, template("noddos/clients"), _("Noddos Clients"), 3)
+    entry({"admin", "network", "noddos"}, cbi("noddos"), _("Noddos Client Tracking"), 55)
+end
+
diff --git a/package/luci/applications/luci-app-noddos/luasrc/model/cbi/noddos.lua b/package/luci/applications/luci-app-noddos/luasrc/model/cbi/noddos.lua
new file mode 100644 (file)
index 0000000..3abb73b
--- /dev/null
@@ -0,0 +1,46 @@
+-- Copyright 2017 Steven Hessing (steven.hessing@gmail.com)
+-- This is free software, licensed under the GNU General Public License v3.
+-- /usr/lib/lua/luci/model/cbi/noddos.lua
+
+m = Map("noddos", translate("Client Firewall"),
+    translate("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"))
+
+s = m:section(TypedSection, "noddos", translate("Server Settings"))
+s.anonymous = true
+s.addremove = false
+
+s:option(Flag, "rfc1918",
+    translate("Private networks"),
+    translate("Report traffic to private networks (10/8, 172.16/12, 192.168/16, fd75:6b5d:352c:ed05::/64)")).default=false
+
+s:option(Flag, "upload",
+    translate("Upload anonimized traffic stats"),
+    translate("Uploading your statistics helps improving device recognition " ..
+        "and discovering hacked devices & botnets"))
+
+o = s:option(DynamicList, "whitelistipv4",
+    translate("Excluded IPv4 addresses"),
+    translate("Don't monitor these IPv4 addresses"))
+o.optional = true
+o.placeholder = "127.0.0.1 192.168.1.1"
+o.delimiter = " "
+o.datatype="list(ip4addr)"
+
+o = s:option(DynamicList, "whitelistipv6",
+    translate("Excluded IPv6 addresses"),
+    translate("Don't monitor these IPv6 addresses"))
+o.optional = true
+o.delimiter = " "
+o.datatype="list(ip6addr)"
+
+o = s:option(DynamicList, "whitelistmac",
+    translate("Excluded MAC addresses"),
+    translate("Don't monitor these MAC addresses"))
+o.optional = true
+o.delimiter = " "
+o.datatype="list(macaddr)"
+
+return m
+
diff --git a/package/luci/applications/luci-app-noddos/luasrc/view/noddos/clients.htm b/package/luci/applications/luci-app-noddos/luasrc/view/noddos/clients.htm
new file mode 100644 (file)
index 0000000..f2fb931
--- /dev/null
@@ -0,0 +1,111 @@
+<%#
+ Copyright (C) 2017 Steven Hessing <steven.hessing@gmail.com>
+  This is free software, licensed under the GNU General Public License v3.
+ /usr/lib/lua/luci/view/clients.htm
+-%>
+
+<%-
+
+    require "nixio.fs"
+    require "os"
+
+    local last_modified = "<boottime>"
+    local style = true
+    local v
+    local devdump
+
+    if nixio.fs.access("/var/lib/noddos/DeviceDump.json") then
+        last_modified = os.date("%c", nixio.fs.stat("/var/lib/noddos/DeviceDump.json")['mtime'])
+        io.input("/var/lib/noddos/DeviceDump.json")
+        t = io.read("*all")
+        devdump = luci.jsonc.parse(t)
+        io.input("/var/lib/noddos/DeviceProfiles.json")
+        t = io.read("*all")
+        temp = luci.jsonc.parse(t)
+        devicevalues = {}
+        for i, v in ipairs(temp) do
+            devicevalues[v.DeviceProfileUuid] = v
+        end
+    end
+-%>
+
+<%+header%>
+
+<div class="cbi-map" id="cbi-network">
+    <h2 name="content"><%:Clients%></h2>
+    <div class="cbi-map-descr"><%:The following clients have been discovered on the network. The last discovery was completed at %><%=last_modified%></div>
+
+    <fieldset class="cbi-section">
+        <legend><%:Recognized Clients%></legend>
+        <div class="cbi-section-node">
+            <table class="cbi-section-table">
+                <tr class="cbi-section-table-titles">
+                    <th class="cbi-section-table-cell"><%:Hostname%></th>
+                    <th class="cbi-section-table-cell"><%:IPv4%></th>
+                    <th class="cbi-section-table-cell"><%:MAC%></th>
+                    <th class="cbi-section-table-cell"><%:Manufacturer%></th>
+                    <th class="cbi-section-table-cell"><%:Model%></th>
+                    <th class="cbi-section-table-cell"><%:Class%></th>
+                </tr>
+
+                <%
+                    for i,v in ipairs(devdump) do
+                        if v.DeviceProfileUuid ~= "" then
+                %>
+                <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
+                    <td class="cbi-value-field"><%=v.Hostname%></td>
+                    <td class="cbi-value-field"><%=v.Ipv4Address%></td>
+                    <td class="cbi-value-field"><a href="/cgi-bin/clientdetails?mac=<%=v.MacAddress%>"><%=v.MacAddress%></a></td>
+                    <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].Manufacturer%></td>
+                    <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].Model%></td>
+                    <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].ThingClass%></td>
+                </tr>
+                <%
+                            style=false
+                        end
+                    end
+                %>
+            </table>
+        </div>
+    </fieldset>
+    <br />
+    <fieldset class="cbi-section">
+        <legend><%:Unrecognized Clients%></legend>
+        <div class="cbi-section-node">
+            <table class="cbi-section-table">
+                <tr class="cbi-section-table-titles">
+                    <th class="cbi-section-table-cell"><%:Hostname%></th>
+                    <th class="cbi-section-table-cell"><%:IPv4%></th>
+                    <th class="cbi-section-table-cell"><%:MAC%></th>
+                    <th class="cbi-section-table-cell"><%:Manufacturer%></th>
+                    <th class="cbi-section-table-cell"><%:Model%></th>
+                    <th class="cbi-section-table-cell"><%:DhcpVendor%></th>
+                    <th class="cbi-section-table-cell"><%:DhcpHostname%></th>
+                </tr>
+
+                <%
+                    for i,v in ipairs(devdump) do
+                        if v.DeviceProfileUuid == "" then
+                %>
+                <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
+                    <td class="cbi-value-field"><%=v.Hostname%></td>
+                    <td class="cbi-value-field"><%=v.Ipv4Address%></td>
+                    <td class="cbi-value-field"><a href="/cgi-bin/clientdetails?mac=<%=v.MacAddress%>"><%=v.MacAddress%></a></td>
+                    <td class="cbi-value-field"><%=v.SsdpManufacturer%></td>
+                    <td class="cbi-value-field"><%=v.SsdpModelName%></td>
+                    <td class="cbi-value-field"><%=v.DhcpVendor1%></td>
+                    <td class="cbi-value-field"><%=v.DhcpHostname%></td>
+                </tr>
+                <%
+                            style=false
+                        end
+                    end
+                %>
+            </table>
+        </div>
+    </fieldset>
+
+</div>
+
+<%+footer%>
+
diff --git a/package/luci/applications/luci-app-noddos/po/ja/noddos.po b/package/luci/applications/luci-app-noddos/po/ja/noddos.po
new file mode 100644 (file)
index 0000000..c6b4617
--- /dev/null
@@ -0,0 +1,111 @@
+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.4\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "Class"
+msgstr "クラス"
+
+msgid "Client Firewall"
+msgstr "クライアント ファイアウォール"
+
+msgid "Clients"
+msgstr "クライアント"
+
+msgid "DhcpHostname"
+msgstr "DHCP ホスト名"
+
+msgid "DhcpVendor"
+msgstr "DHCP ベンダー"
+
+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 は、ネットワーク内のクライアントからインターネットへのトラフィックを制"
+"御します。これは、ネットワークとインターネット接続の帯域幅、インターネットの"
+"保護に役立ちます。"
+
+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 ""
+"デバイスの識別や、ハックされたデバイスとボットネットの発見の改善に役立てるた"
+"め、統計をアップロードします。"
diff --git a/package/luci/applications/luci-app-noddos/po/templates/noddos.pot b/package/luci/applications/luci-app-noddos/po/templates/noddos.pot
new file mode 100644 (file)
index 0000000..69d1357
--- /dev/null
@@ -0,0 +1,92 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Class"
+msgstr ""
+
+msgid "Client Firewall"
+msgstr ""
+
+msgid "Clients"
+msgstr ""
+
+msgid "DhcpHostname"
+msgstr ""
+
+msgid "DhcpVendor"
+msgstr ""
+
+msgid "Don't monitor these IPv4 addresses"
+msgstr ""
+
+msgid "Don't monitor these IPv6 addresses"
+msgstr ""
+
+msgid "Don't monitor these MAC addresses"
+msgstr ""
+
+msgid "Excluded IPv4 addresses"
+msgstr ""
+
+msgid "Excluded IPv6 addresses"
+msgstr ""
+
+msgid "Excluded MAC addresses"
+msgstr ""
+
+msgid "Hostname"
+msgstr ""
+
+msgid "IPv4"
+msgstr ""
+
+msgid "MAC"
+msgstr ""
+
+msgid "Manufacturer"
+msgstr ""
+
+msgid "Model"
+msgstr ""
+
+msgid "Noddos Client Tracking"
+msgstr ""
+
+msgid "Noddos Clients"
+msgstr ""
+
+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 ""
+
+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 ""
+
+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 ""
diff --git a/package/luci/applications/luci-app-noddos/root/etc/uci-defaults/40_luci-noddos b/package/luci/applications/luci-app-noddos/root/etc/uci-defaults/40_luci-noddos
new file mode 100644 (file)
index 0000000..17abbc4
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# Copyright (C) 2017 Steven Hessing (steven.hessing@live.com)
+# This is free software, licensed under the GNU General Public License v3
+
+uci -q batch <<-EOF >/dev/null
+       delete ucitrack.@noddos[-1]
+       add ucitrack noddos
+       set ucitrack.@noddos[-1].init=noddos
+       commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
index 7865881cb6a2dcf8406cd0ad33ea7fc504e9a1ab..dc7718217c04e66dc83e43ab40d55ab645f75aec 100644 (file)
@@ -685,6 +685,10 @@ local knownParams = {
                        "tls_auth",
                        "/etc/openvpn/tlsauth.key",
                        translate("Additional authentication over TLS") },
+               { Value,
+                       "tls_crypt",
+                       "/etc/openvpn/tlscrypt.key",
+                       translate("Encrypt and authenticate all control channel packets with the key") },
        --      { Value,
        --              "askpass",
        --              "[file]",
index 1b75fe6cd7b334d79d09eb6b5a271921983c10ac..d75646907803762d44d94f7d317bbd5a9dd476a4 100644 (file)
@@ -199,6 +199,9 @@ msgstr "Activa la interfície de gestió a <em>IP</em> <em>port</em>"
 msgid "Enabled"
 msgstr "Activat"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Xifra d'encriptació per paquets"
 
index c68742217e894544837f504d6f79fd976ad044e1..4fba010530363dc22bce72f95f3bf357bd642f76 100644 (file)
@@ -194,6 +194,9 @@ msgstr ""
 msgid "Enabled"
 msgstr "Povoleno"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index dc382ee44d35c86d92cc6b8ba88f172b9d297d62..a203c92e79b0e2e07f68d40c34d1c605892520c6 100644 (file)
@@ -197,6 +197,9 @@ msgstr "Administratorschnittstelle aktivieren"
 msgid "Enabled"
 msgstr "Einschalten"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Verschlüsselungsalgorithmus für Pakete"
 
index 2c787d816c04c9a0955ab0f6d47c6a183d605a8d..63dd8985a89aee32a09c85007b73e3c0b0af3524 100644 (file)
@@ -198,6 +198,9 @@ msgstr ""
 msgid "Enabled"
 msgstr "Ενεργοποιημένο"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index a5994dc2929eaa33e51b43469cf629c90cc3ff71..51819f6b09e236e7880c3ada4a78e8388efe50a4 100644 (file)
@@ -197,6 +197,9 @@ msgstr "Enable management interface on <em>IP</em> <em>port</em>"
 msgid "Enabled"
 msgstr "Enabled"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr "Encrypt and authenticate all control channel packets with the key"
+
 msgid "Encryption cipher for packets"
 msgstr "Encryption cipher for packets"
 
index a5141831ce11309516d554a5a67f49818182ccef..819e7ee509a8f2c9ac4516a65f6cf2980fdc0731 100644 (file)
@@ -196,6 +196,9 @@ msgstr "Interfaz de gestión en <em>IP</em> <em>puerto</em>"
 msgid "Enabled"
 msgstr "Activado"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Cifra de encriptación de paquetes"
 
index e2f33dc16438d782b9d639a6abb56877eedc2dbd..331d1931e890314cd7f7d252e8974a336a6da3bb 100644 (file)
@@ -206,6 +206,9 @@ msgstr "Activer l'interface de gestion sur <em>IP</em> <em>port</em>"
 msgid "Enabled"
 msgstr "Activé"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Méthode de chiffrement des paquets"
 
index 3528444199fa41f3ecb57dc0f3ed9e2dbb0bb280..517da49080a1b78aaaf467401334695715e94cc4 100644 (file)
@@ -192,6 +192,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index 1f9d691d046a419c9ffc5400164e0c318878a194..67a8217b1ace5a16fd5a51bc09825f554c7f893c 100644 (file)
@@ -196,6 +196,9 @@ msgstr ""
 msgid "Enabled"
 msgstr "Engedélyezve"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index 233c144c57a66101d3be0285b6ae848647bc36c2..2759ccc8465ea078d36d79d26d0abe7a4f5fea4e 100644 (file)
@@ -47,7 +47,7 @@ msgid "Allowed maximum of connected clients"
 msgstr "Numero massimo di clienti connessi"
 
 msgid "Allowed maximum of internal"
-msgstr ""
+msgstr "Numero massimo di interni"
 
 msgid "Allowed maximum of new connections"
 msgstr "Numero massimo di nuove connessioni ammesse"
@@ -62,42 +62,40 @@ msgid "Automatically redirect default route"
 msgstr "Modifica automaticamente la default route"
 
 msgid "Below is a list of configured OpenVPN instances and their current state"
-msgstr ""
-"Sotto c'è una lista di istanze di OpenVPN configurate e il loro stato "
-"corrente"
+msgstr "Sotto c'è una lista di istanze OpenVPN configurate e il loro stato"
 
 msgid "Call down cmd/script before TUN/TAP close"
-msgstr ""
+msgstr "Richiama un cmd/script prima della chiusura del TUN/TAP"
 
 msgid "Certificate authority"
-msgstr ""
+msgstr "CA"
 
 msgid "Change process priority"
 msgstr "Cambia priorità del processo"
 
 msgid "Change to directory before initialization"
-msgstr ""
+msgstr "Cambia cartella prima dell'inizializzazione"
 
 msgid "Check peer certificate against a CRL"
-msgstr ""
+msgstr "Verifica il certificato del nodo su una CRL"
 
 msgid "Chroot to directory after initialization"
-msgstr ""
+msgstr "Fai chroot alla cartella dopo l'inizializzazione"
 
 msgid "Client is disabled"
-msgstr ""
+msgstr "Client disabilitato"
 
 msgid "Configuration category"
-msgstr ""
+msgstr "Categoria di configurazione"
 
 msgid "Configure client mode"
-msgstr ""
+msgstr "Configura la modalità client"
 
 msgid "Configure server bridge"
-msgstr ""
+msgstr "Configura un server bridge"
 
 msgid "Configure server mode"
-msgstr ""
+msgstr "Configura la modalità server"
 
 msgid "Connect through Socks5 proxy"
 msgstr "Connetti attraverso un proxy Socks5"
@@ -106,34 +104,34 @@ msgid "Connect to remote host through an HTTP proxy"
 msgstr "Connetti attraverso un proxy HTTP"
 
 msgid "Connection retry interval"
-msgstr ""
+msgstr "Intervallo per riprovare la connessione"
 
 msgid "Daemonize after initialization"
-msgstr ""
+msgstr "Usa come daemon dopo l'inizializzazione"
 
 msgid "Delay n seconds after connection"
-msgstr ""
+msgstr "Ritarda n secondi dopo la connessione"
 
 msgid "Delay tun/tap open and up script execution"
-msgstr ""
+msgstr "Ritarda lo script di apertura e avvio del tun/tap"
 
 msgid "Diffie Hellman parameters"
-msgstr ""
+msgstr "Parametri Diffie Hellman"
 
 msgid "Directory for custom client config files"
-msgstr ""
+msgstr "Cartella per file personalizzati di configuarazione client"
 
 msgid "Disable Paging"
 msgstr ""
 
 msgid "Disable cipher initialisation vector"
-msgstr ""
+msgstr "Diasbilita il vettore di inizializzzazione cifratura"
 
 msgid "Disable options consistency check"
-msgstr ""
+msgstr "Disabilita il controllo della consistenza delle opzioni"
 
 msgid "Disable replay protection"
-msgstr ""
+msgstr "Disabilita la protezione replay"
 
 msgid "Do not bind to local address and port"
 msgstr "Non effettuare il bind sull'indirizzo/porta locale"
@@ -145,7 +143,7 @@ msgid "Don't add routes automatically"
 msgstr "Non aggiungere rotte automaticamente"
 
 msgid "Don't cache --askpass or --auth-user-pass passwords"
-msgstr ""
+msgstr "Non tenere in memoria le password di --askpass o di --auth-user-pass"
 
 msgid "Don't inherit global push options"
 msgstr ""
@@ -154,7 +152,7 @@ msgid "Don't log timestamps"
 msgstr "Non loggare il timestamps"
 
 msgid "Don't pull routes automatically"
-msgstr ""
+msgstr "Non spingere automaticamente le rotte"
 
 msgid "Don't re-read key on restart"
 msgstr "Non rileggere le chiavi al riavvio"
@@ -166,10 +164,10 @@ msgid "Don't use adaptive lzo compression"
 msgstr "Non usare compressione lzo adattiva"
 
 msgid "Don't warn on ifconfig inconsistencies"
-msgstr ""
+msgstr "Non avvisare inconsistenze a livello ifconfig"
 
 msgid "Echo parameters to log"
-msgstr ""
+msgstr "Parametri Echo da loggare"
 
 msgid "Empirically measure MTU"
 msgstr "Misura empericamente l'MTU"
@@ -178,28 +176,31 @@ msgid "Enable OpenSSL hardware crypto engines"
 msgstr "Abilita il supporto criptografico hardware per OpenSSL"
 
 msgid "Enable Path MTU discovery"
-msgstr ""
+msgstr "Abilita la ricerca Path MTU"
 
 msgid "Enable Static Key encryption mode (non-TLS)"
-msgstr ""
+msgstr "Abilita la modalità di criptazione chiave statica (non-TLS)"
 
 msgid "Enable TLS and assume client role"
-msgstr ""
+msgstr "Abilita TLS e usa il ruolo client"
 
 msgid "Enable TLS and assume server role"
-msgstr ""
+msgstr "Abilita TLS e usa il ruolo server"
 
 msgid "Enable internal datagram fragmentation"
 msgstr "Abilita frammentazione interna dei datagram"
 
 msgid "Enable management interface on <em>IP</em> <em>port</em>"
-msgstr ""
+msgstr "Abilita l'interfaccia di controllo su <em>IP</em> <em>port</em>"
 
 msgid "Enabled"
 msgstr "Abilitato"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr "Crittografa e autentica tutti i pacchetti del canale di controllo con la chiave"
+
 msgid "Encryption cipher for packets"
-msgstr ""
+msgstr "Cifratura di criptazione dei pacchetti"
 
 msgid "Execute shell cmd after routes are added"
 msgstr "Esegui un comando shell dopo che le rotte sono aggiunte"
@@ -224,7 +225,7 @@ msgid "Get PEM password from controlling tty before we daemonize"
 msgstr ""
 
 msgid "HMAC authentication for packets"
-msgstr ""
+msgstr "Autenticazione HMAC per i pacchetti"
 
 msgid "Handling of authentication failures"
 msgstr ""
index 5474008682e247958b751d56eb3562a4e3f8c94a..232ae27e1fbfd2a8c7dfeb95e8f692bfe732157c 100644 (file)
@@ -196,6 +196,9 @@ msgstr ""
 msgid "Enabled"
 msgstr "有効"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index c439c3eb1539c8b8ca4f91ba94832b40d68a1185..6c6e0d604635715fd39c1b0d9e9c4948eb3f938d 100644 (file)
@@ -191,6 +191,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index 3528444199fa41f3ecb57dc0f3ed9e2dbb0bb280..517da49080a1b78aaaf467401334695715e94cc4 100644 (file)
@@ -192,6 +192,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index e289a80fc112a80c5e72840abe21b1afac3347de..bef5a13a1ac7ad450b1fa083ac06b985b6cdbea4 100644 (file)
@@ -197,6 +197,9 @@ msgstr "Włącz interfejs zarządzalny na <em>IP</em> <em>port</em>"
 msgid "Enabled"
 msgstr "Włączone"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Szyfrowanie dla pakietów"
 
index 84b0540581dc9b073838d6e79f56cfd2175942c1..26642e2c46362697c867b95f08610177c3997d1b 100644 (file)
@@ -198,6 +198,9 @@ msgstr "Ativar o interface de gestão em <em>IP</em> <em>porta</em>"
 msgid "Enabled"
 msgstr "Ativado"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Cifra de encriptação para pacotes"
 
index 95c50a571a6e4cf7d6058dfbe94616614b0113e3..d74b0a690dc3ca131550dc2536060d2bf576e81b 100644 (file)
@@ -198,6 +198,9 @@ msgstr "Activar o interface de gestão em <em>IP</em> <em>porta</em>"
 msgid "Enabled"
 msgstr "Activado"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Cifra de encriptação para pacotes"
 
index 4a7a5b7515d20d9954f1aa43967831adfeda1ef1..ef5e7ce379cb0a2d9f14b385f696607d6ef65783 100644 (file)
@@ -193,6 +193,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index 00e585c3744106d570b72afe6fc68ea9fe70eb35..89cf1161cc3c0b2f2aa16030e287d22782e1952e 100644 (file)
@@ -200,6 +200,9 @@ msgstr "Включить интерфейс управления на <em>IP</em
 msgid "Enabled"
 msgstr "Включено"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr "Шифровать и аутентифициоровать ключом все пакеты канала управления"
+
 msgid "Encryption cipher for packets"
 msgstr "Шифрование для пакетов"
 
index f001c12eaf95c29e1af26783339a87bebbbf9606..9005529762771464d64af5d73ac18a7dca5e3887 100644 (file)
@@ -191,6 +191,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index c03e1495cb47a9431007f35cf092707968fdc1b8..838f4650dd5f9e664286ed51bea4010fa96d1ff7 100644 (file)
@@ -192,6 +192,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index f2e4011662ccf96f3ba87e15a3abb21cbac6701b..126cab076f9ac9c6b92a183846e70d06c0b2cb7a 100644 (file)
@@ -184,6 +184,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index 7b8ffad34cbb2b6e21b966bbe263134fbbbfa182..917c36d561830929ad63667d34e7da93b9829f5d 100644 (file)
@@ -191,6 +191,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index a6910c23099f187365819476ccd396007d21981e..e98b52a8aeea7863113affff10cbba82f9ee1ea6 100644 (file)
@@ -195,6 +195,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index 8e8b96dc7f6d4f4e9520e5a9daf25caff5b8ca9a..f3873b068fe45c456689f8d41fab4705f33a4621 100644 (file)
@@ -197,6 +197,9 @@ msgstr "Kích hoạt giao diện điều hành trên <em>IP</em> <em>cổng</em>
 msgid "Enabled"
 msgstr "Kích hoạt "
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Encryption cipher cho các gói"
 
index 3904ac4bf842fb4bcf287e7e1833825d9e02cfc8..13182fcddd684368553699e96dbac3e198c477c2 100644 (file)
@@ -1,23 +1,26 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-19 19:35+0200\n"
-"PO-Revision-Date: 2017-04-14 17:26-0600\n"
-"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
-"Language-Team: QQ Group 75543259 <axishero@foxmail.com>\n"
+"PO-Revision-Date: 2017-10-29 14:37+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: Poedit 2.0.1\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "%s"
 msgstr "%s"
 
 msgid "'net30', 'p2p', or 'subnet'"
-msgstr "'net30', 'p2p', 或 '子网'"
+msgstr "“net30”,“p2p”,或“subnet”"
 
 msgid "Accept options pushed from server"
 msgstr "接受从服务器发送过来的选项"
@@ -29,7 +32,7 @@ msgid "Add route after establishing connection"
 msgstr "建立连接后添加路由"
 
 msgid "Additional authentication over TLS"
-msgstr "TLS以外的验证"
+msgstr "TLS 以外的验证"
 
 msgid "Allow client-to-client traffic"
 msgstr "允许客户端到客户端的通信"
@@ -41,7 +44,7 @@ msgid "Allow only one session"
 msgstr "只允许一个会话"
 
 msgid "Allow remote to change its IP or port"
-msgstr "å\85\81许è¿\9cç¨\8bä¿®æ\94¹ipå\92\8c端口"
+msgstr "å\85\81许è¿\9c端æ\94¹å\8f\98 IP æ\88\96端口"
 
 msgid "Allowed maximum of connected clients"
 msgstr "允许最大已连接客户端数"
@@ -62,10 +65,10 @@ msgid "Automatically redirect default route"
 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 "认证授权"
@@ -98,10 +101,10 @@ msgid "Configure server mode"
 msgstr "配置服务器模式"
 
 msgid "Connect through Socks5 proxy"
-msgstr "通过Sock5代理连接"
+msgstr "通过 Sock5 代理连接"
 
 msgid "Connect to remote host through an HTTP proxy"
-msgstr "通过HTTP代理连接到远程主机"
+msgstr "通过 HTTP 代理连接到远程主机"
 
 msgid "Connection retry interval"
 msgstr "连接重试时间间隔"
@@ -110,13 +113,13 @@ msgid "Daemonize after initialization"
 msgstr "初始化后进入后台运行"
 
 msgid "Delay n seconds after connection"
-msgstr "连接后延迟时间(秒)"
+msgstr "连接后延迟时间(秒"
 
 msgid "Delay tun/tap open and up script execution"
-msgstr "延迟tun/tap的打开并加速脚本执行"
+msgstr "延迟 tun/tap 的打开及 up 脚本的执行"
 
 msgid "Diffie Hellman parameters"
-msgstr "Diffie–Hellman/DH密钥交换 参数"
+msgstr "Diffie–Hellman/DH 密钥交换参数"
 
 msgid "Directory for custom client config files"
 msgstr "自定义客户端配置文件的目录"
@@ -137,13 +140,13 @@ msgid "Do not bind to local address and port"
 msgstr "不绑定本地地址和端口"
 
 msgid "Don't actually execute ifconfig"
-msgstr "不实际执行ifconfig命令"
+msgstr "不实际执行 ifconfig 命令"
 
 msgid "Don't add routes automatically"
 msgstr "不自动添加路由"
 
 msgid "Don't cache --askpass or --auth-user-pass passwords"
-msgstr "不缓存--askpass 或--auth-user-pass passwords"
+msgstr "不缓存 --askpass 或 --auth-user-pass passwords"
 
 msgid "Don't inherit global push options"
 msgstr "不继承全局主动发送选项"
@@ -152,7 +155,7 @@ msgid "Don't log timestamps"
 msgstr "不记录时间戳"
 
 msgid "Don't pull routes automatically"
-msgstr ""
+msgstr "不自动拉取路由"
 
 msgid "Don't re-read key on restart"
 msgstr "服务重启时不重读密钥值"
@@ -161,49 +164,52 @@ msgid "Don't require client certificate"
 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 "把参数写入日志"
 
 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发现"
+msgstr "启用路径 MTU 发现"
 
 msgid "Enable Static Key encryption mode (non-TLS)"
 msgstr "允许静态密钥加密模式"
 
 msgid "Enable TLS and assume client role"
-msgstr "允许TLS并伪装为客户端"
+msgstr "允许 TLS 并伪装为客户端"
 
 msgid "Enable TLS and assume server role"
-msgstr "允许TLS并伪装为服务器"
+msgstr "允许 TLS 并伪装为服务器"
 
 msgid "Enable internal datagram fragmentation"
 msgstr "允许内部数据报分片"
 
 msgid "Enable management interface on <em>IP</em> <em>port</em>"
-msgstr "在<em>IP</em> <em>port</em>上启用可管理接口"
+msgstr "在 <em>IP</em> <em>port</em> 上启用可管理接口"
 
 msgid "Enabled"
 msgstr "启用"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr "使用密钥加密及认证所有的控制通道数据包"
+
 msgid "Encryption cipher for packets"
 msgstr "加密数据包"
 
 msgid "Execute shell cmd after routes are added"
-msgstr "添加路由后执行shell命令"
+msgstr "添加路由后执行 shell 命令"
 
 msgid "Execute shell command on remote ip change"
-msgstr "当远程ip改变时执行shell命令"
+msgstr "当远程 ip 改变时执行 shell 命令"
 
 msgid ""
 "Executed in server mode on new client connections, when the client is still "
@@ -214,16 +220,16 @@ 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的内部路由表中。"
+"服务器模式下,将每个 IPv4 地址/路由或 MAC 地址添加到 OpenVPN 的内部路由表中。"
 
 msgid "Exit on TLS negotiation failure"
-msgstr "TLS验证失败后退出"
+msgstr "TLS 验证失败后退出"
 
 msgid "Get PEM password from controlling tty before we daemonize"
-msgstr "后台运行前从控制的tty中获取PEM密码"
+msgstr "后台运行前从控制的 tty 中获取 PEM 密码"
 
 msgid "HMAC authentication for packets"
-msgstr "利用HMAC水印算法校验数据包"
+msgstr "利用 HMAC 算法校验数据包"
 
 msgid "Handling of authentication failures"
 msgstr "处理验证失败"
@@ -231,7 +237,7 @@ msgstr "处理验证失败"
 msgid ""
 "Helper directive to simplify the expression of --ping and --ping-restart in "
 "server mode configurations"
-msgstr "在服务配置模式下Helper简明的执行--ping和--ping-restart"
+msgstr "在服务配置模式下简化 Helper 指令 --ping 和 --ping-restart 的表达式"
 
 msgid "If hostname resolve fails, retry"
 msgstr "如果主机名解析错误,重试"
@@ -243,10 +249,10 @@ msgid "Invalid"
 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 "服务重启时自动打开 tun/tap 设备"
@@ -255,22 +261,22 @@ msgid "Key transition window"
 msgstr "密钥传输滑动窗口"
 
 msgid "Limit repeated log messages"
-msgstr "限制重复的日志消息"
+msgstr "限制重复的日志消息"
 
 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 "使 tun 设备兼容IPv6"
+msgstr "使 tun 设备兼容 IPv6"
 
 msgid "Maximum number of queued TCP output packets"
 msgstr "TCP队列中输出包的最大数量"
@@ -282,10 +288,10 @@ msgid "Number of lines for log file history"
 msgstr "历史日志文件的行数"
 
 msgid "Only accept connections from given X509 name"
-msgstr "只接收已给定的X509名称的连接"
+msgstr "只接收已给定的 X509 名称的连接"
 
 msgid "Only process ping timeouts if routes exist"
-msgstr "当且仅当路由存在时处理ping超时"
+msgstr "仅当路由存在时处理 ping 超时"
 
 msgid "OpenVPN"
 msgstr "OpenVPN"
@@ -297,13 +303,13 @@ msgid "Optimize TUN/TAP/UDP writes"
 msgstr "优化 TUN/TAP/UDP 写入"
 
 msgid "Output to syslog and do not daemonize"
-msgstr "显式输出到syslog"
+msgstr "输出到 syslog,不运行守护进程"
 
 msgid "Overview"
 msgstr "概览"
 
 msgid "PKCS#12 file containing keys"
-msgstr "PKCS#12文件包含的密钥"
+msgstr "PKCS#12 文件包含的密钥"
 
 msgid "Pass environment variables to script"
 msgstr "传递环境变量至脚本"
@@ -312,10 +318,10 @@ msgid "Persist replay-protection state"
 msgstr "保存重播保护的状态"
 
 msgid "Persist/unpersist ifconfig-pool"
-msgstr "持久/非持久ifconfig池"
+msgstr "持久/非持久 ifconfig 池"
 
 msgid "Ping remote every n seconds over TCP/UDP port"
-msgstr "每n秒ping一次远程 TCP/UDP 端口"
+msgstr "每 n 秒 ping 一次远程 TCP/UDP 端口"
 
 msgid "Policy level over usage of external programs and scripts"
 msgstr "外部程序和脚本超出了策略允许的使用范围"
@@ -330,13 +336,13 @@ msgid "Proxy timeout in seconds"
 msgstr "代理超时,单位秒"
 
 msgid "Push an ifconfig option to remote"
-msgstr "主动向远程发送ifconfig选项"
+msgstr "主动向远程发送 ifconfig 选项"
 
 msgid "Push options to peer"
 msgstr "主动向端点发送选项"
 
 msgid "Query management channel for private key"
-msgstr "为私人密钥查询管理通道"
+msgstr "为私钥查询管理通道"
 
 msgid "Randomly choose remote server"
 msgstr "随机选择远程服务器"
@@ -345,13 +351,13 @@ msgid "Refuse connection if no custom client config"
 msgstr "拒接没有自定义客户端配置的连接"
 
 msgid "Remap SIGUSR1 signals"
-msgstr "重映射SIGUSR1信号"
+msgstr "重映射 SIGUSR1 信号"
 
 msgid "Remote host name or ip address"
-msgstr "远程主机名或ip地址"
+msgstr "远程主机名或 ip 地址"
 
 msgid "Remote ping timeout"
-msgstr "远程ping超时"
+msgstr "远程 ping 超时"
 
 msgid "Renegotiate data chan. key after bytes"
 msgstr "传输若干字节后重新验证数据通道密钥"
@@ -372,22 +378,22 @@ msgid "Require explicit key usage on certificate"
 msgstr "证书需要明确的密钥"
 
 msgid "Restart after remote ping timeout"
-msgstr "远程ping超时后重启"
+msgstr "远程 ping 超时后重启"
 
 msgid "Retransmit timeout on TLS control channel"
-msgstr "TLS控制通道超时后重新发送"
+msgstr "TLS 控制通道超时后重新发送"
 
 msgid "Retry indefinitely on HTTP proxy errors"
 msgstr "无限重试直至代理正确"
 
 msgid "Retry indefinitely on Socks proxy errors"
-msgstr "无限重试直至Socks代理正确"
+msgstr "无限重试直至 Socks 代理正确"
 
 msgid "Route subnet to client"
 msgstr "路由子网至客户端"
 
 msgid "Run as an inetd or xinetd server"
-msgstr "以inetd或xinetd服务器的方式运行"
+msgstr "以 inetd 或 xinetd 服务器的方式运行"
 
 msgid "Run script cmd on client connection"
 msgstr "当客户端连接时在命令行下允许脚本"
@@ -402,19 +408,19 @@ msgid "Send notification to peer on disconnect"
 msgstr "断开连接时向客户端发送通知"
 
 msgid "Set GID to group"
-msgstr "为群组设置GID值"
+msgstr "为群组设置 GID 值"
 
 msgid "Set TCP/UDP MTU"
-msgstr "设置TCP/UDP的MTU值"
+msgstr "设置 TCP/UDP 的 MTU 值"
 
 msgid "Set UID to user"
-msgstr "为用户设置UID值"
+msgstr "为用户设置 UID 值"
 
 msgid "Set aside a pool of subnets"
-msgstr "设置为拒绝子网线程池模式"
+msgstr "设置子网池"
 
 msgid "Set extended HTTP proxy options"
-msgstr "设置HTTP扩展代理选项"
+msgstr "设置 HTTP 扩展代理选项"
 
 msgid "Set output verbosity"
 msgstr "设置输出冗余级别"
@@ -423,37 +429,37 @@ msgid "Set size of real and virtual address hash tables"
 msgstr "设置实际和虚拟地址的哈希表大小"
 
 msgid "Set the TCP/UDP receive buffer size"
-msgstr "设置TCP/UDP接收缓冲区大小"
+msgstr "设置 TCP/UDP 接收缓冲区大小"
 
 msgid "Set the TCP/UDP send buffer size"
-msgstr "设置TCP/UDP发送缓冲区大小"
+msgstr "设置 TCP/UDP 发送缓冲区大小"
 
 msgid "Set tun/tap TX queue length"
-msgstr "设置tun/tap发送队列长度"
+msgstr "设置 tun/tap 发送队列长度"
 
 msgid "Set tun/tap adapter parameters"
-msgstr "设置tun/ tap适配器参数"
+msgstr "设置 tun/tap 适配器参数"
 
 msgid "Set tun/tap device MTU"
-msgstr "设置tun/tap设备的MTU值"
+msgstr "设置 tun/tap 设备的 MTU 值"
 
 msgid "Set tun/tap device overhead"
-msgstr "设置tun/tap设备的开销"
+msgstr "设置 tun/tap 设备的开销"
 
 msgid "Set upper bound on TCP MSS"
-msgstr "设置TCP MSS的上限"
+msgstr "设置 TCP MSS 上限"
 
 msgid "Shaping for peer bandwidth"
 msgstr "改变结点带宽"
 
 msgid "Shell cmd to execute after tun device open"
-msgstr "tun设备打开后运行shell命令行"
+msgstr "tun 设备打开后运行的 shell 命令"
 
 msgid "Shell cmd to run after tun device close"
-msgstr "tun设备关闭后运行shell命令行e"
+msgstr "tun 设备关闭后运行的 shell 命令"
 
 msgid "Shell command to verify X509 name"
-msgstr "运行shell命令以验证X509名称"
+msgstr "运行 shell 命令以验证 X509 名称"
 
 msgid "Silence the output of replay warnings"
 msgstr "以静音的方式发出重播警告"
@@ -465,7 +471,7 @@ msgid "Specify a default gateway for routes"
 msgstr "指定路由默认网关"
 
 msgid "Start OpenVPN in a hibernating state"
-msgstr "以休眠的状态打开OpenVPN"
+msgstr "以休眠的状态打开 OpenVPN"
 
 msgid "Start/Stop"
 msgstr "启动/停止"
@@ -483,16 +489,16 @@ msgid "TCP/UDP port # for both local and remote"
 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 "TLS加密"
+msgstr "TLS 加密"
 
 msgid "TOS passthrough (applies to IPv4 only)"
-msgstr "TOS 穿透 (仅限IPv4)"
+msgstr "TOS 穿透(仅限 IPv4)"
 
 msgid "Temporary directory for client-connect return file"
 msgstr "客户端连接返回文件的临时目录"
@@ -501,7 +507,7 @@ msgid "The highest supported TLS version"
 msgstr "最高支持的 TLS 版本"
 
 msgid "The key direction for 'tls-auth' and 'secret' options"
-msgstr ""
+msgstr "“tls-auth”和“secret”选项的密钥类型"
 
 msgid "The lowest supported TLS version"
 msgstr "最低支持的 TLS 版本"
@@ -513,10 +519,10 @@ msgid "Type of used device"
 msgstr "使用设备类型"
 
 msgid "Use fast LZO compression"
-msgstr "使用快速LZO压缩"
+msgstr "使用快速 LZO 压缩"
 
 msgid "Use individual addresses rather than /30 subnets"
-msgstr "利用个人地址代替/30 子网"
+msgstr "使用独立的地址代替 /30 子网"
 
 msgid "Use protocol"
 msgstr "采用协议"
@@ -531,10 +537,10 @@ msgid "Write log to file"
 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 "否"
@@ -546,7 +552,7 @@ msgid "tun/tap inactivity timeout"
 msgstr "tun/tap 休眠超时"
 
 msgid "yes (%i)"
-msgstr "是 (%i)"
+msgstr "是(%i)"
 
 msgid "« Switch to basic configuration"
 msgstr "« 基本配置"
index f26aeb097a1de8067cececf9190f4073b6f50cac..38bb6fcd0e0f6c23c924bd050937f0b5248810ef 100644 (file)
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 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"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-05-19 19:35+0200\n"
+"PO-Revision-Date: 2017-10-29 14:37+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 "%s"
-msgstr ""
+msgstr "%s"
 
 msgid "'net30', 'p2p', or 'subnet'"
-msgstr ""
+msgstr "“net30”,“p2p”,或“subnet”"
 
 msgid "Accept options pushed from server"
-msgstr ""
+msgstr "接受從伺服器傳送過來的選項"
 
 msgid "Add"
-msgstr ""
+msgstr "新增"
 
 msgid "Add route after establishing connection"
-msgstr ""
+msgstr "建立連線後新增路由"
 
 msgid "Additional authentication over TLS"
-msgstr ""
+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 ""
+msgstr "允許遠端改變 IP 或埠"
 
 msgid "Allowed maximum of connected clients"
-msgstr ""
+msgstr "允許最大已連線客戶端數"
 
 msgid "Allowed maximum of internal"
-msgstr ""
+msgstr "允許最大內部連線"
 
 msgid "Allowed maximum of new connections"
-msgstr ""
+msgstr "允許最大新建連線數"
 
 msgid "Append log to file"
-msgstr ""
+msgstr "新增日誌至檔案"
 
 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 ""
+msgstr "以下是 OpenVPN 已配置例項及其當前狀態的列表"
 
 msgid "Call down cmd/script before TUN/TAP close"
-msgstr ""
+msgstr "TUN/TAP 關閉前的命令列及指令碼"
 
 msgid "Certificate authority"
-msgstr ""
+msgstr "認證授權"
 
 msgid "Change process priority"
-msgstr ""
+msgstr "改變程序優先順序"
 
 msgid "Change to directory before initialization"
-msgstr ""
+msgstr "初始化前改變根目錄"
 
 msgid "Check peer certificate against a CRL"
-msgstr ""
+msgstr "驗證客戶端證書以確保其是否過期"
 
 msgid "Chroot to directory after initialization"
-msgstr ""
+msgstr "初始化後改變根目錄"
 
 msgid "Client is disabled"
-msgstr ""
+msgstr "客戶端已被禁止"
 
 msgid "Configuration category"
-msgstr ""
+msgstr "配置分類"
 
 msgid "Configure client mode"
-msgstr ""
+msgstr "配置客戶端模式"
 
 msgid "Configure server bridge"
-msgstr ""
+msgstr "配置伺服器橋接"
 
 msgid "Configure server mode"
-msgstr ""
+msgstr "配置伺服器模式"
 
 msgid "Connect through Socks5 proxy"
-msgstr ""
+msgstr "通過 Sock5 代理連線"
 
 msgid "Connect to remote host through an HTTP proxy"
-msgstr ""
+msgstr "通過 HTTP 代理連線到遠端主機"
 
 msgid "Connection retry interval"
-msgstr ""
+msgstr "連線重試時間間隔"
 
 msgid "Daemonize after initialization"
-msgstr ""
+msgstr "初始化後進入後臺執行"
 
 msgid "Delay n seconds after connection"
-msgstr ""
+msgstr "連線後延遲時間(秒)"
 
 msgid "Delay tun/tap open and up script execution"
-msgstr ""
+msgstr "延遲 tun/tap 的開啟及 up 指令碼的執行"
 
 msgid "Diffie Hellman parameters"
-msgstr ""
+msgstr "Diffie–Hellman/DH 金鑰交換引數"
 
 msgid "Directory for custom client config files"
-msgstr ""
+msgstr "自定義客戶端配置檔案的目錄"
 
 msgid "Disable Paging"
-msgstr ""
+msgstr "禁止分頁"
 
 msgid "Disable cipher initialisation vector"
-msgstr ""
+msgstr "關閉加密的初始化向量"
 
 msgid "Disable options consistency check"
-msgstr ""
+msgstr "禁止選項一致性檢查"
 
 msgid "Disable replay protection"
-msgstr ""
+msgstr "關閉重播保護"
 
 msgid "Do not bind to local address and port"
-msgstr ""
+msgstr "不繫結本地位址和埠"
 
 msgid "Don't actually execute ifconfig"
-msgstr ""
+msgstr "不實際執行 ifconfig 命令"
 
 msgid "Don't add routes automatically"
-msgstr ""
+msgstr "不自動新增路由"
 
 msgid "Don't cache --askpass or --auth-user-pass passwords"
-msgstr ""
+msgstr "不快取 --askpass 或 --auth-user-pass passwords"
 
 msgid "Don't inherit global push options"
-msgstr ""
+msgstr "不繼承全域性主動傳送選項"
 
 msgid "Don't log timestamps"
-msgstr ""
+msgstr "不記錄時間戳"
 
 msgid "Don't pull routes automatically"
-msgstr ""
+msgstr "不自動拉取路由"
 
 msgid "Don't re-read key on restart"
-msgstr ""
+msgstr "服務重啟時不重讀金鑰值"
 
 msgid "Don't require client certificate"
-msgstr ""
+msgstr "不需要客戶的證書"
 
 msgid "Don't use adaptive lzo compression"
-msgstr ""
+msgstr "不用自適應 lzo 壓縮"
 
 msgid "Don't warn on ifconfig inconsistencies"
-msgstr ""
+msgstr "ifconfig 不一致時不警告"
 
 msgid "Echo parameters to log"
-msgstr ""
+msgstr "把引數寫入日誌"
 
 msgid "Empirically measure MTU"
-msgstr ""
+msgstr "以歷史值估算 MTU 值"
 
 msgid "Enable OpenSSL hardware crypto engines"
-msgstr ""
+msgstr "開啟 OpenSSL 硬體加密引擎"
 
 msgid "Enable Path MTU discovery"
-msgstr ""
+msgstr "啟用路徑 MTU 發現"
 
 msgid "Enable Static Key encryption mode (non-TLS)"
-msgstr ""
+msgstr "允許靜態金鑰加密模式"
 
 msgid "Enable TLS and assume client role"
-msgstr ""
+msgstr "允許 TLS 並偽裝為客戶端"
 
 msgid "Enable TLS and assume server role"
-msgstr ""
+msgstr "允許 TLS 並偽裝為伺服器"
 
 msgid "Enable internal datagram fragmentation"
-msgstr ""
+msgstr "允許內部資料報分片"
 
 msgid "Enable management interface on <em>IP</em> <em>port</em>"
-msgstr ""
+msgstr "在 <em>IP</em> <em>port</em> 上啟用可管理介面"
 
 msgid "Enabled"
-msgstr ""
+msgstr "啟用"
+
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr "使用金鑰加密及認證所有的控制通道資料包"
 
 msgid "Encryption cipher for packets"
-msgstr ""
+msgstr "加密資料包"
 
 msgid "Execute shell cmd after routes are added"
-msgstr ""
+msgstr "新增路由後執行 shell 命令"
 
 msgid "Execute shell command on remote ip change"
-msgstr ""
+msgstr "當遠端 ip 改變時執行 shell 命令"
 
 msgid ""
 "Executed in server mode on new client connections, when the client is still "
 "untrusted"
-msgstr ""
+msgstr "在伺服器模式下執行新的客戶端連線,當客戶端仍然是不可信"
 
 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 的內部路由表中。"
 
 msgid "Exit on TLS negotiation failure"
-msgstr ""
+msgstr "TLS 驗證失敗後退出"
 
 msgid "Get PEM password from controlling tty before we daemonize"
-msgstr ""
+msgstr "後臺執行前從控制的 tty 中獲取 PEM 密碼"
 
 msgid "HMAC authentication for packets"
-msgstr ""
+msgstr "利用 HMAC 演算法校驗資料包"
 
 msgid "Handling of authentication failures"
-msgstr ""
+msgstr "處理驗證失敗"
 
 msgid ""
 "Helper directive to simplify the expression of --ping and --ping-restart in "
 "server mode configurations"
-msgstr ""
+msgstr "在服務配置模式下簡化 Helper 指令 --ping 和 --ping-restart 的表示式"
 
 msgid "If hostname resolve fails, retry"
-msgstr ""
+msgstr "如果主機名解析錯誤,重試"
 
 msgid "Instance \"%s\""
-msgstr ""
+msgstr "例項 \"%s\""
 
 msgid "Invalid"
-msgstr ""
+msgstr "無效"
 
 msgid "Keep local IP address on restart"
-msgstr ""
+msgstr "服務重啟時保持本地 IP 位址"
 
 msgid "Keep remote IP address on restart"
-msgstr ""
+msgstr "服務重啟時保持遠端 IP 位址"
 
 msgid "Keep tun/tap device open on restart"
-msgstr ""
+msgstr "服務重啟時自動開啟 tun/tap 裝置"
 
 msgid "Key transition window"
-msgstr ""
+msgstr "金鑰傳輸滑動視窗"
 
 msgid "Limit repeated log messages"
-msgstr ""
+msgstr "限制重複的日誌訊息"
 
 msgid "Local certificate"
-msgstr ""
+msgstr "本地證書"
 
 msgid "Local host name or ip address"
-msgstr ""
+msgstr "本地主機名或 ip 位址"
 
 msgid "Local private key"
-msgstr ""
+msgstr "本地私鑰"
 
 msgid "Major mode"
-msgstr ""
+msgstr "主要模式"
 
 msgid "Make tun device IPv6 capable"
-msgstr ""
+msgstr "使 tun 裝置相容 IPv6"
 
 msgid "Maximum number of queued TCP output packets"
-msgstr ""
+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 ""
+msgstr "只接收已給定的 X509 名稱的連線"
 
 msgid "Only process ping timeouts if routes exist"
-msgstr ""
+msgstr "僅當路由存在時處理 ping 超時"
 
 msgid "OpenVPN"
-msgstr ""
+msgstr "OpenVPN"
 
 msgid "OpenVPN instances"
-msgstr ""
+msgstr "OpenVPN 例項"
 
 msgid "Optimize TUN/TAP/UDP writes"
-msgstr ""
+msgstr "優化 TUN/TAP/UDP 寫入"
 
 msgid "Output to syslog and do not daemonize"
-msgstr ""
+msgstr "輸出到 syslog,不執行守護程序"
 
 msgid "Overview"
-msgstr ""
+msgstr "概覽"
 
 msgid "PKCS#12 file containing keys"
-msgstr ""
+msgstr "PKCS#12 檔案包含的金鑰"
 
 msgid "Pass environment variables to script"
-msgstr ""
+msgstr "傳遞環境變數至指令碼"
 
 msgid "Persist replay-protection state"
-msgstr ""
+msgstr "儲存重播保護的狀態"
 
 msgid "Persist/unpersist ifconfig-pool"
-msgstr ""
+msgstr "持久/非持久 ifconfig 池"
 
 msgid "Ping remote every n seconds over TCP/UDP port"
-msgstr ""
+msgstr "每 n 秒 ping 一次遠端 TCP/UDP 埠"
 
 msgid "Policy level over usage of external programs and scripts"
-msgstr ""
+msgstr "外部程式和指令碼超出了策略允許的使用範圍"
 
 msgid "Port"
-msgstr ""
+msgstr ""
 
 msgid "Protocol"
-msgstr ""
+msgstr "協議"
 
 msgid "Proxy timeout in seconds"
-msgstr ""
+msgstr "代理超時,單位秒"
 
 msgid "Push an ifconfig option to remote"
-msgstr ""
+msgstr "主動向遠端傳送 ifconfig 選項"
 
 msgid "Push options to peer"
-msgstr ""
+msgstr "主動向端點發送選項"
 
 msgid "Query management channel for private key"
-msgstr ""
+msgstr "為私鑰查詢管理通道"
 
 msgid "Randomly choose remote server"
-msgstr ""
+msgstr "隨機選擇遠端伺服器"
 
 msgid "Refuse connection if no custom client config"
-msgstr ""
+msgstr "拒接沒有自定義客戶端配置的連線"
 
 msgid "Remap SIGUSR1 signals"
-msgstr ""
+msgstr "重對映 SIGUSR1 訊號"
 
 msgid "Remote host name or ip address"
-msgstr ""
+msgstr "遠端主機名或 ip 位址"
 
 msgid "Remote ping timeout"
-msgstr ""
+msgstr "遠端 ping 超時"
 
 msgid "Renegotiate data chan. key after bytes"
-msgstr ""
+msgstr "傳輸若干位元組後重新驗證資料通道金鑰"
 
 msgid "Renegotiate data chan. key after packets"
-msgstr ""
+msgstr "傳輸若干資料包後重新驗證資料通道金鑰"
 
 msgid "Renegotiate data chan. key after seconds"
-msgstr ""
+msgstr "傳輸若干秒後重新驗證資料通道金鑰"
 
 msgid "Replay protection sliding window size"
-msgstr ""
+msgstr "重播保護的滑動視窗大小"
 
 msgid "Require explicit designation on certificate"
-msgstr ""
+msgstr "證書需要顯式指定"
 
 msgid "Require explicit key usage on certificate"
-msgstr ""
+msgstr "證書需要明確的金鑰"
 
 msgid "Restart after remote ping timeout"
-msgstr ""
+msgstr "遠端 ping 超時後重啟"
 
 msgid "Retransmit timeout on TLS control channel"
-msgstr ""
+msgstr "TLS 控制通道超時後重新發送"
 
 msgid "Retry indefinitely on HTTP proxy errors"
-msgstr ""
+msgstr "無限重試直至代理正確"
 
 msgid "Retry indefinitely on Socks proxy errors"
-msgstr ""
+msgstr "無限重試直至 Socks 代理正確"
 
 msgid "Route subnet to client"
-msgstr ""
+msgstr "路由子網至客戶端"
 
 msgid "Run as an inetd or xinetd server"
-msgstr ""
+msgstr "以 inetd 或 xinetd 伺服器的方式執行"
 
 msgid "Run script cmd on client connection"
-msgstr ""
+msgstr "當客戶端連線時在命令列下允許指令碼"
 
 msgid "Run script cmd on client disconnection"
-msgstr ""
+msgstr "當客戶端斷開時在命令列下允許指令碼"
 
 msgid "Run up/down scripts for all restarts"
-msgstr ""
+msgstr "每次重啟都執行啟動/關閉指令碼"
 
 msgid "Send notification to peer on disconnect"
-msgstr ""
+msgstr "斷開連線時向客戶端傳送通知"
 
 msgid "Set GID to group"
-msgstr ""
+msgstr "為群組設定 GID 值"
 
 msgid "Set TCP/UDP MTU"
-msgstr ""
+msgstr "設定 TCP/UDP 的 MTU 值"
 
 msgid "Set UID to user"
-msgstr ""
+msgstr "為使用者設定 UID 值"
 
 msgid "Set aside a pool of subnets"
-msgstr ""
+msgstr "設定子網池"
 
 msgid "Set extended HTTP proxy options"
-msgstr ""
+msgstr "設定 HTTP 擴充套件代理選項"
 
 msgid "Set output verbosity"
-msgstr ""
+msgstr "設定輸出冗餘級別"
 
 msgid "Set size of real and virtual address hash tables"
-msgstr ""
+msgstr "設定實際和虛擬位址的雜湊表大小"
 
 msgid "Set the TCP/UDP receive buffer size"
-msgstr ""
+msgstr "設定 TCP/UDP 接收緩衝區大小"
 
 msgid "Set the TCP/UDP send buffer size"
-msgstr ""
+msgstr "設定 TCP/UDP 傳送緩衝區大小"
 
 msgid "Set tun/tap TX queue length"
-msgstr ""
+msgstr "設定 tun/tap 傳送佇列長度"
 
 msgid "Set tun/tap adapter parameters"
-msgstr ""
+msgstr "設定 tun/tap 介面卡引數"
 
 msgid "Set tun/tap device MTU"
-msgstr ""
+msgstr "設定 tun/tap 裝置的 MTU 值"
 
 msgid "Set tun/tap device overhead"
-msgstr ""
+msgstr "設定 tun/tap 裝置的開銷"
 
 msgid "Set upper bound on TCP MSS"
-msgstr ""
+msgstr "設定 TCP MSS 上限"
 
 msgid "Shaping for peer bandwidth"
-msgstr ""
+msgstr "改變結點頻寬"
 
 msgid "Shell cmd to execute after tun device open"
-msgstr ""
+msgstr "tun 裝置開啟後執行的 shell 命令"
 
 msgid "Shell cmd to run after tun device close"
-msgstr ""
+msgstr "tun 裝置關閉後執行的 shell 命令"
 
 msgid "Shell command to verify X509 name"
-msgstr ""
+msgstr "執行 shell 命令以驗證 X509 名稱"
 
 msgid "Silence the output of replay warnings"
-msgstr ""
+msgstr "以靜音的方式發出重播警告"
 
 msgid "Size of cipher key"
-msgstr ""
+msgstr "金鑰大小"
 
 msgid "Specify a default gateway for routes"
-msgstr ""
+msgstr "指定路由預設閘道器"
 
 msgid "Start OpenVPN in a hibernating state"
-msgstr ""
+msgstr "以休眠的狀態開啟 OpenVPN"
 
 msgid "Start/Stop"
-msgstr ""
+msgstr "啟動/停止"
 
 msgid "Started"
-msgstr ""
+msgstr "已執行的"
 
 msgid "Status file format version"
-msgstr ""
+msgstr "顯式檔案格式版本的狀態"
 
 msgid "Switch to advanced configuration »"
-msgstr ""
+msgstr "高階配置 »"
 
 msgid "TCP/UDP port # for both local and remote"
-msgstr ""
+msgstr "TCP/UDP 埠 # 同時針對本地和遠端"
 
 msgid "TCP/UDP port # for local (default=1194)"
-msgstr ""
+msgstr "TCP/UDP 埠 # 本地(預設 1194)"
 
 msgid "TCP/UDP port # for remote (default=1194)"
-msgstr ""
+msgstr "TCP/UDP 埠 # 遠端(預設 1194)"
 
 msgid "TLS cipher"
-msgstr ""
+msgstr "TLS 加密"
 
 msgid "TOS passthrough (applies to IPv4 only)"
-msgstr ""
+msgstr "TOS 穿透(僅限 IPv4)"
 
 msgid "Temporary directory for client-connect return file"
-msgstr ""
+msgstr "客戶端連線返回檔案的臨時目錄"
 
 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 ""
+msgstr "使用快速 LZO 壓縮"
 
 msgid "Use individual addresses rather than /30 subnets"
-msgstr ""
+msgstr "使用獨立的位址代替 /30 子網"
 
 msgid "Use protocol"
-msgstr ""
+msgstr "採用協議"
 
 msgid "Use tun/tap device node"
-msgstr ""
+msgstr "使用 tun/tap 裝置節點"
 
 msgid "Use username as common name"
-msgstr ""
+msgstr "把使用者名稱作為通用名稱"
 
 msgid "Write log to file"
-msgstr ""
+msgstr "儲存日誌至檔案"
 
 msgid "Write process ID to file"
-msgstr ""
+msgstr "記錄程序 ID 至檔案"
 
 msgid "Write status to file every n seconds"
-msgstr ""
+msgstr "每 n 秒後寫入狀態至檔案"
 
 msgid "no"
-msgstr ""
+msgstr ""
 
 msgid "tun/tap device"
-msgstr ""
+msgstr "tun/tap 裝置"
 
 msgid "tun/tap inactivity timeout"
-msgstr ""
+msgstr "tun/tap 休眠超時"
 
 msgid "yes (%i)"
-msgstr ""
+msgstr "是(%i)"
 
 msgid "« Switch to basic configuration"
-msgstr ""
+msgstr "« 基本配置"
+
+#~ msgid "Cryptography"
+#~ msgstr "加密"
+
+#~ msgid "Networking"
+#~ msgstr "網路"
+
+#~ msgid "Service"
+#~ msgstr "服務"
+
+#~ msgid "VPN"
+#~ msgstr "VPN"
index de3638164ec109d23a0ea80802e2db91dd7c7d48..8ebac375f2623328643e3334051e4b68342c0a9a 100644 (file)
@@ -1,3 +1,7 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+
 msgid "Block Time"
 msgstr "Tempo de bloqueio"
 
index 7d6c08041e72f5c996da24dc90e632c5fb815bbd..e6f631337457650f1915e81a7e2614eea1011488 100644 (file)
@@ -21,7 +21,7 @@ msgid ""
 "First you have to install the packages to get support for USB (kmod-usb-"
 "printer) or parallel port (kmod-lp)."
 msgstr ""
-"首先必須安裝軟體包以便獲得USB (kmod-usb-printer)或串列埠(kmod-lp)的支援."
+"首先必須安裝軟體包以便獲得USB (kmod-usb-printer)或串列埠(kmod-lp)的支援."
 
 msgid "Interface"
 msgstr ""
index 0be8258a086fad9d49a070e51b68adda9cca9b63..5545c05fc04841dcc269087c300a35ac81a8804f 100644 (file)
@@ -1,15 +1,18 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-10-08 18:42+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
-"Language-Team: none\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: Pootle 2.0.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "Email Addresses that Receive Voicemail"
 msgstr "接收语音邮箱的电子邮箱地址"
@@ -28,8 +31,10 @@ msgid ""
 "SMTP server), and provide a list of addresses that receive recorded "
 "voicemail."
 msgstr ""
-"在这里,你可以为PBX配置一个全球性的语音邮件。由于这个系统运行在嵌入式系统中,如路由器,没有本地存储语音邮件 - 它必须通过电子邮件发送出去。因此,你"
-"需要配置一个外发邮件(SMTP)服务器(例如您的ISP,谷歌或雅虎的SMTP服务器),并提供接收记录语音信箱的地址的列表。"
+"在这里,您可以为 PBX 配置一个全球性的语音邮件。由于这个系统运行在嵌入式系统"
+"中,如路由器,这里并无本地语言邮件的储存空间 - 它必须通过电子邮件发送出去。因"
+"此,您需要配置一个外发邮件(SMTP)服务器(例如您的 ISP、谷歌或雅虎的 SMTP 服"
+"务器),并提供接收记录语音信箱的地址的列表。"
 
 msgid ""
 "In order for this PBX to send emails containing voicemail recordings, you "
@@ -37,11 +42,12 @@ msgid ""
 "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服务器。您也可以设立一个第三方的SMT"
-"P服务器,像谷歌或雅虎。"
+"为了这个 PBX 发送包含语音信箱录音的电子邮件,您需要在这里设置一个 SMTP 服务"
+"器。您的 ISP 通常会提供一个 SMTP 服务器。您也可以设立一个第三方的 SMTP 服务"
+"器,如谷歌或雅虎那样。"
 
 msgid "Last Sent Voicemail Log"
-msgstr "最后发送的语音信箱日志"
+msgstr "上一次发送语音信箱的日志"
 
 msgid "Local Storage Directory"
 msgstr "本地存储目录"
@@ -53,22 +59,22 @@ msgid "Outgoing mail (SMTP) Server"
 msgstr "电子邮件发送服务器(SMTP)"
 
 msgid "SMTP Password"
-msgstr "SMTP登录密码"
+msgstr "SMTP 登录密码"
 
 msgid "SMTP Port Number"
-msgstr "SMTP端口"
+msgstr "SMTP 端口"
 
 msgid "SMTP Server Authentication"
-msgstr "SMTP服务器认证"
+msgstr "SMTP 服务器认证"
 
 msgid "SMTP Server Hostname or IP Address"
-msgstr "SMTP服务器主机名或IP地址"
+msgstr "SMTP 服务器主机名或 IP 地址"
 
 msgid "SMTP User Name"
-msgstr "SMTP用户名"
+msgstr "SMTP 用户名"
 
 msgid "Secure Connection Using TLS"
-msgstr "使用TLS安全连接"
+msgstr "使用 TLS 安全连接"
 
 msgid "Voicemail Setup"
 msgstr "语音邮箱设置"
@@ -77,7 +83,9 @@ 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服务器"
+msgstr ""
+"当您启用了语音信箱,您将可以指定接收记录语音信箱的电子邮件地址。您也必须在下"
+"面设置 SMTP 服务器。"
 
 msgid "Yes"
 msgstr "是"
@@ -88,10 +96,12 @@ msgid ""
 "limited space on embedded devices like routers, and enable this option only "
 "if you know what you are doing."
 msgstr ""
-"您也可以保留您的PBX语音信箱留言的副本在你运行的设备上。此处指定的路径当不存在时,将被创建。谨防嵌入式设备上有限的存取空间,如路由器,所以此选项只有你"
-"当知道处理时才可使用。"
+"您也可以在您运行 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密码不显示。该选项需要更改。"
+msgstr ""
+"为了保护您,真正的 SMTP 密码将不会显示。只有当您改变框中的数值时它才会变更。"
index 14de6298300fd615b979e45ead634c7d71536332..8464289997515180625ca1f2ee728bcde7fd7233 100644 (file)
@@ -1,24 +1,27 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-14 18:41+0200\n"
-"Last-Translator: omnistack <omnistack@gmail.com>\n"
-"Language-Team: none\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: Pootle 2.0.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "Email Addresses that Receive Voicemail"
-msgstr "接收語音郵件的信箱位址"
+msgstr "接收語音郵箱的電子郵箱位址"
 
 msgid "Enable Voicemail"
-msgstr "啟用語音郵件功能"
+msgstr "啟用語音郵"
 
 msgid "Global Voicemail Setup"
-msgstr "語音郵件通用設定"
+msgstr "全域性語音郵箱設定"
 
 msgid ""
 "Here you can configure a global voicemail for this PBX. Since this system is "
@@ -28,9 +31,10 @@ msgid ""
 "SMTP server), and provide a list of addresses that receive recorded "
 "voicemail."
 msgstr ""
-"在這裡可以幫PBX總機設定通用語音郵件. 因為這個系統想要像路由器一般跑在嵌入式系統, 這裡並無本地語言郵件的儲存空間 - 它必須由郵件來傳送. "
-"因此你需要設定一個(SMTP)外寄郵件伺服器(例如你的ISP, Google, 或者Yahoo外寄郵件伺服器), "
-"並且提供一個位址清單可以接收錄音檔的語音郵件."
+"在這裡,您可以為 PBX 配置一個全球性的語音郵件。由於這個系統執行在嵌入式系統"
+"中,如路由器,這裡並無本地語言郵件的儲存空間 - 它必須通過電子郵件傳送出去。因"
+"此,您需要配置一個外發郵件(SMTP)伺服器(例如您的 ISP、谷歌或雅虎的 SMTP 服"
+"務器),並提供接收記錄語音信箱的位址的列表。"
 
 msgid ""
 "In order for this PBX to send emails containing voicemail recordings, you "
@@ -38,50 +42,53 @@ msgid ""
 "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外寄郵件伺服器類似Google或Yahoo提供的也行."
+"為了這個 PBX 傳送包含語音信箱錄音的電子郵件,您需要在這裡設定一個 SMTP 服務"
+"器。您的 ISP 通常會提供一個 SMTP 伺服器。您也可以設立一個第三方的 SMTP 服務"
+"器,如谷歌或雅虎那樣。"
 
 msgid "Last Sent Voicemail Log"
-msgstr "上一次傳送語音郵件的記錄"
+msgstr "上一次傳送語音信箱的日誌"
 
 msgid "Local Storage Directory"
-msgstr "本地儲存目錄"
+msgstr "本地儲存目錄"
 
 msgid "No"
-msgstr "No"
+msgstr ""
 
 msgid "Outgoing mail (SMTP) Server"
-msgstr "外寄郵件(SMTP)伺服器"
+msgstr "電子郵件傳送伺服器(SMTP)"
 
 msgid "SMTP Password"
-msgstr "外寄郵件(SMTP)伺服器傳送密碼"
+msgstr "SMTP 登入密碼"
 
 msgid "SMTP Port Number"
-msgstr "外寄郵件(SMTP)伺服器服務埠號"
+msgstr "SMTP 埠"
 
 msgid "SMTP Server Authentication"
-msgstr "外寄郵件(SMTP)伺服器驗證"
+msgstr "SMTP 伺服器認證"
 
 msgid "SMTP Server Hostname or IP Address"
-msgstr "外寄郵件(SMTP)伺服器主機名稱或者IP位址"
+msgstr "SMTP 伺服器主機名或 IP 位址"
 
 msgid "SMTP User Name"
-msgstr "外寄郵件(SMTP)伺服器登入使用者名稱"
+msgstr "SMTP 使用者名稱"
 
 msgid "Secure Connection Using TLS"
-msgstr "採用TLS加密協議安全連線"
+msgstr "使用 TLS 安全連線"
 
 msgid "Voicemail Setup"
-msgstr "設å®\9aèª\9eé\9f³é\83µä»¶"
+msgstr "èª\9eé\9f³é\83µç®±è¨­å®\9a"
 
 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)伺服器."
+msgstr ""
+"當您啟用了語音信箱,您將可以指定接收記錄語音信箱的電子郵件位址。您也必須在下"
+"面設定 SMTP 伺服器。"
 
 msgid "Yes"
-msgstr "Yes"
+msgstr ""
 
 msgid ""
 "You can also retain copies of voicemail messages on the device running your "
@@ -89,10 +96,12 @@ msgid ""
 "limited space on embedded devices like routers, and enable this option only "
 "if you know what you are doing."
 msgstr ""
-"你也可以保留語音郵件訊息的複本在PBX總機的設備上. 這裡所指定的路徑如果它不存在時將會被建立. 為預防像路由器的嵌入式設備有限的空間限制, "
-"如果你確定這個用途請啟用這個選項."
+"您也可以在您執行 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密碼將不會顯示. 只有當你改變盒子中的值時它將會被變更"
+msgstr ""
+"為了保護您,真正的 SMTP 密碼將不會顯示。只有當您改變框中的數值時它才會變更。"
index 8ac03e1aa01ba243054916e4297782a8e89a4534..45325b99c19825e38c1afeb4061a6b98a8d96ddf 100644 (file)
@@ -93,7 +93,7 @@ msgid ""
 "experiment to make sure you are blocking numbers from your desired area "
 "successfully."
 msgstr ""
-"输入你想自动屏蔽的电话号码。你应该忽略国家代码和任何前导零,但请测试来确保你成"
+"输入您想自动屏蔽的电话号码。您应该忽略国家代码和任何前导零,但请测试来确保您成"
 "功屏蔽了想要屏蔽的号码。"
 
 msgid ""
index aa05be778f82fd32a3690bc389e5c30ea9130c07..603b9df5854379ab613689200df9a43867b9bc4d 100644 (file)
@@ -93,14 +93,14 @@ msgid ""
 "experiment to make sure you are blocking numbers from your desired area "
 "successfully."
 msgstr ""
-"打入你允許自動通話的號碼. 你或許可以忽略國碼和0字開頭, 但僅供實驗以確保期望區"
+"打入您允許自動通話的號碼. 您或許可以忽略國碼和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:埠號)僅能本地端使用絕不要打入"
+"要設定SIP設備在Server/Registrar內打入IP(或IP:埠號)僅能本地端使用絕不要打入"
 "遠端位置"
 
 msgid ""
@@ -466,7 +466,7 @@ msgid ""
 msgstr ""
 
 msgid "You can specify a real name to show up in the Caller ID here."
-msgstr "可以在此指定一個真實名稱以便顯示在來電ID"
+msgstr "可以在此指定一個真實名稱以便顯示在來電ID"
 
 msgid ""
 "You can use your SIP devices/softphones with this system from a remote "
@@ -481,10 +481,10 @@ msgid ""
 "port and RTP range) to the IP address of the device running this PBX."
 msgstr ""
 "不管多遠,只要能取得ISP提供的公眾合法IP,依然可以使用這個系統的SIP設備/PC電話表"
-"現一樣的好.你將能夠免費呼叫其他本地端用戶(e.g 其它類比電話機(ATAs)和使用你的"
-"VoIP供應商講電話就像在使用本地的PBX總機電話一樣.在設定這個標籤後, 需回到用"
+"現一樣的好.您將能夠免費呼叫其他本地端用戶(e.g 其它類比電話機(ATAs)和使用您的"
+"VoIP供應商講電話就像在使用本地的PBX總機電話一樣.在設定這個標籤後, 需回到用"
 "戶設定並且查看新的伺服器和埠設定以便能設定遠端SIP設備.請注意假如PBX總機若不在"
-"你的路由器/GW上執行,你將必須在你的路由器/GW上設定埠轉發(NAT).在PBX主機上請轉"
+"您的路由器/GW上執行,您將必須在您的路由器/GW上設定埠轉發(NAT).在PBX主機上請轉"
 "發下列(SIP埠+RTP所採用的範圍埠)埠號址定到跑PBX服務設備上的IP位址."
 
 msgid ""
@@ -492,14 +492,14 @@ msgid ""
 "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碼將不會顯示. 除非您打入不同於原始存檔的值它才會變"
 "更. 也可以把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 "
index 7dcbe2344a8f83ee6174d5746f81d7bee54aed60..0b3a1dc1a14f5eba85d54a9fe8fe07ff68b39435 100644 (file)
@@ -1,15 +1,18 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-10-09 03:47+0200\n"
-"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
-"Language-Team: none\n"
+"PO-Revision-Date: 2017-10-29 14:56+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "Advanced Settings"
 msgstr "高级设置"
@@ -18,21 +21,21 @@ msgid "Allowed clients"
 msgstr "允许的客户端"
 
 msgid "Always use system DNS resolver"
-msgstr "始终使用系统DNS解析"
+msgstr "始终使用系统 DNS 解析"
 
 msgid ""
 "Basic HTTP authentication supported. Provide username and password in "
 "username:password format."
-msgstr "支持HTTP基本身份验证。提供用户名和密码格式为:用户名:密码。"
+msgstr "支持 HTTP 基本身份验证。提供用户名和密码格式为:用户名:密码。"
 
 msgid "Configuration"
 msgstr "配置"
 
 msgid "DNS and Query Settings"
-msgstr "DNS查询设置"
+msgstr "DNS 及查询设置"
 
 msgid "DNS server address"
-msgstr "DNS地址"
+msgstr "DNS 服务器地址"
 
 msgid "Delete cache files time"
 msgstr "清除缓存文件周期"
@@ -41,22 +44,22 @@ msgid "Disk cache location"
 msgstr "磁盘缓存位置"
 
 msgid "Do not query IPv6"
-msgstr "不能查询IPv6"
+msgstr "不能查询 IPv6"
 
 msgid "Enable if cache (proxy) is shared by multiple users."
 msgstr "允许多用户共享缓存(代理)。"
 
 msgid "First PMM segment size (in bytes)"
-msgstr "第一的PMM段的大小(字节为单位)"
+msgstr "第一 PMM 段大小(以字节表示)"
 
 msgid "General Settings"
 msgstr "通用设置"
 
 msgid "How much RAM should Polipo use for its cache."
-msgstr ""
+msgstr "允许 Polipo 做缓存的 RAM 使用量"
 
 msgid "In RAM cache size (in bytes)"
-msgstr ""
+msgstr "RAM 缓存大小(以字节表示)"
 
 msgid "Listen address"
 msgstr "监听地址"
@@ -68,51 +71,53 @@ msgid ""
 "Location where polipo will cache files permanently. Use of external storage "
 "devices is recommended, because the cache can grow considerably. Leave it "
 "empty to disable on-disk cache."
-msgstr "polipo将永久缓存文件。建议使用外部存储设备,因为缓存会一直增长。留空表示禁用磁盘缓存。"
+msgstr ""
+"Polipo 持久缓存文件位置。建议使用外部存储设备,因为缓存会一直增长。留空表示禁"
+"用磁盘缓存。"
 
 msgid "Log file location"
 msgstr "日志存放位置"
 
 msgid "Log to syslog"
-msgstr "吐日志到syslog"
+msgstr "记录日志到 syslog"
 
 msgid "Logging and RAM"
-msgstr ""
+msgstr "记录和 RAM"
 
 msgid "Never use system DNS resolver"
-msgstr "从不使用系统DNS解析"
+msgstr "从不使用系统 DNS 解析"
 
 msgid "On-Disk Cache"
 msgstr "磁盘缓存"
 
 msgid "PMM segments size (in bytes)"
-msgstr ""
+msgstr "PMM 段大小(以字节表示)"
 
 msgid "Parent Proxy"
-msgstr ""
+msgstr "上层代理"
 
 msgid "Parent proxy address"
-msgstr ""
+msgstr "上层代理地址"
 
 msgid ""
 "Parent proxy address (in host:port format), to which Polipo will forward the "
 "requests."
-msgstr ""
+msgstr "Polipo 应该转发请求所到的上层代理(以 主机:端口号 格式表示)。"
 
 msgid "Parent proxy authentication"
-msgstr ""
+msgstr "上层代理地址验证"
 
 msgid "Polipo"
-msgstr ""
+msgstr "Polipo"
 
 msgid "Polipo Status"
-msgstr ""
+msgstr "Polipo 状态"
 
 msgid "Polipo is a small and fast caching web proxy."
-msgstr ""
+msgstr "Polipo 是一个小型且快速的网页缓存代理。"
 
 msgid "Poor Man's Multiplexing"
-msgstr ""
+msgstr "穷人的多工复用器"
 
 msgid ""
 "Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by "
@@ -120,86 +125,92 @@ msgid ""
 "caused by the weakness of HTTP protocol. NOTE: some sites may not work with "
 "PMM enabled."
 msgstr ""
+"穷人的多工复用器(PMM)是通过在多个区段中请求单个实例来模拟复用的技术。它尝试"
+"降低由 HTTP 协议的弱点引起的延迟。注意:某些站点可能无法启用 PMM。"
 
 msgid "Port on which Polipo will listen"
-msgstr ""
+msgstr "Polipo 监听的端口号"
 
 msgid "Proxy"
-msgstr ""
+msgstr "代理服务器"
 
 msgid "Query DNS by hostname"
-msgstr ""
+msgstr "以主机名称查询 DNS"
 
 msgid "Query DNS directly, fallback to system resolver"
-msgstr ""
+msgstr "直接查询 DNS,失败时退回系统解析"
 
 msgid "Query DNS directly, for unknown hosts fall back to system resolver"
-msgstr ""
+msgstr "直接查询 DNS,对未知的主机退回系统解析"
 
 msgid "Query DNS for IPv6"
-msgstr ""
+msgstr "为 IPv6 查询 DNS"
 
 msgid "Query IPv4 and IPv6, prefer IPv4"
-msgstr ""
+msgstr "查询 IPv4 和 IPv6,IPv4 优先"
 
 msgid "Query IPv4 and IPv6, prefer IPv6"
-msgstr ""
+msgstr "查询 IPv4 和 IPv6,IPv6 优先"
 
 msgid "Query only IPv6"
-msgstr ""
+msgstr "只查询 IPv6"
 
 msgid ""
 "Set the DNS server address to use, if you want Polipo to use different DNS "
 "server than the host system."
 msgstr ""
+"设置 DNS 服务器地址以便使用,假如您要让 Polipo 使用不同的 DNS 服务器,而非主"
+"机系统的。"
 
 msgid "Shared cache"
-msgstr ""
+msgstr "共享的缓存"
 
 msgid ""
 "Size of the first PMM segment. If not defined, it defaults to twice the PMM "
 "segment size."
-msgstr ""
+msgstr "第一个 PMM 段的大小,若未定义,默认为两倍 PMM 段的大小。"
 
 msgid "Size to which cached files should be truncated"
-msgstr ""
+msgstr "缓存文件应截断为的大小"
 
 msgid "Status"
-msgstr ""
+msgstr "状态"
 
 msgid "Syslog facility"
-msgstr ""
+msgstr "日志设施"
 
 msgid ""
 "The interface on which Polipo will listen. To listen on all interfaces use "
 "0.0.0.0 or :: (IPv6)."
-msgstr ""
+msgstr "Polipo 将会监听的接口。要监听所有接口,请使用 0.0.0.0 或 ::(IPv6)。"
 
 msgid "Time after which cached files will be deleted"
-msgstr ""
+msgstr "缓存删除前的留存时间"
 
 msgid "Time after which cached files will be truncated"
-msgstr ""
+msgstr "缓存截断前的留存时间"
 
 msgid "To enable PMM, PMM segment size must be set to some positive value."
-msgstr ""
+msgstr "要启用 PMM,PMM 段大小必须为正。"
 
 msgid "Truncate cache files size (in bytes)"
-msgstr ""
+msgstr "缓存文件截断大小(以字节为单位)"
 
 msgid "Truncate cache files time"
-msgstr ""
+msgstr "缓存文件截断时间"
 
 msgid ""
 "Use of external storage device is recommended, because the log file is "
 "written frequently and can grow considerably."
-msgstr ""
+msgstr "推荐使用外部存储设备,因为日志文件经常写入,将会迅速增长。"
 
 msgid ""
 "When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients "
 "that are allowed to connect. The format is IP address or network address "
 "(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))"
 msgstr ""
+"当监听地址设置为 0.0.0.0 或 ::(IPv6)时,必须列出允许连接的客户端。格式为 "
+"IP 地址或网络地址(192.168.1.123,192.168.1.0/24,2001:660:116::/48(IPv6))"
 
 msgid "enable"
-msgstr ""
+msgstr "启用"
index 5058897bc40bb10b846d63edf5ec1d68b0f14b31..cf3c943704b14138e8889bd43ad051bc7e621071 100644 (file)
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-21 13:13+0200\n"
-"Last-Translator: omnistack <omnistack@gmail.com>\n"
-"Language-Team: none\n"
+"PO-Revision-Date: 2017-10-29 14:56+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_TW\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "Advanced Settings"
-msgstr "é\80²階設定"
+msgstr "é«\98階設定"
 
 msgid "Allowed clients"
 msgstr "允許的客戶端"
 
 msgid "Always use system DNS resolver"
-msgstr "總是採用系統使用的DNS解析"
+msgstr "始終使用系統 DNS 解析"
 
 msgid ""
 "Basic HTTP authentication supported. Provide username and password in "
 "username:password format."
-msgstr "基本的HTTP驗證支援. 提供使用者名稱和密碼以username:password格式"
+msgstr "支援 HTTP 基本身份驗證。提供使用者名稱和密碼格式為:使用者名稱:密碼。"
 
 msgid "Configuration"
-msgstr "設定"
+msgstr "配置"
 
 msgid "DNS and Query Settings"
-msgstr "DNS及查詢設定值"
+msgstr "DNS 及查詢設定"
 
 msgid "DNS server address"
-msgstr "DNS伺服器位址"
+msgstr "DNS 伺服器位址"
 
 msgid "Delete cache files time"
-msgstr "刪除快取檔的時間"
+msgstr "清除快取檔案週期"
 
 msgid "Disk cache location"
-msgstr "磁碟快取放置的位置"
+msgstr "磁碟快取位置"
 
 msgid "Do not query IPv6"
-msgstr "不使用IPv6查詢"
+msgstr "不能查詢 IPv6"
 
 msgid "Enable if cache (proxy) is shared by multiple users."
-msgstr "å\81\87è\8b¥å¿«å\8f\96(Proxy)被å¤\9aå\80\8b使ç\94¨è\80\85å\88\86享使ç\94¨å°±å\95\93ç\94¨"
+msgstr "å\85\81許å¤\9a使ç\94¨è\80\85å\85±äº«å¿«å\8f\96ï¼\88代ç\90\86ï¼\89ã\80\82"
 
 msgid "First PMM segment size (in bytes)"
-msgstr "第一個PMM段的大小(以bytes方式表示)"
+msgstr "第一 PMM 段大小(以位元組表示)"
 
 msgid "General Settings"
-msgstr "基本設定"
+msgstr "通用設定"
 
 msgid "How much RAM should Polipo use for its cache."
-msgstr "Polipo拿來當快取的記憶體量是多大?"
+msgstr "允許 Polipo 做快取的 RAM 使用量"
 
 msgid "In RAM cache size (in bytes)"
-msgstr "記憶體快取大小(以bytes方式表示)"
+msgstr "RAM 快取大小(以位元組表示)"
 
 msgid "Listen address"
-msgstr "聽位址"
+msgstr "聽位址"
 
 msgid "Listen port"
-msgstr "聆聽埠號"
+msgstr "監聽埠"
 
 msgid ""
 "Location where polipo will cache files permanently. Use of external storage "
 "devices is recommended, because the cache can grow considerably. Leave it "
 "empty to disable on-disk cache."
-msgstr "Polipo位置將永久快取文件。建議使用外部的存儲設備,因為快取會顯著增長。保留空白以便關閉磁碟快取."
+msgstr ""
+"Polipo 持久快取檔案位置。建議使用外部儲存裝置,因為快取會一直增長。留空表示禁"
+"用磁碟快取。"
 
 msgid "Log file location"
-msgstr "紀錄檔位置"
+msgstr "日誌存放位置"
 
 msgid "Log to syslog"
-msgstr "記錄到系統記錄syslog中"
+msgstr "記錄日誌到 syslog"
 
 msgid "Logging and RAM"
-msgstr "記錄和記憶體"
+msgstr "記錄和 RAM"
 
 msgid "Never use system DNS resolver"
-msgstr "從不使用系統DNS解析"
+msgstr "從不使用系統 DNS 解析"
 
 msgid "On-Disk Cache"
-msgstr "磁碟上的快取"
+msgstr "磁碟快取"
 
 msgid "PMM segments size (in bytes)"
-msgstr "PMM段大小(以bytes表示)"
+msgstr "PMM 段大小(以位元組表示)"
 
 msgid "Parent Proxy"
-msgstr "上層Proxy"
+msgstr "上層代理"
 
 msgid "Parent proxy address"
-msgstr "上層Proxy位址"
+msgstr "上層代理位址"
 
 msgid ""
 "Parent proxy address (in host:port format), to which Polipo will forward the "
 "requests."
-msgstr "Polipo應該重導這個要求所到的上層Proxy(以 主機:埠號 格式表示)."
+msgstr "Polipo 應該轉發請求所到的上層代理(以 主機:埠號 格式表示)。"
 
 msgid "Parent proxy authentication"
-msgstr "上層Proxy位址驗證"
+msgstr "上層代理位址驗證"
 
 msgid "Polipo"
-msgstr "Polipo本地代理伺服器"
+msgstr "Polipo"
 
 msgid "Polipo Status"
-msgstr "Polipo狀況"
+msgstr "Polipo 狀態"
 
 msgid "Polipo is a small and fast caching web proxy."
-msgstr "Polipo是一個小型且快速的快取網頁代理"
+msgstr "Polipo 是一個小型且快速的網頁快取代理。"
 
 msgid "Poor Man's Multiplexing"
-msgstr "窮人的多工器Poor Man's Multiplexing"
+msgstr "窮人的多工複用器"
 
 msgid ""
 "Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by "
@@ -120,49 +125,53 @@ msgid ""
 "caused by the weakness of HTTP protocol. NOTE: some sites may not work with "
 "PMM enabled."
 msgstr ""
+"窮人的多工複用器(PMM)是通過在多個區段中請求單個例項來模擬複用的技術。它嘗試"
+"降低由 HTTP 協議的弱點引起的延遲。注意:某些站點可能無法啟用 PMM。"
 
 msgid "Port on which Polipo will listen"
-msgstr " Polipo聆聽的埠號"
+msgstr "Polipo 監聽的埠號"
 
 msgid "Proxy"
 msgstr "代理伺服器"
 
 msgid "Query DNS by hostname"
-msgstr "以主機名稱查詢DNS"
+msgstr "以主機名稱查詢 DNS"
 
 msgid "Query DNS directly, fallback to system resolver"
-msgstr "直接查詢DNS, 回傳給系統解析"
+msgstr "直接查詢 DNS,失敗時退回系統解析"
 
 msgid "Query DNS directly, for unknown hosts fall back to system resolver"
-msgstr "直接查詢DNS, 對莫名的主機回傳給系統解析"
+msgstr "直接查詢 DNS,對未知的主機退回系統解析"
 
 msgid "Query DNS for IPv6"
-msgstr "幫IPv6查詢DNS"
+msgstr "為 IPv6 查詢 DNS"
 
 msgid "Query IPv4 and IPv6, prefer IPv4"
-msgstr "查詢IPv4和IPv6,IPv4優先"
+msgstr "查詢 IPv4 和 IPv6,IPv4 優先"
 
 msgid "Query IPv4 and IPv6, prefer IPv6"
-msgstr "查詢IPv4和IPv6 ,IPv6優先"
+msgstr "查詢 IPv4 和 IPv6,IPv6 優先"
 
 msgid "Query only IPv6"
-msgstr "只查詢IPv6"
+msgstr "只查詢 IPv6"
 
 msgid ""
 "Set the DNS server address to use, if you want Polipo to use different DNS "
 "server than the host system."
-msgstr "設定DNS伺服器位址以便使用, 假如你要Polipo代理人使用不同的DNS伺服器而非主機系統."
+msgstr ""
+"設定 DNS 伺服器位址以便使用,假如您要讓 Polipo 使用不同的 DNS 伺服器,而非主"
+"機系統的。"
 
 msgid "Shared cache"
-msgstr "å\88\86享的快取"
+msgstr "å\85±享的快取"
 
 msgid ""
 "Size of the first PMM segment. If not defined, it defaults to twice the PMM "
 "segment size."
-msgstr "第一個PMM區段的大小, 假若沒定義 ,預設兩次PMM區段的大小."
+msgstr "第一個 PMM 段的大小,若未定義,預設為兩倍 PMM 段的大小。"
 
 msgid "Size to which cached files should be truncated"
-msgstr "快取檔被截斷的大小"
+msgstr "快取檔案應截斷為的大小"
 
 msgid "Status"
 msgstr "狀態"
@@ -173,33 +182,35 @@ msgstr "日誌設施"
 msgid ""
 "The interface on which Polipo will listen. To listen on all interfaces use "
 "0.0.0.0 or :: (IPv6)."
-msgstr "Polipo將會聆聽的介面. 要聆聽所有介面使用0.0.0.0 或 :: (IPv6)."
+msgstr "Polipo 將會監聽的介面。要監聽所有介面,請使用 0.0.0.0 或 ::(IPv6)。"
 
 msgid "Time after which cached files will be deleted"
-msgstr "å¿«å\8f\96å°\87æ\9c\83被å\88ªé\99¤的留存時間"
+msgstr "å¿«å\8f\96å\88ªé\99¤å\89\8d的留存時間"
 
 msgid "Time after which cached files will be truncated"
-msgstr "快取將會被斷頭的留存時間"
+msgstr "快取截斷前的留存時間"
 
 msgid "To enable PMM, PMM segment size must be set to some positive value."
-msgstr "要啟用PMM, PMM區段大小必須設定些積極的數值."
+msgstr "要啟用 PMM,PMM 段大小必須為正。"
 
 msgid "Truncate cache files size (in bytes)"
-msgstr ""
+msgstr "快取檔案截斷大小(以位元組為單位)"
 
 msgid "Truncate cache files time"
-msgstr ""
+msgstr "快取檔案截斷時間"
 
 msgid ""
 "Use of external storage device is recommended, because the log file is "
 "written frequently and can grow considerably."
-msgstr ""
+msgstr "推薦使用外部儲存裝置,因為日誌檔案經常寫入,將會迅速增長。"
 
 msgid ""
 "When listen address is set to 0.0.0.0 or :: (IPv6), you must list clients "
 "that are allowed to connect. The format is IP address or network address "
 "(192.168.1.123, 192.168.1.0/24, 2001:660:116::/48 (IPv6))"
 msgstr ""
+"當監聽位址設定為 0.0.0.0 或 ::(IPv6)時,必須列出允許連線的客戶端。格式為 "
+"IP 位址或網路位址(192.168.1.123,192.168.1.0/24,2001:660:116::/48(IPv6))"
 
 msgid "enable"
-msgstr ""
+msgstr "啟用"
index 778422b8bb2dd90ad514b93012c718eb20ee5872..efbad08a566bc4a8caaf964be1248919d591cc1c 100644 (file)
@@ -57,7 +57,7 @@ msgid ""
 "proxies. Note that parent proxies can severely decrease your privacy level. "
 "Also specified here are SOCKS proxies."
 msgstr ""
-"在这里设置 HTTP 请求所经过的多重代理链。注意:父级代理可能严重降低的隐私安"
+"在这里设置 HTTP 请求所经过的多重代理链。注意:父级代理可能严重降低的隐私安"
 "全度。在这里还可以设置 SOCKS 代理。"
 
 msgid "Debug GIF de-animation"
@@ -130,8 +130,8 @@ msgid ""
 "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 连接,最好让他们知道如何联系你,你屏蔽什"
-"么,你为什么这样做,你的政策等等。"
+"如果除了您还有其他用户使用 Privoxy 连接,最好让他们知道如何联系您,您屏蔽什"
+"么,您为什么这样做,您的政策等等。"
 
 msgid "Invalid email address"
 msgstr "邮箱地址无效"
index 0a5cd6220cf3ca29d7aa368d9792eae521ab9287..db13826dc72b16ccabe41c9347b6bfdfed7f9d83 100644 (file)
@@ -1,17 +1,20 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCi Chinese Translation\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-03-25 22:10+0100\n"
-"PO-Revision-Date: 2014-06-22 14:33+0200\n"
-"Last-Translator: phantasm131 <phantasm131@gmail.com>\n"
-"Language-Team: QQ Group 75543259\n"
+"PO-Revision-Date: 2017-10-29 14:58+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "Calculate overhead"
 msgstr "计算开销"
@@ -29,7 +32,7 @@ msgid "Destination host"
 msgstr "目的主机"
 
 msgid "Download speed (kbit/s)"
-msgstr "下载速度 (kbit/s)"
+msgstr "下载速度(kbit/s)"
 
 msgid "Enable"
 msgstr "开启"
@@ -53,7 +56,7 @@ msgid "QoS"
 msgstr "QoS"
 
 msgid "Quality of Service"
-msgstr "QOS服务"
+msgstr "服务质量(QoS)"
 
 msgid "Source host"
 msgstr "源主机"
@@ -62,12 +65,14 @@ msgid "Target"
 msgstr "目标"
 
 msgid "Upload speed (kbit/s)"
-msgstr "上传速度 (kbit/s)"
+msgstr "上传速度(kbit/s)"
 
 msgid ""
 "With <abbr title=\"Quality of Service\">QoS</abbr> you can prioritize "
 "network traffic selected by addresses, ports or services."
-msgstr "根据网络地址、端口或服务,给流量数据包排序。"
+msgstr ""
+"使用 <abbr title=\"Quality of Service\">QoS</abbr>,根据网络地址、端口或服"
+"务,为流量数据包排序。"
 
 msgid "all"
 msgstr "全部"
index a011e9ca9af1f47469806718065934cfea9448c6..1197e8a7d5b75bf9408d650b6a0bfb48ed7cb9be 100644 (file)
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-21 10:36+0200\n"
-"Last-Translator: omnistack <omnistack@gmail.com>\n"
-"Language-Team: none\n"
+"Project-Id-Version: LuCi Chinese Translation\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-25 22:10+0100\n"
+"PO-Revision-Date: 2017-10-29 15:00+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_TW\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "Calculate overhead"
-msgstr "流量計算"
+msgstr "計算開銷"
 
 msgid "Classification Rules"
 msgstr "分類規則"
 
 msgid "Classification group"
-msgstr "分組"
+msgstr "分組"
 
 msgid "Comment"
-msgstr ""
+msgstr "註解"
 
 msgid "Destination host"
 msgstr "目的主機"
 
 msgid "Download speed (kbit/s)"
-msgstr "下載速度(kbit/s)"
+msgstr "下載速度(kbit/s)"
 
 msgid "Enable"
-msgstr "啓用"
+msgstr "開啟"
 
 msgid "Half-duplex"
 msgstr "半雙工"
 
 msgid "Interfaces"
-msgstr "面"
+msgstr "面"
 
 msgid "Number of bytes"
-msgstr "位元數"
+msgstr "位元數"
 
 msgid "Ports"
-msgstr "埠"
+msgstr "埠"
 
 msgid "Protocol"
-msgstr "協"
+msgstr "協"
 
 msgid "QoS"
-msgstr "先進先出頻寬管理"
+msgstr "QoS"
 
 msgid "Quality of Service"
-msgstr "連線品質服務"
+msgstr "服務品質(QoS)"
 
 msgid "Source host"
-msgstr "源主機"
+msgstr "源主機"
 
 msgid "Target"
-msgstr "目的地"
+msgstr "目"
 
 msgid "Upload speed (kbit/s)"
-msgstr "上傳速度(kbit/s)"
+msgstr "上傳速度(kbit/s)"
 
 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=\"Quality of Service\">QoS</abbr>,根據網路位址、埠或服務,"
+"為流量資料包排序。"
 
 msgid "all"
-msgstr "通用優先權"
+msgstr "全部"
 
 msgid "default"
-msgstr "預設"
+msgstr "預設"
 
 msgid "express"
-msgstr "高優先權"
+msgstr "高"
 
 msgid "low"
-msgstr "低優先權"
+msgstr "低"
 
 msgid "normal"
-msgstr "一般優先權"
+msgstr "普通"
 
 msgid "priority"
-msgstr "優先權"
+msgstr "最高"
 
 #~ msgid "Service"
 #~ msgstr "服務"
 
 #~ msgid "Downlink"
-#~ msgstr "ä¸\8bè¼\89"
+#~ msgstr "ä¸\8bè¡\8c"
 
 #~ msgid "Internet Connection"
-#~ msgstr "網際網路連線"
+#~ msgstr "Internet連線"
 
 #~ msgid "Uplink"
-#~ msgstr "上"
+#~ msgstr "上"
 
 #~ msgid "allf"
-#~ msgstr "獨一無二"
+#~ msgstr "全部"
 
 #~ msgid "qos_connbytes"
-#~ msgstr "QoS連線位元數"
+#~ msgstr "Qos連線位元組數"
index 67bf586908eadf2b91936ffff9f4901c24baf9a6..17417fa49990db23513f039f36ed80c8d426b3b2 100644 (file)
@@ -14,11 +14,15 @@ msgstr ""
 
 msgid ""
 "'AUTO' selects the highest protocol version that client and server support."
-msgstr "'AUTO' seleciona a versão mais alto protocolo que o cliente e o servidor suportar."
+msgstr ""
+"'AUTO' seleciona a versão mais alto protocolo que o cliente e o servidor "
+"suportar."
 
 msgid ""
 "'Hostname:Port' or 'IPv4:Port' or '[IPv6]:Port' Radicale should listen on"
-msgstr "'NomeDoEquipamento:porta' ou 'IPv4:Porta' ou '[IPv6]:Porta' em que o Radicale deve escutar"
+msgstr ""
+"'NomeDoEquipamento:porta' ou 'IPv4:Porta' ou '[IPv6]:Porta' em que o "
+"Radicale deve escutar"
 
 msgid "AUTO"
 msgstr "AUTO"
@@ -48,7 +52,9 @@ msgstr "Autenticação"
 msgid ""
 "Authentication login is matched against the 'user' key, and collection's "
 "path is matched against the 'collection' key."
-msgstr "O nome do usuário na autenticação é comparado com a chave do 'user', e o caminho da coleção é comparado com a chave 'coleção'."
+msgstr ""
+"O nome do usuário na autenticação é comparado com a chave do 'user', e o "
+"caminho da coleção é comparado com a chave 'coleção'."
 
 msgid "Authentication method"
 msgstr "Método de autenticação"
@@ -68,7 +74,9 @@ msgstr "CalDAV/CardDAV"
 msgid ""
 "Calendars and address books are available for both local and remote access, "
 "possibly limited through authentication policies."
-msgstr "Agendas e contados estão disponíveis tanto para acesso local como remoto, possivelmente limitado através das políticas de autenticação."
+msgstr ""
+"Agendas e contados estão disponíveis tanto para acesso local como remoto, "
+"possivelmente limitado através das políticas de autenticação."
 
 msgid "Certificate file"
 msgstr "Arquivo do certificado"
@@ -76,7 +84,9 @@ msgstr "Arquivo do certificado"
 msgid ""
 "Change here the encoding Radicale will use instead of 'UTF-8' for responses "
 "to the client and/or to store data inside collections."
-msgstr "Mude aqui a codificação que o Radicale usará em vez de 'UTF-8' para respostas a clientes ou para armazenar dados dentro das coleções."
+msgstr ""
+"Mude aqui a codificação que o Radicale usará em vez de 'UTF-8' para "
+"respostas a clientes ou para armazenar dados dentro das coleções."
 
 msgid "Ciphers"
 msgstr "Cifras"
@@ -95,7 +105,11 @@ msgid ""
 "Cross-origin resource sharing (CORS) is a mechanism that allows restricted "
 "resources (e.g. fonts, JavaScript, etc.) on a web page to be requested from "
 "another domain outside the domain from which the resource originated."
-msgstr "O compartilhamento de recursos de origem cruzada (CORS) é um mecanismo que permite que os recursos de acesso restrito (por exemplo, fontes, JavaScript, etc.) em uma página web ser solicitado de outro domínio fora do domínio a partir do qual o recurso foi originado."
+msgstr ""
+"O compartilhamento de recursos de origem cruzada (CORS) é um mecanismo que "
+"permite que os recursos de acesso restrito (por exemplo, fontes, JavaScript, "
+"etc.) em uma página web ser solicitado de outro domínio fora do domínio a "
+"partir do qual o recurso foi originado."
 
 msgid "Custom"
 msgstr "Personalizadas"
@@ -108,7 +122,9 @@ msgid "Debug"
 msgstr "Depuração"
 
 msgid "Delay (in seconds) during system boot before Radicale start"
-msgstr "Atraso (em segundos) durante a inicialização do sistema antes do Radicale iniciar"
+msgstr ""
+"Atraso (em segundos) durante a inicialização do sistema antes do Radicale "
+"iniciar"
 
 #, fuzzy
 msgid "Directory"
@@ -131,7 +147,9 @@ msgstr "Ativar HTTPS"
 
 msgid ""
 "Enable/Disable auto-start of Radicale on system start-up and interface events"
-msgstr "Ativar/Desativar iniciação automática do Radicale na iniciação do sistema e em eventos de interface"
+msgstr ""
+"Ativar/Desativar iniciação automática do Radicale na iniciação do sistema e "
+"em eventos de interface"
 
 msgid "Encoding"
 msgstr "Codificação"
@@ -164,7 +182,9 @@ msgstr "Sistema de arquivos"
 msgid ""
 "For example, for the 'user' key, '.+' means 'authenticated user' and '.*' "
 "means 'anybody' (including anonymous users)."
-msgstr "Por exemplo, para a chave 'user', '.+' Significa 'usuário autenticado' e '.*' Significa 'qualquer um' (incluindo usuários anônimos)."
+msgstr ""
+"Por exemplo, para a chave 'user', '.+' Significa 'usuário autenticado' e '."
+"*' Significa 'qualquer um' (incluindo usuários anônimos)."
 
 msgid "Full access for Owner only"
 msgstr "Acesso completo somente para o proprietário"
@@ -228,7 +248,8 @@ msgid "Number of backup files of log to create."
 msgstr "Número de backups dos arquivos de registros(log) a serem criados."
 
 msgid "OPTIONAL: See python's ssl module for available ciphers"
-msgstr "Opcional: veja o módulo SSL do python para conhecer as cifras disponíveis"
+msgstr ""
+"Opcional: veja o módulo SSL do python para conhecer as cifras disponíveis"
 
 msgid "One or more missing/invalid fields on tab"
 msgstr "Um ou campos inválidos/ausentes na aba"
@@ -242,7 +263,9 @@ msgstr "O caminho/arquivo é necessário!"
 msgid ""
 "Place here the 'user:password' pairs for your users which should have access "
 "to Radicale."
-msgstr "Coloque aqui os pares 'usuário:senha' para os seus usuários que devem ter acesso a Radicale."
+msgstr ""
+"Coloque aqui os pares 'usuário:senha' para os seus usuários que devem ter "
+"acesso a Radicale."
 
 msgid "Please install current version !"
 msgstr "Por favor, instale a versão atual!"
@@ -263,7 +286,9 @@ msgid "Radicale CalDAV/CardDAV Server"
 msgstr "Radicale Servidor CalDAV/CardDAV"
 
 msgid "Radicale uses '/etc/radicale/rights' as regexp-based file."
-msgstr "Radicale usa o '/etc/radicale/rights' como arquivo baseado em expressão regular."
+msgstr ""
+"Radicale usa o '/etc/radicale/rights' como arquivo baseado em expressão "
+"regular."
 
 msgid "Radicale uses '/etc/radicale/users' as htpasswd file."
 msgstr "Radicale usa o '/etc/radicale/users' como o arquivo htpasswd."
@@ -307,7 +332,9 @@ msgid "Server"
 msgstr "Servidor"
 
 msgid "Setting this parameter to '0' will disable rotation of log-file."
-msgstr "Definindo este parâmetro para '0' irá desativar a rotação dos arquivos de registros(log)."
+msgstr ""
+"Definindo este parâmetro para '0' irá desativar a rotação dos arquivos de "
+"registros(log)."
 
 msgid "Software package '%s' is not installed."
 msgstr "O pacote de software '%s' não está instalado."
@@ -349,18 +376,23 @@ msgstr "Sistema"
 msgid ""
 "The Radicale Project is a complete CalDAV (calendar) and CardDAV (contact) "
 "server solution."
-msgstr "O Projeto Radicale é uma solução completa de CalDAV (agenda) e CardDAV (contatos)."
+msgstr ""
+"O Projeto Radicale é uma solução completa de CalDAV (agenda) e CardDAV "
+"(contatos)."
 
 msgid ""
 "They can be viewed and edited by calendar and contact clients on mobile "
 "phones or computers."
-msgstr "Eles podem ser visualizados e editados pelos clientes de agenda e de contatos em telefones celulares ou computadores."
+msgstr ""
+"Eles podem ser visualizados e editados pelos clientes de agenda e de "
+"contatos em telefones celulares ou computadores."
 
 msgid "To edit the file follow this link!"
 msgstr "Para editar o arquivo, siga este link!"
 
 msgid "To view latest log file follow this link!"
-msgstr "Para visualizar mais recente arquivo de registros(log), siga este link!"
+msgstr ""
+"Para visualizar mais recente arquivo de registros(log), siga este link!"
 
 msgid "Value is not a number"
 msgstr "O valor não é um número"
@@ -384,7 +416,9 @@ msgstr "Informação da Versão"
 
 msgid ""
 "WARNING: Only 'File-system' is documented and tested by Radicale development"
-msgstr "AVISO: Apenas 'Sistema de Arquivos "está documentado e testado pelo desenvolvimento do Radicale"
+msgstr ""
+"AVISO: Apenas 'Sistema de Arquivos está documentado e testado pelo "
+"desenvolvimento do Radicale"
 
 #, fuzzy
 msgid "Warning"
@@ -393,12 +427,16 @@ msgstr "Alerta"
 msgid ""
 "You can also get groups from the user regex in the collection with {0}, {1}, "
 "etc."
-msgstr "Você também pode obter grupos a partir da expressão regular do usuário na coleção com {0}, {1} , etc."
+msgstr ""
+"Você também pode obter grupos a partir da expressão regular do usuário na "
+"coleção com {0}, {1} , etc."
 
 msgid ""
 "You can use Python's ConfigParser interpolation values %(login)s and "
 "%(path)s."
-msgstr "Você pode usar a interpolação de valores %(login)s e %(path)s do ConfigParser do Python."
+msgstr ""
+"Você pode usar a interpolação de valores %(login)s e %(path)s do "
+"ConfigParser do Python."
 
 msgid "crypt"
 msgstr "cifrar"
@@ -429,4 +467,3 @@ msgstr "necessário"
 
 msgid "salted SHA-1"
 msgstr "SHA-1 com salto"
-
index f3dae7fbc7e1258fde9cb2a52a557afb175f3c8e..9cb3a31b949cdccb83525a3f68ee48e3656101ca 100644 (file)
@@ -1,19 +1,22 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2014-07-13 16:23+0200\n"
-"Last-Translator: qiuchengxuan <qiuchengxuan@gmail.com>\n"
-"Language-Team: QQ Group 75543259 <axishero@foxmail.com>\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: Pootle 2.0.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "6to4 interface"
-msgstr "IPv6到IPv4的接口"
+msgstr "6to4 接口"
 
 msgid "Address"
 msgstr "地址"
@@ -25,77 +28,79 @@ msgid "Advanced"
 msgstr "进阶选项"
 
 msgid "Advertise Home Agent flag"
-msgstr "广æ\92­æ\9c¬å\9c°ä¸­ç»§标识"
+msgstr "宣å\91\8aæ\9c¬å\9c°ä»£ç\90\86标识"
 
 msgid "Advertise router address"
-msgstr "广æ\92­路由地址"
+msgstr "宣å\91\8a路由地址"
 
 msgid "Advertised Domain Suffixes"
-msgstr "å\8cºå\9f\9f广æ\92­后缀"
+msgstr "宣å\91\8aç\9a\84å\9f\9f后缀"
 
 msgid ""
 "Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
 "is used"
-msgstr "IPv6 Recursive DNS服务器(RDNSS)地址。若为空,则为当前IPv6地址"
+msgstr "宣告的 IPv6 RDNSS 地址。若为空,则为当前 IPv6 地址"
 
 msgid "Advertised IPv6 prefixes"
-msgstr "IPV6广播前缀群"
+msgstr "宣告的 IPv6 前缀群"
 
 msgid ""
 "Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr "IPv6广播前缀群。如果为空,将使用当前接口的前缀"
+msgstr "宣告的 IPv6 前缀群。若为空,将使用当前接口的前缀"
 
 msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr "广æ\92­ç§»å\8a¨IPv6æ\9c¬å\9c°ä»£ç\90\86å\8a\9fè\83½ï¼\88RFC3775"
+msgstr "宣å\91\8a移å\8a¨ IPv6 æ\9c¬å\9c°ä»£ç\90\86å\8a\9fè\83½ï¼\88RFC3775ï¼\89"
 
 msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr "广æ\92­ç§»å\8a¨è·¯ç\94±å\99¨æ³¨å\86\8cå\8a\9fè\83½ï¼\88NEMO基本)"
+msgstr "宣å\91\8a移å\8a¨è·¯ç\94±å\99¨æ³¨å\86\8cå\8a\9fè\83½ï¼\88NEMO 基本)"
 
 msgid ""
 "Advertises assumed reachability time in milliseconds of neighbours in the RA "
 "if specified. 0 disables reachability advertisements"
-msgstr "路由器公告报文中宣告估算的邻居可达时间(毫秒)。0代表禁用可达性宣告。"
+msgstr "在 RA 中宣告估算的邻居可达时间(毫秒)。0 禁用可达性宣告"
 
 msgid ""
 "Advertises the default Hop Count value for outgoing unicast packets in the "
 "RA. 0 disables hopcount advertisements"
-msgstr "路由器公告报文中广播外发单播数据包的缺省跳数值。 0禁用广播跳数"
+msgstr "在 RA 中宣告外发单播数据包的默认跳数值。0 禁用跳数宣告"
 
 msgid "Advertises the default router preference"
-msgstr "å\8f\91å¸\83缺ç\9c\81路由设置"
+msgstr "宣å\91\8aé»\98认路由设置"
 
 msgid ""
 "Advertises the given link MTU in the RA if specified. 0 disables MTU "
 "advertisements"
-msgstr "路由器公告报文中宣告链路MTU。0代表禁用MTU宣告"
+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 ""
+msgstr "宣告前缀对 on-link 决定有效的时间长度(秒)。"
 
 msgid ""
 "Advertises the lifetime of the default router in seconds. 0 indicates that "
 "the node is no default router"
-msgstr "声æ\98\8eé»\98认路ç\94±å\99¨ç\9a\84ç\94\9få­\98æ\97¶é\97´ï¼\88å\8d\95ä½\8d为ç§\92ï¼\89ã\80\820代表结点没有默认路由"
+msgstr "宣å\91\8aé»\98认路ç\94±å\99¨ç\9a\84ç\94\9få­\98æ\97¶é\97´ï¼\88ç§\92ï¼\89ã\80\82代表结点没有默认路由"
 
 msgid ""
 "Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
 "services"
-msgstr ""
+msgstr "宣告路由器提供移动 IPv6 本地代理服务的时间(秒)"
 
 msgid ""
 "Advertises wait time in milliseconds between Neighbor Solicitation messages "
 "in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
+msgstr "宣告 RA 中邻居请求消息间的等待时间(毫秒)。0 禁用宣告重传"
 
 msgid "Advertising"
-msgstr ""
+msgstr "宣告"
 
 msgid "Autonomous"
 msgstr "自治的"
@@ -110,10 +115,10 @@ msgid "Current hop limit"
 msgstr "当前跳数限制"
 
 msgid "DNSSL"
-msgstr "DNS搜索列表"
+msgstr "DNSSL"
 
 msgid "DNSSL Configuration"
-msgstr "DNS搜索列表设置"
+msgstr "DNSSL 设置"
 
 msgid "Default lifetime"
 msgstr "默认生存时限"
@@ -125,10 +130,10 @@ msgid "Enable"
 msgstr "启用"
 
 msgid "Enable advertisements"
-msgstr "å\90¯ç\94¨å¹¿æ\92­"
+msgstr "å\90¯ç\94¨å®£å\91\8a"
 
 msgid "Enables router advertisements and solicitations"
-msgstr "æ¿\80活路ç\94±å¹¿æ\92­和请求"
+msgstr "æ¿\80活路ç\94±å®£å\91\8a和请求"
 
 msgid ""
 "Enables the additional stateful administered autoconfiguration protocol "
@@ -138,25 +143,25 @@ msgstr "使能附加的基于状态管理的自动配置协议(RFC2462)"
 msgid ""
 "Enables the autoconfiguration of additional, non address information "
 "(RFC2462)"
-msgstr "启用自动配置,不包括地址信息(RFC2462)"
+msgstr "启用自动配置,不包括地址信息(RFC2462)"
 
 msgid "General"
 msgstr "概况"
 
 msgid "Home Agent information"
-msgstr "æ\9c¬å\9c°ä¸­ç»§信息"
+msgstr "æ\9c¬å\9c°ä»£ç\90\86信息"
 
 msgid "Home Agent lifetime"
-msgstr "æ\9c¬å\9c°ä¸­ç»§有效期"
+msgstr "æ\9c¬å\9c°ä»£ç\90\86有效期"
 
 msgid "Home Agent preference"
-msgstr "æ\9c¬å\9c°ä¸­ç»§优先权"
+msgstr "æ\9c¬å\9c°ä»£ç\90\86优先权"
 
 msgid "Include Home Agent Information in the RA"
-msgstr "è·¯ç\94±å\99¨å\85¬å\91\8aæ\8a¥æ\96\87中å\8c\85å\90«æ\9c¬å\9c°ä¸­ç»§信息"
+msgstr "è·¯ç\94±å\99¨å\85¬å\91\8aæ\8a¥æ\96\87中å\8c\85å\90«æ\9c¬å\9c°ä»£ç\90\86信息"
 
 msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr "路由器公告报文中包含移动IPV6广播间隔设置"
+msgstr "路由器公告报文中包含移动 IPv6 宣告间隔设置"
 
 msgid "Includes the link-layer address of the outgoing interface in the RA"
 msgstr "路由器公告报文中包含出接口的链路层地址"
@@ -164,12 +169,12 @@ msgstr "路由器公告报文中包含出接口的链路层地址"
 msgid ""
 "Indicates that the address of interface is sent instead of network prefix, "
 "as is required by Mobile IPv6"
-msgstr "表明使用接口的地址发送而非网络前缀,移动IPv6需要"
+msgstr "表明使用接口的地址发送而非网络前缀,移动 IPv6 需要"
 
 msgid ""
 "Indicates that the underlying link is not broadcast capable, prevents "
 "unsolicited advertisements from being sent"
-msgstr "表æ\98\8eæ½\9cå\9c¨ç\9a\84é\93¾è·¯å¹¶ä¸\8då\85·æ\9c\89广æ\92­能力,避免主动触发的宣告报文发出"
+msgstr "表æ\98\8eæ½\9cå\9c¨ç\9a\84é\93¾è·¯å¹¶ä¸\8då\85·æ\9c\89宣å\91\8a能力,避免主动触发的宣告报文发出"
 
 msgid ""
 "Indicates that this prefix can be used for autonomous address configuration "
@@ -178,7 +183,7 @@ msgstr "表明此前缀能够用于匿名地址配置(RFC4862)"
 
 msgid ""
 "Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr "表明此前缀能够用于on-link决定(RFC481)"
+msgstr "表明此前缀能够用于 on-link 决定(RFC481)"
 
 msgid "Interface"
 msgstr "接口"
@@ -196,31 +201,31 @@ msgid "Lifetime"
 msgstr "有效期"
 
 msgid "Link MTU"
-msgstr "连接MTU"
+msgstr "连接 MTU"
 
 msgid "Managed flag"
-msgstr "M标识"
+msgstr "M 标识"
 
 msgid "Max. interval"
 msgstr "最大间隔"
 
 msgid "Maximum advertisement interval"
-msgstr "æ\9c\80大广æ\92­间隔"
+msgstr "æ\9c\80大宣å\91\8a间隔"
 
 msgid "Minimum advertisement delay"
-msgstr "æ\9c\80å°\8f广æ\92­延时"
+msgstr "æ\9c\80å°\8f宣å\91\8a延时"
 
 msgid "Minimum advertisement interval"
-msgstr "æ\9c\80å°\8f广æ\92­间隔"
+msgstr "æ\9c\80å°\8f宣å\91\8a间隔"
 
 msgid "Mobile IPv6"
-msgstr "移动IPV6"
+msgstr "移动 IPv6"
 
 msgid "Mobile IPv6 interval option"
-msgstr "移动IPV6间隔选项"
+msgstr "移动 IPv6 间隔选项"
 
 msgid "Mobile IPv6 router registration"
-msgstr "移动IPV6路由注册"
+msgstr "移动 IPv6 路由注册"
 
 msgid "Multicast"
 msgstr "组播传输"
@@ -232,7 +237,7 @@ msgid "On-link determination"
 msgstr "已连接的目标"
 
 msgid "Preference"
-msgstr "优先权"
+msgstr "首选项"
 
 msgid "Preferred lifetime"
 msgstr "期望的生存时间"
@@ -253,27 +258,28 @@ msgid "RDNSS Configuration"
 msgstr "邻居发现服务器设置"
 
 msgid "Radvd"
-msgstr ""
+msgstr "Radvd"
 
 msgid "Radvd - DNSSL"
-msgstr "RADVD-DNS搜索列表"
+msgstr "Radvd - DNSSL"
 
 msgid "Radvd - Interface %q"
-msgstr ""
+msgstr "Radvd - 接口 %q"
 
 msgid "Radvd - Prefix"
-msgstr "RADVD-前缀"
+msgstr "Radvd - 前缀"
 
 msgid "Radvd - RDNSS"
-msgstr "RADVD-邻居发现服务器"
+msgstr "Radvd - RDNSS"
 
 msgid "Radvd - Route"
-msgstr "RADVD-路由"
+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监听路由请求和发送路由公告。"
+msgstr ""
+"Radvd 是一个 IPv6 路由公告软件,按照 RFC4861 监听路由请求和发送路由公告。"
 
 msgid "Reachable time"
 msgstr "可达延时"
@@ -289,7 +295,7 @@ msgid "Route Configuration"
 msgstr "路由设置"
 
 msgid "Routes"
-msgstr ""
+msgstr "路由"
 
 msgid "Source link-layer address"
 msgstr "源链路层地址"
@@ -299,9 +305,11 @@ msgid ""
 "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 "设å®\9aè·¯ç\94±å\85³è\81\94ç\9a\84ç\94\9få­\98æ\97¶é\97´ï¼\8cå\8d\95ä½\8d为ç§\92"
+msgstr "设å®\9aè·¯ç\94±å\85³è\81\94ç\9a\84ç\94\9få­\98æ\97¶é\97´ï¼\88ç§\92ï¼\89"
 
 msgid "Specifies the logical interface name this section belongs to"
 msgstr "说明这个物理接口连接到哪个网络"
@@ -309,12 +317,12 @@ msgstr "说明这个物理接口连接到哪个网络"
 msgid ""
 "Specifies the maximum duration how long the DNSSL entries are used for name "
 "resolution."
-msgstr "设定DNSSL表项名称解析的最长时间间隔"
+msgstr "设定 DNSSL 表项名称解析的最长时间间隔"
 
 msgid ""
 "Specifies the maximum duration how long the RDNSS entries are used for name "
 "resolution."
-msgstr "设定RDNSS表项名称解析的最长时间间隔"
+msgstr "设定 RDNSS 表项名称解析的最长时间间隔"
 
 msgid "Specifies the preference associated with the default router"
 msgstr "设定关联的默认路由的配置"
@@ -325,23 +333,23 @@ msgstr "后缀"
 msgid ""
 "The maximum time allowed between sending unsolicited multicast router "
 "advertisements from the interface, in seconds"
-msgstr "å\85\81许æ\8e¥å\8f£å\8f\91é\80\81ç»\84æ\92­è·¯ç\94±å®£å\91\8aæ\8a¥æ\96\87ç\9a\84æ\9c\80大æ\97¶é\97´é\97´é\9a\94ï¼\8cå\8d\95ä½\8d为ç§\92"
+msgstr "å\85\81许æ\8e¥å\8f£å\8f\91é\80\81ç»\84æ\92­è·¯ç\94±å®£å\91\8aæ\8a¥æ\96\87ç\9a\84æ\9c\80大æ\97¶é\97´é\97´é\9a\94ï¼\88ç§\92ï¼\89"
 
 msgid ""
 "The minimum time allowed between sending multicast router advertisements "
 "from the interface, in seconds"
-msgstr "å\85\81许æ\8e¥å\8f£å\8f\91é\80\81ç»\84æ\92­è·¯ç\94±å®£å\91\8aæ\8a¥æ\96\87ç\9a\84æ\9c\80å°\8fæ\97¶é\97´é\97´é\9a\94ï¼\8cå\8d\95ä½\8d为ç§\92"
+msgstr "å\85\81许æ\8e¥å\8f£å\8f\91é\80\81ç»\84æ\92­è·¯ç\94±å®£å\91\8aæ\8a¥æ\96\87ç\9a\84æ\9c\80å°\8fæ\97¶é\97´é\97´é\9a\94ï¼\88ç§\92ï¼\89"
 
 msgid ""
 "The minimum time allowed between sending unsolicited multicast router "
 "advertisements from the interface, in seconds"
-msgstr "å\85\81许æ\8e¥å\8f£å\8f\91é\80\81主å\8a¨è§¦å\8f\91ç»\84æ\92­è·¯ç\94±å®£å\91\8aæ\8a¥æ\96\87ç\9a\84æ\9c\80å°\8fæ\97¶é\97´é\97´é\9a\94ï¼\8cå\8d\95ä½\8d为ç§\92"
+msgstr "å\85\81许æ\8e¥å\8f£å\8f\91é\80\81主å\8a¨è§¦å\8f\91ç»\84æ\92­è·¯ç\94±å®£å\91\8aæ\8a¥æ\96\87ç\9a\84æ\9c\80å°\8fæ\97¶é\97´é\97´é\9a\94ï¼\88ç§\92ï¼\89"
 
 msgid "The preference for the Home Agent sending this RA"
-msgstr ""
+msgstr "发送此 RA 的本地代理的首选项"
 
 msgid "Timing"
-msgstr ""
+msgstr "计时"
 
 msgid "Unicast only"
 msgstr "单播"
@@ -362,7 +370,7 @@ msgid "low"
 msgstr "低"
 
 msgid "medium"
-msgstr "中"
+msgstr "中"
 
 msgid "no"
 msgstr "否"
index aed76c5274532dc189eb2fb02bb33f2d5855b61c..6de830979e7ee546253d75a9d84e4b0cf764f703 100644 (file)
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 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"
+"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 ""
+msgstr "6to4 介面"
 
 msgid "Address"
-msgstr ""
+msgstr "位址"
 
 msgid "Addresses"
-msgstr ""
+msgstr "位址"
 
 msgid "Advanced"
-msgstr ""
+msgstr "進階選項"
 
 msgid "Advertise Home Agent flag"
-msgstr ""
+msgstr "宣告本地代理標識"
 
 msgid "Advertise router address"
-msgstr ""
+msgstr "宣告路由位址"
 
 msgid "Advertised Domain Suffixes"
-msgstr ""
+msgstr "宣告的域字尾"
 
 msgid ""
 "Advertised IPv6 RDNSS. If empty, the current IPv6 address of the interface "
 "is used"
-msgstr ""
+msgstr "宣告的 IPv6 RDNSS 位址。若為空,則為當前 IPv6 位址"
 
 msgid "Advertised IPv6 prefixes"
-msgstr ""
+msgstr "宣告的 IPv6 字首群"
 
 msgid ""
 "Advertised IPv6 prefixes. If empty, the current interface prefix is used"
-msgstr ""
+msgstr "宣告的 IPv6 字首群。若為空,將使用當前介面的字首"
 
 msgid "Advertises Mobile IPv6 Home Agent capability (RFC3775)"
-msgstr ""
+msgstr "宣告移動 IPv6 本地代理功能(RFC3775)"
 
 msgid "Advertises Mobile Router registration capability (NEMO Basic)"
-msgstr ""
+msgstr "宣告移動路由器註冊功能(NEMO 基本)"
 
 msgid ""
 "Advertises assumed reachability time in milliseconds of neighbours in the RA "
 "if specified. 0 disables reachability advertisements"
-msgstr ""
+msgstr "在 RA 中宣告估算的鄰居可達時間(毫秒)。0 禁用可達性宣告"
 
 msgid ""
 "Advertises the default Hop Count value for outgoing unicast packets in the "
 "RA. 0 disables hopcount advertisements"
-msgstr ""
+msgstr "在 RA 中宣告外發單播資料包的預設跳數值。0 禁用跳數宣告"
 
 msgid "Advertises the default router preference"
-msgstr ""
+msgstr "宣告預設路由設定"
 
 msgid ""
 "Advertises the given link MTU in the RA if specified. 0 disables MTU "
 "advertisements"
-msgstr ""
+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 ""
+msgstr "宣告字首對 on-link 決定有效的時間長度(秒)。"
 
 msgid ""
 "Advertises the lifetime of the default router in seconds. 0 indicates that "
 "the node is no default router"
-msgstr ""
+msgstr "宣告預設路由器的生存時間(秒)。0 代表結點沒有預設路由"
 
 msgid ""
 "Advertises the time in seconds the router is offering Mobile IPv6 Home Agent "
 "services"
-msgstr ""
+msgstr "宣告路由器提供移動 IPv6 本地代理服務的時間(秒)"
 
 msgid ""
 "Advertises wait time in milliseconds between Neighbor Solicitation messages "
 "in the RA if specified. 0 disables retransmit advertisements"
-msgstr ""
+msgstr "宣告 RA 中鄰居請求訊息間的等待時間(毫秒)。0 禁用宣告重傳"
 
 msgid "Advertising"
-msgstr ""
+msgstr "宣告"
 
 msgid "Autonomous"
-msgstr ""
+msgstr "自治的"
 
 msgid "Clients"
-msgstr ""
+msgstr "客戶端"
 
 msgid "Configuration flag"
-msgstr ""
+msgstr "設定標識"
 
 msgid "Current hop limit"
-msgstr ""
+msgstr "當前跳數限制"
 
 msgid "DNSSL"
-msgstr ""
+msgstr "DNSSL"
 
 msgid "DNSSL Configuration"
-msgstr ""
+msgstr "DNSSL 設定"
 
 msgid "Default lifetime"
-msgstr ""
+msgstr "預設生存時限"
 
 msgid "Default preference"
-msgstr ""
+msgstr "預設優先順序"
 
 msgid "Enable"
-msgstr ""
+msgstr "啟用"
 
 msgid "Enable advertisements"
-msgstr ""
+msgstr "啟用宣告"
 
 msgid "Enables router advertisements and solicitations"
-msgstr ""
+msgstr "啟用路由宣告和請求"
 
 msgid ""
 "Enables the additional stateful administered autoconfiguration protocol "
 "(RFC2462)"
-msgstr ""
+msgstr "使能附加的基於狀態管理的自動配置協議(RFC2462)"
 
 msgid ""
 "Enables the autoconfiguration of additional, non address information "
 "(RFC2462)"
-msgstr ""
+msgstr "啟用自動配置,不包括位址資訊(RFC2462)"
 
 msgid "General"
-msgstr ""
+msgstr "概況"
 
 msgid "Home Agent information"
-msgstr ""
+msgstr "本地代理資訊"
 
 msgid "Home Agent lifetime"
-msgstr ""
+msgstr "本地代理有效期"
 
 msgid "Home Agent preference"
-msgstr ""
+msgstr "本地代理優先權"
 
 msgid "Include Home Agent Information in the RA"
-msgstr ""
+msgstr "路由器公告報文中包含本地代理資訊"
 
 msgid "Include Mobile IPv6 Advertisement Interval option to RA"
-msgstr ""
+msgstr "路由器公告報文中包含移動 IPv6 宣告間隔設定"
 
 msgid "Includes the link-layer address of the outgoing interface in the RA"
-msgstr ""
+msgstr "路由器公告報文中包含出介面的鏈路層位址"
 
 msgid ""
 "Indicates that the address of interface is sent instead of network prefix, "
 "as is required by Mobile IPv6"
-msgstr ""
+msgstr "表明使用介面的位址傳送而非網路字首,移動 IPv6 需要"
 
 msgid ""
 "Indicates that the underlying link is not broadcast capable, prevents "
 "unsolicited advertisements from being sent"
-msgstr ""
+msgstr "表明潛在的鏈路並不具有宣告能力,避免主動觸發的宣告報文發出"
 
 msgid ""
 "Indicates that this prefix can be used for autonomous address configuration "
 "(RFC4862)"
-msgstr ""
+msgstr "表明此字首能夠用於匿名位址配置(RFC4862)"
 
 msgid ""
 "Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr ""
+msgstr "表明此字首能夠用於 on-link 決定(RFC481)"
 
 msgid "Interface"
-msgstr ""
+msgstr "介面"
 
 msgid "Interface Configuration"
-msgstr ""
+msgstr "介面設定"
 
 msgid "Interface required"
-msgstr ""
+msgstr "介面必要項"
 
 msgid "Interfaces"
-msgstr ""
+msgstr "介面"
 
 msgid "Lifetime"
-msgstr ""
+msgstr "有效期"
 
 msgid "Link MTU"
-msgstr ""
+msgstr "連線 MTU"
 
 msgid "Managed flag"
-msgstr ""
+msgstr "M 標識"
 
 msgid "Max. interval"
-msgstr ""
+msgstr "最大間隔"
 
 msgid "Maximum advertisement interval"
-msgstr ""
+msgstr "最大宣告間隔"
 
 msgid "Minimum advertisement delay"
-msgstr ""
+msgstr "最小宣告延時"
 
 msgid "Minimum advertisement interval"
-msgstr ""
+msgstr "最小宣告間隔"
 
 msgid "Mobile IPv6"
-msgstr ""
+msgstr "移動 IPv6"
 
 msgid "Mobile IPv6 interval option"
-msgstr ""
+msgstr "移動 IPv6 間隔選項"
 
 msgid "Mobile IPv6 router registration"
-msgstr ""
+msgstr "移動 IPv6 路由註冊"
 
 msgid "Multicast"
-msgstr ""
+msgstr "組播傳輸"
 
 msgid "On-link"
-msgstr ""
+msgstr "已連線的"
 
 msgid "On-link determination"
-msgstr ""
+msgstr "已連線的目標"
 
 msgid "Preference"
-msgstr ""
+msgstr "首選項"
 
 msgid "Preferred lifetime"
-msgstr ""
+msgstr "期望的生存時間"
 
 msgid "Prefix"
-msgstr ""
+msgstr "字首"
 
 msgid "Prefix Configuration"
-msgstr ""
+msgstr "字首設定"
 
 msgid "Prefixes"
-msgstr ""
+msgstr "字首群"
 
 msgid "RDNSS"
-msgstr ""
+msgstr "鄰居發現伺服器"
 
 msgid "RDNSS Configuration"
-msgstr ""
+msgstr "鄰居發現伺服器設定"
 
 msgid "Radvd"
-msgstr ""
+msgstr "Radvd"
 
 msgid "Radvd - DNSSL"
-msgstr ""
+msgstr "Radvd - DNSSL"
 
 msgid "Radvd - Interface %q"
-msgstr ""
+msgstr "Radvd - 介面 %q"
 
 msgid "Radvd - Prefix"
-msgstr ""
+msgstr "Radvd - 字首"
 
 msgid "Radvd - RDNSS"
-msgstr ""
+msgstr "Radvd - RDNSS"
 
 msgid "Radvd - Route"
-msgstr ""
+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 ""
+msgstr "可達延時"
 
 msgid ""
 "Restrict communication to specified clients, leave empty to use multicast"
-msgstr ""
+msgstr "限制特定會話,留空則使用組播"
 
 msgid "Retransmit timer"
-msgstr ""
+msgstr "中繼轉發計時器"
 
 msgid "Route Configuration"
-msgstr ""
+msgstr "路由設定"
 
 msgid "Routes"
-msgstr ""
+msgstr "路由"
 
 msgid "Source link-layer address"
-msgstr ""
+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 ""
+msgstr "設定路由關聯的生存時間(秒)"
 
 msgid "Specifies the logical interface name this section belongs to"
-msgstr ""
+msgstr "說明這個物理介面連線到哪個網路"
 
 msgid ""
 "Specifies the maximum duration how long the DNSSL entries are used for name "
 "resolution."
-msgstr ""
+msgstr "設定 DNSSL 表項名稱解析的最長時間間隔"
 
 msgid ""
 "Specifies the maximum duration how long the RDNSS entries are used for name "
 "resolution."
-msgstr ""
+msgstr "設定 RDNSS 表項名稱解析的最長時間間隔"
 
 msgid "Specifies the preference associated with the default router"
-msgstr ""
+msgstr "設定關聯的預設路由的配置"
 
 msgid "Suffix"
-msgstr ""
+msgstr "字尾"
 
 msgid ""
 "The maximum time allowed between sending unsolicited multicast router "
 "advertisements from the interface, in seconds"
-msgstr ""
+msgstr "允許介面傳送組播路由宣告報文的最大時間間隔(秒)"
 
 msgid ""
 "The minimum time allowed between sending multicast router advertisements "
 "from the interface, in seconds"
-msgstr ""
+msgstr "允許介面傳送組播路由宣告報文的最小時間間隔(秒)"
 
 msgid ""
 "The minimum time allowed between sending unsolicited multicast router "
 "advertisements from the interface, in seconds"
-msgstr ""
+msgstr "允許介面傳送主動觸發組播路由宣告報文的最小時間間隔(秒)"
 
 msgid "The preference for the Home Agent sending this RA"
-msgstr ""
+msgstr "傳送此 RA 的本地代理的首選項"
 
 msgid "Timing"
-msgstr ""
+msgstr "計時"
 
 msgid "Unicast only"
-msgstr ""
+msgstr "單播"
 
 msgid "Valid lifetime"
-msgstr ""
+msgstr "有效的生存時間"
 
 msgid "Validity time"
-msgstr ""
+msgstr "有效期"
 
 msgid "default"
-msgstr ""
+msgstr "預設"
 
 msgid "high"
-msgstr ""
+msgstr ""
 
 msgid "low"
-msgstr ""
+msgstr ""
 
 msgid "medium"
-msgstr ""
+msgstr ""
 
 msgid "no"
-msgstr ""
+msgstr ""
 
 msgid "yes"
-msgstr ""
+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則為無限長"
index b6fd8f31da795f44acd5dc38ca24e995f33875fe..ea9d0489fd2dea01c590813dfd9e8f74679f7568 100644 (file)
@@ -1,44 +1,47 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2012-06-21 18:31+0200\n"
-"Last-Translator: phantasm131 <phantasm131@gmail.com>\n"
-"Language-Team: QQ Group 75543259 <axishero@foxmail.com>\n"
+"PO-Revision-Date: 2017-10-29 15:36+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "Allow guests"
 msgstr "允许匿名用户"
 
 msgid "Allow system users to reach their home directories via network shares"
-msgstr "允许系统用户通过网络共享访问他们的目录"
+msgstr "允许系统用户通过网络共享访问他们的目录"
 
 msgid "Allowed users"
 msgstr "允许用户"
 
 msgid "Browseable"
-msgstr ""
+msgstr "可浏览"
 
 msgid "Create mask"
-msgstr "创建权限"
+msgstr "创建权限掩码"
 
 msgid "Description"
 msgstr "描述"
 
 msgid "Directory mask"
-msgstr "目录权限"
+msgstr "目录权限掩码"
 
 msgid "Edit Template"
 msgstr "编辑模板"
 
 msgid "Edit the template that is used for generating the samba configuration."
-msgstr "编辑用来生成samba设置的模板"
+msgstr "编辑用来生成 samba 设置的模板"
 
 msgid "General Settings"
 msgstr "基本设置"
@@ -47,10 +50,10 @@ msgid "Hostname"
 msgstr "主机名"
 
 msgid "Mask for new directories"
-msgstr "新目录权限"
+msgstr "新目录权限掩码"
 
 msgid "Mask for new files"
-msgstr "新文件权限"
+msgstr "新文件权限掩码"
 
 msgid "Name"
 msgstr "共享名"
@@ -64,13 +67,13 @@ msgstr "目录"
 msgid ""
 "Please add directories to share. Each directory refers to a folder on a "
 "mounted device."
-msgstr ""
+msgstr "请添加要共享的目录。每个目录指到已挂载设备上的文件夹。"
 
 msgid "Read-only"
 msgstr "只读"
 
 msgid "Share home-directories"
-msgstr "共享目录"
+msgstr "共享目录"
 
 msgid "Shared Directories"
 msgstr "共享目录"
@@ -81,8 +84,8 @@ msgid ""
 "('|') should not be changed. They get their values from the 'General "
 "Settings' tab."
 msgstr ""
-"创建samba设置的 \"/etc/samba/smb.conf.template\" 文件的内容。被通道符|包围的"
-"值可在基本设置中进行配置"
+"这是将从其上生成 samba 配置的文件“/etc/samba/smb.conf.template”的内容。由管道"
+"符(“|”)包围的值不应更改。它们将从“常规设置”标签中获取其值。"
 
 msgid "Workgroup"
 msgstr "工作组"
index ed0dabb807daaecbe35289c54b7484ccdf9385c8..8461a6077420708cb5d8e799e387458826a7895c 100644 (file)
@@ -1,77 +1,82 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-08-07 15:43+0200\n"
-"Last-Translator: Ethan <ethan42411@gmail.com>\n"
-"Language-Team: none\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2017-10-29 15:36+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_TW\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "Allow guests"
 msgstr "允許匿名使用者"
 
 msgid "Allow system users to reach their home directories via network shares"
-msgstr "å\85\81許系統使ç\94¨è\80\85é\80\8fé\81\8e網路å\88\86享家目錄"
+msgstr "å\85\81許系統使ç\94¨è\80\85é\80\9aé\81\8e網路å\85±äº«è¨ªå\95\8fä»\96å\80\91ç\9a\84家目錄"
 
 msgid "Allowed users"
 msgstr "允許使用者"
 
 msgid "Browseable"
-msgstr ""
+msgstr "可瀏覽"
 
 msgid "Create mask"
-msgstr "建立權限"
+msgstr "建立權限掩碼"
 
 msgid "Description"
 msgstr "描述"
 
 msgid "Directory mask"
-msgstr "目錄權限"
+msgstr "目錄權限掩碼"
 
 msgid "Edit Template"
-msgstr "編輯樣ç\89\88"
+msgstr "編輯模æ\9d¿"
 
 msgid "Edit the template that is used for generating the samba configuration."
-msgstr "編輯ç\94¨ä¾\86ç\94¢ç\94\9fSamba設å®\9aç\9a\84樣板"
+msgstr "編輯ç\94¨ä¾\86ç\94\9fæ\88\90 samba è¨­å®\9aç\9a\84模板"
 
 msgid "General Settings"
 msgstr "基本設定"
 
 msgid "Hostname"
-msgstr "主機名"
+msgstr "主機名"
 
 msgid "Mask for new directories"
-msgstr "新目錄權限"
+msgstr "新目錄權限掩碼"
 
 msgid "Mask for new files"
-msgstr "新檔案權限"
+msgstr "新檔案權限掩碼"
 
 msgid "Name"
-msgstr "共用名稱"
+msgstr "共享名"
 
 msgid "Network Shares"
-msgstr "網路å\88\86享"
+msgstr "網路å\85±享"
 
 msgid "Path"
-msgstr "路徑"
+msgstr "目錄"
 
 msgid ""
 "Please add directories to share. Each directory refers to a folder on a "
 "mounted device."
-msgstr ""
+msgstr "請新增要共享的目錄。每個目錄指到已掛載裝置上的資料夾。"
 
 msgid "Read-only"
-msgstr "å\94¯讀"
+msgstr "å\8fª讀"
 
 msgid "Share home-directories"
-msgstr "å\88\86享家目錄"
+msgstr "å\85±享家目錄"
 
 msgid "Shared Directories"
-msgstr "å\88\86享目錄"
+msgstr "å\85±享目錄"
 
 msgid ""
 "This is the content of the file '/etc/samba/smb.conf.template' from which "
@@ -79,8 +84,11 @@ msgid ""
 "('|') should not be changed. They get their values from the 'General "
 "Settings' tab."
 msgstr ""
-"建立Samba設定的 \"/etc/samba/smb.conf.template\" 檔案內容。被('|')包圍的值可"
-"以在基本設定中進行設定"
+"這是將從其上生成 samba 配置的檔案“/etc/samba/smb.conf.template”的內容。由管道"
+"符(“|”)包圍的值不應更改。它們將從“常規設定”標籤中獲取其值。"
 
 msgid "Workgroup"
-msgstr "工作群組"
+msgstr "工作組"
+
+#~ msgid "Physical Path"
+#~ msgstr "物理路徑"
diff --git a/package/luci/applications/luci-app-simple-adblock/po/sv/simple-adblock.po b/package/luci/applications/luci-app-simple-adblock/po/sv/simple-adblock.po
new file mode 100644 (file)
index 0000000..e95f95f
--- /dev/null
@@ -0,0 +1,80 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Blacklisted Domain URLs"
+msgstr "Svartlistade domänadresser"
+
+msgid "Blacklisted Domains"
+msgstr "Svartlistade domäner"
+
+msgid "Blacklisted Hosts URLs"
+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 ""
+
+msgid "Force Router DNS server to all local devices"
+msgstr ""
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+
+msgid "Individual domains to be blacklisted"
+msgstr "Individuella domäner som ska svartlistas"
+
+msgid "Individual domains to be whitelisted"
+msgstr "Individulla domäner som ska svartlistas"
+
+msgid "LED to indicate status"
+msgstr "LED för att indikera status"
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr ""
+
+msgid "Output Verbosity Setting"
+msgstr ""
+
+msgid "Pick the LED not already used in"
+msgstr ""
+
+msgid "Simple AdBlock"
+msgstr "Simple AdBlock"
+
+msgid "Simple AdBlock Settings"
+msgstr "Inställningar för Simple AdBlock"
+
+msgid "Some output"
+msgstr "Viss utmatning"
+
+msgid "Suppress output"
+msgstr "Förträng utmatning"
+
+msgid "System LED Configuration"
+msgstr ""
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr ""
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr ""
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr ""
+
+msgid "Verbose output"
+msgstr "Utförlig utmatning"
+
+msgid "Whitelisted Domain URLs"
+msgstr "Vitlistade domänadresser"
+
+msgid "Whitelisted Domains"
+msgstr "Vitlistade domäner"
+
+msgid "none"
+msgstr "ingen"
index 055c67b866959b0992fb2b56686ea007b40f14d7..a5ebcb7efeb78c7bbeb28a571c44cb811b2fc10a 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
+"Last-Translator: Kristoffer Grundström <hamnisdude@gmail.com>\n"
 "Language-Team: none\n"
 "Language: sv\n"
 "MIME-Version: 1.0\n"
@@ -45,6 +45,8 @@ msgstr ""
 msgid ""
 "Become an active member of this community and help by operating your own node"
 msgstr ""
+"Bli en aktiv medlem av det här sällskapet och hjälp till genom att "
+"tillhandahålla en egen nod"
 
 msgid "Blacklist"
 msgstr "Svartlista"
index 439b774e6c572b60fe6e1a3551d68bd1d39dbd6c..4ad740470191dcae5c02348c5ddaead602895ebe 100644 (file)
@@ -51,7 +51,7 @@ msgstr ""
 # Something wwrong?
 msgid ""
 "Become an active member of this community and help by operating your own node"
-msgstr "成为这个社区的一个活跃成员并且运营自己的节点以帮助别人。"
+msgstr "成为这个社区的一个活跃成员并且运营自己的节点以帮助别人。"
 
 msgid "Blacklist"
 msgstr "黑名单"
@@ -131,10 +131,10 @@ msgstr "IP地址"
 
 msgid ""
 "If you operate your own wifi equipment use channels different from ours."
-msgstr "如果你操作你自有的wifi设备,使用与我们不同的频道"
+msgstr "如果您操作您自有的wifi设备,使用与我们不同的频道"
 
 msgid "If you use this network on a regular basis we ask for your support:"
-msgstr "如果你经常使用这个网络,我们需要你的支持"
+msgstr "如果您经常使用这个网络,我们需要您的支持"
 
 msgid "Include your own text in the default splash"
 msgstr ""
@@ -277,7 +277,7 @@ msgid ""
 msgstr ""
 
 msgid "Your bandwidth is limited to"
-msgstr "的带宽限制为"
+msgstr "的带宽限制为"
 
 msgid "blacklisted"
 msgstr "黑名单"
index d55398ace7340c592537b73224592179710d50be..eef7ba6122e54c0bdd5a371547dd0632a57cfffb 100644 (file)
@@ -1,17 +1,19 @@
 #  rrdtool.pot
 #  generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
-"PO-Revision-Date: 2017-04-15 21:41-0600\n"
-"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
-"Language-Team: none\n"
+"PO-Revision-Date: 2017-10-29 15:39+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: Poedit 2.0.1\n"
+"X-Generator: Gtranslator 2.91.7\n"
 "POT-Creation-Date: \n"
 
 #. %H: Wireless - Signal Noise Ratio
@@ -37,7 +39,7 @@ msgstr "信号强度"
 #. %H: Wireless - Signal Quality
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5
 msgid "stat_dg_title_wireless__signal_quality"
-msgstr "%H无线 - 信号质量"
+msgstr "%H无线 - 信号质量"
 
 #. n
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6
@@ -52,7 +54,7 @@ msgstr "信号质量"
 #. %H: ICMP Roundtrip Times
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8
 msgid "stat_dg_title_ping"
-msgstr "%HICMP 往返时间"
+msgstr "%HICMP 往返时间"
 
 #. ms
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9
@@ -67,22 +69,22 @@ msgstr "%di"
 #. %H: Firewall - Processed Packets
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11
 msgid "stat_dg_title_iptables__ipt_packets"
-msgstr "%H防火墙 - 已处理的数据包"
+msgstr "%H防火墙 - 已处理的数据包"
 
 #. Packets/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12
 msgid "stat_dg_label_iptables__ipt_packets"
-msgstr "Packets/s"
+msgstr "/s"
 
 #. Chain \"%di\"
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13
 msgid "stat_ds_ipt_packets"
-msgstr "Chain \\\"%di\\\""
+msgstr "链“%di”"
 
 #. %H: Netlink - Transfer on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14
 msgid "stat_dg_title_netlink__if_octets"
-msgstr "%HNetlink - %pi 上的数据传输"
+msgstr "%HNetlink - %pi 上的数据传输"
 
 #. Bytes/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15
@@ -97,12 +99,12 @@ msgstr "字节 (%ds)"
 #. %H: Netlink - Packets on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17
 msgid "stat_dg_title_netlink__if_packets"
-msgstr "%HNetlink - %pi 的数据包"
+msgstr "%HNetlink - %pi 的数据包"
 
 #. Packets/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18
 msgid "stat_dg_label_netlink__if_packets"
-msgstr "Packets/s"
+msgstr "/s"
 
 #. Processed (%ds)
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19
@@ -122,12 +124,12 @@ msgstr "错误 (%ds)"
 #. %H: Netlink - Multicast on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22
 msgid "stat_dg_title_netlink__if_multicast"
-msgstr "%HNetlink - %pi 上的多播"
+msgstr "%HNetlink - %pi 上的多播"
 
 #. Packets/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23
 msgid "stat_dg_label_netlink__if_multicast"
-msgstr "Packets/s"
+msgstr "/s"
 
 #. Packets
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24
@@ -137,22 +139,22 @@ msgstr "数据包"
 #. %H: Netlink - Collisions on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25
 msgid "stat_dg_title_netlink__if_collisions"
-msgstr "%HNetlink - %pi 上的 Collisions"
+msgstr "%HNetlink - %pi 上的 Collisions"
 
 #. Collisions/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26
 msgid "stat_dg_label_netlink__if_collisions"
-msgstr "Collisions/s"
+msgstr "碰撞/s"
 
 #. Collisions
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27
 msgid "stat_ds_if_collisions"
-msgstr "Collisions"
+msgstr "碰撞"
 
 #. %H: Netlink - Errors on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28
 msgid "stat_dg_title_netlink__if_tx_errors"
-msgstr "%HNetlink - %pi 上发生的错误"
+msgstr "%HNetlink - %pi 上发生的错误"
 
 #. Errors/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29
@@ -172,7 +174,7 @@ msgstr "%di"
 #. %H: Processes
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32
 msgid "stat_dg_title_processes"
-msgstr "%H进程"
+msgstr "%H进程"
 
 #. Processes/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33
@@ -187,7 +189,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进程 %s - 占用的 CPU 时间"
+msgstr "%H进程 %s - 占用的 CPU 时间"
 
 #. Jiffies
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36
@@ -207,7 +209,7 @@ msgstr "用户"
 #. %H: Process %pi - threads and processes
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39
 msgid "stat_dg_title_processes__ps_count"
-msgstr "%H进程 %pi - 进程与线程"
+msgstr "%H进程 %pi - 进程与线程"
 
 #. Count
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40
@@ -222,7 +224,7 @@ msgstr "%ds"
 #. %H: Process %pi - page faults
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42
 msgid "stat_dg_title_processes__ps_pagefaults"
-msgstr "%H进程 %pi - 分页错误"
+msgstr "%H进程 %pi - 分页错误"
 
 #. Pagefaults
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43
@@ -237,7 +239,7 @@ msgstr "分页错误"
 #. %H: Process %pi - virtual memory size
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45
 msgid "stat_dg_title_processes__ps_rss"
-msgstr "%H进程 %pi - 虚拟内存大小"
+msgstr "%H进程 %pi - 虚拟内存大小"
 
 #. Bytes
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46
@@ -252,7 +254,7 @@ msgstr "虚拟内存"
 #. %H: Usage on Processor #%pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48
 msgid "stat_dg_title_cpu"
-msgstr "%H对处理器 #%pi 的占用"
+msgstr "%H对处理器 #%pi 的占用"
 
 #. %
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49
@@ -267,7 +269,7 @@ msgstr "%di"
 #. %H: Transfer on %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51
 msgid "stat_dg_title_interface__if_octets"
-msgstr "%H%di 上的数据传输情况"
+msgstr "%H%di 上的数据传输情况"
 
 #. Bytes/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52
@@ -277,17 +279,17 @@ msgstr "字节/秒"
 #. %H: Packets on %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53
 msgid "stat_dg_title_interface__if_packets"
-msgstr "%H%di 上的数据包"
+msgstr "%H%di 上的数据包"
 
 #. Packets/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54
 msgid "stat_dg_label_interface__if_packets"
-msgstr "Packets/s"
+msgstr "/s"
 
 #. %H: TCP-Connections to Port %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55
 msgid "stat_dg_title_tcpconns"
-msgstr "%H到端口 %pi 的 TCP 连接"
+msgstr "%H到端口 %pi 的 TCP 连接"
 
 #. Connections/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56
@@ -302,7 +304,7 @@ msgstr "%di"
 #. %H: Disk Space Usage on %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58
 msgid "stat_dg_title_df"
-msgstr "%H%di 上的磁盘占用情况"
+msgstr "%H%di 上的磁盘占用情况"
 
 #. Bytes
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59
@@ -322,12 +324,12 @@ msgstr "%ds"
 #. %H: Interrupts
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62
 msgid "stat_dg_title_irq"
-msgstr "%H中断"
+msgstr "%H中断"
 
 #. Issues/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63
 msgid "stat_dg_label_irq"
-msgstr "Issues/s"
+msgstr "中断/s"
 
 #. IRQ %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64
@@ -337,7 +339,7 @@ msgstr "IRQ %di"
 #. %H: System Load
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65
 msgid "stat_dg_title_load"
-msgstr "%H系统负载"
+msgstr "%H系统负载"
 
 #. Load
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66
index 20f5a93cb402c1bbcf5bc05d897d42a3f96f282d..fe631b5e8f1d9ff1a1b332da3c09bbeeb850c741 100644 (file)
@@ -1,23 +1,26 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2017-04-15 21:46-0600\n"
-"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
+"PO-Revision-Date: 2017-10-29 15:50+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.0.1\n"
-"Language-Team: \n"
+"X-Generator: Gtranslator 2.91.7\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 
 msgid "APC UPS"
-msgstr ""
+msgstr "APC UPS"
 
 msgid "APCUPS Plugin Configuration"
-msgstr ""
+msgstr "APCUPS 插件配置"
 
 msgid "Action (target)"
 msgstr "动作(目标)"
@@ -35,7 +38,7 @@ msgid "Add notification command"
 msgstr "新增通知命令"
 
 msgid "Aggregate number of connected users"
-msgstr ""
+msgstr "连接用户总数"
 
 msgid "Base Directory"
 msgstr "基本目录"
@@ -44,7 +47,7 @@ msgid "Basic monitoring"
 msgstr "基本监控"
 
 msgid "CPU Context Switches Plugin Configuration"
-msgstr ""
+msgstr "CPU Context Switches 插件配置"
 
 msgid "CPU Frequency"
 msgstr "CPU 频率"
@@ -53,13 +56,13 @@ msgid "CPU Frequency Plugin Configuration"
 msgstr "CPU 频率插件配置"
 
 msgid "CPU Plugin Configuration"
-msgstr "CPU插件配置"
+msgstr "CPU 插件配置"
 
 msgid "CSV Output"
-msgstr "CSV输出"
+msgstr "CSV 输出"
 
 msgid "CSV Plugin Configuration"
-msgstr "CSV插件配置"
+msgstr "CSV 插件配置"
 
 msgid "Cache collected data for"
 msgstr "收集缓存数据"
@@ -80,33 +83,33 @@ msgid "CollectTopology"
 msgstr "收集拓扑"
 
 msgid "Collectd Settings"
-msgstr "Collectd设置"
+msgstr "Collectd 设置"
 
 msgid ""
 "Collectd is a small daemon for collecting data from various sources through "
 "different plugins. On this page you can change general settings for the "
 "collectd daemon."
 msgstr ""
-"Collectd是一个通过不同插件用于收集各种源数据的小型守护程序。在此页面中,您可"
-"以更改Collectd守护进程常规设置。"
+"Collectd 是一个通过不同插件用于收集各种源数据的小型守护程序。在此页面中,您可"
+"以更改 Collectd 守护进程常规设置。"
 
 msgid "Conntrack"
 msgstr "Conntrack"
 
 msgid "Conntrack Plugin Configuration"
-msgstr "Conntrack插件设置"
+msgstr "Conntrack 插件配置"
 
 msgid "Context Switches"
-msgstr ""
+msgstr "上下文切换"
 
 msgid "DF Plugin Configuration"
-msgstr "DF插件设置"
+msgstr "DF 插件配置"
 
 msgid "DNS"
 msgstr "DNS"
 
 msgid "DNS Plugin Configuration"
-msgstr "DNS插件设置"
+msgstr "DNS 插件配置"
 
 msgid "Data collection interval"
 msgstr "数据收集间隙"
@@ -115,16 +118,16 @@ msgid "Datasets definition file"
 msgstr "数据集定义文件"
 
 msgid "Destination ip range"
-msgstr "目标IP区间"
+msgstr "目标 IP 区间"
 
 msgid "Directory for collectd plugins"
-msgstr "Collectd插件目录"
+msgstr "Collectd 插件目录"
 
 msgid "Directory for sub-configurations"
 msgstr "子配置目录"
 
 msgid "Disk Plugin Configuration"
-msgstr "Disk插件配置"
+msgstr "Disk 插件配置"
 
 msgid "Disk Space Usage"
 msgstr "磁盘空间使用情况"
@@ -139,7 +142,7 @@ msgid "Display timespan »"
 msgstr "显示时间段"
 
 msgid "E-Mail Plugin Configuration"
-msgstr "E-Mail插件配置"
+msgstr "E-Mail 插件配置"
 
 msgid "Email"
 msgstr "电子邮件"
@@ -160,10 +163,10 @@ msgid "Exec"
 msgstr "Exec"
 
 msgid "Exec Plugin Configuration"
-msgstr "Exec插件配置"
+msgstr "Exec 插件配置"
 
 msgid "Filter class monitoring"
-msgstr "Filter类监测"
+msgstr "Filter 类监测"
 
 msgid "Firewall"
 msgstr "防火墙"
@@ -175,13 +178,13 @@ msgid "Forwarding between listen and server addresses"
 msgstr "转发监听服务器和应用服务器之间数据"
 
 msgid "Gather compression statistics"
-msgstr ""
+msgstr "收集压缩统计信息"
 
 msgid "General plugins"
 msgstr "通用插件"
 
 msgid "Generate a separate graph for each logged user"
-msgstr ""
+msgstr "为每个记录的用户生成一个单独的图表"
 
 msgid "Graphs"
 msgstr "图表"
@@ -193,7 +196,7 @@ 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 ""
-"在这里,你可以定义外部命令,Collectd将启动命令来获取某些值,将获取的值从标准"
+"在这里,您可以定义外部命令,Collectd 将启动命令来获取某些值,将获取的值从标准"
 "输出端口输出。"
 
 msgid ""
@@ -201,13 +204,13 @@ msgid ""
 "certain threshold values have been reached. The values leading to invokation "
 "will be feeded to the the called programs stdin."
 msgstr ""
-"在这里,你可以定义外部命令,当Collectd达到一定阈值时,将启动命令。阀值将会作"
-"为命令的标准输入。"
+"在这里,您可以定义外部命令,当 Collectd 达到一定阈值时,将启动命令。阀值将会"
+"ä½\9c为å\91½ä»¤ç\9a\84æ \87å\87\86è¾\93å\85¥ã\80\82"
 
 msgid ""
 "Here you can define various criteria by which the monitored iptables rules "
 "are selected."
-msgstr "在这里,你可以定义各种监控iptables规则临界值。"
+msgstr "在这里,您可以定义各种监控 iptables 规则临界值。"
 
 msgid "Hold Ctrl to select multiple items or to deselect entries."
 msgstr "按住 Ctrl 键来选择或取消选择多个项目。"
@@ -219,10 +222,10 @@ msgid "Hostname"
 msgstr "主机名"
 
 msgid "IP or hostname where to get the txtinfo output from"
-msgstr "获取txtinfo输出的IP地址或主机名"
+msgstr "获取 txtinfo 输出的 IP 地址或主机名"
 
 msgid "IRQ Plugin Configuration"
-msgstr "IRQ插件配置"
+msgstr "IRQ 插件配置"
 
 msgid "Ignore source addresses"
 msgstr "忽略源地址"
@@ -231,7 +234,7 @@ msgid "Incoming interface"
 msgstr "入接口"
 
 msgid "Interface Plugin Configuration"
-msgstr "Interface插件配置"
+msgstr "Interface 插件配置"
 
 msgid "Interfaces"
 msgstr "Interfaces"
@@ -240,10 +243,10 @@ msgid "Interrupts"
 msgstr "中断"
 
 msgid "Interval for pings"
-msgstr "ping间隙"
+msgstr "ping 间隙"
 
 msgid "Iptables Plugin Configuration"
-msgstr "Iptables插件配置"
+msgstr "Iptables 插件配置"
 
 msgid "Leave unselected to automatically determine interfaces to monitor."
 msgstr "自动保留对未选中接口的监控。"
@@ -258,12 +261,12 @@ msgid "Listener interfaces"
 msgstr "监听接口"
 
 msgid "Load Plugin Configuration"
-msgstr "Load插件配置"
+msgstr "Load 插件配置"
 
 msgid ""
 "Max values for a period can be used instead of averages when not using 'only "
 "average RRAs'"
-msgstr ""
+msgstr "在不使用“仅平均 RRA”的情况下,可以使用一段时间的最大值而不是平均值"
 
 msgid "Maximum allowed connections"
 msgstr "最大允许连接数"
@@ -296,7 +299,7 @@ msgid "Monitor filesystem types"
 msgstr "监测文件系统类型"
 
 msgid "Monitor host"
-msgstr ""
+msgstr "监测主机"
 
 msgid "Monitor hosts"
 msgstr "监测主机"
@@ -326,19 +329,19 @@ msgid "Netlink"
 msgstr "Netlink"
 
 msgid "Netlink Plugin Configuration"
-msgstr "Netlink插件配置"
+msgstr "Netlink 插件配置"
 
 msgid "Network"
 msgstr "Network"
 
 msgid "Network Plugin Configuration"
-msgstr "Network插件配置"
+msgstr "Network 插件配置"
 
 msgid "Network plugins"
-msgstr "Network插件"
+msgstr "Network 插件"
 
 msgid "Network protocol"
-msgstr "Network协议"
+msgstr "Network 协议"
 
 msgid ""
 "Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
@@ -354,10 +357,10 @@ msgid "OLSRd"
 msgstr "OLSRd"
 
 msgid "OLSRd Plugin Configuration"
-msgstr "OLSRd插件配置"
+msgstr "OLSRd 插件配置"
 
 msgid "Only create average RRAs"
-msgstr "仅创建平均RRAs"
+msgstr "仅创建平均 RRAs"
 
 msgid "OpenVPN"
 msgstr "OpenVPN"
@@ -375,19 +378,19 @@ msgid "Outgoing interface"
 msgstr "出接口"
 
 msgid "Output plugins"
-msgstr "Output插件"
+msgstr "Output 插件"
 
 msgid "Ping"
 msgstr "Ping"
 
 msgid "Ping Plugin Configuration"
-msgstr "Ping插件配置"
+msgstr "Ping 插件配置"
 
 msgid "Port"
 msgstr "端口"
 
 msgid "Port for apcupsd communication"
-msgstr ""
+msgstr "apcupsd 通信端口"
 
 msgid "Processes"
 msgstr "进程"
@@ -402,22 +405,22 @@ msgid "Processor"
 msgstr "处理器"
 
 msgid "Qdisc monitoring"
-msgstr "Qdisc监测"
+msgstr "Qdisc 监测"
 
 msgid "RRD XFiles Factor"
-msgstr "RRD XFiles因子"
+msgstr "RRD XFiles 因子"
 
 msgid "RRD heart beat interval"
-msgstr "RRD心跳间隙"
+msgstr "RRD 心跳间隙"
 
 msgid "RRD step interval"
-msgstr "RRD区间间隙"
+msgstr "RRD 区间间隙"
 
 msgid "RRDTool"
 msgstr "RRDTool"
 
 msgid "RRDTool Plugin Configuration"
-msgstr "RRDTool插件配置"
+msgstr "RRDTool 插件配置"
 
 msgid "Rows per RRA"
 msgstr "行/RRA"
@@ -435,7 +438,7 @@ msgid "Sensors"
 msgstr "传感器"
 
 msgid "Sensors Plugin Configuration"
-msgstr "传感器插件配置"
+msgstr "Sensors 插件配置"
 
 msgid "Server host"
 msgstr "服务器主机"
@@ -450,7 +453,7 @@ msgid "Shaping class monitoring"
 msgstr "整形类监控"
 
 msgid "Show max values instead of averages"
-msgstr ""
+msgstr "显示最大值而不是平均值"
 
 msgid "Socket file"
 msgstr "套接字文件"
@@ -462,7 +465,7 @@ msgid "Socket permissions"
 msgstr "套接字权限"
 
 msgid "Source ip range"
-msgstr "源IP区间"
+msgstr "源 IP 区间"
 
 msgid "Specifies what information to collect about links."
 msgstr "收集指定链接相关信息。"
@@ -474,10 +477,10 @@ 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 "统计"
@@ -486,7 +489,7 @@ msgid "Storage directory"
 msgstr "存储目录"
 
 msgid "Storage directory for the csv files"
-msgstr "csv存储目录"
+msgstr "csv 存储目录"
 
 msgid "Store data values as rates instead of absolute values"
 msgstr "存储数据值变化量而不是绝对值"
@@ -498,30 +501,30 @@ msgid "System Load"
 msgstr "系统加载"
 
 msgid "TCP Connections"
-msgstr "TCP连接数"
+msgstr "TCP 连接数"
 
 msgid "TCPConns Plugin Configuration"
-msgstr "TCPConns插件配置"
+msgstr "TCPConns 插件配置"
 
 msgid "TTL for network packets"
-msgstr "网络包TTL"
+msgstr "网络包 TTL"
 
 msgid "TTL for ping packets"
-msgstr "pingTTL"
+msgstr "ping 包 TTL"
 
 msgid "Table"
 msgstr "表"
 
 msgid "The APCUPS plugin collects statistics about the APC UPS."
-msgstr ""
+msgstr "APCUPS 插件收集 APC UPS 的统计信息。"
 
 msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
-msgstr "NUT插件读取UPS信息。"
+msgstr "NUT 插件读取 UPS 信息。"
 
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
-msgstr "OLSRd插件通过txtinfo获取meshed网络信息。"
+msgstr "OLSRd 插件通过 txtinfo 获取 meshed 网络信息。"
 
 msgid ""
 "The OpenVPN plugin gathers information about the current vpn connection "
@@ -531,10 +534,10 @@ msgstr "OpenVPN 插件可以获取 VPN 连接当前状态"
 msgid ""
 "The conntrack plugin collects statistics about the number of tracked "
 "connections."
-msgstr "conntrack插件获取连接数信息。"
+msgstr "conntrack 插件获取连接数信息。"
 
 msgid "The cpu plugin collects basic statistics about the processor usage."
-msgstr "cpu插件获取处理器相关信息。"
+msgstr "cpu 插件获取处理器相关信息。"
 
 msgid ""
 "The csv plugin stores collected data in csv file format for further "
@@ -544,17 +547,17 @@ msgstr "csv插件用于存储数据,以方便其他程序处理数据。"
 msgid ""
 "The df plugin collects statistics about the disk space usage on different "
 "devices, mount points or filesystem types."
-msgstr "df插件收集磁盘空间使用情况,挂载点及文件系统相关信息。"
+msgstr "df 插件收集磁盘空间使用情况、挂载点及文件系统相关信息。"
 
 msgid ""
 "The disk plugin collects detailled usage statistics for selected partitions "
 "or whole disks."
-msgstr "disk插件收集磁盘分区使用情况及相关信息。"
+msgstr "disk 插件收集磁盘分区使用情况及相关信息。"
 
 msgid ""
 "The dns plugin collects detailled statistics about dns related traffic on "
 "selected interfaces."
-msgstr "dns插件收集dns数据流相关信息。"
+msgstr "dns 插件收集 dns 数据流相关信息。"
 
 msgid ""
 "The email plugin creates a unix socket which can be used to transmit email-"
@@ -562,50 +565,50 @@ msgid ""
 "to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can "
 "be used in other ways as well."
 msgstr ""
-"邮件插件创建一个unix套接字用于为Collectd守护进程发送统计信息到电子邮件系统。"
-"这个插件主要目的是结合使用Mail::SpamAssasin::Pulgin::Collectd,但可以用在其他"
-"方面。"
+"邮件插件创建一个 unix 套接字用于为 Collectd 守护进程发送统计信息到电子邮件系"
+"统。这个插件主要目的是结合使用 Mail::SpamAssasin::Pulgin::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 ""
-"exec插件,用于当某些监控值已到达阈值时,启动外部命令读值或通知外部程序。"
+"exec 插件用于当某些监控值已到达阈值时,启动外部命令读值或通知外部程序。"
 
 msgid ""
 "The interface plugin collects traffic statistics on selected interfaces."
-msgstr "Interface插件,用于收集选定接口的数据包的统计信息。"
+msgstr "Interface 插件用于收集选定接口的数据包的统计信息。"
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
 "informations about processed bytes and packets per rule."
-msgstr "iptables插件,将监测选定防火墙规则和收集关于每个规则处理的数据包信息。"
+msgstr "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 ""
-"irq插件,用于监控选定中断的每秒钟产生的中断数。如果没有中断被选中,则表示对所"
+"irq 插件用于监控选定中断的每秒钟产生的中断数。如果没有中断被选中,则表示对所"
 "有中断进行监测。"
 
 msgid ""
 "The iwinfo plugin collects statistics about wireless signal strength, noise "
 "and quality."
-msgstr "iwinfo插件,收集无线信号强度、噪声和质量的统计信息。"
+msgstr "iwinfo 插件收集无线信号强度、噪声和质量的统计信息。"
 
 msgid "The load plugin collects statistics about the general system load."
-msgstr "load插件,收集常规系统加载统计信息。"
+msgstr "load 插件收集常规系统加载统计信息。"
 
 msgid "The memory plugin collects statistics about the memory usage."
-msgstr "memory插件,收集关于内存使用情况的统计信息。"
+msgstr "memory 插件收集关于内存使用情况的统计信息。"
 
 msgid ""
 "The netlink plugin collects extended informations like qdisc-, class- and "
 "filter-statistics for selected interfaces."
-msgstr "netlink插件,收集为选定接口qdisc-、class-和filter- 的扩展数据。"
+msgstr "netlink 插件收集为选定接口 qdisc-、class- 和 filter- 的扩展数据。"
 
 msgid ""
 "The network plugin provides network based communication between different "
@@ -613,19 +616,19 @@ 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 ""
-"network插件,提供了基于网络的不同Collectd实例。Collectd可以工作在客户端和服务"
-"å\99¨ä¸¤ä¸ªæ¨¡å¼\8fã\80\82å\9c¨å®¢æ\88·ç«¯æ¨¡å¼\8fä¸\8bæ\94¶é\9b\86æ\9c¬å\9c°ä¿¡æ\81¯ï¼\8cç\84¶å\90\8e转移å\88°ä¸\80个Collectdæ\9c\8då\8a¡å\99¨å®\9eä¾\8b中,å\9c¨"
-"服务器模式将从其他主机收集信息。"
+"network 插件提供了基于网络的不同 Collectd 实例。Collectd 可以工作在客户端和服"
+"å\8a¡å\99¨ä¸¤ä¸ªæ¨¡å¼\8fã\80\82å\9c¨å®¢æ\88·ç«¯æ¨¡å¼\8fä¸\8bæ\94¶é\9b\86æ\9c¬å\9c°ä¿¡æ\81¯ï¼\8cç\84¶å\90\8e转移å\88°ä¸\80个 Collectd æ\9c\8då\8a¡å\99¨å®\9eä¾\8b"
+"中,在服务器模式将从其他主机收集信息。"
 
 msgid ""
 "The ping plugin will send icmp echo replies to selected hosts and measure "
 "the roundtrip time for each host."
-msgstr "ping插件,将发送icmp echo replies到选定主机来测量每台主机的响应时间。"
+msgstr "ping 插件将发送 icmp echo replies 到选定主机来测量每台主机的响应时间。"
 
 msgid ""
 "The processes plugin collects informations like cpu time, page faults and "
 "memory usage of selected processes."
-msgstr "processes插件,收集选定进程的cpu时间、页面错误和内存使用信息。"
+msgstr "processes 插件收集选定进程的 cpu 时间、页面错误和内存使用信息。"
 
 msgid ""
 "The rrdtool plugin stores the collected data in rrd database files, the "
@@ -633,19 +636,19 @@ msgid ""
 "values will result in a very high memory consumption in the temporary "
 "directory. This can render the device unusable!</strong>"
 msgstr ""
-"rrdtool插件,将收集数据以图表的形式储存在RRD数据库文件中。<br /><br /"
+"rrdtool 插件将收集数据以图表的形式储存在 RRD 数据库文件中。<br /><br /"
 "><strong>警告:错误的参数设置,将导致非常高的临时内存消耗。这可能会使设备无法"
 "使用!</strong>"
 
 msgid ""
 "The sensors plugin uses the Linux Sensors framework to gather environmental "
 "statistics."
-msgstr ""
+msgstr "sensors 插件使用 Linux Sensors 框架来收集环境统计信息。"
 
 msgid ""
 "The splash leases plugin uses libuci to collect statistics about splash "
 "leases."
-msgstr ""
+msgstr "splash leases 插件使用 libuci 来收集 splash leases 的统计信息。"
 
 msgid ""
 "The statistics package uses <a href=\"https://collectd.org/\">Collectd</a> "
@@ -659,23 +662,23 @@ msgstr ""
 msgid ""
 "The tcpconns plugin collects informations about open tcp connections on "
 "selected ports."
-msgstr "tcpconns插件,收集选定端口TCP连接信息。"
+msgstr "tcpconns 插件收集选定端口 TCP 连接信息。"
 
 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 ""
-"温感插件将会监控系统温度。数据主要取自 /sys/class/thermal/*/temp ('*' 表示温"
-"感设备的名字,比如 thermal_zone1) 。"
+"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 "unixsock插件,创建一个unix套接字可用于读取Collectd实例的收集信息。"
+msgstr "unixsock 插件创建一个 unix 套接字可用于读取 Collectd 实例的收集信息。"
 
 msgid "The uptime plugin collects statistics about the uptime of the system."
-msgstr ""
+msgstr "uptime 插件收集系统启动时间的统计信息。"
 
 msgid "Thermal"
 msgstr "温感"
@@ -684,19 +687,19 @@ msgid "Thermal Plugin Configuration"
 msgstr "温感插件配置"
 
 msgid "This plugin collects statistics about the processor context switches."
-msgstr ""
+msgstr "此插件收集处理器上下文切换的统计信息。"
 
 msgid "This plugin collects statistics about the processor frequency scaling."
-msgstr "此插件会获取 CPU 频率调整的数据。"
+msgstr "此插件收集处理器频率调整的统计信息。"
 
 msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
-msgstr "定义Collectd将监听哪个接口来传入连接收集数据。"
+msgstr "定义 Collectd 将监听哪个接口来传入连接收集数据。"
 
 msgid ""
 "This section defines to which servers the locally collected data is sent to."
-msgstr "定义本地收集数据被发送到哪台Collected服务器。"
+msgstr "定义本地收集数据被发送到哪台 Collected 服务器。"
 
 msgid "Try to lookup fully qualified hostname"
 msgstr "尝试解析主机全域名"
@@ -705,16 +708,16 @@ msgid "UPS"
 msgstr "UPS"
 
 msgid "UPS Plugin Configuration"
-msgstr "UPS插件配置"
+msgstr "UPS 插件配置"
 
 msgid "UPS name in NUT ups@host format"
-msgstr "UPS名使用NUT(Network UPS Tools)格式:ups@host"
+msgstr "UPS 名使用 NUT(Network UPS Tools)格式:ups@host"
 
 msgid "UnixSock"
 msgstr "UnixSock"
 
 msgid "Unixsock Plugin Configuration"
-msgstr "Unixsock插件配置"
+msgstr "Unixsock 插件配置"
 
 msgid "Uptime"
 msgstr "运行时间"
@@ -726,7 +729,7 @@ msgid "Use improved naming schema"
 msgstr "使用更高级的命名规则"
 
 msgid "Used PID file"
-msgstr "正在使用的PID文件"
+msgstr "正在使用的 PID 文件"
 
 msgid "User"
 msgstr "用户"
@@ -738,7 +741,7 @@ msgid "Wireless"
 msgstr "无线"
 
 msgid "Wireless iwinfo Plugin Configuration"
-msgstr "无线iwinfo插件配置"
+msgstr "无线 iwinfo 插件配置"
 
 msgid ""
 "You can install additional collectd-mod-* plugins to enable more statistics."
@@ -754,10 +757,10 @@ msgid "e.g. reject-with tcp-reset"
 msgstr "例如:eject-with tcp-reset"
 
 msgid "max. 16 chars"
-msgstr "最长16个字符"
+msgstr "最长 16 个字符"
 
 msgid "reduces rrd size"
-msgstr "减少rrd大小"
+msgstr "减少 rrd 大小"
 
 msgid "seconds; multiple separated by space"
 msgstr "秒数;多个使用空格分隔"
index 9245260b4c5981b296d42e2f58b6cd2fd0954394..ad5eb5b5840bab93b0de12046876a19528111191 100644 (file)
 #  rrdtool.pot
 #  generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
-"Content-Type: text/plain; charset=ASCII\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-10-29 15:39+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Language: zh_TW\n"
 "MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Gtranslator 2.91.7\n"
+"POT-Creation-Date: \n"
 
 #. %H: Wireless - Signal Noise Ratio
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1
 msgid "stat_dg_title_wireless__signal_noise"
-msgstr ""
+msgstr "無線訊號噪音"
 
 #. dBm
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:2
 msgid "stat_dg_label_wireless__signal_noise"
-msgstr ""
+msgstr "信噪比"
 
 #. Noise Level
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:3
 msgid "stat_ds_signal_noise"
-msgstr ""
+msgstr "訊號噪音"
 
 #. Signal Strength
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:4
 msgid "stat_ds_signal_power"
-msgstr ""
+msgstr "訊號強度"
 
 #. %H: Wireless - Signal Quality
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5
 msgid "stat_dg_title_wireless__signal_quality"
-msgstr ""
+msgstr "%H:無線 - 訊號質量"
 
 #. n
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6
 msgid "stat_dg_label_wireless__signal_quality"
-msgstr ""
+msgstr "n"
 
 #. Signal Quality
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7
 msgid "stat_ds_signal_quality"
-msgstr ""
+msgstr "訊號質量"
 
 #. %H: ICMP Roundtrip Times
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8
 msgid "stat_dg_title_ping"
-msgstr ""
+msgstr "%H:ICMP 往返時間"
 
 #. ms
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9
 msgid "stat_dg_label_ping"
-msgstr ""
+msgstr "響應"
 
 #. %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10
 msgid "stat_ds_ping"
-msgstr ""
+msgstr "%di"
 
 #. %H: Firewall - Processed Packets
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11
 msgid "stat_dg_title_iptables__ipt_packets"
-msgstr ""
+msgstr "%H:防火牆 - 已處理的資料包"
 
 #. Packets/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12
 msgid "stat_dg_label_iptables__ipt_packets"
-msgstr ""
+msgstr "包/s"
 
 #. Chain \"%di\"
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13
 msgid "stat_ds_ipt_packets"
-msgstr ""
+msgstr "鏈“%di”"
 
 #. %H: Netlink - Transfer on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14
 msgid "stat_dg_title_netlink__if_octets"
-msgstr ""
+msgstr "%H:Netlink - %pi 上的資料傳輸"
 
 #. Bytes/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15
 msgid "stat_dg_label_netlink__if_octets"
-msgstr ""
+msgstr "位元組/秒"
 
 #. Bytes (%ds)
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16
 msgid "stat_ds_if_octets"
-msgstr ""
+msgstr "位元組 (%ds)"
 
 #. %H: Netlink - Packets on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17
 msgid "stat_dg_title_netlink__if_packets"
-msgstr ""
+msgstr "%H:Netlink - %pi 的資料包"
 
 #. Packets/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18
 msgid "stat_dg_label_netlink__if_packets"
-msgstr ""
+msgstr "包/s"
 
 #. Processed (%ds)
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19
 msgid "stat_ds_if_packets"
-msgstr ""
+msgstr "已處理 (%ds)"
 
 #. Dropped   (%ds)
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20
 msgid "stat_ds_if_dropped"
-msgstr ""
+msgstr "丟棄 (%ds)"
 
 #. Errors    (%ds)
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21
 msgid "stat_ds_if_errors"
-msgstr ""
+msgstr "錯誤 (%ds)"
 
 #. %H: Netlink - Multicast on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22
 msgid "stat_dg_title_netlink__if_multicast"
-msgstr ""
+msgstr "%H:Netlink - %pi 上的多播"
 
 #. Packets/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23
 msgid "stat_dg_label_netlink__if_multicast"
-msgstr ""
+msgstr "包/s"
 
 #. Packets
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24
 msgid "stat_ds_if_multicast"
-msgstr ""
+msgstr "資料包"
 
 #. %H: Netlink - Collisions on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25
 msgid "stat_dg_title_netlink__if_collisions"
-msgstr ""
+msgstr "%H:Netlink - %pi 上的 Collisions"
 
 #. Collisions/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26
 msgid "stat_dg_label_netlink__if_collisions"
-msgstr ""
+msgstr "碰撞/s"
 
 #. Collisions
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27
 msgid "stat_ds_if_collisions"
-msgstr ""
+msgstr "碰撞"
 
 #. %H: Netlink - Errors on %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28
 msgid "stat_dg_title_netlink__if_tx_errors"
-msgstr ""
+msgstr "%H:Netlink - %pi 上發生的錯誤"
 
 #. Errors/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29
 msgid "stat_dg_label_netlink__if_tx_errors"
-msgstr ""
+msgstr "錯誤/秒"
 
 #. %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30
 msgid "stat_ds_if_tx_errors"
-msgstr ""
+msgstr "%di"
 
 #. %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31
 msgid "stat_ds_if_rx_errors"
-msgstr ""
+msgstr "%di"
 
 #. %H: Processes
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32
 msgid "stat_dg_title_processes"
-msgstr ""
+msgstr "%H:程序"
 
 #. Processes/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33
 msgid "stat_dg_label_processes"
-msgstr ""
+msgstr "程序/秒"
 
 #. %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34
 msgid "stat_ds_ps_state"
-msgstr ""
+msgstr "%di"
 
 #. %H: Process %pi - used cpu time
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35
 msgid "stat_dg_title_processes__ps_cputime"
-msgstr ""
+msgstr "%H:程序 %s - 佔用的 CPU 時間"
 
 #. Jiffies
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36
 msgid "stat_dg_label_processes__ps_cputime"
-msgstr ""
+msgstr "Jiffies"
 
 #. system
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37
 msgid "stat_ds_ps_cputime__syst"
-msgstr ""
+msgstr "系統"
 
 #. user
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38
 msgid "stat_ds_ps_cputime__user"
-msgstr ""
+msgstr "使用者"
 
 #. %H: Process %pi - threads and processes
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39
 msgid "stat_dg_title_processes__ps_count"
-msgstr ""
+msgstr "%H:程序 %pi - 程序與執行緒"
 
 #. Count
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40
 msgid "stat_dg_label_processes__ps_count"
-msgstr ""
+msgstr ""
 
 #. %ds
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41
 msgid "stat_ds_ps_count"
-msgstr ""
+msgstr "%ds"
 
 #. %H: Process %pi - page faults
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42
 msgid "stat_dg_title_processes__ps_pagefaults"
-msgstr ""
+msgstr "%H:程序 %pi - 分頁錯誤"
 
 #. Pagefaults
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43
 msgid "stat_dg_label_processes__ps_pagefaults"
-msgstr ""
+msgstr "分頁錯誤"
 
 #. page faults
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44
 msgid "stat_ds_ps_pagefaults"
-msgstr ""
+msgstr "分頁錯誤"
 
 #. %H: Process %pi - virtual memory size
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45
 msgid "stat_dg_title_processes__ps_rss"
-msgstr ""
+msgstr "%H:程序 %pi - 虛擬記憶體大小"
 
 #. Bytes
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46
 msgid "stat_dg_label_processes__ps_rss"
-msgstr ""
+msgstr "位元組"
 
 #. virtual memory
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47
 msgid "stat_ds_ps_rss"
-msgstr ""
+msgstr "虛擬記憶體"
 
 #. %H: Usage on Processor #%pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48
 msgid "stat_dg_title_cpu"
-msgstr ""
+msgstr "%H:對處理器 #%pi 的佔用"
 
 #. %
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49
 msgid "stat_dg_label_cpu"
-msgstr ""
+msgstr "%"
 
 #. %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50
 msgid "stat_ds_cpu"
-msgstr ""
+msgstr "%di"
 
 #. %H: Transfer on %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51
 msgid "stat_dg_title_interface__if_octets"
-msgstr ""
+msgstr "%H:%di 上的資料傳輸情況"
 
 #. Bytes/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52
 msgid "stat_dg_label_interface__if_octets"
-msgstr ""
+msgstr "位元組/秒"
 
 #. %H: Packets on %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53
 msgid "stat_dg_title_interface__if_packets"
-msgstr ""
+msgstr "%H:%di 上的資料包"
 
 #. Packets/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54
 msgid "stat_dg_label_interface__if_packets"
-msgstr ""
+msgstr "包/s"
 
 #. %H: TCP-Connections to Port %pi
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55
 msgid "stat_dg_title_tcpconns"
-msgstr ""
+msgstr "%H:到埠 %pi 的 TCP 連線"
 
 #. Connections/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56
 msgid "stat_dg_label_tcpconns"
-msgstr ""
+msgstr "連線/秒"
 
 #. %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57
 msgid "stat_ds_tcp_connections"
-msgstr ""
+msgstr "%di"
 
 #. %H: Disk Space Usage on %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58
 msgid "stat_dg_title_df"
-msgstr ""
+msgstr "%H:%di 上的磁碟佔用情況"
 
 #. Bytes
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59
 msgid "stat_dg_label_df"
-msgstr ""
+msgstr "位元組"
 
 #. %ds
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60
 msgid "stat_ds_df__free"
-msgstr ""
+msgstr "%ds"
 
 #. %ds
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61
 msgid "stat_ds_df__used"
-msgstr ""
+msgstr "%ds"
 
 #. %H: Interrupts
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62
 msgid "stat_dg_title_irq"
-msgstr ""
+msgstr "%H:中斷"
 
 #. Issues/s
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63
 msgid "stat_dg_label_irq"
-msgstr ""
+msgstr "中斷/s"
 
 #. IRQ %di
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64
 msgid "stat_ds_irq"
-msgstr ""
+msgstr "IRQ %di"
 
 #. %H: System Load
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65
 msgid "stat_dg_title_load"
-msgstr ""
+msgstr "%H:系統負載"
 
 #. Load
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66
 msgid "stat_dg_label_load"
-msgstr ""
+msgstr "負載"
 
 #. 1 min
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67
 msgid "stat_ds_load__shortterm"
-msgstr ""
+msgstr "1 分鐘"
 
 #. 5 min
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68
 msgid "stat_ds_load__midterm"
-msgstr ""
+msgstr "5 分鐘"
 
 #. 15 min
 #: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69
 msgid "stat_ds_load__longterm"
-msgstr ""
+msgstr "15 分鐘"
index 36e42c1d097d4ad6f886f361fc4a4dc17e1069de..64f141dd44f645bb393a52a98c99e39a6902d71f 100644 (file)
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 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"
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-06-10 03:40+0200\n"
+"PO-Revision-Date: 2017-10-29 15:50+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\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"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 
 msgid "APC UPS"
-msgstr ""
+msgstr "APC UPS"
 
 msgid "APCUPS Plugin Configuration"
-msgstr ""
+msgstr "APCUPS 外掛配置"
 
 msgid "Action (target)"
-msgstr ""
+msgstr "動作(目標)"
 
 msgid "Add command for reading values"
-msgstr ""
+msgstr "新增命令讀取資料"
 
 msgid "Add matching rule"
-msgstr ""
+msgstr "新增匹配規則"
 
 msgid "Add multiple hosts separated by space."
-msgstr ""
+msgstr "使用空格分隔多個主機"
 
 msgid "Add notification command"
-msgstr ""
+msgstr "新增通知命令"
 
 msgid "Aggregate number of connected users"
-msgstr ""
+msgstr "連線使用者總數"
 
 msgid "Base Directory"
-msgstr ""
+msgstr "基本目錄"
 
 msgid "Basic monitoring"
-msgstr ""
+msgstr "基本監控"
 
 msgid "CPU Context Switches Plugin Configuration"
-msgstr ""
+msgstr "CPU Context Switches 外掛配置"
 
 msgid "CPU Frequency"
-msgstr ""
+msgstr "CPU 頻率"
 
 msgid "CPU Frequency Plugin Configuration"
-msgstr ""
+msgstr "CPU 頻率外掛配置"
 
 msgid "CPU Plugin Configuration"
-msgstr ""
+msgstr "CPU 外掛配置"
 
 msgid "CSV Output"
-msgstr ""
+msgstr "CSV 輸出"
 
 msgid "CSV Plugin Configuration"
-msgstr ""
+msgstr "CSV 外掛配置"
 
 msgid "Cache collected data for"
-msgstr ""
+msgstr "收集快取資料"
 
 msgid "Cache flush interval"
-msgstr ""
+msgstr "快取清空間隙"
 
 msgid "Chain"
-msgstr ""
+msgstr ""
 
 msgid "CollectLinks"
-msgstr ""
+msgstr "收集連結"
 
 msgid "CollectRoutes"
-msgstr ""
+msgstr "收集路由"
 
 msgid "CollectTopology"
-msgstr ""
+msgstr "收集拓撲"
 
 msgid "Collectd Settings"
-msgstr ""
+msgstr "Collectd 設定"
 
 msgid ""
 "Collectd is a small daemon for collecting data from various sources through "
 "different plugins. On this page you can change general settings for the "
 "collectd daemon."
 msgstr ""
+"Collectd 是一個通過不同外掛用於收集各種源資料的小型守護程式。在此頁面中,您可"
+"以更改 Collectd 守護程序常規設定。"
 
 msgid "Conntrack"
-msgstr ""
+msgstr "Conntrack"
 
 msgid "Conntrack Plugin Configuration"
-msgstr ""
+msgstr "Conntrack 外掛配置"
 
 msgid "Context Switches"
-msgstr ""
+msgstr "上下文切換"
 
 msgid "DF Plugin Configuration"
-msgstr ""
+msgstr "DF 外掛配置"
 
 msgid "DNS"
-msgstr ""
+msgstr "DNS"
 
 msgid "DNS Plugin Configuration"
-msgstr ""
+msgstr "DNS 外掛配置"
 
 msgid "Data collection interval"
-msgstr ""
+msgstr "資料收集間隙"
 
 msgid "Datasets definition file"
-msgstr ""
+msgstr "資料集定義檔案"
 
 msgid "Destination ip range"
-msgstr ""
+msgstr "目標 IP 區間"
 
 msgid "Directory for collectd plugins"
-msgstr ""
+msgstr "Collectd 外掛目錄"
 
 msgid "Directory for sub-configurations"
-msgstr ""
+msgstr "子配置目錄"
 
 msgid "Disk Plugin Configuration"
-msgstr ""
+msgstr "Disk 外掛配置"
 
 msgid "Disk Space Usage"
-msgstr ""
+msgstr "磁碟空間使用情況"
 
 msgid "Disk Usage"
-msgstr ""
+msgstr "磁碟使用情況"
 
 msgid "Display Host »"
-msgstr ""
+msgstr "顯示主機"
 
 msgid "Display timespan »"
-msgstr ""
+msgstr "顯示時間段"
 
 msgid "E-Mail Plugin Configuration"
-msgstr ""
+msgstr "E-Mail 外掛配置"
 
 msgid "Email"
-msgstr ""
+msgstr "電子郵件"
 
 msgid "Empty value = monitor all"
-msgstr ""
+msgstr "留空 = 監控所有"
 
 msgid "Enable this plugin"
-msgstr ""
+msgstr "啟用該外掛"
 
 msgid "Entropy"
-msgstr ""
+msgstr ""
 
 msgid "Entropy Plugin Configuration"
-msgstr ""
+msgstr "熵值外掛配置"
 
 msgid "Exec"
-msgstr ""
+msgstr "Exec"
 
 msgid "Exec Plugin Configuration"
-msgstr ""
+msgstr "Exec 外掛配置"
 
 msgid "Filter class monitoring"
-msgstr ""
+msgstr "Filter 類監測"
 
 msgid "Firewall"
-msgstr ""
+msgstr "防火牆"
 
 msgid "Flush cache after"
-msgstr ""
+msgstr "清空快取後"
 
 msgid "Forwarding between listen and server addresses"
-msgstr ""
+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 ""
+msgstr "圖表"
 
 msgid "Group"
-msgstr ""
+msgstr ""
 
 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 ""
+"在這裡,您可以定義外部命令,Collectd 將啟動命令來獲取某些值,將獲取的值從標準"
+"輸出埠輸出。"
 
 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 ""
+"在這裡,您可以定義外部命令,當 Collectd 達到一定閾值時,將啟動命令。閥值將會"
+"作為命令的標準輸入。"
 
 msgid ""
 "Here you can define various criteria by which the monitored iptables rules "
 "are selected."
-msgstr ""
+msgstr "在這裡,您可以定義各種監控 iptables 規則臨界值。"
 
 msgid "Hold Ctrl to select multiple items or to deselect entries."
-msgstr ""
+msgstr "按住 Ctrl 鍵來選擇或取消選擇多個專案。"
 
 msgid "Host"
-msgstr ""
+msgstr "主機"
 
 msgid "Hostname"
-msgstr ""
+msgstr "主機名"
 
 msgid "IP or hostname where to get the txtinfo output from"
-msgstr ""
+msgstr "獲取 txtinfo 輸出的 IP 位址或主機名"
 
 msgid "IRQ Plugin Configuration"
-msgstr ""
+msgstr "IRQ 外掛配置"
 
 msgid "Ignore source addresses"
-msgstr ""
+msgstr "忽略源位址"
 
 msgid "Incoming interface"
-msgstr ""
+msgstr "入介面"
 
 msgid "Interface Plugin Configuration"
-msgstr ""
+msgstr "Interface 外掛配置"
 
 msgid "Interfaces"
-msgstr ""
+msgstr "Interfaces"
 
 msgid "Interrupts"
-msgstr ""
+msgstr "中斷"
 
 msgid "Interval for pings"
-msgstr ""
+msgstr "ping 間隙"
 
 msgid "Iptables Plugin Configuration"
-msgstr ""
+msgstr "Iptables 外掛配置"
 
 msgid "Leave unselected to automatically determine interfaces to monitor."
-msgstr ""
+msgstr "自動保留對未選中介面的監控。"
 
 msgid "Listen host"
-msgstr ""
+msgstr "監聽主機"
 
 msgid "Listen port"
-msgstr ""
+msgstr "監聽埠"
 
 msgid "Listener interfaces"
-msgstr ""
+msgstr "監聽介面"
 
 msgid "Load Plugin Configuration"
-msgstr ""
+msgstr "Load 外掛配置"
 
 msgid ""
 "Max values for a period can be used instead of averages when not using 'only "
 "average RRAs'"
-msgstr ""
+msgstr "在不使用“僅平均 RRA”的情況下,可以使用一段時間的最大值而不是平均值"
 
 msgid "Maximum allowed connections"
-msgstr ""
+msgstr "最大允許連線數"
 
 msgid "Memory"
-msgstr ""
+msgstr "記憶體"
 
 msgid "Memory Plugin Configuration"
-msgstr ""
+msgstr "記憶體外掛配置"
 
 msgid "Monitor all except specified"
-msgstr ""
+msgstr "監測所有(除特別註明外)"
 
 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 ""
+msgstr "監測裝置"
 
 msgid "Monitor disks and partitions"
-msgstr ""
+msgstr "監測磁碟和分割槽"
 
 msgid "Monitor filesystem types"
-msgstr ""
+msgstr "監測檔案系統型別"
 
 msgid "Monitor host"
-msgstr ""
+msgstr "監測主機"
 
 msgid "Monitor hosts"
-msgstr ""
+msgstr "監測主機"
 
 msgid "Monitor interfaces"
-msgstr ""
+msgstr "監測介面"
 
 msgid "Monitor interrupts"
-msgstr ""
+msgstr "監測中斷"
 
 msgid "Monitor local ports"
-msgstr ""
+msgstr "監測本地埠"
 
 msgid "Monitor mount points"
-msgstr ""
+msgstr "監測掛載點"
 
 msgid "Monitor processes"
-msgstr ""
+msgstr "監測程序"
 
 msgid "Monitor remote ports"
-msgstr ""
+msgstr "監測遠端埠"
 
 msgid "Name of the rule"
-msgstr ""
+msgstr "規則名"
 
 msgid "Netlink"
-msgstr ""
+msgstr "Netlink"
 
 msgid "Netlink Plugin Configuration"
-msgstr ""
+msgstr "Netlink 外掛配置"
 
 msgid "Network"
-msgstr ""
+msgstr "Network"
 
 msgid "Network Plugin Configuration"
-msgstr ""
+msgstr "Network 外掛配置"
 
 msgid "Network plugins"
-msgstr ""
+msgstr "Network 外掛"
 
 msgid "Network protocol"
-msgstr ""
+msgstr "Network 協議"
 
 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 "收集程式使用執行緒數"
 
 msgid "OLSRd"
-msgstr ""
+msgstr "OLSRd"
 
 msgid "OLSRd Plugin Configuration"
-msgstr ""
+msgstr "OLSRd 外掛配置"
 
 msgid "Only create average RRAs"
-msgstr ""
+msgstr "僅建立平均 RRAs"
 
 msgid "OpenVPN"
-msgstr ""
+msgstr "OpenVPN"
 
 msgid "OpenVPN Plugin Configuration"
-msgstr ""
+msgstr "OpenVPN 外掛配置"
 
 msgid "OpenVPN status files"
-msgstr ""
+msgstr "OpenVPN 狀態檔案"
 
 msgid "Options"
-msgstr ""
+msgstr "選項"
 
 msgid "Outgoing interface"
-msgstr ""
+msgstr "出介面"
 
 msgid "Output plugins"
-msgstr ""
+msgstr "Output 外掛"
 
 msgid "Ping"
-msgstr ""
+msgstr "Ping"
 
 msgid "Ping Plugin Configuration"
-msgstr ""
+msgstr "Ping 外掛配置"
 
 msgid "Port"
-msgstr ""
+msgstr ""
 
 msgid "Port for apcupsd communication"
-msgstr ""
+msgstr "apcupsd 通訊埠"
 
 msgid "Processes"
-msgstr ""
+msgstr "程序"
 
 msgid "Processes Plugin Configuration"
-msgstr ""
+msgstr "程序外掛配置"
 
 msgid "Processes to monitor separated by space"
-msgstr ""
+msgstr "過程監控,用空格隔開"
 
 msgid "Processor"
-msgstr ""
+msgstr "處理器"
 
 msgid "Qdisc monitoring"
-msgstr ""
+msgstr "Qdisc 監測"
 
 msgid "RRD XFiles Factor"
-msgstr ""
+msgstr "RRD XFiles 因子"
 
 msgid "RRD heart beat interval"
-msgstr ""
+msgstr "RRD 心跳間隙"
 
 msgid "RRD step interval"
-msgstr ""
+msgstr "RRD 區間間隙"
 
 msgid "RRDTool"
-msgstr ""
+msgstr "RRDTool"
 
 msgid "RRDTool Plugin Configuration"
-msgstr ""
+msgstr "RRDTool 外掛配置"
 
 msgid "Rows per RRA"
-msgstr ""
+msgstr "行/RRA"
 
 msgid "Script"
-msgstr ""
+msgstr "指令碼"
 
 msgid "Seconds"
-msgstr ""
+msgstr ""
 
 msgid "Sensor list"
-msgstr ""
+msgstr "感測器列表"
 
 msgid "Sensors"
-msgstr ""
+msgstr "感測器"
 
 msgid "Sensors Plugin Configuration"
-msgstr ""
+msgstr "Sensors 外掛配置"
 
 msgid "Server host"
-msgstr ""
+msgstr "伺服器主機"
 
 msgid "Server port"
-msgstr ""
+msgstr "伺服器埠"
 
 msgid "Setup"
-msgstr ""
+msgstr "設定"
 
 msgid "Shaping class monitoring"
-msgstr ""
+msgstr "整形類監控"
 
 msgid "Show max values instead of averages"
-msgstr ""
+msgstr "顯示最大值而不是平均值"
 
 msgid "Socket file"
-msgstr ""
+msgstr "套接字檔案"
 
 msgid "Socket group"
-msgstr ""
+msgstr "套接字組"
 
 msgid "Socket permissions"
-msgstr ""
+msgstr "套接字許可權"
 
 msgid "Source ip range"
-msgstr ""
+msgstr "源 IP 區間"
 
 msgid "Specifies what information to collect about links."
-msgstr ""
+msgstr "收集指定連結相關資訊。"
 
 msgid "Specifies what information to collect about routes."
-msgstr ""
+msgstr "收集指定路由相關資訊。"
 
 msgid "Specifies what information to collect about the global topology."
-msgstr ""
+msgstr "收集指定拓撲相關資訊。"
 
 msgid "Splash Leases"
-msgstr ""
+msgstr "Splash Leases"
 
 msgid "Splash Leases Plugin Configuration"
-msgstr ""
+msgstr "Splash Leases 外掛配置"
 
 msgid "Statistics"
-msgstr ""
+msgstr "統計"
 
 msgid "Storage directory"
-msgstr ""
+msgstr "儲存目錄"
 
 msgid "Storage directory for the csv files"
-msgstr ""
+msgstr "csv 儲存目錄"
 
 msgid "Store data values as rates instead of absolute values"
-msgstr ""
+msgstr "儲存資料值變化量而不是絕對值"
 
 msgid "Stored timespans"
-msgstr ""
+msgstr "儲存時間跨度"
 
 msgid "System Load"
-msgstr ""
+msgstr "系統載入"
 
 msgid "TCP Connections"
-msgstr ""
+msgstr "TCP 連線數"
 
 msgid "TCPConns Plugin Configuration"
-msgstr ""
+msgstr "TCPConns 外掛配置"
 
 msgid "TTL for network packets"
-msgstr ""
+msgstr "網路包 TTL"
 
 msgid "TTL for ping packets"
-msgstr ""
+msgstr "ping 包 TTL"
 
 msgid "Table"
-msgstr ""
+msgstr ""
 
 msgid "The APCUPS plugin collects statistics about the APC UPS."
-msgstr ""
+msgstr "APCUPS 外掛收集 APC UPS 的統計資訊。"
 
 msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
-msgstr ""
+msgstr "NUT 外掛讀取 UPS 資訊。"
 
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
-msgstr ""
+msgstr "OLSRd 外掛通過 txtinfo 獲取 meshed 網路資訊。"
 
 msgid ""
 "The OpenVPN plugin gathers information about the current vpn connection "
 "status."
-msgstr ""
+msgstr "OpenVPN 外掛可以獲取 VPN 連線當前狀態"
 
 msgid ""
 "The conntrack plugin collects statistics about the number of tracked "
 "connections."
-msgstr ""
+msgstr "conntrack 外掛獲取連線數資訊。"
 
 msgid "The cpu plugin collects basic statistics about the processor usage."
-msgstr ""
+msgstr "cpu 外掛獲取處理器相關資訊。"
 
 msgid ""
 "The csv plugin stores collected data in csv file format for further "
 "processing by external programs."
-msgstr ""
+msgstr "csv外掛用於儲存資料,以方便其他程式處理資料。"
 
 msgid ""
 "The df plugin collects statistics about the disk space usage on different "
 "devices, mount points or filesystem types."
-msgstr ""
+msgstr "df 外掛收集磁碟空間使用情況、掛載點及檔案系統相關資訊。"
 
 msgid ""
 "The disk plugin collects detailled usage statistics for selected partitions "
 "or whole disks."
-msgstr ""
+msgstr "disk 外掛收集磁碟分割槽使用情況及相關資訊。"
 
 msgid ""
 "The dns plugin collects detailled statistics about dns related traffic on "
 "selected interfaces."
-msgstr ""
+msgstr "dns 外掛收集 dns 資料流相關資訊。"
 
 msgid ""
 "The email plugin creates a unix socket which can be used to transmit email-"
@@ -548,44 +565,50 @@ msgid ""
 "to be used in conjunction with Mail::SpamAssasin::Plugin::Collectd but can "
 "be used in other ways as well."
 msgstr ""
+"郵件外掛建立一個 unix 套接字用於為 Collectd 守護程序傳送統計資訊到電子郵件系"
+"統。這個外掛主要目的是結合使用 Mail::SpamAssasin::Pulgin::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 ""
+"exec 外掛用於當某些監控值已到達閾值時,啟動外部命令讀值或通知外部程式。"
 
 msgid ""
 "The interface plugin collects traffic statistics on selected interfaces."
-msgstr ""
+msgstr "Interface 外掛用於收集選定介面的資料包的統計資訊。"
 
 msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
 "informations about processed bytes and packets per rule."
-msgstr ""
+msgstr "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 ""
+"irq 外掛用於監控選定中斷的每秒鐘產生的中斷數。如果沒有中斷被選中,則表示對所"
+"有中斷進行監測。"
 
 msgid ""
 "The iwinfo plugin collects statistics about wireless signal strength, noise "
 "and quality."
-msgstr ""
+msgstr "iwinfo 外掛收集無線訊號強度、噪聲和質量的統計資訊。"
 
 msgid "The load plugin collects statistics about the general system load."
-msgstr ""
+msgstr "load 外掛收集常規系統載入統計資訊。"
 
 msgid "The memory plugin collects statistics about the memory usage."
-msgstr ""
+msgstr "memory 外掛收集關於記憶體使用情況的統計資訊。"
 
 msgid ""
 "The netlink plugin collects extended informations like qdisc-, class- and "
 "filter-statistics for selected interfaces."
-msgstr ""
+msgstr "netlink 外掛收集為選定介面 qdisc-、class- 和 filter- 的擴充套件資料。"
 
 msgid ""
 "The network plugin provides network based communication between different "
@@ -593,16 +616,19 @@ 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 ""
+"network 外掛提供了基於網路的不同 Collectd 例項。Collectd 可以工作在客戶端和服"
+"務器兩個模式。在客戶端模式下收集本地資訊,然後轉移到一個 Collectd 伺服器例項"
+"中,在伺服器模式將從其他主機收集資訊。"
 
 msgid ""
 "The ping plugin will send icmp echo replies to selected hosts and measure "
 "the roundtrip time for each host."
-msgstr ""
+msgstr "ping 外掛將傳送 icmp echo replies 到選定主機來測量每臺主機的響應時間。"
 
 msgid ""
 "The processes plugin collects informations like cpu time, page faults and "
 "memory usage of selected processes."
-msgstr ""
+msgstr "processes 外掛收集選定程序的 cpu 時間、頁面錯誤和記憶體使用資訊。"
 
 msgid ""
 "The rrdtool plugin stores the collected data in rrd database files, the "
@@ -610,126 +636,152 @@ msgid ""
 "values will result in a very high memory consumption in the temporary "
 "directory. This can render the device unusable!</strong>"
 msgstr ""
+"rrdtool 外掛將收集資料以圖表的形式儲存在 RRD 資料庫檔案中。<br /><br /"
+"><strong>警告:錯誤的引數設定,將導致非常高的臨時記憶體消耗。這可能會使裝置無"
+"法使用!</strong>"
 
 msgid ""
 "The sensors plugin uses the Linux Sensors framework to gather environmental "
 "statistics."
-msgstr ""
+msgstr "sensors 外掛使用 Linux Sensors 框架來收集環境統計資訊。"
 
 msgid ""
 "The splash leases plugin uses libuci to collect statistics about splash "
 "leases."
-msgstr ""
+msgstr "splash leases 外掛使用 libuci 來收集 splash leases 的統計資訊。"
 
 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 ""
+"Statistics 軟體包使用 <a href=\"https://collectd.org/\">Collectd</a> 來收集數"
+"據,並用 <a href=\"http://oss.oetiker.ch/rrdtool/\">RRDtool</a> 生成統計圖"
+"表。"
 
 msgid ""
 "The tcpconns plugin collects informations about open tcp connections on "
 "selected ports."
-msgstr ""
+msgstr "tcpconns 外掛收集選定埠 TCP 連線資訊。"
 
 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 ""
+msgstr "unixsock 外掛建立一個 unix 套接字可用於讀取 Collectd 例項的收集資訊。"
 
 msgid "The uptime plugin collects statistics about the uptime of the system."
-msgstr ""
+msgstr "uptime 外掛收集系統啟動時間的統計資訊。"
 
 msgid "Thermal"
-msgstr ""
+msgstr "溫感"
 
 msgid "Thermal Plugin Configuration"
-msgstr ""
+msgstr "溫感外掛配置"
 
 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 ""
+msgstr "定義 Collectd 將監聽哪個介面來傳入連線收集資料。"
 
 msgid ""
 "This section defines to which servers the locally collected data is sent to."
-msgstr ""
+msgstr "定義本地收集資料被髮送到哪臺 Collected 伺服器。"
 
 msgid "Try to lookup fully qualified hostname"
-msgstr ""
+msgstr "嘗試解析主機全域名"
 
 msgid "UPS"
-msgstr ""
+msgstr "UPS"
 
 msgid "UPS Plugin Configuration"
-msgstr ""
+msgstr "UPS 外掛配置"
 
 msgid "UPS name in NUT ups@host format"
-msgstr ""
+msgstr "UPS 名使用 NUT(Network UPS Tools)格式:ups@host"
 
 msgid "UnixSock"
-msgstr ""
+msgstr "UnixSock"
 
 msgid "Unixsock Plugin Configuration"
-msgstr ""
+msgstr "Unixsock 外掛配置"
 
 msgid "Uptime"
-msgstr ""
+msgstr "執行時間"
 
 msgid "Uptime Plugin Configuration"
-msgstr ""
+msgstr "執行時間外掛配置"
 
 msgid "Use improved naming schema"
-msgstr ""
+msgstr "使用更高階的命名規則"
 
 msgid "Used PID file"
-msgstr ""
+msgstr "正在使用的 PID 檔案"
 
 msgid "User"
-msgstr ""
+msgstr "使用者"
 
 msgid "Verbose monitoring"
-msgstr ""
+msgstr "詳細監測"
 
 msgid "Wireless"
-msgstr ""
+msgstr "無線"
 
 msgid "Wireless iwinfo Plugin Configuration"
-msgstr ""
+msgstr "無線 iwinfo 外掛配置"
 
 msgid ""
 "You can install additional collectd-mod-* plugins to enable more statistics."
-msgstr ""
+msgstr "您可以安裝更多的 collectd-mod-* 外掛以獲得更多的統計資料。"
 
 msgid "e.g. br-ff"
-msgstr ""
+msgstr "例如:br-ff"
 
 msgid "e.g. br-lan"
-msgstr ""
+msgstr "例如:br-lan"
 
 msgid "e.g. reject-with tcp-reset"
-msgstr ""
+msgstr "例如:eject-with tcp-reset"
 
 msgid "max. 16 chars"
-msgstr ""
+msgstr "最長 16 個字元"
 
 msgid "reduces rrd size"
-msgstr ""
+msgstr "減少 rrd 大小"
 
 msgid "seconds; multiple separated by space"
-msgstr ""
+msgstr "秒數;多個使用空格分隔"
 
 msgid "server interfaces"
-msgstr ""
+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工具</a>來渲染圖表,用"
+#~ "於收集資料。"
+
+#~ msgid "group name"
+#~ msgstr "群名稱"
index 9dd34915e07b80c660cc3d859a85fadfeb7b2b44..f4dba62591dfc4b056680b153c66fea700bb2126 100644 (file)
@@ -1,23 +1,26 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2013-10-08 14:06+0200\n"
-"PO-Revision-Date: 2014-06-15 04:57+0200\n"
-"Last-Translator: phantasm131 <phantasm131@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-10-29 15:56+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "Alternative download speed"
 msgstr "临时下载限速"
 
 msgid "Alternative speed enabled"
-msgstr "启用临时限速"
+msgstr "临时限速已启用"
 
 msgid "Alternative speed time begin"
 msgstr "计划限速始于"
@@ -29,7 +32,7 @@ msgid "Alternative speed time end"
 msgstr "计划限速止于"
 
 msgid "Alternative speed timing enabled"
-msgstr "启用计划限速"
+msgstr "计划限速已启用"
 
 msgid "Alternative upload speed"
 msgstr "临时上传速度"
@@ -41,13 +44,13 @@ msgid "Bandwidth settings"
 msgstr "带宽配置"
 
 msgid "Binding address IPv4"
-msgstr "绑定IPv4地址"
+msgstr "绑定 IPv4 地址"
 
 msgid "Binding address IPv6"
-msgstr "绑定IPv6地址"
+msgstr "绑定 IPv6 地址"
 
 msgid "Block list enabled"
-msgstr "å\90¯ç\94¨é\98»æ­¢å\88\97表"
+msgstr "é\98»æ­¢å\88\97表已å\90¯ç\94¨"
 
 msgid "Blocklist URL"
 msgstr "URL阻止清单"
@@ -62,7 +65,7 @@ msgid "Config file directory"
 msgstr "配置文件的目录"
 
 msgid "DHT enabled"
-msgstr "启用DHT"
+msgstr "启用 DHT"
 
 msgid "Debug"
 msgstr "调试"
@@ -71,7 +74,7 @@ msgid "Download directory"
 msgstr "下载目录"
 
 msgid "Download queue enabled"
-msgstr "启用下载队列"
+msgstr "下载队列已启用"
 
 msgid "Download queue size"
 msgstr "下载队列大小"
@@ -80,7 +83,7 @@ msgid "Enable watch directory"
 msgstr "启用种子轮询目录"
 
 msgid "Enabled"
-msgstr "启用"
+msgstr "å·²å\90¯ç\94¨"
 
 msgid "Encryption"
 msgstr "加密"
@@ -101,7 +104,7 @@ msgid "Full"
 msgstr "全分配"
 
 msgid "Global peer limit"
-msgstr "全局Peer限制"
+msgstr "全局 Peer 限制"
 
 msgid "Global settings"
 msgstr "全局设置"
@@ -110,22 +113,22 @@ msgid "Idle seeding limit"
 msgstr "空闲做种限时"
 
 msgid "Idle seeding limit enabled"
-msgstr "启用空闲做种时间"
+msgstr "空闲做种时间已启用"
 
 msgid "Incomplete directory"
 msgstr "未完成目录"
 
 msgid "Incomplete directory enabled"
-msgstr "启用未完成目录"
+msgstr "未完成目录已启用"
 
 msgid "Info"
 msgstr "信息"
 
 msgid "LPD enabled"
-msgstr "启用LPD"
+msgstr "LPD 已启用"
 
 msgid "Lazy bitfield enabled"
-msgstr "启用位段延迟"
+msgstr "位段延迟已启用"
 
 msgid "Message level"
 msgstr "消息级别"
@@ -140,55 +143,57 @@ 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 "生效日期是对应日期的算术加和值。对应关系:周日-1、周一-2、周二-4、周三-8、周四-16、周五-32、周六-64。"
+msgstr ""
+"生效日期是对应日期的算术加和值。对应关系:周日-1、周一-2、周二-4、周三-8、周"
+"四-16、周五-32、周六-64。"
 
 msgid "Off"
 msgstr "关闭"
 
 msgid "Open Web Interface"
-msgstr "Web管理界面"
+msgstr "打开 Web 管理界面"
 
 msgid "PEX enabled"
-msgstr "启用PEX"
+msgstr "PEX 已启用"
 
 msgid "Peer Port settings"
-msgstr "Peer端口设置"
+msgstr "Peer 端口设置"
 
 msgid "Peer congestion algorithm"
-msgstr "Peer拥塞算法"
+msgstr "Peer 拥塞算法"
 
 msgid "Peer limit per torrent"
-msgstr "每个种子Peer限制数"
+msgstr "每个种子 Peer 限制数"
 
 msgid "Peer port"
-msgstr "Peer端口"
+msgstr "Peer 端口"
 
 msgid "Peer port random high"
-msgstr "Peer随机端口最大值"
+msgstr "Peer 随机端口最大值"
 
 msgid "Peer port random low"
-msgstr "Peer随机端口最小值"
+msgstr "Peer 随机端口最小值"
 
 msgid "Peer port random on start"
-msgstr "Peer端口随机"
+msgstr "Peer 端口随机"
 
 msgid "Peer settings"
-msgstr "Peer设置"
+msgstr "Peer 设置"
 
 msgid "Peer socket tos"
-msgstr "Peer套接字tos值"
+msgstr "Peer 套接字 tos 值"
 
 msgid "Port forwarding enabled"
-msgstr "启用端口转发"
+msgstr "端口转发已启用"
 
 msgid "Preferred"
 msgstr "优先"
 
 msgid "Prefetch enabled"
-msgstr "启用预取缓存"
+msgstr "预取缓存已启用"
 
 msgid "Queue stalled enabled"
-msgstr "启用队列暂停"
+msgstr "队列暂停已启用"
 
 msgid "Queue stalled minutes"
 msgstr "队列暂停分钟"
@@ -200,37 +205,37 @@ msgid "RPC URL"
 msgstr "RPC URL"
 
 msgid "RPC authentication required"
-msgstr "PRC授权验证"
+msgstr "RPC 授权验证"
 
 msgid "RPC bind address"
-msgstr "RPC绑定地址"
+msgstr "RPC 绑定地址"
 
 msgid "RPC enabled"
-msgstr "启用PRC"
+msgstr "RPC 已启用"
 
 msgid "RPC password"
-msgstr "RPC密码"
+msgstr "RPC 密码"
 
 msgid "RPC port"
-msgstr "RPC端口"
+msgstr "RPC 端口"
 
 msgid "RPC settings"
-msgstr "RPC配置"
+msgstr "RPC 配置"
 
 msgid "RPC username"
-msgstr "RPC用户名"
+msgstr "RPC 用户名"
 
 msgid "RPC whitelist"
-msgstr "RPC白名单"
+msgstr "RPC 白名单"
 
 msgid "RPC whitelist enabled"
-msgstr "启用RPC白名单"
+msgstr "RPC 白名单已启用"
 
 msgid "Ratio limit"
 msgstr "分享率限值"
 
 msgid "Ratio limit enabled"
-msgstr "å\90¯ç\94¨å\88\86享ç\8e\87é\99\90å\88"
+msgstr "å\88\86享ç\8e\87é\99\90å\88¶å·²å\90¯ç\94¨"
 
 msgid "Rename partial files"
 msgstr "重命名未完成文件"
@@ -242,16 +247,16 @@ msgid "Scheduling"
 msgstr "计划任务"
 
 msgid "Scrape paused torrents enabled"
-msgstr "忽ç\95¥æ\9a\82å\81\9cç\9a\84ç§\8då­\90"
+msgstr "忽ç\95¥æ\9a\82å\81\9cç§\8då­\90å·²å\90¯ç\94¨"
 
 msgid "Script torrent done enabled"
-msgstr "种子完成时运行脚本"
+msgstr "种子完成时运行脚本已启用"
 
 msgid "Script torrent done filename"
 msgstr "脚本文件名"
 
 msgid "Seed queue enabled"
-msgstr "å\90¯ç\94¨å\81\9aç§\8dé\98\9få\88\97"
+msgstr "å\81\9aç§\8dé\98\9få\88\97å·²å\90¯ç\94¨"
 
 msgid "Seed queue size"
 msgstr "做种队列大小"
@@ -260,13 +265,13 @@ msgid "Speed limit down"
 msgstr "下载限速"
 
 msgid "Speed limit down enabled"
-msgstr "启用下载限速"
+msgstr "下载限速已启用"
 
 msgid "Speed limit up"
 msgstr "上传限速"
 
 msgid "Speed limit up enabled"
-msgstr "启用上传限速"
+msgstr "上传限速已启用"
 
 msgid "Transmission"
 msgstr "Transmission"
@@ -274,7 +279,7 @@ msgstr "Transmission"
 msgid ""
 "Transmission daemon is a simple bittorrent client, here you can configure "
 "the settings."
-msgstr "Transmission是个简单易用的BT/PT客户端。"
+msgstr "Transmission 是一个简单的 bittorrent 客户端,在这里您可以配置其设置。"
 
 msgid "Trash original torrent files"
 msgstr "删除种子源文件"
@@ -286,10 +291,10 @@ msgid "Watch directory"
 msgstr "轮询种子目录"
 
 msgid "in minutes from midnight"
-msgstr "从晚上00:00起的分钟数,限速到临时速度"
+msgstr "从晚上 00:00 起的分钟数,限速到临时速度"
 
 msgid "preallocation"
 msgstr "磁盘预分配策略"
 
 msgid "uTP enabled"
-msgstr "启用uTP"
+msgstr "uTP 已启用"
index 78da18dd1543f5aa4668468cb896279d06b643d3..304bfdad1ece1e894d86162d81e473af2bed4c27 100644 (file)
@@ -1,84 +1,89 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-16 23:11+0200\n"
-"Last-Translator: omnistack <omnistack@gmail.com>\n"
-"Language-Team: none\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-10-08 14:06+0200\n"
+"PO-Revision-Date: 2017-10-29 15:56+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_TW\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "Alternative download speed"
-msgstr "P2P代抓下載速度"
+msgstr "臨時下載限速"
 
 msgid "Alternative speed enabled"
-msgstr "P2P代抓速度啟用"
+msgstr "臨時限速已啟用"
 
 msgid "Alternative speed time begin"
-msgstr "P2P代抓起始時間"
+msgstr "計劃限速始於"
 
 msgid "Alternative speed time day"
-msgstr "P2P代抓起每日時間"
+msgstr "計劃限速日期"
 
 msgid "Alternative speed time end"
-msgstr "P2P代抓結束時間"
+msgstr "計劃限速止於"
 
 msgid "Alternative speed timing enabled"
-msgstr "P2P代抓週期機制啟用"
+msgstr "計劃限速已啟用"
 
 msgid "Alternative upload speed"
-msgstr "P2P代抓上傳速度"
+msgstr "臨時上傳速度"
 
 msgid "Automatically start added torrents"
-msgstr "ç\95¶å¢\9eå\8a ç¨®å­\90å¾\8cè\87ªå\8b\95é\96\8bå§\8b下載"
+msgstr "種å­\90è\87ªå\8b\95下載"
 
 msgid "Bandwidth settings"
-msgstr "流量設定"
+msgstr "頻寬配置"
 
 msgid "Binding address IPv4"
-msgstr "ç\81å®\9aç\9a\84IPv4ä½\8dç½®"
+msgstr "繫çµ\90 IPv4 ä½\8då\9d\80"
 
 msgid "Binding address IPv6"
-msgstr "ç\81å®\9aç\9a\84IPv6ä½\8dç½®"
+msgstr "繫çµ\90 IPv6 ä½\8då\9d\80"
 
 msgid "Block list enabled"
-msgstr "å\95\9fç\94¨å°\81é\8e\96å\88\97表"
+msgstr "é\98»æ­¢å\88\97表已å\95\9fç\94¨"
 
 msgid "Blocklist URL"
-msgstr "封鎖URL"
+msgstr "URL阻止清單"
 
 msgid "Blocklists"
-msgstr "封鎖列表"
+msgstr "阻止清單"
 
 msgid "Cache size in MB"
-msgstr "快取大小(MB)"
+msgstr "快取大小(MB)"
 
 msgid "Config file directory"
-msgstr "設定檔目錄"
+msgstr "配置檔案的目錄"
 
 msgid "DHT enabled"
-msgstr "DHT啟用"
+msgstr "啟用 DHT"
 
 msgid "Debug"
-msgstr "錯"
+msgstr "錯"
 
 msgid "Download directory"
 msgstr "下載目錄"
 
 msgid "Download queue enabled"
-msgstr "啟用下載隊列"
+msgstr "下載佇列已啟用"
 
 msgid "Download queue size"
-msgstr "下載列大小"
+msgstr "下載列大小"
 
 msgid "Enable watch directory"
-msgstr "啟用觀看目錄"
+msgstr "啟用種子輪詢目錄"
 
 msgid "Enabled"
-msgstr "啟用"
+msgstr "å·²å\95\9fç\94¨"
 
 msgid "Encryption"
 msgstr "加密"
@@ -96,200 +101,200 @@ msgid "Forced"
 msgstr "強制"
 
 msgid "Full"
-msgstr "全"
+msgstr "全分配"
 
 msgid "Global peer limit"
-msgstr "一般連接限制"
+msgstr "全域性 Peer 限制"
 
 msgid "Global settings"
-msgstr "一般設定"
+msgstr "全域性設定"
 
 msgid "Idle seeding limit"
-msgstr "閒置作種限制"
+msgstr "空閒做種限時"
 
 msgid "Idle seeding limit enabled"
-msgstr "閒置作種限制機制啟用"
+msgstr "空閒做種時間已啟用"
 
 msgid "Incomplete directory"
-msgstr "不完整的目錄路徑"
+msgstr "未完成目錄"
 
 msgid "Incomplete directory enabled"
-msgstr "不完整的目錄置放區機制啟用"
+msgstr "未完成目錄已啟用"
 
 msgid "Info"
 msgstr "資訊"
 
 msgid "LPD enabled"
-msgstr "LPD啟用"
+msgstr "LPD 已啟用"
 
 msgid "Lazy bitfield enabled"
-msgstr "防ISP懶散悠閒抓法啟用"
+msgstr "位段延遲已啟用"
 
 msgid "Message level"
-msgstr "è¨\8aæ\81¯ç­\89ç´\9a"
+msgstr "è¨\8aæ\81¯ç´\9aå\88¥"
 
 msgid "Miscellaneous"
-msgstr "雜項"
+msgstr "其他引數"
 
 msgid "None"
-msgstr "None"
+msgstr ""
 
 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"
+"生效日期是對應日期的算術加和值。對應關係:週日-1、週一-2、週二-4、週三-8、周"
+"四-16、週五-32、週六-64。"
 
 msgid "Off"
 msgstr "關閉"
 
 msgid "Open Web Interface"
-msgstr "開啟Web介面"
+msgstr "開啟 Web 管理介面"
 
 msgid "PEX enabled"
-msgstr "啟用PEX"
+msgstr "PEX 已啟用"
 
 msgid "Peer Port settings"
-msgstr "P2P節點埠號設定"
+msgstr "Peer 埠設定"
 
 msgid "Peer congestion algorithm"
-msgstr "P2P節點堵塞演算法"
+msgstr "Peer 擁塞演算法"
 
 msgid "Peer limit per torrent"
-msgstr "P2P節點每個種子的限制"
+msgstr "每個種子 Peer 限制數"
 
 msgid "Peer port"
-msgstr "P2P節點埠號"
+msgstr "Peer 埠"
 
 msgid "Peer port random high"
-msgstr "P2P節點較高隨機埠號"
+msgstr "Peer 隨機埠最大值"
 
 msgid "Peer port random low"
-msgstr "P2P節點較低隨機埠號"
+msgstr "Peer 隨機埠最小值"
 
 msgid "Peer port random on start"
-msgstr "一開始就啟用P2P節點隨機埠"
+msgstr "Peer 埠隨機"
 
 msgid "Peer settings"
-msgstr "埠號設定"
+msgstr "Peer 設定"
 
 msgid "Peer socket tos"
-msgstr "P2P節點優先IP插槽"
+msgstr "Peer 套接字 tos 值"
 
 msgid "Port forwarding enabled"
-msgstr "埠轉發啟用"
+msgstr "å\9f è½\89ç\99¼å·²å\95\9fç\94¨"
 
 msgid "Preferred"
-msgstr "首選"
+msgstr "優先"
 
 msgid "Prefetch enabled"
-msgstr "預啟用"
+msgstr "預取快取已啟用"
 
 msgid "Queue stalled enabled"
-msgstr "隊列停滯啟用"
+msgstr "佇列暫停已啟用"
 
 msgid "Queue stalled minutes"
-msgstr "隊列停滯分鐘"
+msgstr "佇列暫停分鐘"
 
 msgid "Queueing"
-msgstr "排隊中"
+msgstr "佇列"
 
 msgid "RPC URL"
-msgstr "遠端調用網址"
+msgstr "RPC URL"
 
 msgid "RPC authentication required"
-msgstr "遠端調用需要驗證"
+msgstr "RPC 授權驗證"
 
 msgid "RPC bind address"
-msgstr "遠端調用綁定位址"
+msgstr "RPC 繫結位址"
 
 msgid "RPC enabled"
-msgstr "遠端調用功能啟用"
+msgstr "RPC 已啟用"
 
 msgid "RPC password"
-msgstr "遠端調用密碼"
+msgstr "RPC 密碼"
 
 msgid "RPC port"
-msgstr "遠端調用埠號"
+msgstr "RPC 埠"
 
 msgid "RPC settings"
-msgstr "遠端調用設定"
+msgstr "RPC 配置"
 
 msgid "RPC username"
-msgstr "遠端調用用戶名稱"
+msgstr "RPC 使用者名稱"
 
 msgid "RPC whitelist"
-msgstr "遠端調用白名單"
+msgstr "RPC 白名單"
 
 msgid "RPC whitelist enabled"
-msgstr "啟用遠端調用白名單"
+msgstr "RPC 白名單已啟用"
 
 msgid "Ratio limit"
-msgstr "比率限制"
+msgstr "分享率限值"
 
 msgid "Ratio limit enabled"
-msgstr "å\95\9fç\94¨æ¯\94ç\8e\87é\99\90å\88"
+msgstr "å\88\86享ç\8e\87é\99\90å\88¶å·²å\95\9fç\94¨"
 
 msgid "Rename partial files"
-msgstr "不完整檔案更名"
+msgstr "重新命名未完成檔案"
 
 msgid "Run daemon as user"
-msgstr "像用戶使用一樣常駐"
+msgstr "使用者組"
 
 msgid "Scheduling"
-msgstr "排程"
+msgstr "計劃任務"
 
 msgid "Scrape paused torrents enabled"
-msgstr "下載暫停開始做種"
+msgstr "忽略暫停種子已啟用"
 
 msgid "Script torrent done enabled"
-msgstr "作種腳本啟用"
+msgstr "種子完成時執行指令碼已啟用"
 
 msgid "Script torrent done filename"
-msgstr "作種腳本檔名"
+msgstr "指令碼檔名"
 
 msgid "Seed queue enabled"
-msgstr "å\95\9fç\94¨ä½\9c種é\9a\8aå\88\97"
+msgstr "å\81\9a種ä½\87å\88\97å·²å\95\9fç\94¨"
 
 msgid "Seed queue size"
-msgstr "作種隊列大小"
+msgstr "做種佇列大小"
 
 msgid "Speed limit down"
-msgstr "ä¸\8bè¼\89é\80\9f度é\99\90å\88"
+msgstr "ä¸\8bè¼\89é\99\90é\80\9f"
 
 msgid "Speed limit down enabled"
-msgstr "啟用下載速度限制"
+msgstr "下載限速已啟用"
 
 msgid "Speed limit up"
-msgstr "ä¸\8aå\82³é\80\9f度é\99\90å\88"
+msgstr "ä¸\8aå\82³é\99\90é\80\9f"
 
 msgid "Speed limit up enabled"
-msgstr "啟用上傳速度限制"
+msgstr "上傳限速已啟用"
 
 msgid "Transmission"
-msgstr "傳輸任務"
+msgstr "Transmission"
 
 msgid ""
 "Transmission daemon is a simple bittorrent client, here you can configure "
 "the settings."
-msgstr "傳輸任務常駐是一個簡單的bittorrent用戶端程式, 這裡你可以配置設定"
+msgstr "Transmission 是一個簡單的 bittorrent 客戶端,在這裡您可以配置其設定。"
 
 msgid "Trash original torrent files"
-msgstr "丟棄來源種子檔"
+msgstr "刪除種子原始檔"
 
 msgid "Upload slots per torrent"
-msgstr "每個種子的上傳插槽數"
+msgstr "每個種子上傳連線數"
 
 msgid "Watch directory"
-msgstr "監看目錄"
+msgstr "輪詢種子目錄"
 
 msgid "in minutes from midnight"
-msgstr "從午夜算起用分表示"
+msgstr "從晚上 00:00 起的分鐘數,限速到臨時速度"
 
 msgid "preallocation"
-msgstr "預先分配"
+msgstr "磁碟預分配策略"
 
 msgid "uTP enabled"
-msgstr "啟用uTP"
+msgstr "uTP 已啟用"
index cbb6c189b8132697497d3bdcee44611c6d8e0571..51db2861e5503e6e16c37bbcb184ca5d9fd57cfc 100644 (file)
@@ -44,12 +44,12 @@ This is free software, licensed under the Apache License, Version 2.0
       <td style="text-align:left"><%=ssid%></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='<%=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='<%=url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>;dir=down'" alt="<%:Move down%>" title="<%:Move down%>"/>
+        <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>
       <td class="cbi-value-field" style="width:150px;text-align:right">
-        <input type="button" class="cbi-button cbi-button-edit" onclick="location.href='<%=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='<%=url('admin/services/travelmate/wifidelete')%>?cfg=<%=section%>'" title="<%:Delete this Uplink%>" value="<%:Delete%>"/>
+        <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>
     </tr>
 <%
@@ -63,7 +63,7 @@ This is free software, licensed under the Apache License, Version 2.0
   uci:foreach("wireless", "wifi-device", function(s)
     local device = s[".name"]
 %>
-  <form class="inline" action="<%=url('admin/services/travelmate/wifiscan')%>" method="post">
+  <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%>"/>
index af90c18d23a2be32f21efb73d09b1aa26b512488..053b4baca12d2d10f91a68445c0e719d04b5b781 100644 (file)
@@ -59,7 +59,7 @@ This is free software, licensed under the Apache License, Version 2.0
                     <%=percent_wifi_signal(net)%> %
                 </td>
                 <td class="cbi-value-field" style="width:100px;text-align:right">
-                    <form class="inline" action="<%=url('admin/services/travelmate/wifiadd')%>" method="post">
+                    <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiadd')%>" method="post">
                         <input type="hidden" name="token" value="<%=token%>"/>
                         <input type="hidden" name="device" value="<%=utl.pcdata(dev)%>"/>
                         <input type="hidden" name="ssid" value="<%=utl.pcdata(net.ssid)%>"/>
@@ -76,12 +76,12 @@ This is free software, licensed under the Apache License, Version 2.0
         </table>
     </fieldset>
 <div class="cbi-page-actions right">
-    <form class="inline" action="<%=url('admin/services/travelmate/wifiscan')%>" method="post">
+    <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/wifiscan')%>" method="post">
         <input type="hidden" name="token" value="<%=token%>"/>
         <input type="hidden" name="device" value="<%=utl.pcdata(dev)%>"/>
         <input class="cbi-button cbi-input-find" type="submit" value="<%:Repeat scan%>"/>
     </form>
-    <form class="inline" action="<%=url('admin/services/travelmate/stations')%>" method="post">
+    <form class="inline" action="<%=luci.dispatcher.build_url('admin/services/travelmate/stations')%>" method="post">
         <input class="cbi-button cbi-button-reset" type="submit" value="<%:Back to overview%>"/>
     </form>
 </div>
index c60b7c4969a6ce76c70d07deb0750c2622900ca7..e485708f0ec0c97658b2d33986c0161d9599b22f 100644 (file)
@@ -19,8 +19,12 @@ function index()
 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")
                local fwd = { }
                while true do
                        local ln = ipt:read("*l")
@@ -29,23 +33,32 @@ function act_status()
                        elseif ln:match("^%d+") then
                                local num, proto, extport, intaddr, intport =
                                        ln:match("^(%d+).-([a-z]+).-dpt:(%d+) to:(%S-):(%d+)")
+                               local descr = ""
 
                                if num and proto and extport and intaddr and intport then
                                        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
+                                               if not descr then descr = "" end
+                                       end
 
                                        fwd[#fwd+1] = {
                                                num     = num,
                                                proto   = proto:upper(),
                                                extport = extport,
                                                intaddr = intaddr,
-                                               intport = intport
+                                               intport = intport,
+                                               descr = descr
                                        }
                                end
                        end
                end
 
+               if upnpf then upnpf:close() end
                ipt:close()
 
                luci.http.prepare_content("application/json")
index e358dcded3bb7b040fad21c94e464f21313a2f95..89fdb5e21872ba2d1a323c4cf6fdbe88e7ecd254 100644 (file)
                                        tr.insertCell(-1).innerHTML = st[i].extport;
                                        tr.insertCell(-1).innerHTML = st[i].intaddr;
                                        tr.insertCell(-1).innerHTML = st[i].intport;
+                                       tr.insertCell(-1).innerHTML = st[i].descr;
 
                                        tr.insertCell(-1).innerHTML = String.format(
-                                               '<input class="cbi-button cbi-input-remove" type="button" value="<%:Delete Redirect%>" onclick="upnp_delete_fwd(%d)" />',
+                                               '<input class="cbi-button cbi-input-remove" type="button" value="<%:Delete%>" onclick="upnp_delete_fwd(%d)" />',
                                                        st[i].num
                                        );
                                }
@@ -58,6 +59,7 @@
                        <th class="cbi-section-table-cell"><%:External Port%></th>
                        <th class="cbi-section-table-cell"><%:Client Address%></th>
                        <th class="cbi-section-table-cell"><%:Client Port%></th>
+                       <th class="cbi-section-table-cell"><%:Description%></th>
                        <th class="cbi-section-table-cell">&#160;</th>
                </tr>
                <tr class="cbi-section-table-row">
index bb9f88f7736373adb5bf1b027608df896bb5cfa0..2767ade5b165993baa7c6478e1e9cf77017c9731 100644 (file)
@@ -58,8 +58,11 @@ msgstr "Recollint dades..."
 msgid "Comment"
 msgstr "Comentari"
 
-msgid "Delete Redirect"
-msgstr "Suprimeix la redirecció"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "UUID de dispositiu"
@@ -146,6 +149,9 @@ msgstr "Enllaç de pujada"
 msgid "Value in KByte/s, informational only"
 msgstr "Valor en KByte/s, només per informació"
 
+#~ msgid "Delete Redirect"
+#~ msgstr "Suprimeix la redirecció"
+
 #~ msgid ""
 #~ "UPNP allows clients in the local network to automatically configure the "
 #~ "router."
index 3cefdcc10b17d52b5e68fa3c35c3ff38f37024ec..bfc97cca5223660bb71ff0c4b510cf122316d657 100644 (file)
@@ -54,8 +54,11 @@ msgstr "Probíhá sběr dat.."
 msgid "Comment"
 msgstr "Komentář"
 
-msgid "Delete Redirect"
-msgstr "Odstranit přesměrování"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "UUID zařízení"
@@ -141,10 +144,14 @@ msgstr "Uplink"
 msgid "Value in KByte/s, informational only"
 msgstr "Pouze informační hodnoty (v KByte/s)"
 
+#~ msgid "Delete Redirect"
+#~ msgstr "Odstranit přesměrování"
+
 #~ msgid ""
 #~ "UPNP allows clients in the local network to automatically configure the "
 #~ "router."
-#~ msgstr "UPnP umožňuje klientům v místní síti automaticky nakonfigurovat router."
+#~ msgstr ""
+#~ "UPnP umožňuje klientům v místní síti automaticky nakonfigurovat router."
 
 #~ msgid "enable"
 #~ msgstr "povolit"
index fe6532dea5a1276b71c0f6513d9c438678106a9e..46aa42ffe35d2f6a575af3da8b4a9caeccd4dc80 100644 (file)
@@ -56,8 +56,11 @@ msgstr "Sammle Daten..."
 msgid "Comment"
 msgstr "Kommentar"
 
-msgid "Delete Redirect"
-msgstr "Weiterleitung löschen"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "Geräte-UUID"
@@ -144,12 +147,15 @@ msgstr "Uplink"
 msgid "Value in KByte/s, informational only"
 msgstr "Wert in Kilobyte/s, nur informativ"
 
+#~ msgid "Delete Redirect"
+#~ msgstr "Weiterleitung löschen"
+
 #~ msgid ""
 #~ "UPNP allows clients in the local network to automatically configure the "
 #~ "router."
 #~ msgstr ""
-#~ "UPnP ermöglicht die automatische Konfiguration des Routers durch Clients im "
-#~ "lokalen Netzwerk."
+#~ "UPnP ermöglicht die automatische Konfiguration des Routers durch Clients "
+#~ "im lokalen Netzwerk."
 
 #~ msgid "enable"
 #~ msgstr "aktivieren"
index 8b4fa0cb102f57564f7fae70c4597b8a0d942f24..79a02a487ac6625c692e707a6ecde458600abf14 100644 (file)
@@ -53,7 +53,10 @@ msgstr ""
 msgid "Comment"
 msgstr ""
 
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
 msgstr ""
 
 msgid "Device UUID"
index 215b34ca5b5928d3e1365ca31a7ebdb4682ac3f6..450e62a7c91b5311f7ee249c8543031aa279f3d4 100644 (file)
@@ -53,7 +53,10 @@ msgstr ""
 msgid "Comment"
 msgstr ""
 
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
 msgstr ""
 
 msgid "Device UUID"
index 91e1393b20979cc911e8b862b2fc9d3f38cef1e2..8c26b3cf5e2169e996606fb3baf95413511042cb 100644 (file)
@@ -56,8 +56,11 @@ msgstr "Un momento..."
 msgid "Comment"
 msgstr "Comentario"
 
-msgid "Delete Redirect"
-msgstr "Borrar redirección"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "UUID del dispositivo"
@@ -144,12 +147,15 @@ msgstr "Enlace de subida"
 msgid "Value in KByte/s, informational only"
 msgstr "Valor en KBytes/s (sólo informativo)"
 
+#~ msgid "Delete Redirect"
+#~ msgstr "Borrar redirección"
+
 #~ msgid ""
 #~ "UPNP allows clients in the local network to automatically configure the "
 #~ "router."
 #~ msgstr ""
-#~ "UPnP permite que los puestos de la red local configuren automáticamente el "
-#~ "router."
+#~ "UPnP permite que los puestos de la red local configuren automáticamente "
+#~ "el router."
 
 #~ msgid "enable"
 #~ msgstr "activar"
index 4390d0f1fe1102cabbfceb7cc1c7749b5369e508..1f3f8635bdb113031704806e5b090e2a0d322ac8 100644 (file)
@@ -58,8 +58,11 @@ msgstr "Récupération des données…"
 msgid "Comment"
 msgstr "Commentaire"
 
-msgid "Delete Redirect"
-msgstr "Détruire la redirection"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "UUID du périphérique"
@@ -147,12 +150,15 @@ msgstr "Lien remontant"
 msgid "Value in KByte/s, informational only"
 msgstr "Valeur en Ko/s, pour information seulement"
 
+#~ msgid "Delete Redirect"
+#~ msgstr "Détruire la redirection"
+
 #~ msgid ""
 #~ "UPNP allows clients in the local network to automatically configure the "
 #~ "router."
 #~ msgstr ""
-#~ "UPnP permet à des clients du réseau local de configurer automatiquement le "
-#~ "routeur."
+#~ "UPnP permet à des clients du réseau local de configurer automatiquement "
+#~ "le routeur."
 
 #~ msgid "enable"
 #~ msgstr "activer"
index 6e4d1f196efe2289d63633597f5afcd0e4313fb4..5b01f31b84d4bd4ca33e0aa299d1ab67fd869e8d 100644 (file)
@@ -49,7 +49,10 @@ msgstr ""
 msgid "Comment"
 msgstr ""
 
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
 msgstr ""
 
 msgid "Device UUID"
index c5a2c26b2cc420053047be2735cdd27d55e6a66b..9f64e5a18af2a10f7989b44517349499e69b77b3 100644 (file)
@@ -56,8 +56,11 @@ msgstr "Adatok összegyűjtése..."
 msgid "Comment"
 msgstr "Megjegyzés"
 
-msgid "Delete Redirect"
-msgstr "Átirányítás törlése"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "Eszköz UUID"
@@ -144,12 +147,15 @@ msgstr "Feltöltés"
 msgid "Value in KByte/s, informational only"
 msgstr "Érték KByte/s-ban, csak tájékoztató jellegű"
 
+#~ msgid "Delete Redirect"
+#~ msgstr "Átirányítás törlése"
+
 #~ msgid ""
 #~ "UPNP allows clients in the local network to automatically configure the "
 #~ "router."
 #~ msgstr ""
-#~ "Az UPnP lehetővé teszi a hálózatban lévő ügyfelek számára hogy automatikusan "
-#~ "beállítsák a routert."
+#~ "Az UPnP lehetővé teszi a hálózatban lévő ügyfelek számára hogy "
+#~ "automatikusan beállítsák a routert."
 
 #~ msgid "enable"
 #~ msgstr "engedélyezés"
index 9ef09ea04824b2e7bea7d93e53888c1956235312..2eb4a44044615a7eceaabd116f38af1c7ef797ed 100644 (file)
@@ -56,8 +56,11 @@ msgstr "Raccolgo i dati..."
 msgid "Comment"
 msgstr "Descrizione"
 
-msgid "Delete Redirect"
-msgstr "Cancella Mappatura"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "UUID del dispositivo"
@@ -144,6 +147,9 @@ msgstr "Uplink"
 msgid "Value in KByte/s, informational only"
 msgstr "Valori in KByte/s, (informativo)"
 
+#~ msgid "Delete Redirect"
+#~ msgstr "Cancella Mappatura"
+
 #~ msgid ""
 #~ "UPNP allows clients in the local network to automatically configure the "
 #~ "router."
index f0aff7336a43a07b84962296619e353a17b7410a..b9dae4f8d6e89bd52e6d58de36d3f73cec5fc2a6 100644 (file)
@@ -3,22 +3,22 @@ msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2016-12-24 19:55+0900\n"
+"PO-Revision-Date: 2017-11-11 12:16+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.4\n"
 "Language-Team: \n"
 
 msgid ""
 "ACLs specify which external ports may be redirected to which internal "
 "addresses and ports"
 msgstr ""
-"アクセス制御リスト(ACL) は、どの外部ポートからどの内部アドレス及びポートへ"
-"ダイレクトするかを設定します。"
+"アクセス制御リスト(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"
 
 msgid "Action"
 msgstr "動作"
@@ -56,8 +56,11 @@ msgstr "データ収集中です..."
 msgid "Comment"
 msgstr "コメント"
 
-msgid "Delete Redirect"
-msgstr "リダイレクトを削除"
+msgid "Delete"
+msgstr "削除"
+
+msgid "Description"
+msgstr "説明"
 
 msgid "Device UUID"
 msgstr "デバイス UUID"
@@ -129,8 +132,8 @@ msgid ""
 "UPnP allows clients in the local network to automatically configure the "
 "router."
 msgstr ""
-"UPnPを使用することで、ローカルネットワーク内のクライアントが自動的にルータ"
-"構成することができます。"
+"UPnPを使用することで、ローカルネットワーク内のクライアントが自動的にルータ"
+"構成することができます。"
 
 msgid "UPnP lease file"
 msgstr "UPnP リースファイル"
@@ -143,20 +146,3 @@ msgstr "アップリンク"
 
 msgid "Value in KByte/s, informational only"
 msgstr "クライアントへの情報提供のみに使用される、KByte/sの値です。"
-
-#~ msgid ""
-#~ "UPNP allows clients in the local network to automatically configure the "
-#~ "router."
-#~ msgstr ""
-#~ "UPnPを使用することで、ローカルネットワーク内のクライアントが自動的にルータ"
-#~ "を構成することができます。"
-
-#~ msgid "enable"
-#~ msgstr "有効"
-
-#~ msgid ""
-#~ "UPNP should only be enabled if absolutely necessary as it can result in "
-#~ "high security risks for your network."
-#~ msgstr ""
-#~ "UPnPはあなたの使用するネットワークに対して、セキュリティリスクが生じる可能"
-#~ "性があるため、必要な場合のみ有効にしてください。"
index b4dce32c9bb40490c7ae4388e393fb8e374167f4..62d4d5aec484d3b91e46c065853524b3b2332b5e 100644 (file)
@@ -48,7 +48,10 @@ msgstr ""
 msgid "Comment"
 msgstr ""
 
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
 msgstr ""
 
 msgid "Device UUID"
index d528aa54eb6a54360a0f0b6d9db5947e52e3c1c0..dc9daba1ba8f54750ec2438421328b8d86603f15 100644 (file)
@@ -47,8 +47,11 @@ msgstr "Henter data..."
 msgid "Comment"
 msgstr "Kommentar"
 
-msgid "Delete Redirect"
-msgstr "Fjern Viderekobling"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "Enhet UUID"
@@ -135,6 +138,9 @@ msgstr "Opplinje"
 msgid "Value in KByte/s, informational only"
 msgstr "Verdi i KByte/sek, kun for informasjon"
 
+#~ msgid "Delete Redirect"
+#~ msgstr "Fjern Viderekobling"
+
 #~ msgid ""
 #~ "UPNP allows clients in the local network to automatically configure the "
 #~ "router."
index ab7818011d92d601bf92865813b581e9486e3517..0afabe326f1b5c5e09a292e77ef56d6c7050a8cd 100644 (file)
@@ -55,8 +55,11 @@ msgstr "Zbieranie danych..."
 msgid "Comment"
 msgstr "Komentarz"
 
-msgid "Delete Redirect"
-msgstr "Usuń przekierowanie"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "UUID urządzenia"
@@ -142,6 +145,9 @@ msgstr "Uplink"
 msgid "Value in KByte/s, informational only"
 msgstr "Wartość w KBajt/s, tylko informacyjnie"
 
+#~ msgid "Delete Redirect"
+#~ msgstr "Usuń przekierowanie"
+
 #~ msgid ""
 #~ "UPNP allows clients in the local network to automatically configure the "
 #~ "router."
index c16aa11f845b5b708f2e669b66e8cb0118cf85b7..72741d26c99025158c49b1dde50da009b8488b76 100644 (file)
@@ -57,8 +57,11 @@ msgstr "Coletando dados..."
 msgid "Comment"
 msgstr "Comentário"
 
-msgid "Delete Redirect"
-msgstr "Apague o Redirecionamento"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "UUID do Dispositivo"
@@ -145,6 +148,9 @@ msgstr "Velocidade de envio do enlace (uplink)"
 msgid "Value in KByte/s, informational only"
 msgstr "Valores em KByte/s, apenas informativas"
 
+#~ msgid "Delete Redirect"
+#~ msgstr "Apague o Redirecionamento"
+
 #~ msgid ""
 #~ "UPNP allows clients in the local network to automatically configure the "
 #~ "router."
index 1d001b694a550f584cc67bc6aefff6e977039751..415a72b08233e7c020e3cfd0aaa8ff1f173c28d3 100644 (file)
@@ -53,7 +53,10 @@ msgstr ""
 msgid "Comment"
 msgstr ""
 
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
 msgstr ""
 
 msgid "Device UUID"
index f9c9500529620691fa37bc9e50ef8ce633d8a63c..d5e5c79932dd290ce57e51d4808e88e2e4f122ed 100644 (file)
@@ -55,8 +55,11 @@ msgstr "Colecteaza date.."
 msgid "Comment"
 msgstr "Comentariu"
 
-msgid "Delete Redirect"
-msgstr "Sterge redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "UUID al dispozitivului"
@@ -142,11 +145,15 @@ msgstr "Uplink"
 msgid "Value in KByte/s, informational only"
 msgstr "Valorea in KOcteti/s , doar informational"
 
+#~ msgid "Delete Redirect"
+#~ msgstr "Sterge redirect"
+
 #~ msgid ""
 #~ "UPNP allows clients in the local network to automatically configure the "
 #~ "router."
 #~ msgstr ""
-#~ "UPNP permite clientulor din reteaua locala sa configureze automat routerul."
+#~ "UPNP permite clientulor din reteaua locala sa configureze automat "
+#~ "routerul."
 
 #~ msgid "enable"
 #~ msgstr "activeaza"
index 30b94cebf5270dcaffdb5ad8bdd25f2cf6c3da17..0c195ad85b48f405d44e2bd68610b84952b9d4a0 100644 (file)
@@ -58,8 +58,11 @@ msgstr "Сбор данных..."
 msgid "Comment"
 msgstr "Комментарий"
 
-msgid "Delete Redirect"
-msgstr "Удалить переадресацию"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "UUID устройства"
@@ -146,6 +149,9 @@ msgstr "Восходящий канал"
 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 "
index c725333f3a35689875414f3a906c353c3ebea5a0..ccd256c715468a22c545c98664b0e0438a0fe687 100644 (file)
@@ -49,7 +49,10 @@ msgstr ""
 msgid "Comment"
 msgstr ""
 
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
 msgstr ""
 
 msgid "Device UUID"
index 29e987ea8e685ad5258ef62f9fbc6baef0e8e757..10fef558ea927974c75b261425380acbe8a04938 100644 (file)
@@ -52,8 +52,11 @@ msgstr "Samlar in data..."
 msgid "Comment"
 msgstr "Kommentar"
 
-msgid "Delete Redirect"
-msgstr "Ta bort omdirigering"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "Enhetens UUID"
@@ -139,3 +142,6 @@ msgstr "Upplänk"
 
 msgid "Value in KByte/s, informational only"
 msgstr "Värde i KByte/s, endast informell"
+
+#~ msgid "Delete Redirect"
+#~ msgstr "Ta bort omdirigering"
index ae390c48745faac8f063fef78401961902507860..dda0e7ea3c4387226a015e657616f65aa4ffa776 100644 (file)
@@ -42,7 +42,10 @@ msgstr ""
 msgid "Comment"
 msgstr ""
 
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
 msgstr ""
 
 msgid "Device UUID"
index cff3be273571f1ed9efaf36eea159d39184b0ac8..1bcd2b73abe5134056e517216673ee03cf2c3221 100644 (file)
@@ -49,7 +49,10 @@ msgstr ""
 msgid "Comment"
 msgstr ""
 
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
 msgstr ""
 
 msgid "Device UUID"
index 93afd220be6e07b4d34141035475328240d4cdcb..746fd3e8819b52880c5a1e1e0a01b6619b327456 100644 (file)
@@ -56,8 +56,11 @@ msgstr "Збирання даних..."
 msgid "Comment"
 msgstr "Коментар"
 
-msgid "Delete Redirect"
-msgstr "Видалити переспрямування"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "UUID пристрою"
@@ -144,6 +147,9 @@ msgstr "Висхідний канал"
 msgid "Value in KByte/s, informational only"
 msgstr "Значення (КБ/с) тільки для інформації"
 
+#~ msgid "Delete Redirect"
+#~ msgstr "Видалити переспрямування"
+
 #~ msgid ""
 #~ "UPNP allows clients in the local network to automatically configure the "
 #~ "router."
index 5f954999d25b90fafce83c405ab2664eee6c529f..d27720d2af6fe59913996dfc04d0801deefa55fb 100644 (file)
@@ -54,7 +54,10 @@ msgstr ""
 msgid "Comment"
 msgstr ""
 
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
 msgstr ""
 
 msgid "Device UUID"
index 693bbc12e9f89e768554a8c0aeb6e0e74613abe4..6620d93c0d478ef1e7f31b9ba4e703cd41894249 100644 (file)
@@ -54,8 +54,11 @@ msgstr "正在收集数据"
 msgid "Comment"
 msgstr "备注"
 
-msgid "Delete Redirect"
-msgstr "删除转发规则"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "设备UUID"
@@ -82,7 +85,7 @@ msgid "External ports"
 msgstr "外部端口"
 
 msgid "General Settings"
-msgstr "ä¸\80è\88¬è®¾ç½®"
+msgstr "å\9fºæ\9c¬è®¾ç½®"
 
 msgid "Internal addresses"
 msgstr "内部地址"
@@ -140,6 +143,9 @@ msgstr "上行速率"
 msgid "Value in KByte/s, informational only"
 msgstr "值为KByte/s,仅供参考"
 
+#~ msgid "Delete Redirect"
+#~ msgstr "删除转发规则"
+
 #~ msgid ""
 #~ "UPNP allows clients in the local network to automatically configure the "
 #~ "router."
index dde94ae49738c50079a783ed576d0fa447ddcc59..338a6629e212d2f1b39189d82a88a982e5f1dca4 100644 (file)
@@ -52,8 +52,11 @@ msgstr "收集數據中..."
 msgid "Comment"
 msgstr "評論"
 
-msgid "Delete Redirect"
-msgstr "刪除從導"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
 
 msgid "Device UUID"
 msgstr "設備UUID獨立識別碼"
@@ -138,6 +141,9 @@ msgstr "上傳"
 msgid "Value in KByte/s, informational only"
 msgstr "僅採用 KByte/s值單位表示"
 
+#~ msgid "Delete Redirect"
+#~ msgstr "刪除從導"
+
 #~ msgid ""
 #~ "UPNP allows clients in the local network to automatically configure the "
 #~ "router."
index 5207a8b2cace1a6465e25ddb80284a91a5c45e26..7926f797b6f7c9dd666a5221ef4209c1088dfb0d 100644 (file)
@@ -17,9 +17,9 @@ msgstr "診斷"
 msgid ""
 "The diagnostics available on your device depend on the modules that you have "
 "installed."
-msgstr "能否診斷你的設備端看你已安裝的模組"
+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 "選單下有選項讓你能夠設定並執行測試你系統上的語音操作. 這些都是已知的診斷方法"
+msgstr "選單下有選項讓您能夠設定並執行測試您系統上的語音操作. 這些都是已知的診斷方法"
diff --git a/package/luci/applications/luci-app-vpnbypass/po/zh-cn/vpnbypass.po b/package/luci/applications/luci-app-vpnbypass/po/zh-cn/vpnbypass.po
new file mode 100644 (file)
index 0000000..a153917
--- /dev/null
@@ -0,0 +1,61 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"PO-Revision-Date: 2017-10-29 15:30+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+msgid "Domains to Bypass"
+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 地址"
+
+msgid ""
+"Local IP addresses or subnets with direct internet access (outside of the "
+"VPN tunnel)"
+msgstr "直接访问的本地 IP 地址或子网(不使用 VPN 隧道)"
+
+msgid "Local Ports to Bypass"
+msgstr "要绕过的本地端口"
+
+msgid "Local ports to trigger VPN Bypass"
+msgstr "触发 VPN 绕过的本地端口"
+
+msgid "README"
+msgstr "README"
+
+msgid "Remote IP Addresses to Bypass"
+msgstr "要绕过的远程 IP 地址"
+
+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 "要绕过的远程端口"
+
+msgid "Remote ports to trigger VPN Bypass"
+msgstr "触发 VPN 绕过的远程端口"
+
+msgid "VPN Bypass"
+msgstr "VPN 绕过"
+
+msgid "VPN Bypass Settings"
+msgstr "VPN 绕过设置"
+
+msgid "for syntax"
+msgstr "对于语法"
diff --git a/package/luci/applications/luci-app-vpnbypass/po/zh-tw/vpnbypass.po b/package/luci/applications/luci-app-vpnbypass/po/zh-tw/vpnbypass.po
new file mode 100644 (file)
index 0000000..90ba85f
--- /dev/null
@@ -0,0 +1,61 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"PO-Revision-Date: 2017-10-29 15:30+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+msgid "Domains to Bypass"
+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 位址"
+
+msgid ""
+"Local IP addresses or subnets with direct internet access (outside of the "
+"VPN tunnel)"
+msgstr "直接訪問的本地 IP 位址或子網(不使用 VPN 隧道)"
+
+msgid "Local Ports to Bypass"
+msgstr "要繞過的本地埠"
+
+msgid "Local ports to trigger VPN Bypass"
+msgstr "觸發 VPN 繞過的本地埠"
+
+msgid "README"
+msgstr "README"
+
+msgid "Remote IP Addresses to Bypass"
+msgstr "要繞過的遠端 IP 位址"
+
+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 "要繞過的遠端埠"
+
+msgid "Remote ports to trigger VPN Bypass"
+msgstr "觸發 VPN 繞過的遠端埠"
+
+msgid "VPN Bypass"
+msgstr "VPN 繞過"
+
+msgid "VPN Bypass Settings"
+msgstr "VPN 繞過設定"
+
+msgid "for syntax"
+msgstr "對於語法"
index 991fc48a231b10a10585a11c1be8a742a1c3c7b2..fc9f7d628638711a43077bdde05c138b6650fe03 100644 (file)
@@ -21,7 +21,7 @@ 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 ""
-"检测网络连接的频率。默认单位为秒,可以使用'm'作为后缀表示分钟,‘h’表示小"
+"检测网络连接的频率。默认单位为秒,可以使用'm'作为后缀表示分钟,‘h’表示小"
 "时‘d’表示天。"
 
 msgid ""
@@ -31,7 +31,7 @@ msgid ""
 "for hours or 'd' for days"
 msgstr ""
 "在周期模式,此处定义了重启的周期。在联网模式,这个表示没有网络连接情况下到执"
-"行重启的最长时间间隔。默认单位为秒,可以使用'm'作为后缀表示分钟,‘h’表示小"
+"行重启的最长时间间隔。默认单位为秒,可以使用'm'作为后缀表示分钟,‘h’表示小"
 "时‘d’表示天。"
 
 msgid "Operating mode"
index 7bbae611736e7446f3d5a5217d101505f209be18..3c66a16b0c4b1f0b288f73cbb265be0da887fbc1 100644 (file)
@@ -1,23 +1,26 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-19 00:29+0200\n"
-"PO-Revision-Date: 2012-06-21 17:52+0200\n"
-"Last-Translator: phantasm131 <phantasm131@gmail.com>\n"
-"Language-Team: QQ Group 75543259 <axishero@foxmail.com>\n"
+"PO-Revision-Date: 2017-10-28 16:44+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "Broadcast on all interfaces"
 msgstr "向所有接口广播"
 
 msgid "Choose the host to wake up or enter a custom MAC address to use"
-msgstr "选择要唤醒的主机或者输入自定义mac地址"
+msgstr "选择要唤醒的主机,或者输入自定义 MAC 地址"
 
 msgid "Host to wake up"
 msgstr "选择要唤醒的主机"
@@ -26,7 +29,7 @@ msgid "Network interface to use"
 msgstr "选择使用的网络接口"
 
 msgid "Send to broadcast address"
-msgstr ""
+msgstr "发送到广播地址"
 
 #, fuzzy
 msgid ""
@@ -34,17 +37,17 @@ msgid ""
 msgstr "有时只有一个工具生效。如果其中一个失效,请尝试另一个"
 
 msgid "Specifies the interface the WoL packet is sent on"
-msgstr "限定网络唤醒数据包将被发送到的接口"
+msgstr "限定将发送网络唤醒数据包的接口"
 
 msgid "Starting WoL utility:"
-msgstr "正在启动网络唤醒工具"
+msgstr "正在启动网络唤醒工具"
 
 msgid "Wake on LAN"
 msgstr "网络唤醒"
 
 msgid ""
 "Wake on LAN is a mechanism to remotely boot computers in the local network."
-msgstr "ç½\91ç»\9cå\94¤é\86\92æ\8f\90ä¾\9bäº\86ä»\8e远程启动本地网络内计算机的机制。"
+msgstr "ç½\91ç»\9cå\94¤é\86\92æ\98¯ä¸\80个远程启动本地网络内计算机的机制。"
 
 msgid "Wake up host"
 msgstr "唤醒主机"
index 553d2d04fe5422f68e500fca733fd7b9d9ceb9e1..3ef8ea2e2c8b2d39761b26a48c1ad38002ebfd4b 100644 (file)
@@ -1,51 +1,56 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2017.
+#
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-14 10:25+0200\n"
-"Last-Translator: omnistack <omnistack@gmail.com>\n"
-"Language-Team: none\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-04-19 00:29+0200\n"
+"PO-Revision-Date: 2017-10-28 16:44+0800\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
 "Language: zh_TW\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Gtranslator 2.91.7\n"
 
 msgid "Broadcast on all interfaces"
-msgstr "廣æ\92­å\88°æ\89\80æ\9c\89ä»\8bé\9d¢"
+msgstr "å\90\91æ\89\80æ\9c\89ä»\8bé\9d¢å»£æ\92­"
 
 msgid "Choose the host to wake up or enter a custom MAC address to use"
-msgstr "叫醒訂選的主機或者打入特定的MAC位址以便使用"
+msgstr "選擇要喚醒的主機,或者輸入自定義 MAC 位址"
 
 msgid "Host to wake up"
-msgstr "要喚醒主機清單"
+msgstr "選擇要喚醒的主機"
 
 msgid "Network interface to use"
-msgstr "使用的網路介面"
+msgstr "選擇使用的網路介面"
 
 msgid "Send to broadcast address"
-msgstr ""
+msgstr "傳送到廣播位址"
 
 #, fuzzy
 msgid ""
 "Sometimes only one of the two tools works. If one fails, try the other one"
-msgstr "æ\9f\90äº\9bæ\99\82å\80\99å\85¨é\83¨å·¥å\85·è£¡é\9d¢å\8fªæ\9c\89ä¸\80å\80\8bç\99¼ç\94\9fä½\9cç\94¨,試試å\8f¦å¤\96一個"
+msgstr "æ\9c\89æ\99\82å\8fªæ\9c\89ä¸\80å\80\8bå·¥å\85·ç\94\9fæ\95\88ã\80\82å¦\82æ\9e\9cå\85¶ä¸­ä¸\80å\80\8b失æ\95\88ï¼\8cè«\8bå\98\97試å\8f¦一個"
 
 msgid "Specifies the interface the WoL packet is sent on"
-msgstr "指定WoL喚醒封包將傳到哪個介面"
+msgstr "限定將傳送網路喚醒資料包的介面"
 
 msgid "Starting WoL utility:"
-msgstr "啟用喚醒工具:"
+msgstr "正在啟動網路喚醒工具:"
 
 msgid "Wake on LAN"
-msgstr "LAN區網喚醒"
+msgstr "網路喚醒"
 
 msgid ""
 "Wake on LAN is a mechanism to remotely boot computers in the local network."
-msgstr "Wol就是在本地網路中針對遠端開機電腦喚醒的機制"
+msgstr "網路喚醒是一個遠端啟動本地網路內計算機的機制。"
 
 msgid "Wake up host"
 msgstr "喚醒主機"
 
 msgid "WoL program"
-msgstr "Wol喚醒程式"
+msgstr "網路喚醒程式"
index 01a93874abc06061066267ed6ab3b14f5e084df9..9ebcb46b134ca9330a0b98e61e574fb679c53858 100755 (executable)
@@ -73,7 +73,7 @@ setup_nameservice() {
 
        uci batch <<- EOF
                set $cfg.olsrd_nameservice=LoadPlugin
-               set $cfg.olsrd_nameservice.library="olsrd_nameservice.so.0.3"
+               set $cfg.olsrd_nameservice.library="olsrd_nameservice.so.0.4"
                set $cfg.olsrd_nameservice.latlon_file="$llfile"
                set $cfg.olsrd_nameservice.hosts_file="$hosts"
                set $cfg.olsrd_nameservice.sighup_pid_file="/var/run/dnsmasq.pid"
@@ -118,7 +118,7 @@ setup_jsoninfo() {
        proto="$1"
        uci batch <<- EOF
                set $cfg.olsrd_jsoninfo=LoadPlugin
-               set $cfg.olsrd_jsoninfo.library="olsrd_jsoninfo.so.0.0"
+               set $cfg.olsrd_jsoninfo.library="olsrd_jsoninfo.so.1.1"
        EOF
        if [ "$proto" = "6" ]; then
                uci set $cfg.olsrd_jsoninfo.ipv6only='1'
@@ -130,7 +130,7 @@ setup_txtinfo() {
        proto="$1"
        uci batch <<- EOF
            set $cfg.olsrd_txtinfo=LoadPlugin
-           set $cfg.olsrd_txtinfo.library="olsrd_txtinfo.so.0.1"
+           set $cfg.olsrd_txtinfo.library="olsrd_txtinfo.so.1.1"
        EOF
        if [ "$proto" = "6" ]; then
                uci set $cfg.olsrd_txtinfo.ipv6only='1'
index 1ddb73d49868d3d0d2484b337db31dbefcc498e5..0b2ec4e7000cf87f6e0d3c257cd0b534814e8d3e 100644 (file)
@@ -7,7 +7,7 @@
 LUCI_NAME?=$(notdir ${CURDIR})
 LUCI_TYPE?=$(word 2,$(subst -, ,$(LUCI_NAME)))
 LUCI_BASENAME?=$(patsubst luci-$(LUCI_TYPE)-%,%,$(LUCI_NAME))
-LUCI_LANGUAGES:=$(filter-out templates,$(notdir $(wildcard ${CURDIR}/po/*)))
+LUCI_LANGUAGES:=$(sort $(filter-out templates,$(notdir $(wildcard ${CURDIR}/po/*))))
 LUCI_DEFAULTS:=$(notdir $(wildcard ${CURDIR}/root/etc/uci-defaults/*))
 LUCI_PKGARCH?=$(if $(realpath src/Makefile),,all)
 
index 291789cb6464d805b5575f19f9f5cf3384f86e52..6393195e59d6cd9b975684bb71cef8576f3abc17 100644 (file)
@@ -16,7 +16,7 @@ LUCI_DEPENDS:=+lua +libuci-lua +luci-lib-nixio +luci-lib-ip +rpcd +libubus-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
-PKG_MD5SUM:=ed7680f2896269ae8633756e7edcf09050812f78c8f49e280e63c30d14f35aea
+PKG_HASH:=ed7680f2896269ae8633756e7edcf09050812f78c8f49e280e63c30d14f35aea
 PKG_LICENSE:=Apache-2.0
 
 HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/LuaSrcDiet-0.12.1
index 884eb62f68168c7cdfdaffb7bdd46b3dddb2a30c..b334703bdfb421964a57d6c7e64f4abda64f5dd1 100644 (file)
@@ -229,7 +229,7 @@ var cbi_validators = {
        {
                return cbi_validators.hostname.apply(this) ||
                        ((ipv4only != 1) && cbi_validators.ipaddr.apply(this)) ||
-                       ((ipv4only == 1) && cb_validators.ip4addr.apply(this));
+                       ((ipv4only == 1) && cbi_validators.ip4addr.apply(this));
        },
 
        'hostname': function()
index 061c6ad544a0df71bab38976537365cc9b13bc46..0a8b2fbab95e5058252d734e021733b4f3eb71a6 100644 (file)
@@ -264,7 +264,7 @@ function header_source( sock )
 end
 
 -- Content-Type. Stores all extracted data associated with its parameter name
--- in the params table withing 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
@@ -433,7 +433,7 @@ function mimedecode_message_body( src, msg, filecb )
 end
 
 -- Content-Type. Stores all extracted data associated with its parameter name
--- in the params table withing 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.
 function urldecode_message_body( src, msg )
 
index 5573a9b86cae3ed90e4f50b232fc54e8c20a23f5..feff0855c4a5c0600b09a3c429695203b768da30 100644 (file)
@@ -498,11 +498,13 @@ function forwarding.dest(self)
 end
 
 function forwarding.src_zone(self)
-       return zone(self:src())
+       local z = zone(self:src())
+       return z.sid and z
 end
 
 function forwarding.dest_zone(self)
-       return zone(self:dest())
+       local z = zone(self:dest())
+       return z.sid and z
 end
 
 
index 419c191f2ba26685cfec1ca6e96f958faf3a7043..48ae5747c0292b2d8d364894a6b8a9983ac109e3 100644 (file)
@@ -30,7 +30,7 @@ TZ = {
        { 'Africa/Johannesburg', 'SAST-2' },
        { 'Africa/Juba', 'EAT-3' },
        { 'Africa/Kampala', 'EAT-3' },
-       { 'Africa/Khartoum', 'EAT-3' },
+       { 'Africa/Khartoum', 'CAT-2' },
        { 'Africa/Kigali', 'CAT-2' },
        { 'Africa/Kinshasa', 'WAT-1' },
        { 'Africa/Lagos', 'WAT-1' },
@@ -54,7 +54,7 @@ TZ = {
        { 'Africa/Sao Tome', 'GMT0' },
        { 'Africa/Tripoli', 'EET-2' },
        { 'Africa/Tunis', 'CET-1' },
-       { 'Africa/Windhoek', 'WAT-1WAST,M9.1.0,M4.1.0' },
+       { 'Africa/Windhoek', 'CAT-2' },
        { 'America/Adak', 'HST10HDT,M3.2.0,M11.1.0' },
        { 'America/Anchorage', 'AKST9AKDT,M3.2.0,M11.1.0' },
        { 'America/Anguilla', 'AST4' },
@@ -110,7 +110,7 @@ TZ = {
        { 'America/Glace Bay', 'AST4ADT,M3.2.0,M11.1.0' },
        { 'America/Godthab', '<-03>3<-02>,M3.5.0/-2,M10.5.0/-1' },
        { 'America/Goose Bay', 'AST4ADT,M3.2.0,M11.1.0' },
-       { 'America/Grand Turk', 'AST4' },
+       { 'America/Grand Turk', 'EST5EDT,M3.2.0,M11.1.0' },
        { 'America/Grenada', 'AST4' },
        { 'America/Guadeloupe', 'AST4' },
        { 'America/Guatemala', 'CST6' },
@@ -238,7 +238,7 @@ TZ = {
        { 'Asia/Dili', '<+09>-9' },
        { 'Asia/Dubai', '<+04>-4' },
        { 'Asia/Dushanbe', '<+05>-5' },
-       { 'Asia/Famagusta', '<+03>-3' },
+       { '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/Ho Chi Minh', '<+07>-7' },
@@ -425,7 +425,7 @@ TZ = {
        { 'Pacific/Efate', '<+11>-11' },
        { 'Pacific/Enderbury', '<+13>-13' },
        { 'Pacific/Fakaofo', '<+13>-13' },
-       { 'Pacific/Fiji', '<+12>-12<+13>,M11.1.0,M1.3.0/3' },
+       { 'Pacific/Fiji', '<+12>-12<+13>,M11.1.0,M1.2.1/147' },
        { 'Pacific/Funafuti', '<+12>-12' },
        { 'Pacific/Galapagos', '<-06>6' },
        { 'Pacific/Gambier', '<-09>9' },
@@ -451,7 +451,7 @@ TZ = {
        { 'Pacific/Saipan', 'ChST-10' },
        { 'Pacific/Tahiti', '<-10>10' },
        { 'Pacific/Tarawa', '<+12>-12' },
-       { 'Pacific/Tongatapu', '<+13>-13<+14>,M11.1.0,M1.3.0/3' },
+       { 'Pacific/Tongatapu', '<+13>-13' },
        { 'Pacific/Wake', '<+12>-12' },
        { 'Pacific/Wallis', '<+12>-12' },
 }
index 2a433b5696872aa112d96d42be200d10f54d04ab..546fd8e85a53c4edfaeefff9fb3c0f405ffb8a0c 100644 (file)
        &#160;&#8658;&#160;
        <% for _, fwd in ipairs(zone:get_forwardings_by("src")) do
                fz = fwd:dest_zone()
-               empty = false %>
+               if fz then
+                       empty = false %>
                <label class="zonebadge" style="background-color:<%=fz:get_color()%>">
                        <strong><%=fz:name()%></strong>
                </label>&#160;
-       <% end %>
+       <% end end %>
        <% if empty then %>
                <label class="zonebadge zonebadge-empty">
                        <strong><%=zone:forward():upper()%></strong>
index 45c221eac1def5d9c1e26c777eb76c0255b664d9..e69534b3bab65ffe819fc98b3fcf6529b38fd939 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -132,6 +135,9 @@ msgstr "Nom <abbr title=\"Light Emitting Diode\">LED</abbr>"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "Adreça <abbr title=\"Media Access Control\">MAC</abbr>"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -301,7 +307,8 @@ msgstr "Permetre el localhost"
 
 msgid "Allow remote hosts to connect to local SSH forwarded ports"
 msgstr ""
-"Permetre a màquines remotes de connectar-se als ports reenviats de l'SSH local"
+"Permetre a màquines remotes de connectar-se als ports reenviats de l'SSH "
+"local"
 
 msgid "Allow root logins with password"
 msgstr "Accés d'administrador amb contrasenya"
@@ -638,7 +645,7 @@ msgid ""
 msgstr ""
 "Fes clic a \"Genera l'arxiu\" per obtenir un fitxer .tar.gz amb els fitxers "
 "de configuració actuals. Per restablir el microprogramari al seu estat "
-"inicial, fes clic a "\"Restableix la configuració\" (només funciona amb "
+"inicial, fes clic a \"Restableix la configuració\" (només funciona amb "
 "imatges squashfs)."
 
 msgid "Client"
@@ -664,6 +671,13 @@ msgstr "Ordre"
 msgid "Common Configuration"
 msgstr "Configuració comuna"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Configuració"
 
@@ -947,6 +961,9 @@ msgstr "Descarrega i instal·la el paquet"
 msgid "Download backup"
 msgstr "Descarrega còpia de seguretat"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Instància de Dropbear"
 
@@ -954,9 +971,8 @@ msgid ""
 "Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
 "and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
 msgstr ""
-"El Dropbear ofereix accés a una consola <abbr title=\"Secure Shell\">SSH"
-"</abbr> per xarxa i un servidor <abbr title=\"Secure Copy\">SCP</abbr> "
-"integrat"
+"El Dropbear ofereix accés a una consola <abbr title=\"Secure Shell\">SSH</"
+"abbr> per xarxa i un servidor <abbr title=\"Secure Copy\">SCP</abbr> integrat"
 
 msgid "Dual-Stack Lite (RFC6333)"
 msgstr ""
@@ -1029,6 +1045,9 @@ msgstr "Habilita la funcionalitat VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Habilita l'aprenentatge i l'envelliment"
 
@@ -1122,6 +1141,15 @@ msgstr "Protocol del servidor de registre del sistema extern"
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "Fitxer"
 
@@ -1267,6 +1295,9 @@ msgstr "Opcions generals d'opkg"
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "Genera l'arxiu"
 
@@ -1330,7 +1361,6 @@ msgid ""
 msgstr ""
 "Aquí pots afegir-hi les claus SSH públiques (una per línia) per entrar per "
 "SSH amb autenticació per clau."
-"
 
 msgid "Hermes 802.11b Wireless Controller"
 msgstr "Controlador sense fil Hermes 802.11b"
@@ -1480,7 +1510,7 @@ msgstr "IPv6-sobre-IPv4 (6to4)"
 msgid "Identity"
 msgstr "Identitat"
 
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
 msgstr ""
 
 msgid "If checked, encryption is disabled"
@@ -1770,8 +1800,8 @@ msgstr ""
 
 msgid "Listen only on the given interface or, if unspecified, on all"
 msgstr ""
-"Habilita el servei en totes les interfícies o, si no se n'especifica cap, "
-"en totes"
+"Habilita el servei en totes les interfícies o, si no se n'especifica cap, en "
+"totes"
 
 msgid "Listening port for inbound DNS queries"
 msgstr ""
@@ -3148,7 +3178,7 @@ msgid ""
 msgstr ""
 "S'ha pujat la imatge per a la memòria flaix. A sota hi ha llistades la suma "
 "de verificació i la mida del fitxer per assegurar la integritat de les dades."
-"<br />Fes clic a "\"Procedeix\" a continuació per començar el procés "
+"<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"
@@ -3251,8 +3281,8 @@ msgid ""
 "There is no password set on this router. Please configure a root password to "
 "protect the web interface and enable SSH."
 msgstr ""
-"No s'ha establert cap contrasenya en aquest encaminador. Si us plau, configura "
-"una contrasenya per protegir la interfície web i l'accés SSH."
+"No s'ha establert cap contrasenya en aquest encaminador. Si us plau, "
+"configura una contrasenya per protegir la interfície web i l'accés SSH."
 
 msgid "This IPv4 address of the relay"
 msgstr ""
@@ -3278,8 +3308,9 @@ msgid ""
 "This is the content of /etc/rc.local. Insert your own commands here (in "
 "front of 'exit 0') to execute them at the end of the boot process."
 msgstr ""
-"Aquest és el contingut de /etc/rc.local. Afegeix-hi les teves comandes (abans "
-"de la línia 'exit 0') per executar-les en finalitzar el procés d'arrencada."
+"Aquest és el contingut de /etc/rc.local. Afegeix-hi les teves comandes "
+"(abans de la línia 'exit 0') per executar-les en finalitzar el procés "
+"d'arrencada."
 
 msgid ""
 "This is the local endpoint address assigned by the tunnel broker, it usually "
@@ -3452,7 +3483,7 @@ msgid ""
 msgstr ""
 "Puja aquí una imatge compatible amb sysupgrade per reemplaçar el "
 "microprogramari actual. Activa \"Mantenir la configuració\" per retenir la "
-"configuració actual (requereix una imatge de microprogramari compatible).""
+"configuració actual (requereix una imatge de microprogramari compatible)."
 
 msgid "Upload archive..."
 msgstr "Puja un arxiu..."
@@ -3625,6 +3656,11 @@ msgstr "Advertència"
 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index d754cfe4d6a669d9ee524af366716b0397489988..bff89c88456e50cadf942c0c23294fe90bab492d 100644 (file)
@@ -11,6 +11,9 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -129,6 +132,9 @@ msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Název"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-Adresa"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -659,6 +665,13 @@ msgstr "Příkaz"
 msgid "Common Configuration"
 msgstr "Společná nastavení"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Nastavení"
 
@@ -946,6 +959,9 @@ msgstr "Stáhnout a nainstalovat balíček"
 msgid "Download backup"
 msgstr "Stáhnout zálohu"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Instance Dropbear"
 
@@ -1029,6 +1045,9 @@ msgstr "Povolit funkcionalitu VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Povolit ARP učení a stárnutí"
 
@@ -1124,6 +1143,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "Soubor"
 
@@ -1269,6 +1297,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "Vytvorǐt archív"
 
@@ -3668,6 +3699,11 @@ msgstr "Varování"
 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index d95a600991d5c629f7bc03a223523667107896d6..eb9221f1631a5472f39ec9f57a5ebf73ad73b316 100644 (file)
@@ -1,17 +1,20 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-26 17:57+0200\n"
-"PO-Revision-Date: 2017-03-06 11:15+0200\n"
+"PO-Revision-Date: 2017-10-17 22:46+0200\n"
 "Last-Translator: JoeSemler <josef.semler@gmail.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"
+"X-Generator: Poedit 2.0.4\n"
+"Language-Team: \n"
+
+msgid "%.1f dB"
+msgstr ""
 
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
@@ -130,6 +133,9 @@ msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "MAC-Adresse"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -675,6 +681,17 @@ msgstr "Befehl"
 msgid "Common Configuration"
 msgstr "Allgemeine Konfiguration"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+"Deaktiviert bestimmte EAPOL-Key-Retransmissionen um Key-Reinstallation "
+"(KRACK) Angriffe auf Client-Seite zu erschweren. Diese Abhilfemaßnahme kann "
+"Kompatibilitätsprobleme verursachen und die Zuverlässigkeit von "
+"Schlüsselerneuerungen in ausgelasteten Umgebungen verringern."
+
 msgid "Configuration"
 msgstr "Konfiguration"
 
@@ -963,6 +980,9 @@ msgstr "Paket herunterladen und installieren"
 msgid "Download backup"
 msgstr "Backup herunterladen"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Dropbear Instanz"
 
@@ -1047,6 +1067,10 @@ msgstr "VLAN-Funktionalität aktivieren"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr "WPS-via-Knopfdruck aktivieren, erfordert WPA(2)-PSK"
 
+#, fuzzy
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "Key Reinstallation (KRACK) Gegenmaßnahmen aktivieren "
+
 msgid "Enable learning and aging"
 msgstr "Learning und Aging aktivieren"
 
@@ -1145,6 +1169,15 @@ msgstr "Externes Protokollserver Protokoll"
 msgid "Extra SSH command options"
 msgstr "Zusätzliche SSH-Kommando-Optionen"
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "Datei"
 
@@ -1297,6 +1330,9 @@ msgstr "Allgemeine Optionen für Opkg."
 msgid "Generate Config"
 msgstr "Konfiguration generieren"
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "Sicherung erstellen"
 
@@ -3792,6 +3828,11 @@ msgstr ""
 "Achtung: Es gibt ungespeicherte Änderungen die bei einem Neustart verloren "
 "gehen!"
 
+msgid ""
+"When using a PSK, the PMK can be generated locally without inter AP "
+"communications"
+msgstr ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 "Gibt an, ob eine IPv6-Default-Route durch den Tunnel etabliert werden soll"
index 4460938b8d170000b04564c322a5754d6c5319e0..ca8240f457ee0d3c73c32e755c77956fb22d5c08 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Pootle 2.0.4\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -132,6 +135,9 @@ msgstr "Όνομα <abbr title=\"Light Emitting Diode\">LED</abbr>"
 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 ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -668,6 +674,13 @@ msgstr "Εντολή"
 msgid "Common Configuration"
 msgstr "Κοινή Παραμετροποίηση"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Παραμετροποίηση"
 
@@ -957,6 +970,9 @@ msgstr "Κατέβασμα και εγκατάσταση πακέτου"
 msgid "Download backup"
 msgstr "Κατέβασμα αντιγράφου ασφαλείας"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr ""
 
@@ -1041,6 +1057,9 @@ msgstr "Ενεργοποίηση λειτουργίας VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Ένεργοποίηση learning and aging"
 
@@ -1137,6 +1156,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "Αρχείο"
 
@@ -1283,6 +1311,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr ""
 
@@ -3619,6 +3650,11 @@ 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 0b50d4b32b00654ce16ae99ad2e416e73917a48b..6db22b6e66c8d89e8c4b24781614a06358c78bba 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Pootle 2.0.4\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -132,6 +135,9 @@ msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -655,6 +661,13 @@ msgstr "Command"
 msgid "Common Configuration"
 msgstr "Common Configuration"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Configuration"
 
@@ -939,6 +952,9 @@ msgstr "Download and install package"
 msgid "Download backup"
 msgstr ""
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr ""
 
@@ -1020,6 +1036,9 @@ msgstr ""
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1113,6 +1132,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1258,6 +1286,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr ""
 
@@ -3578,6 +3609,11 @@ 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 18adcfa8aa1a84d04a1a1861f0abb12ee5c1636e..088bdbd104198fd1627b28c2afd8d2e6212f82ea 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -136,6 +139,9 @@ msgstr "Nombre del <abbr title=\"Light Emitting Diode\">LED</abbr>"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "Dirección <abbr title=\"Media Access Control\">MAC</abbr>"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -664,6 +670,13 @@ msgstr "Comando"
 msgid "Common Configuration"
 msgstr "Configuración común"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Configuración"
 
@@ -952,6 +965,9 @@ msgstr "Descargar e instalar paquete"
 msgid "Download backup"
 msgstr "Descargar copia de seguridad"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Instancia Dropbear"
 
@@ -1035,6 +1051,9 @@ msgstr "Activar funcionalidad VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Activar aprendizaje y envejecimiento"
 
@@ -1131,6 +1150,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "Fichero"
 
@@ -1277,6 +1305,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "Generar archivo"
 
@@ -3694,6 +3725,11 @@ msgstr "Aviso"
 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 704acfa89b867a6c9749aa13eb24d9899679083a..a94ffb3a88a73e3e38416a5aa66ebbc95992f646 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -133,6 +136,9 @@ msgstr "Nom de la <abbr title=\"Diode Électro-Luminescente\">DEL</abbr>"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "Adresse <abbr title=\"Media Access Control\">MAC</abbr>"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -671,6 +677,13 @@ msgstr "Commande"
 msgid "Common Configuration"
 msgstr "Configuration commune"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Configuration"
 
@@ -962,6 +975,9 @@ msgstr "Télécharge et installe le paquet"
 msgid "Download backup"
 msgstr "Télécharger la sauvegarde"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Session Dropbear"
 
@@ -1045,6 +1061,9 @@ msgstr "Acviter la gestion des VLANs"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Activer l'apprentissage et la péremption"
 
@@ -1143,6 +1162,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "Fichier"
 
@@ -1288,6 +1316,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "Construire l'archive"
 
@@ -3713,6 +3744,11 @@ msgstr "Attention"
 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 7c956b8db05ed445e25a966635b66e3ce1360197..2997941335954931203ccb8f9bf06c6314114afc 100644 (file)
@@ -11,6 +11,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -127,6 +130,9 @@ msgstr "שם <abbr title=\"Light Emitting Diode\">LED</abbr>"
 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 ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -648,6 +654,13 @@ msgstr "פקודה"
 msgid "Common Configuration"
 msgstr "הגדרות נפוצות"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "הגדרות"
 
@@ -925,6 +938,9 @@ msgstr "הורד והתקן חבילות"
 msgid "Download backup"
 msgstr "הורד גיבוי"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr ""
 
@@ -1005,6 +1021,9 @@ msgstr "אפשר תפקוד VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "אפשר למידה והזדקנות"
 
@@ -1098,6 +1117,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1243,6 +1271,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr ""
 
@@ -3534,6 +3565,11 @@ 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 0fb435c71f0a73de0540e2831f920ce145e4e8d4..00b4d77d71d240487cbbfed7a77831a4df4d6a9d 100644 (file)
@@ -11,6 +11,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -130,6 +133,9 @@ msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Név"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-cím"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -666,6 +672,13 @@ msgstr "Parancs"
 msgid "Common Configuration"
 msgstr "Álatános beállítás"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Beállítás"
 
@@ -953,6 +966,9 @@ msgstr "Csomag letöltése és telepítése"
 msgid "Download backup"
 msgstr "Biztonsági mentés letöltése"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Dropbear példány"
 
@@ -1038,6 +1054,9 @@ msgstr "VLAN funkció engedélyezése"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Tanulás és aging engedélyezése"
 
@@ -1132,6 +1151,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "Fájl"
 
@@ -1279,6 +1307,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "Archívum készítése"
 
@@ -3700,6 +3731,11 @@ msgstr "Figyelmeztetés"
 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 8bb0da666db134f5868b4c30164a73de5b1ef6b8..b90ca79bf78b17451fad010883205c69240e3ee6 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 1.6.10\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -135,6 +138,9 @@ msgstr "<abbr title=\"Diodo ad Emissione di Luce\">LED</abbr> Nome"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "Indirizzo <abbr title=\"Controllo Accesso Supporto\">MAC</abbr>"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -671,6 +677,13 @@ msgstr "Comando"
 msgid "Common Configuration"
 msgstr "Configurazioni Comuni"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Configurazione"
 
@@ -958,6 +971,9 @@ msgstr "Scarica e installa pacchetto"
 msgid "Download backup"
 msgstr "Download backup"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Instanza di Dropbear"
 
@@ -1041,6 +1057,9 @@ msgstr "Abilita la funzionalità VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr "Abilita pulsante WPS, richiede WPA(2)-PSK"
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Attivare l'apprendimento e l'invecchiamento"
 
@@ -1136,6 +1155,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "File"
 
@@ -1281,6 +1309,9 @@ msgstr "Opzioni generali per opkg"
 msgid "Generate Config"
 msgstr "Genera Configurazione"
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "Genera Archivio"
 
@@ -2298,8 +2329,8 @@ msgid ""
 "Override the netmask sent to clients. Normally it is calculated from the "
 "subnet that is served."
 msgstr ""
-"Sovrascrivi la netmask data ai clienti. Normalmente è calcolata dalla "
-"subnet servita."
+"Sovrascrivi la netmask data ai clienti. Normalmente è calcolata dalla subnet "
+"servita."
 
 msgid "Override the table used for internal routes"
 msgstr "Sovrascrivi la tabella usata per le route interne"
@@ -3033,10 +3064,10 @@ msgid ""
 "to DHCP clients. They are also required for non-dynamic interface "
 "configurations where only hosts with a corresponding lease are served."
 msgstr ""
-"I contratti statici vengono utilizzati per assegnare indirizzi IP fissi e nomi "
-"host simbolici ai client DHCP. Essi sono necessari anche per interfacce di "
-"configurazione non dinamici, dove solo gli host col contratto corrispondente "
-"vengono serviti."
+"I contratti statici vengono utilizzati per assegnare indirizzi IP fissi e "
+"nomi host simbolici ai client DHCP. Essi sono necessari anche per interfacce "
+"di configurazione non dinamici, dove solo gli host col contratto "
+"corrispondente vengono serviti."
 
 msgid "Status"
 msgstr "Stato"
@@ -3368,8 +3399,8 @@ msgid ""
 "To restore configuration files, you can upload a previously generated backup "
 "archive here."
 msgstr ""
-"Per ripristinare i file configurazione, puoi inviare un archivio di backup generato "
-"precedentemente qui."
+"Per ripristinare i file configurazione, puoi inviare un archivio di backup "
+"generato precedentemente qui."
 
 msgid "Tone"
 msgstr ""
@@ -3544,8 +3575,8 @@ msgstr ""
 "contratto. L'<em>Indirizzo-MAC</em> identifica l'host, l'<em>Indirizzo-IPv4</"
 "em> specifica l'indirizzo fisso da utilizzare e il <em>Nome Host</em> è "
 "assegnato come nome simbolico alla richiesta dell'host. L'opzionale "
-"<em>tempo di Contratto</em> può essere usato per impostare un tempo di contratto "
-"non-standard a uno specifico host, p.e. 12h, 3d o infinito."
+"<em>tempo di Contratto</em> può essere usato per impostare un tempo di "
+"contratto non-standard a uno specifico host, p.e. 12h, 3d o infinito."
 
 msgid "Used"
 msgstr "Usato"
@@ -3643,7 +3674,8 @@ msgstr ""
 msgid ""
 "Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)"
 msgstr ""
-"Attendi sincro NTP quei dati secondi, immetti 0 per disabilitare l'attesa (opzionale)"
+"Attendi sincro NTP quei dati secondi, immetti 0 per disabilitare l'attesa "
+"(opzionale)"
 
 msgid "Waiting for changes to be applied..."
 msgstr "In attesa delle modifiche da applicare ..."
@@ -3660,6 +3692,11 @@ msgstr "Avviso"
 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 7639f4b619dfd76fca659d59acc8a1cfb518eb9d..1d321f939407dc4be55089d56ba81bd4d376f825 100644 (file)
@@ -3,16 +3,19 @@ msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2017-07-28 12:17+0900\n"
+"PO-Revision-Date: 2017-10-20 13:54+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.3\n"
+"X-Generator: Poedit 2.0.4\n"
 "Language-Team: \n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr "%s は複数のVLANにUntaggedしています!"
 
@@ -133,6 +136,9 @@ msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 名"
 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 ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -161,19 +167,19 @@ msgstr ""
 "を行う必要があります。"
 
 msgid "A43C + J43 + A43"
-msgstr ""
+msgstr "A43C + J43 + A43"
 
 msgid "A43C + J43 + A43 + V43"
-msgstr ""
+msgstr "A43C + J43 + A43 + V43"
 
 msgid "ADSL"
 msgstr "ADSL"
 
 msgid "AICCU (SIXXS)"
-msgstr ""
+msgstr "AICCU (SIXXS)"
 
 msgid "ANSI T1.413"
-msgstr ""
+msgstr "ANSI T1.413"
 
 msgid "APN"
 msgstr "APN"
@@ -298,7 +304,7 @@ msgstr "ローカルホストを許可する"
 
 msgid "Allow remote hosts to connect to local SSH forwarded ports"
 msgstr ""
-"リモートホストがSSH転送されたローカルのポートに接続することを許可します"
+"リモートホストがSSH転送されたローカルのポートに接続することを許可します"
 
 msgid "Allow root logins with password"
 msgstr "パスワードでの root ログインを許可"
@@ -409,7 +415,7 @@ msgid ""
 msgstr ""
 
 msgid "Assign interfaces..."
-msgstr ""
+msgstr "インターフェースの割当て..."
 
 msgid ""
 "Assign prefix parts using this hexadecimal subprefix ID for this interface."
@@ -561,8 +567,8 @@ msgid ""
 "Build/distribution specific feed definitions. This file will NOT be "
 "preserved in any sysupgrade."
 msgstr ""
-"ビルド/ディストリビューション固有のフィード定義です。このファイルはsysupgrade"
-"の際に引き継がれません。"
+"ビルド / ディストリビューション固有のフィード定義です。このファイルは"
+"sysupgradeの際に引き継がれません。"
 
 msgid "Buttons"
 msgstr "ボタン"
@@ -666,6 +672,17 @@ msgstr "コマンド"
 msgid "Common Configuration"
 msgstr "一般設定"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+"キーのインストールに使用される EAPOL キーフレームの再送信を無効にすることによ"
+"り、クライアント サイドの Key Reinstallation Attacks (KRACK) を困難にします。"
+"この回避策は、相互運用性の問題や、特に高負荷のトラフィック環境下におけるキー "
+"ネゴシエーションの信頼性低下の原因となることがあります。"
+
 msgid "Configuration"
 msgstr "設定"
 
@@ -954,6 +971,9 @@ msgstr "パッケージのダウンロードとインストール"
 msgid "Download backup"
 msgstr "バックアップ アーカイブのダウンロード"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Dropbear設定"
 
@@ -1037,14 +1057,17 @@ msgstr "VLAN機能を有効にする"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr "WPS プッシュボタンを有効化するには、WPA(2)-PSKが必要です。"
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "Key Reinstallation (KRACK) 対策の有効化"
+
 msgid "Enable learning and aging"
 msgstr "ラーニング エイジング機能を有効にする"
 
 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 ""
@@ -1132,6 +1155,15 @@ msgstr "外部システムログ・サーバー プロトコル"
 msgid "Extra SSH command options"
 msgstr "拡張 SSHコマンドオプション"
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "ファイル"
 
@@ -1282,6 +1314,9 @@ msgstr "opkgの一般設定"
 msgid "Generate Config"
 msgstr "コンフィグ生成"
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "バックアップ アーカイブの作成"
 
@@ -1945,10 +1980,10 @@ 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のプロトコル拡張が見つかりません"
@@ -2066,7 +2101,7 @@ msgid "Network boot image"
 msgstr "ネットワークブート用イメージ"
 
 msgid "Network without interfaces."
-msgstr ""
+msgstr "インターフェースの無いネットワークです。"
 
 msgid "Next »"
 msgstr "次 »"
@@ -2129,7 +2164,7 @@ msgid "Normal"
 msgstr "標準"
 
 msgid "Not Found"
-msgstr ""
+msgstr "見つかりません"
 
 msgid "Not associated"
 msgstr "アソシエーションされていません"
@@ -2302,7 +2337,7 @@ msgstr ""
 "ネットから計算されます。"
 
 msgid "Override the table used for internal routes"
-msgstr ""
+msgstr "内部ルートに使用されるテーブルを上書きします。"
 
 msgid "Overview"
 msgstr "概要"
@@ -2377,7 +2412,7 @@ msgid "Password of Private Key"
 msgstr "秘密鍵のパスワード"
 
 msgid "Password of inner Private Key"
-msgstr ""
+msgstr "秘密鍵のパスワード"
 
 msgid "Password successfully changed!"
 msgstr "パスワードを変更しました"
@@ -2398,13 +2433,13 @@ msgid "Path to executable which handles the button event"
 msgstr "ボタンイベントをハンドルする実行ファイルのパス"
 
 msgid "Path to inner CA-Certificate"
-msgstr ""
+msgstr "CA 証明書のパス"
 
 msgid "Path to inner Client-Certificate"
-msgstr ""
+msgstr "クライアント証明書のパス"
 
 msgid "Path to inner Private Key"
-msgstr ""
+msgstr "秘密鍵のパス"
 
 msgid "Peak:"
 msgstr "ピーク:"
@@ -3178,7 +3213,7 @@ msgstr ""
 "<code>0-9</code>, <code>_</code>"
 
 msgid "The configuration file could not be loaded due to the following error:"
-msgstr ""
+msgstr "設定ファイルは以下のエラーにより読み込めませんでした:"
 
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
@@ -3230,7 +3265,7 @@ msgid ""
 msgstr ""
 
 msgid "The length of the IPv6 prefix in bits"
-msgstr ""
+msgstr "IPv6 プレフィクスの長さ (bit) です。"
 
 msgid "The local IPv4 address over which the tunnel is created (optional)."
 msgstr ""
@@ -3243,12 +3278,18 @@ msgid ""
 "segments. Often there is by default one Uplink port for a connection to the "
 "next greater network like the internet and other ports for a local network."
 msgstr ""
+"ネットワーク ポートは、コンピュータが他と直接通信することができる複数の "
+"<abbr title=\"Virtual Local Area Network\">VLAN</abbr> にまとめることができま"
+"す。 <abbr title=\"Virtual Local Area Network\">VLAN</abbr> は、異なるネット"
+"ワーク セグメントの分離にしばしば用いられます。通常、インターネットなどより上"
+"位のネットワークへの接続に使用するアップリンク ポートと、ローカル ネットワー"
+"ク用のその他のポートが存在します。"
 
 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 "
@@ -3473,7 +3514,7 @@ msgid "UUID"
 msgstr "UUID"
 
 msgid "Unable to dispatch"
-msgstr ""
+msgstr "ディスパッチできません"
 
 msgid "Unavailable Seconds (UAS)"
 msgstr ""
@@ -3558,7 +3599,7 @@ msgid "Use gateway metric"
 msgstr "ゲートウェイ メトリックを使用する"
 
 msgid "Use routing table"
-msgstr ""
+msgstr "ルーティング テーブルの使用"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
@@ -3584,10 +3625,10 @@ msgid ""
 msgstr ""
 
 msgid "User certificate (PEM encoded)"
-msgstr ""
+msgstr "ユーザー証明書(PEM エンコード)"
 
 msgid "User key (PEM encoded)"
-msgstr ""
+msgstr "ユーザー秘密鍵(PEM エンコード)"
 
 msgid "Username"
 msgstr "ユーザー名"
@@ -3599,7 +3640,7 @@ msgid "VDSL"
 msgstr "VDSL"
 
 msgid "VLANs on %q"
-msgstr "%q上のVLANs"
+msgstr "%q上のVLAN"
 
 msgid "VLANs on %q (%s)"
 msgstr "%q上のVLAN (%s)"
@@ -3629,7 +3670,7 @@ msgid "Vendor Class to send when requesting DHCP"
 msgstr "DHCPリクエスト送信時のベンダークラスを設定"
 
 msgid "Verbose"
-msgstr ""
+msgstr "詳細"
 
 msgid "Verbose logging by aiccu daemon"
 msgstr ""
@@ -3677,7 +3718,7 @@ msgid "Waiting for command to complete..."
 msgstr "コマンド実行中です..."
 
 msgid "Waiting for device..."
-msgstr "ã\83\87ã\83\90ã\82¤ã\82¹ã\81®èµ·å\8b\95ã\82\92å¾\85ã\81£ã\81¦ã\81\84ã\81¾す..."
+msgstr "ã\83\87ã\83\90ã\82¤ã\82¹ã\82\92èµ·å\8b\95中ã\81§す..."
 
 msgid "Warning"
 msgstr "警告"
@@ -3685,6 +3726,11 @@ 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
@@ -3839,7 +3885,7 @@ msgid "minimum 1280, maximum 1480"
 msgstr "最小値 1280、最大値 1480"
 
 msgid "minutes"
-msgstr ""
+msgstr ""
 
 msgid "no"
 msgstr "いいえ"
@@ -3909,78 +3955,3 @@ msgstr "はい"
 
 msgid "« Back"
 msgstr "« 戻る"
-
-#~ msgid "Leasetime"
-#~ msgstr "リース時間"
-
-#~ msgid "Optional."
-#~ msgstr "(オプション)"
-
-#~ msgid "automatic"
-#~ msgstr "自動"
-
-#~ msgid "AR Support"
-#~ msgstr "ARサポート"
-
-#~ msgid "Atheros 802.11%s Wireless Controller"
-#~ msgstr "Atheros 802.11%s 無線LANコントローラ"
-
-#~ msgid "Background Scan"
-#~ msgstr "バックグラウンドスキャン"
-
-#~ msgid "Compression"
-#~ msgstr "圧縮"
-
-#~ msgid "Disable HW-Beacon timer"
-#~ msgstr "HWビーコンタイマーを無効にする"
-
-#~ msgid "Do not send probe responses"
-#~ msgstr "プローブレスポンスを送信しない"
-
-#~ msgid "Fast Frames"
-#~ msgstr "ファスト・フレーム"
-
-#~ msgid "Maximum Rate"
-#~ msgstr "最大レート"
-
-#~ msgid "Minimum Rate"
-#~ msgstr "最小レート"
-
-#~ msgid "Multicast Rate"
-#~ msgstr "マルチキャストレート"
-
-#~ msgid "Outdoor Channels"
-#~ msgstr "屋外用周波数"
-
-#~ msgid "Regulatory Domain"
-#~ msgstr "規制ドメイン"
-
-#~ msgid "Separate WDS"
-#~ msgstr "WDSを分離する"
-
-#~ msgid "Static WDS"
-#~ msgstr "静的WDS"
-
-#~ msgid "Turbo Mode"
-#~ msgstr "ターボモード"
-
-#~ msgid "XR Support"
-#~ msgstr "XRサポート"
-
-#~ msgid "Required. Public key of peer."
-#~ msgstr "ピアの公開鍵(必須)"
-
-#~ msgid "An additional network will be created if you leave this unchecked."
-#~ msgstr "チェックボックスがオフの場合、追加のネットワークが作成されます。"
-
-#~ msgid "Join Network: Settings"
-#~ msgstr "ネットワークに接続する: 設定"
-
-#~ msgid "CPU"
-#~ msgstr "CPU"
-
-#~ msgid "Port %d"
-#~ msgstr "ポート %d"
-
-#~ msgid "VLAN Interface"
-#~ msgstr "VLANインターフェース"
index 0352004f59f0741526447ec3bf08015a67f12500..cde3c04c1329a341d3960edc849423bcf22e3eb4 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Pootle 2.0.4\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -128,6 +131,9 @@ msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 이름"
 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 ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -651,6 +657,13 @@ msgstr "명령어"
 msgid "Common Configuration"
 msgstr "공통 설정"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "설정"
 
@@ -936,6 +949,9 @@ msgstr "패키지 다운로드 후 설치"
 msgid "Download backup"
 msgstr "백업 다운로드"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr ""
 
@@ -1018,6 +1034,9 @@ msgstr "VLAN 기능 활성화"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1111,6 +1130,15 @@ msgstr "외부 system log 서버 프로토콜"
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1256,6 +1284,9 @@ msgstr "opkg 명령의 기본 옵션들"
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "아카이브 생성"
 
@@ -3586,6 +3617,11 @@ 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 63c4e0bc2a16230401577d4b66ede8b77ffa187d..74d3e19d7fd4518da395129ae30543539674dfcb 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Translate Toolkit 1.1.1\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -129,6 +132,9 @@ msgstr ""
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "MAC-Alamat"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -633,6 +639,13 @@ msgstr "Perintah"
 msgid "Common Configuration"
 msgstr ""
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Konfigurasi"
 
@@ -911,6 +924,9 @@ msgstr "Turun dan memasang pakej"
 msgid "Download backup"
 msgstr ""
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr ""
 
@@ -990,6 +1006,9 @@ msgstr ""
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1083,6 +1102,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1228,6 +1256,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr ""
 
@@ -3554,6 +3585,11 @@ 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index db2ece292d595f7545e32a822e0b521f70cf5435..f1bfec4f59bfbf85129071cfa3224ee3c9d2c756 100644 (file)
@@ -8,6 +8,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -127,6 +130,9 @@ msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Navn"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-Adresse"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -655,6 +661,13 @@ msgstr "Kommando"
 msgid "Common Configuration"
 msgstr "Vanlige Innstillinger"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Konfigurasjon"
 
@@ -942,6 +955,9 @@ msgstr "Last ned og installer pakken"
 msgid "Download backup"
 msgstr "Last ned sikkerhetskopi"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Dropbear Instans"
 
@@ -1025,6 +1041,9 @@ msgstr "Aktiver VLAN funksjonalitet"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Aktiver 'læring' og 'aldring'"
 
@@ -1119,6 +1138,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "Fil"
 
@@ -1265,6 +1293,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "Opprett arkiv"
 
@@ -3666,6 +3697,11 @@ msgstr "Advarsel"
 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 77ab4bf193f19e66898e345e08a8ba814fd3e1a0..22902c499748d24593a88d18c8ea67e79f5570a0 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 "|| n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -132,6 +135,9 @@ msgstr "Nazwa diody <abbr title=\"Light Emitting Diode\">LED</abbr>"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "Adres <abbr title=\"Media Access Control\">MAC</abbr>"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -673,6 +679,13 @@ msgstr "Polecenie"
 msgid "Common Configuration"
 msgstr "Konfiguracja podstawowa"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Konfiguracja"
 
@@ -965,6 +978,9 @@ msgstr "Pobierz i zainstaluj pakiet"
 msgid "Download backup"
 msgstr "Pobierz kopię zapasową"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Usługa Dropbear"
 
@@ -1051,6 +1067,9 @@ msgstr "Włącz funkcjonalność VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Włącz uczenie się i starzenie"
 
@@ -1149,6 +1168,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "Plik"
 
@@ -1296,6 +1324,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "Twórz archiwum"
 
@@ -3730,6 +3761,11 @@ msgstr "Ostrzeżenie"
 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 4012349cfb0fea371808c38df4e2b4b444c65286..eef8ebac3888b8a70425809b30d828aa3cc2f3fe 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 "X-Generator: Poedit 1.8.11\n"
 "Language-Team: \n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr "%s está sem etiqueta em múltiplas VLANs!"
 
@@ -143,6 +146,9 @@ msgstr "Nome do <abbr title=\"Diodo Emissor de Luz\">LED</abbr>"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "Endereço <abbr title=\"Controle de Acesso ao Meio\">MAC</abbr>"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -706,6 +712,13 @@ msgstr "Comando"
 msgid "Common Configuration"
 msgstr "Configuração Comum"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Configuração"
 
@@ -1000,6 +1013,9 @@ msgstr "Baixe e instale o pacote"
 msgid "Download backup"
 msgstr "Baixar a cópia de segurança"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Dropbear"
 
@@ -1087,6 +1103,9 @@ msgstr "Ativar funcionalidade de VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr "Habilite o botão WPS. requer WPA(2)-PSK"
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Ativar o aprendizado e obsolescência"
 
@@ -1184,6 +1203,15 @@ msgstr "Protocolo do servidor externo de registro do sistema (syslog)"
 msgid "Extra SSH command options"
 msgstr "Opções adicionais do comando SSH"
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "Arquivo"
 
@@ -1336,6 +1364,9 @@ msgstr "Opções gerais para o opkg"
 msgid "Generate Config"
 msgstr "Gerar Configuração"
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "Gerar arquivo"
 
@@ -3856,6 +3887,11 @@ msgstr "Atenção"
 msgid "Warning: There are unsaved changes that will get lost on reboot!"
 msgstr "Atenção: Existem mudanças não salvas que serão perdidas ao reiniciar!"
 
+msgid ""
+"When using a PSK, the PMK can be generated locally without inter AP "
+"communications"
+msgstr ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr "Se deve criar uma rota padrão IPv6 sobre o túnel"
 
index 88614179850e93f5254050f9309558f4ecbaac2b..aadccccc39afaa01a75ca9489d6c50349c88645f 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -137,6 +140,9 @@ msgstr "Nome da <abbr title=\"Diodo Emissor de Luz\">LED</abbr>"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "Endereço <abbr title=\"Controle de Acesso ao Meio\">MAC</abbr>"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -668,6 +674,13 @@ msgstr "Comando"
 msgid "Common Configuration"
 msgstr "Configuração comum"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Configuração"
 
@@ -957,6 +970,9 @@ msgstr "Descarregar e instalar pacote"
 msgid "Download backup"
 msgstr "Descarregar backup"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Instância do Dropbear"
 
@@ -1041,6 +1057,9 @@ msgstr "Ativar a funcionalidade VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Ativar aprendizagem e envelhecimento"
 
@@ -1137,6 +1156,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "Ficheiro"
 
@@ -1282,6 +1310,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "Gerar arquivo"
 
@@ -3660,6 +3691,11 @@ msgstr "Aviso"
 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 305d723615469d63a0b458cca3c90c11078b95e6..029b3958f939fec77e80d9919667c9ebc4be5a6d 100644 (file)
@@ -12,6 +12,9 @@ msgstr ""
 "20)) ? 1 : 2);;\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -130,6 +133,9 @@ msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Nume"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-Addresa"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -643,6 +649,13 @@ msgstr "Comanda"
 msgid "Common Configuration"
 msgstr "Configurarea obisnuita"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Configurare"
 
@@ -918,6 +931,9 @@ msgstr "Descarca si instaleaza pachetul"
 msgid "Download backup"
 msgstr "Descarca backup"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Instanta dropbear"
 
@@ -996,6 +1012,9 @@ msgstr "Activeaza VLAN-urile"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1089,6 +1108,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "Fisier"
 
@@ -1235,6 +1263,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr ""
 
@@ -3527,6 +3558,11 @@ msgstr "Avertizare"
 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 51f8feb8c7083642b76140a476b44180c599de68..9a3cf434fc49518a3fa706495c3fbfc052165b2f 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -133,6 +136,9 @@ msgstr "Название <abbr title=\"Светодиод\">LED</abbr>"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "<abbr title=\"Управление доступом к носителю\">MAC</abbr>-адрес"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -668,6 +674,13 @@ msgstr "Команда"
 msgid "Common Configuration"
 msgstr "Общая конфигурация"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Конфигурация"
 
@@ -955,6 +968,9 @@ msgstr "Загрузить и установить пакет"
 msgid "Download backup"
 msgstr "Загрузить резервную копию"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Dropbear"
 
@@ -1042,6 +1058,9 @@ msgstr "Включить поддержку VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Включить изучение и устаревание (learning/aging)"
 
@@ -1138,6 +1157,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "Файл"
 
@@ -1284,6 +1312,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "Создать архив"
 
@@ -3702,6 +3733,11 @@ 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 5b434b9cf7d255c7b744e582c1309e0fd33ba154..82fd38949be9847ced590c01efe4dbeafb0b6b98 100644 (file)
@@ -8,6 +8,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -123,6 +126,9 @@ msgstr ""
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr ""
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -626,6 +632,13 @@ msgstr ""
 msgid "Common Configuration"
 msgstr ""
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr ""
 
@@ -899,6 +912,9 @@ msgstr ""
 msgid "Download backup"
 msgstr ""
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr ""
 
@@ -977,6 +993,9 @@ msgstr ""
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1070,6 +1089,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1215,6 +1243,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr ""
 
@@ -3495,6 +3526,11 @@ 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 058fcb56aa6265ca041ce1c14511c09ed894521d..3360ccb230c7e1ab98b405c6f82abe913eb81855 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "PO-Revision-Date: 2014-04-28 09:22+0200\n"
-"Last-Translator: EricJ <ericj@acc.umu.se>\n"
+"Last-Translator: Kristoffer Grundström <hamnisdude@gmail.com>\n"
 "Language-Team: none\n"
 "Language: sv\n"
 "MIME-Version: 1.0\n"
@@ -11,11 +11,14 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Pootle 2.0.6\n"
 
-msgid "%s is untagged in multiple VLANs!"
+msgid "%.1f dB"
 msgstr ""
 
+msgid "%s is untagged in multiple VLANs!"
+msgstr "%s är inte taggad i flera VLAN!"
+
 msgid "(%d minute window, %d second interval)"
-msgstr ""
+msgstr "(%d minut-fönster, %d sekundintervall)"
 
 msgid "(%s available)"
 msgstr "(%s tillgängligt)"
@@ -27,22 +30,22 @@ msgid "(no interfaces attached)"
 msgstr "(inga gränssnitt har bifogats)"
 
 msgid "-- Additional Field --"
-msgstr ""
+msgstr "-- Ytterligare fält --"
 
 msgid "-- Please choose --"
-msgstr ""
+msgstr "-- Vänligen välj --"
 
 msgid "-- custom --"
 msgstr "-- anpassad --"
 
 msgid "-- match by device --"
-msgstr ""
+msgstr "-- matcha enligt enhet --"
 
 msgid "-- match by label --"
-msgstr ""
+msgstr "-- matcha enligt märke --"
 
 msgid "-- match by uuid --"
-msgstr ""
+msgstr "-- matcha enligt uuid --"
 
 msgid "1 Minute Load:"
 msgstr "Belastning senaste minuten:"
@@ -63,7 +66,7 @@ msgid "6-octet identifier as a hex string - no colons"
 msgstr ""
 
 msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r Snabb förvandling"
 
 msgid "802.11w Association SA Query maximum timeout"
 msgstr ""
@@ -129,6 +132,9 @@ msgstr ""
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr ""
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -143,30 +149,32 @@ msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
 msgstr ""
 
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr ""
+msgstr "<abbr title='Pairvis: %s / Grupp: %s'>%s - %s</abbr>"
 
 msgid ""
 "<br/>Note: you need to manually restart the cron service if the crontab file "
 "was empty before editing."
 msgstr ""
+"<br/>Notera att: du måste starta om cron-tjänsten om crontab-filen var tom "
+"innan den ändrades."
 
 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 ""
+msgstr "APN"
 
 msgid "ARP retry threshold"
 msgstr ""
@@ -175,7 +183,7 @@ msgid "ATM (Asynchronous Transfer Mode)"
 msgstr ""
 
 msgid "ATM Bridges"
-msgstr ""
+msgstr "ATM-bryggor"
 
 msgid "ATM Virtual Channel Identifier (VCI)"
 msgstr ""
@@ -196,109 +204,112 @@ msgid "ATU-C System Vendor ID"
 msgstr ""
 
 msgid "AYIYA"
-msgstr ""
+msgstr "AYIYA"
 
 msgid "Access Concentrator"
 msgstr ""
 
 msgid "Access Point"
-msgstr ""
+msgstr "Accesspunkt"
 
 msgid "Action"
-msgstr ""
+msgstr "Åtgärd"
 
 msgid "Actions"
-msgstr ""
+msgstr "Åtgärder"
 
 msgid "Activate this network"
-msgstr ""
+msgstr "Aktivera det här nätverket"
 
 msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
-msgstr ""
+msgstr "Aktiva <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-rutter"
 
 msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
-msgstr ""
+msgstr "Aktiva <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-rutter"
 
 msgid "Active Connections"
-msgstr ""
+msgstr "Aktiva anslutningar"
 
 msgid "Active DHCP Leases"
-msgstr ""
+msgstr "Aktiva DHCP-kontrakt"
 
 msgid "Active DHCPv6 Leases"
-msgstr ""
+msgstr "Aktiva DHCPv6-kontrakt"
 
 msgid "Ad-Hoc"
-msgstr ""
+msgstr "Ad-Hoc"
 
 msgid "Add"
-msgstr ""
+msgstr "Lägg till"
 
 msgid "Add local domain suffix to names served from hosts files"
 msgstr ""
 
 msgid "Add new interface..."
-msgstr ""
+msgstr "Lägg till ett nytt gränssnitt"
 
 msgid "Additional Hosts files"
-msgstr ""
+msgstr "Ytterligare värdfiler"
 
 msgid "Additional servers file"
-msgstr ""
+msgstr "Ytterligare server-filer"
 
 msgid "Address"
-msgstr ""
+msgstr "Adress"
 
 msgid "Address to access local relay bridge"
-msgstr ""
+msgstr "Adress för att komma åt lokal reläbrygga"
 
 msgid "Administration"
-msgstr ""
+msgstr "Administration"
 
 msgid "Advanced Settings"
-msgstr ""
+msgstr "Avancerade inställningar"
 
 msgid "Aggregate Transmit Power(ACTATP)"
 msgstr ""
 
 msgid "Alert"
-msgstr ""
+msgstr "Varning"
 
 msgid ""
 "Allocate IP addresses sequentially, starting from the lowest available "
 "address"
 msgstr ""
+"Allokera IP-adresser sekventiellt med start från den lägsta möjliga adressen"
 
 msgid "Allocate IP sequentially"
-msgstr ""
+msgstr "Allokera IP sekventiellt"
 
 msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
-msgstr ""
+msgstr "Tillåt <abbr title=\"Secure Shell\">SSH</abbr> lösenordsautentisering"
 
 msgid "Allow all except listed"
-msgstr ""
+msgstr "Tillåt alla utom listade"
 
 msgid "Allow listed only"
-msgstr ""
+msgstr "Tillåt enbart listade"
 
 msgid "Allow localhost"
-msgstr ""
+msgstr "Tillåt localhost"
 
 msgid "Allow remote hosts to connect to local SSH forwarded ports"
 msgstr ""
+"Tillåt fjärrstyrda värdar att ansluta via SSH till lokalt vidarebefordrade "
+"portar"
 
 msgid "Allow root logins with password"
-msgstr ""
+msgstr "Tillåt root-inloggningar med lösenord"
 
 msgid "Allow the <em>root</em> user to login with password"
-msgstr ""
+msgstr "Tillåt <em>root</em>-användaren att logga in med lösenord"
 
 msgid ""
 "Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
 msgstr ""
 
 msgid "Allowed IPs"
-msgstr ""
+msgstr "Tillåtna IP-adresser"
 
 msgid ""
 "Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
@@ -357,78 +368,78 @@ msgid "Announce as default router even if no public prefix is available."
 msgstr ""
 
 msgid "Announced DNS domains"
-msgstr ""
+msgstr "Aviserade DNS-domäner"
 
 msgid "Announced DNS servers"
-msgstr ""
+msgstr "Aviserade DNS-servrar"
 
 msgid "Anonymous Identity"
-msgstr ""
+msgstr "Anonym identitet"
 
 msgid "Anonymous Mount"
-msgstr ""
+msgstr "Anonym montering"
 
 msgid "Anonymous Swap"
-msgstr ""
+msgstr "Anonym Swap"
 
 msgid "Antenna 1"
-msgstr ""
+msgstr "Antenn 1"
 
 msgid "Antenna 2"
-msgstr ""
+msgstr "Antenn 2"
 
 msgid "Antenna Configuration"
-msgstr ""
+msgstr "Konfiguration av antenn"
 
 msgid "Any zone"
-msgstr ""
+msgstr "Någon zon"
 
 msgid "Apply"
-msgstr ""
+msgstr "Verkställ"
 
 msgid "Applying changes"
-msgstr ""
+msgstr "Verkställer ändringar"
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
 msgstr ""
 
 msgid "Assign interfaces..."
-msgstr ""
+msgstr "Tilldela gränssnitten..."
 
 msgid ""
 "Assign prefix parts using this hexadecimal subprefix ID for this interface."
 msgstr ""
 
 msgid "Associated Stations"
-msgstr ""
+msgstr "Associerade stationer"
 
 msgid "Auth Group"
-msgstr ""
+msgstr "Autentiseringsgrupp"
 
 msgid "Authentication"
-msgstr ""
+msgstr "Autentisering"
 
 msgid "Authentication Type"
-msgstr ""
+msgstr "Typ av autentisering"
 
 msgid "Authoritative"
-msgstr ""
+msgstr "Auktoritiv"
 
 msgid "Authorization Required"
-msgstr ""
+msgstr "Tillstånd krävs"
 
 msgid "Auto Refresh"
-msgstr ""
+msgstr "Uppdatera automatiskt"
 
 msgid "Automatic"
-msgstr ""
+msgstr "Automatisk"
 
 msgid "Automatic Homenet (HNCP)"
-msgstr ""
+msgstr "Automatiskt hemnet (HNCP)"
 
 msgid "Automatically check filesystem for errors before mounting"
-msgstr ""
+msgstr "Kolla efter fel i filsystemet automatiskt innan det monteras"
 
 msgid "Automatically mount filesystems on hotplug"
 msgstr ""
@@ -437,64 +448,64 @@ msgid "Automatically mount swap on hotplug"
 msgstr ""
 
 msgid "Automount Filesystem"
-msgstr ""
+msgstr "Monstera filsystem automatiskt"
 
 msgid "Automount Swap"
-msgstr ""
+msgstr "Montera Swap automatiskt"
 
 msgid "Available"
-msgstr ""
+msgstr "Tillgänglig"
 
 msgid "Available packages"
-msgstr ""
+msgstr "Tillgängliga paket"
 
 msgid "Average:"
-msgstr ""
+msgstr "Snitt:"
 
 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 ""
+msgstr "BSSID"
 
 msgid "Back"
-msgstr ""
+msgstr "Bakåt"
 
 msgid "Back to Overview"
-msgstr ""
+msgstr "Backa till Överblick"
 
 msgid "Back to configuration"
-msgstr ""
+msgstr "Backa till konfiguration"
 
 msgid "Back to overview"
-msgstr ""
+msgstr "Backa till överblick"
 
 msgid "Back to scan results"
-msgstr ""
+msgstr "Backa till skanningsresultat"
 
 msgid "Backup / Flash Firmware"
-msgstr ""
+msgstr "Säkerhetskopiera / Flasha inre mjukvara"
 
 msgid "Backup / Restore"
-msgstr ""
+msgstr "Säkerhetskopiera / Återställ"
 
 msgid "Backup file list"
-msgstr ""
+msgstr "Säkerhetskopiera fillista"
 
 msgid "Bad address specified!"
-msgstr ""
+msgstr "Fel adress angiven!"
 
 msgid "Band"
-msgstr ""
+msgstr "Band"
 
 msgid "Behind NAT"
-msgstr ""
+msgstr "Bakom NAT"
 
 msgid ""
 "Below is the determined list of files to backup. It consists of changed "
@@ -503,7 +514,7 @@ msgid ""
 msgstr ""
 
 msgid "Bind interface"
-msgstr ""
+msgstr "Bind gränssnitt"
 
 msgid "Bind only to specific interfaces rather than wildcard address."
 msgstr ""
@@ -512,16 +523,16 @@ msgid "Bind the tunnel to this interface (optional)."
 msgstr ""
 
 msgid "Bitrate"
-msgstr ""
+msgstr "Bithastighet"
 
 msgid "Bogus NX Domain Override"
 msgstr ""
 
 msgid "Bridge"
-msgstr ""
+msgstr "Brygga"
 
 msgid "Bridge interfaces"
-msgstr ""
+msgstr "Brygga gränssnitt"
 
 msgid "Bridge unit number"
 msgstr ""
@@ -530,13 +541,13 @@ msgid "Bring up on boot"
 msgstr ""
 
 msgid "Broadcom 802.11%s Wireless Controller"
-msgstr ""
+msgstr "Broadcom 802.11%s Trådlös kontroller"
 
 msgid "Broadcom BCM%04x 802.11 Wireless Controller"
-msgstr ""
+msgstr "Broadcom BCM%04x 802.11 Trådlös kontroller"
 
 msgid "Buffered"
-msgstr ""
+msgstr "Buffrad"
 
 msgid ""
 "Build/distribution specific feed definitions. This file will NOT be "
@@ -544,46 +555,49 @@ msgid ""
 msgstr ""
 
 msgid "Buttons"
-msgstr ""
+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."
 
 msgid "CPU usage (%)"
-msgstr ""
+msgstr "CPU-användning (%)"
 
 msgid "Cancel"
-msgstr ""
+msgstr "Avbryt"
 
 msgid "Category"
-msgstr ""
+msgstr "Kategori"
 
 msgid "Chain"
-msgstr ""
+msgstr "Kedja"
 
 msgid "Changes"
-msgstr ""
+msgstr "Ändringar"
 
 msgid "Changes applied."
-msgstr ""
+msgstr "Tillämpade ändringar"
 
 msgid "Changes the administrator password for accessing the device"
-msgstr ""
+msgstr "Ändrar administratörens lösenord för att få tillgång till enheten"
 
 msgid "Channel"
-msgstr ""
+msgstr "Kanal"
 
 msgid "Check"
-msgstr ""
+msgstr "Kontrollera"
 
 msgid "Check fileystems before mount"
-msgstr ""
+msgstr "Kontrollera filsystemen innan de monteras"
 
 msgid "Check this option to delete the existing networks from this radio."
 msgstr ""
+"Bocka för det här alternativet för att ta bort befintliga nätverk från den "
+"här radion."
 
 msgid "Checksum"
-msgstr ""
+msgstr "Checksumma"
 
 msgid ""
 "Choose the firewall zone you want to assign to this interface. Select "
@@ -598,7 +612,7 @@ msgid ""
 msgstr ""
 
 msgid "Cipher"
-msgstr ""
+msgstr "Chiffer"
 
 msgid "Cisco UDP encapsulation"
 msgstr ""
@@ -610,10 +624,10 @@ msgid ""
 msgstr ""
 
 msgid "Client"
-msgstr ""
+msgstr "Klient"
 
 msgid "Client ID to send when requesting DHCP"
-msgstr ""
+msgstr "Klient-ID att skicka vid DHCP-förfrågning"
 
 msgid ""
 "Close inactive connection after the given amount of seconds, use 0 to "
@@ -621,49 +635,56 @@ msgid ""
 msgstr ""
 
 msgid "Close list..."
-msgstr ""
+msgstr "Stäng ner lista..."
 
 msgid "Collecting data..."
-msgstr ""
+msgstr "Samlar in data..."
 
 msgid "Command"
-msgstr ""
+msgstr "Kommando"
 
 msgid "Common Configuration"
+msgstr "Vanlig konfiguration"
+
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
 msgstr ""
 
 msgid "Configuration"
-msgstr ""
+msgstr "Konfiguration"
 
 msgid "Configuration applied."
-msgstr ""
+msgstr "Konfigurationen tillämpades"
 
 msgid "Configuration files will be kept."
-msgstr ""
+msgstr "Konfigurationsfiler kommer att behållas."
 
 msgid "Confirmation"
-msgstr ""
+msgstr "Bekräftelse"
 
 msgid "Connect"
-msgstr ""
+msgstr "Anslut"
 
 msgid "Connected"
-msgstr ""
+msgstr "Ansluten"
 
 msgid "Connection Limit"
-msgstr ""
+msgstr "Anslutningsgräns"
 
 msgid "Connection to server fails when TLS cannot be used"
 msgstr ""
 
 msgid "Connections"
-msgstr ""
+msgstr "Anslutningar"
 
 msgid "Country"
-msgstr ""
+msgstr "Land"
 
 msgid "Country Code"
-msgstr ""
+msgstr "Landskod"
 
 msgid "Cover the following interface"
 msgstr ""
@@ -675,19 +696,19 @@ msgid "Create / Assign firewall-zone"
 msgstr ""
 
 msgid "Create Interface"
-msgstr ""
+msgstr "Skapa gränssnitt"
 
 msgid "Create a bridge over multiple interfaces"
-msgstr ""
+msgstr "Skapa en brygga över flera gränssnitt"
 
 msgid "Critical"
-msgstr ""
+msgstr "Kritisk"
 
 msgid "Cron Log Level"
-msgstr ""
+msgstr "Loggnivå för Cron"
 
 msgid "Custom Interface"
-msgstr ""
+msgstr "Anpassat gränssnitt"
 
 msgid "Custom delegated IPv6-prefix"
 msgstr ""
@@ -698,7 +719,7 @@ msgid ""
 msgstr ""
 
 msgid "Custom feeds"
-msgstr ""
+msgstr "Anpassade flöden"
 
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
@@ -706,34 +727,34 @@ msgid ""
 msgstr ""
 
 msgid "DHCP Leases"
-msgstr ""
+msgstr "DHCP-kontrakt"
 
 msgid "DHCP Server"
-msgstr ""
+msgstr "DHCP-server"
 
 msgid "DHCP and DNS"
-msgstr ""
+msgstr "DHCP och DNS"
 
 msgid "DHCP client"
-msgstr ""
+msgstr "DHCP-klient"
 
 msgid "DHCP-Options"
-msgstr ""
+msgstr "DHCP-alternativ"
 
 msgid "DHCPv6 Leases"
-msgstr ""
+msgstr "DHCPv6-kontrakt"
 
 msgid "DHCPv6 client"
-msgstr ""
+msgstr "DHCPv6-klient"
 
 msgid "DHCPv6-Mode"
-msgstr ""
+msgstr "DHCPv6-läge"
 
 msgid "DHCPv6-Service"
-msgstr ""
+msgstr "DHCPv6-tjänst"
 
 msgid "DNS"
-msgstr ""
+msgstr "DNS"
 
 msgid "DNS forwardings"
 msgstr ""
@@ -754,10 +775,10 @@ msgid "DS-Lite AFTR address"
 msgstr ""
 
 msgid "DSL"
-msgstr ""
+msgstr "DSL"
 
 msgid "DSL Status"
-msgstr ""
+msgstr "DSL-status"
 
 msgid "DSL line mode"
 msgstr ""
@@ -766,28 +787,28 @@ msgid "DUID"
 msgstr ""
 
 msgid "Data Rate"
-msgstr ""
+msgstr "Datahastighet"
 
 msgid "Debug"
-msgstr ""
+msgstr "Avlusa"
 
 msgid "Default %d"
-msgstr ""
+msgstr "Standard %d"
 
 msgid "Default gateway"
-msgstr ""
+msgstr "Standard gateway"
 
 msgid "Default is stateless + stateful"
 msgstr ""
 
 msgid "Default route"
-msgstr ""
+msgstr "Standardrutt"
 
 msgid "Default state"
 msgstr ""
 
 msgid "Define a name for this network."
-msgstr ""
+msgstr "Ange ett namn för det här nätverket."
 
 msgid ""
 "Define additional DHCP options, for example "
@@ -796,60 +817,62 @@ msgid ""
 msgstr ""
 
 msgid "Delete"
-msgstr ""
+msgstr "Radera"
 
 msgid "Delete this network"
-msgstr ""
+msgstr "Ta bort det här nätverket"
 
 msgid "Description"
-msgstr ""
+msgstr "Beskrivning"
 
 msgid "Design"
 msgstr ""
 
 msgid "Destination"
-msgstr ""
+msgstr "Plats"
 
 msgid "Device"
-msgstr ""
+msgstr "Enhet"
 
 msgid "Device Configuration"
-msgstr ""
+msgstr "Enhetskonfiguration"
 
 msgid "Device is rebooting..."
-msgstr ""
+msgstr "Enheten startar om..."
 
 msgid "Device unreachable"
-msgstr ""
+msgstr "Enheten kan inte nås"
 
 msgid "Diagnostics"
 msgstr ""
 
 msgid "Dial number"
-msgstr ""
+msgstr "Slå nummer"
 
 msgid "Directory"
-msgstr ""
+msgstr "Mapp"
 
 msgid "Disable"
-msgstr ""
+msgstr "Inaktivera"
 
 msgid ""
 "Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
 "this interface."
 msgstr ""
+"Inaktivera <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> "
+"för det här gränssnittet."
 
 msgid "Disable DNS setup"
 msgstr ""
 
 msgid "Disable Encryption"
-msgstr ""
+msgstr "Inaktivera kryptering"
 
 msgid "Disabled"
-msgstr ""
+msgstr "Inaktiverad"
 
 msgid "Disabled (default)"
-msgstr ""
+msgstr "Inaktiverad (standard)"
 
 msgid "Discard upstream RFC1918 responses"
 msgstr ""
@@ -858,16 +881,16 @@ msgid "Displaying only packages containing"
 msgstr ""
 
 msgid "Distance Optimization"
-msgstr ""
+msgstr "Avståndsoptimering"
 
 msgid "Distance to farthest network member in meters."
-msgstr ""
+msgstr "Avstånd till nätverksmledlemmen längst bort i metrar."
 
 msgid "Distribution feeds"
 msgstr ""
 
 msgid "Diversity"
-msgstr ""
+msgstr "Mångfald"
 
 msgid ""
 "Dnsmasq is a combined <abbr title=\"Dynamic Host Configuration Protocol"
@@ -877,36 +900,43 @@ msgid ""
 msgstr ""
 
 msgid "Do not cache negative replies, e.g. for not existing domains"
-msgstr ""
+msgstr "Cachea inte negativa svar, t.ex för icke-existerade domäner"
 
 msgid "Do not forward requests that cannot be answered by public name servers"
 msgstr ""
+"Vidarebefordra inte förfrågningar som inte kan ta emot svar från publika "
+"namnservrar"
 
 msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 
 msgid "Domain required"
-msgstr ""
+msgstr "Domän krävs"
 
 msgid "Domain whitelist"
-msgstr ""
+msgstr "Vitlista för domäner"
 
 msgid "Don't Fragment"
-msgstr ""
+msgstr "Fragmentera inte"
 
 msgid ""
 "Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
 "<abbr title=\"Domain Name System\">DNS</abbr>-Name"
 msgstr ""
+"Vidarebefordra inte <abbr title=\"Domain Name System\">DNS</abbr>-"
+"förfrågningar utan <abbr title=\"Domain Name System\">DNS</abbr>-namn"
 
 msgid "Download and install package"
-msgstr ""
+msgstr "Ladda ner och installera paket"
 
 msgid "Download backup"
+msgstr "Ladda ner säkerhetskopia"
+
+msgid "Downstream SNR offset"
 msgstr ""
 
 msgid "Dropbear Instance"
-msgstr ""
+msgstr "Dropbear-instans"
 
 msgid ""
 "Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
@@ -920,7 +950,7 @@ msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
 msgstr ""
 
 msgid "Dynamic tunnel"
-msgstr ""
+msgstr "Dynamisk tunnel"
 
 msgid ""
 "Dynamically allocate DHCP addresses for clients. If disabled, only clients "
@@ -931,10 +961,10 @@ msgid "EA-bits length"
 msgstr ""
 
 msgid "EAP-Method"
-msgstr ""
+msgstr "EAP-metod"
 
 msgid "Edit"
-msgstr ""
+msgstr "Redigera"
 
 msgid ""
 "Edit the raw configuration data above to fix any error and hit \"Save\" to "
@@ -942,19 +972,19 @@ msgid ""
 msgstr ""
 
 msgid "Edit this interface"
-msgstr ""
+msgstr "Redigera det här gränssnittet"
 
 msgid "Edit this network"
-msgstr ""
+msgstr "Redigera det här nätverket"
 
 msgid "Emergency"
-msgstr ""
+msgstr "Nödsituation"
 
 msgid "Enable"
-msgstr ""
+msgstr "Aktivera"
 
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
-msgstr ""
+msgstr "Aktivera <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
 msgid "Enable HE.net dynamic endpoint update"
 msgstr ""
@@ -969,19 +999,22 @@ msgid "Enable Jumbo Frame passthrough"
 msgstr ""
 
 msgid "Enable NTP client"
-msgstr ""
+msgstr "Aktivera NTP-klient"
 
 msgid "Enable Single DES"
 msgstr ""
 
 msgid "Enable TFTP server"
-msgstr ""
+msgstr "Aktivera TFTP-server"
 
 msgid "Enable VLAN functionality"
-msgstr ""
+msgstr "Aktivera VLAN-funktionalitet"
 
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
-msgstr ""
+msgstr "Aktivera WPS-tryckknapp, kräver WPA(2)-PSK"
+
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "Kräver ominstallation av nyckel (KRACK) motåtgärder"
 
 msgid "Enable learning and aging"
 msgstr ""
@@ -996,16 +1029,16 @@ msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
 msgstr ""
 
 msgid "Enable this mount"
-msgstr ""
+msgstr "Aktivera den här monteringen"
 
 msgid "Enable this swap"
-msgstr ""
+msgstr "Aktivera den här swap"
 
 msgid "Enable/Disable"
-msgstr ""
+msgstr "Aktivera/Inaktivera"
 
 msgid "Enabled"
-msgstr ""
+msgstr "Aktiverad"
 
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
@@ -1019,7 +1052,7 @@ msgid "Encapsulation mode"
 msgstr ""
 
 msgid "Encryption"
-msgstr ""
+msgstr "Kryptering"
 
 msgid "Endpoint Host"
 msgstr ""
@@ -1028,35 +1061,35 @@ msgid "Endpoint Port"
 msgstr ""
 
 msgid "Erasing..."
-msgstr ""
+msgstr "Raderar..."
 
 msgid "Error"
-msgstr ""
+msgstr "Fel"
 
 msgid "Errored seconds (ES)"
 msgstr ""
 
 msgid "Ethernet Adapter"
-msgstr ""
+msgstr "Ethernet-adapter"
 
 msgid "Ethernet Switch"
 msgstr ""
 
 msgid "Exclude interfaces"
-msgstr ""
+msgstr "Inkludera inte dessa gränssnitt"
 
 msgid "Expand hosts"
-msgstr ""
+msgstr "Expandera värdar"
 
 msgid "Expires"
-msgstr ""
+msgstr "Löper ut"
 
 msgid ""
 "Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
 msgstr ""
 
 msgid "External"
-msgstr ""
+msgstr "Externt"
 
 msgid "External R0 Key Holder List"
 msgstr ""
@@ -1074,25 +1107,34 @@ msgid "External system log server protocol"
 msgstr ""
 
 msgid "Extra SSH command options"
+msgstr "Extra alternativ för SSH-kommandot"
+
+msgid "FT over DS"
 msgstr ""
 
-msgid "File"
+msgid "FT over the Air"
 msgstr ""
 
+msgid "FT protocol"
+msgstr ""
+
+msgid "File"
+msgstr "Fil"
+
 msgid "Filename of the boot image advertised to clients"
 msgstr ""
 
 msgid "Filesystem"
-msgstr ""
+msgstr "Filsystem"
 
 msgid "Filter"
-msgstr ""
+msgstr "Filtrera"
 
 msgid "Filter private"
-msgstr ""
+msgstr "Filtrera privata"
 
 msgid "Filter useless"
-msgstr ""
+msgstr "Filtrera icke-användbara"
 
 msgid ""
 "Find all currently attached filesystems and swap and replace configuration "
@@ -1100,31 +1142,31 @@ msgid ""
 msgstr ""
 
 msgid "Find and join network"
-msgstr ""
+msgstr "Hitta och anslut till nätverk"
 
 msgid "Find package"
-msgstr ""
+msgstr "Hitta paket"
 
 msgid "Finish"
-msgstr ""
+msgstr "Avsluta"
 
 msgid "Firewall"
-msgstr ""
+msgstr "Brandvägg"
 
 msgid "Firewall Mark"
 msgstr ""
 
 msgid "Firewall Settings"
-msgstr ""
+msgstr "Inställningar för brandvägg"
 
 msgid "Firewall Status"
-msgstr ""
+msgstr "Status för brandvägg"
 
 msgid "Firmware File"
 msgstr ""
 
 msgid "Firmware Version"
-msgstr ""
+msgstr "Version för inre mjukvara"
 
 msgid "Fixed source port for outbound DNS queries"
 msgstr ""
@@ -1142,34 +1184,34 @@ msgid "Flash operations"
 msgstr ""
 
 msgid "Flashing..."
-msgstr ""
+msgstr "Skriver..."
 
 msgid "Force"
-msgstr ""
+msgstr "Tvinga"
 
 msgid "Force CCMP (AES)"
-msgstr ""
+msgstr "Tvinga CCMP (AES)"
 
 msgid "Force DHCP on this network even if another server is detected."
-msgstr ""
+msgstr "Tvinga DHCP på det här nätverket även om en annan server är upptäckt."
 
 msgid "Force TKIP"
-msgstr ""
+msgstr "Tvinga TKIP"
 
 msgid "Force TKIP and CCMP (AES)"
-msgstr ""
+msgstr "Tvinga TKIP och CCMP (AES)"
 
 msgid "Force link"
-msgstr ""
+msgstr "Tvinga länk"
 
 msgid "Force use of NAT-T"
-msgstr ""
+msgstr "Tvinga användning av NAT-T"
 
 msgid "Form token mismatch"
 msgstr ""
 
 msgid "Forward DHCP traffic"
-msgstr ""
+msgstr "Vidarebefordra DHCP-trafik"
 
 msgid "Forward Error Correction Seconds (FECS)"
 msgstr ""
@@ -1178,7 +1220,7 @@ msgid "Forward broadcast traffic"
 msgstr ""
 
 msgid "Forwarding mode"
-msgstr ""
+msgstr "Vidarebefordringsläge"
 
 msgid "Fragmentation Threshold"
 msgstr ""
@@ -1187,10 +1229,10 @@ msgid "Frame Bursting"
 msgstr ""
 
 msgid "Free"
-msgstr ""
+msgstr "Fritt"
 
 msgid "Free space"
-msgstr ""
+msgstr "Fritt utrymme"
 
 msgid ""
 "Further information about WireGuard interfaces and peers at <a href=\"http://"
@@ -1198,76 +1240,79 @@ msgid ""
 msgstr ""
 
 msgid "GHz"
-msgstr ""
+msgstr "GHz"
 
 msgid "GPRS only"
-msgstr ""
+msgstr "Endast GPRS"
 
 msgid "Gateway"
-msgstr ""
+msgstr "Gateway"
 
 msgid "Gateway ports"
-msgstr ""
+msgstr "Gateway-portar"
 
 msgid "General Settings"
-msgstr ""
+msgstr "Generella inställningar"
 
 msgid "General Setup"
 msgstr ""
 
 msgid "General options for opkg"
-msgstr ""
+msgstr "Generella alternativ för opkg"
 
 msgid "Generate Config"
+msgstr "Generera konfig"
+
+msgid "Generate PMK locally"
 msgstr ""
 
 msgid "Generate archive"
-msgstr ""
+msgstr "Generera arkiv"
 
 msgid "Generic 802.11%s Wireless Controller"
 msgstr ""
 
 msgid "Given password confirmation did not match, password not changed!"
-msgstr ""
+msgstr "Angiven lösenordsbekräftelse matchade inte, lösenordet ändrades inte!"
 
 msgid "Global Settings"
-msgstr ""
+msgstr "Globala inställningar"
 
 msgid "Global network options"
-msgstr ""
+msgstr "Globala nätverksalternativ"
 
 msgid "Go to password configuration..."
-msgstr ""
+msgstr "Gå till lösenordskonfiguration..."
 
 msgid "Go to relevant configuration page"
-msgstr ""
+msgstr "Gå till relevant konfigurationssida"
 
 msgid "Group Password"
-msgstr ""
+msgstr "Grupplösenord"
 
 msgid "Guest"
-msgstr ""
+msgstr "Gäst"
 
 msgid "HE.net password"
-msgstr ""
+msgstr "HE.net-lösenord"
 
 msgid "HE.net username"
-msgstr ""
+msgstr "HE.net-användarnamn"
 
 msgid "HT mode (802.11n)"
-msgstr ""
+msgstr "HT-läge (802.11n)"
 
 msgid "Handler"
 msgstr ""
 
 msgid "Hang Up"
-msgstr ""
+msgstr "Lägg på"
 
 msgid "Header Error Code Errors (HEC)"
 msgstr ""
 
 msgid "Heartbeat"
-msgstr ""
+msgstr "Hjärtslag"
 
 msgid ""
 "Here you can configure the basic aspects of your device like its hostname or "
@@ -1283,10 +1328,10 @@ msgid "Hermes 802.11b Wireless Controller"
 msgstr ""
 
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
-msgstr ""
+msgstr "Göm <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
 msgid "Host"
-msgstr ""
+msgstr "Värd"
 
 msgid "Host entries"
 msgstr ""
@@ -1295,43 +1340,43 @@ msgid "Host expiry timeout"
 msgstr ""
 
 msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
-msgstr ""
+msgstr "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> eller Nätverk"
 
 msgid "Hostname"
-msgstr ""
+msgstr "Värdnamn"
 
 msgid "Hostname to send when requesting DHCP"
-msgstr ""
+msgstr "Värdnamn att skicka vid DHCP-förfrågningar"
 
 msgid "Hostnames"
-msgstr ""
+msgstr "Värdnamn"
 
 msgid "Hybrid"
-msgstr ""
+msgstr "Hybrid"
 
 msgid "IKE DH Group"
 msgstr ""
 
 msgid "IP Addresses"
-msgstr ""
+msgstr "IP-adresser"
 
 msgid "IP address"
-msgstr ""
+msgstr "IP-adress"
 
 msgid "IPv4"
-msgstr ""
+msgstr "IPv4"
 
 msgid "IPv4 Firewall"
-msgstr ""
+msgstr "IPv4-brandvägg"
 
 msgid "IPv4 WAN Status"
 msgstr ""
 
 msgid "IPv4 address"
-msgstr ""
+msgstr "IPv4-adress"
 
 msgid "IPv4 and IPv6"
-msgstr ""
+msgstr "IPv4 och IPv6"
 
 msgid "IPv4 assignment length"
 msgstr ""
@@ -1340,13 +1385,13 @@ msgid "IPv4 broadcast"
 msgstr ""
 
 msgid "IPv4 gateway"
-msgstr ""
+msgstr "IPv4-gateway"
 
 msgid "IPv4 netmask"
-msgstr ""
+msgstr "IPv4-nätmask"
 
 msgid "IPv4 only"
-msgstr ""
+msgstr "Endast IPv4"
 
 msgid "IPv4 prefix"
 msgstr ""
@@ -1355,22 +1400,22 @@ msgid "IPv4 prefix length"
 msgstr ""
 
 msgid "IPv4-Address"
-msgstr ""
+msgstr "IPv4-Adress"
 
 msgid "IPv4-in-IPv4 (RFC2003)"
-msgstr ""
+msgstr "IPv4-i-IPv4 (RFC2003)"
 
 msgid "IPv6"
-msgstr ""
+msgstr "IPv6"
 
 msgid "IPv6 Firewall"
-msgstr ""
+msgstr "IPv6-brandvägg"
 
 msgid "IPv6 Neighbours"
-msgstr ""
+msgstr "IPV6-grannar"
 
 msgid "IPv6 Settings"
-msgstr ""
+msgstr "IPv6-inställningar"
 
 msgid "IPv6 ULA-Prefix"
 msgstr ""
@@ -1379,7 +1424,7 @@ msgid "IPv6 WAN Status"
 msgstr ""
 
 msgid "IPv6 address"
-msgstr ""
+msgstr "IPv6-adress"
 
 msgid "IPv6 address delegated to the local tunnel endpoint (optional)"
 msgstr ""
@@ -1391,10 +1436,10 @@ msgid "IPv6 assignment length"
 msgstr ""
 
 msgid "IPv6 gateway"
-msgstr ""
+msgstr "IPv6-gateway"
 
 msgid "IPv6 only"
-msgstr ""
+msgstr "Endast IPv6"
 
 msgid "IPv6 prefix"
 msgstr ""
@@ -1409,22 +1454,22 @@ msgid "IPv6 suffix"
 msgstr ""
 
 msgid "IPv6-Address"
-msgstr ""
+msgstr "IPv6-adress"
 
 msgid "IPv6-PD"
 msgstr ""
 
 msgid "IPv6-in-IPv4 (RFC4213)"
-msgstr ""
+msgstr "IPv6-i-IPv4 (RFC4213)"
 
 msgid "IPv6-over-IPv4 (6rd)"
-msgstr ""
+msgstr "IPv6-över-IPv4 (6rd)"
 
 msgid "IPv6-over-IPv4 (6to4)"
-msgstr ""
+msgstr "IPv6-över-IPv4 (6till4)"
 
 msgid "Identity"
-msgstr ""
+msgstr "Identitet"
 
 msgid "If checked, 1DES is enabled"
 msgstr ""
@@ -1456,19 +1501,19 @@ msgid ""
 msgstr ""
 
 msgid "Ignore <code>/etc/hosts</code>"
-msgstr ""
+msgstr "Ignorera <code>/etc/hosts</code>"
 
 msgid "Ignore interface"
-msgstr ""
+msgstr "Ignorera gränssnitt"
 
 msgid "Ignore resolve file"
-msgstr ""
+msgstr "Ignorera resolv-fil"
 
 msgid "Image"
-msgstr ""
+msgstr "Bild"
 
 msgid "In"
-msgstr ""
+msgstr "I"
 
 msgid ""
 "In order to prevent unauthorized access to the system, your request has been "
@@ -1479,73 +1524,73 @@ msgid "Inactivity timeout"
 msgstr ""
 
 msgid "Inbound:"
-msgstr ""
+msgstr "Ankommande"
 
 msgid "Info"
-msgstr ""
+msgstr "Info"
 
 msgid "Initscript"
-msgstr ""
+msgstr "Initskript"
 
 msgid "Initscripts"
-msgstr ""
+msgstr "Initskripten"
 
 msgid "Install"
-msgstr ""
+msgstr "Installera"
 
 msgid "Install iputils-traceroute6 for IPv6 traceroute"
-msgstr ""
+msgstr "Installera iputils-traceroute6 för IPv6-traceroute"
 
 msgid "Install package %q"
-msgstr ""
+msgstr "Installera paketet %q"
 
 msgid "Install protocol extensions..."
-msgstr ""
+msgstr "Installera protokoll-förlängningar..."
 
 msgid "Installed packages"
-msgstr ""
+msgstr "Installerade paket"
 
 msgid "Interface"
-msgstr ""
+msgstr "Gränssnitt"
 
 msgid "Interface %q device auto-migrated from %q to %q."
 msgstr ""
 
 msgid "Interface Configuration"
-msgstr ""
+msgstr "Konfiguration av gränssnitt"
 
 msgid "Interface Overview"
-msgstr ""
+msgstr "Överblick av gränssnitt"
 
 msgid "Interface is reconnecting..."
-msgstr ""
+msgstr "Gränssnittet återansluter..."
 
 msgid "Interface is shutting down..."
-msgstr ""
+msgstr "Gränssnittet stänger ner..."
 
 msgid "Interface name"
-msgstr ""
+msgstr "Gränssnittets namn"
 
 msgid "Interface not present or not connected yet."
-msgstr ""
+msgstr "Gränssnittet är inte närvarande eller är inte anslutet än."
 
 msgid "Interface reconnected"
-msgstr ""
+msgstr "Gränssnittet återanslöt"
 
 msgid "Interface shut down"
-msgstr ""
+msgstr "Gränssnittet stängdes ner"
 
 msgid "Interfaces"
-msgstr ""
+msgstr "Gränssnitten"
 
 msgid "Internal"
-msgstr ""
+msgstr "Interna"
 
 msgid "Internal Server Error"
-msgstr ""
+msgstr "Internt server-fel"
 
 msgid "Invalid"
-msgstr ""
+msgstr "Ogiltig"
 
 msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
 msgstr ""
@@ -1554,10 +1599,10 @@ msgid "Invalid VLAN ID given! Only unique IDs are allowed"
 msgstr ""
 
 msgid "Invalid username and/or password! Please try again."
-msgstr ""
+msgstr "Ogiltigt användarnamn och/eller lösenord! Vänligen försök igen."
 
 msgid "Isolate Clients"
-msgstr ""
+msgstr "Isolera klienter"
 
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1565,40 +1610,40 @@ msgid ""
 msgstr ""
 
 msgid "JavaScript required!"
-msgstr ""
+msgstr "JavaScript krävs!"
 
 msgid "Join Network"
-msgstr ""
+msgstr "Anslut till nätverk"
 
 msgid "Join Network: Wireless Scan"
-msgstr ""
+msgstr "Anslut till nätverk: Trådlös skanning"
 
 msgid "Joining Network: %q"
-msgstr ""
+msgstr "Ansluter till nätverk: %q"
 
 msgid "Keep settings"
-msgstr ""
+msgstr "Behåll inställningar"
 
 msgid "Kernel Log"
-msgstr ""
+msgstr "Kernel-logg"
 
 msgid "Kernel Version"
-msgstr ""
+msgstr "Kernel-version"
 
 msgid "Key"
-msgstr ""
+msgstr "Nyckel"
 
 msgid "Key #%d"
-msgstr ""
+msgstr "Nyckel #%d"
 
 msgid "Kill"
-msgstr ""
+msgstr "Döda"
 
 msgid "L2TP"
-msgstr ""
+msgstr "L2TP"
 
 msgid "L2TP Server"
-msgstr ""
+msgstr "L2TP-server"
 
 msgid "LCP echo failure threshold"
 msgstr ""
@@ -1607,46 +1652,46 @@ msgid "LCP echo interval"
 msgstr ""
 
 msgid "LLC"
-msgstr ""
+msgstr "LLC"
 
 msgid "Label"
-msgstr ""
+msgstr "Märke"
 
 msgid "Language"
-msgstr ""
+msgstr "Språk"
 
 msgid "Language and Style"
-msgstr ""
+msgstr "Språk och Stil"
 
 msgid "Latency"
-msgstr ""
+msgstr "Latens"
 
 msgid "Leaf"
-msgstr ""
+msgstr "Löv"
 
 msgid "Lease time"
-msgstr ""
+msgstr "Kontraktstid"
 
 msgid "Lease validity time"
-msgstr ""
+msgstr "Giltighetstid för kontrakt"
 
 msgid "Leasefile"
-msgstr ""
+msgstr "Kontraktsfil"
 
 msgid "Leasetime remaining"
-msgstr ""
+msgstr "Återstående kontraktstid"
 
 msgid "Leave empty to autodetect"
-msgstr ""
+msgstr "Lämna tom för att upptäcka automatiskt"
 
 msgid "Leave empty to use the current WAN address"
-msgstr ""
+msgstr "Lämna tom för att använda den nuvarande WAN-adressen"
 
 msgid "Legend:"
 msgstr ""
 
 msgid "Limit"
-msgstr ""
+msgstr "Begränsa"
 
 msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
 msgstr ""
@@ -1667,7 +1712,7 @@ msgid "Line Uptime"
 msgstr ""
 
 msgid "Link On"
-msgstr ""
+msgstr "Länk På"
 
 msgid ""
 "List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
@@ -1691,7 +1736,7 @@ msgid ""
 msgstr ""
 
 msgid "List of SSH key files for auth"
-msgstr ""
+msgstr "Lista över SSH-nyckelfiler för auth"
 
 msgid "List of domains to allow RFC1918 responses for"
 msgstr ""
@@ -1703,43 +1748,44 @@ msgid "Listen Interfaces"
 msgstr ""
 
 msgid "Listen Port"
-msgstr ""
+msgstr "Lyssningsportar"
 
 msgid "Listen only on the given interface or, if unspecified, on all"
 msgstr ""
+"Lyssna endast på det angivna gränssnittet eller, om o-specificerat på alla"
 
 msgid "Listening port for inbound DNS queries"
-msgstr ""
+msgstr "Lyssningsportar för ankommande DNS-förfrågningar"
 
 msgid "Load"
-msgstr ""
+msgstr "Belastning"
 
 msgid "Load Average"
-msgstr ""
+msgstr "Snitt-belastning"
 
 msgid "Loading"
-msgstr ""
+msgstr "Laddar"
 
 msgid "Local IP address to assign"
 msgstr ""
 
 msgid "Local IPv4 address"
-msgstr ""
+msgstr "Lokal IPv4-adress"
 
 msgid "Local IPv6 address"
-msgstr ""
+msgstr "Lokal IPv6-adress"
 
 msgid "Local Service Only"
-msgstr ""
+msgstr "Enbart lokal tjänst"
 
 msgid "Local Startup"
-msgstr ""
+msgstr "Lokal uppstart"
 
 msgid "Local Time"
-msgstr ""
+msgstr "Lokal tid"
 
 msgid "Local domain"
-msgstr ""
+msgstr "Lokal domän"
 
 msgid ""
 "Local domain specification. Names matching this domain are never forwarded "
@@ -1750,7 +1796,7 @@ msgid "Local domain suffix appended to DHCP names and hosts file entries"
 msgstr ""
 
 msgid "Local server"
-msgstr ""
+msgstr "Lokal server"
 
 msgid ""
 "Localise hostname depending on the requesting subnet if multiple IPs are "
@@ -1758,10 +1804,10 @@ msgid ""
 msgstr ""
 
 msgid "Localise queries"
-msgstr ""
+msgstr "Lokalisera förfrågningar"
 
 msgid "Locked to channel %s used by: %s"
-msgstr ""
+msgstr "Låst till kanalen %s som används av: %s"
 
 msgid "Log output level"
 msgstr ""
@@ -1773,10 +1819,10 @@ msgid "Logging"
 msgstr ""
 
 msgid "Login"
-msgstr ""
+msgstr "Logga in"
 
 msgid "Logout"
-msgstr ""
+msgstr "Logga ut"
 
 msgid "Loss of Signal Seconds (LOSS)"
 msgstr ""
@@ -1785,31 +1831,31 @@ msgid "Lowest leased address as offset from the network address."
 msgstr ""
 
 msgid "MAC-Address"
-msgstr ""
+msgstr "MAC-adress"
 
 msgid "MAC-Address Filter"
-msgstr ""
+msgstr "Filter för MAC-adress"
 
 msgid "MAC-Filter"
-msgstr ""
+msgstr "MAC-filter"
 
 msgid "MAC-List"
-msgstr ""
+msgstr "MAC-lista"
 
 msgid "MAP / LW4over6"
-msgstr ""
+msgstr "MAP / LW4över6"
 
 msgid "MB/s"
-msgstr ""
+msgstr "MB/s"
 
 msgid "MD5"
-msgstr ""
+msgstr "MD5"
 
 msgid "MHz"
-msgstr ""
+msgstr "MHz"
 
 msgid "MTU"
-msgstr ""
+msgstr "MTU"
 
 msgid ""
 "Make sure to clone the root filesystem using something like the commands "
@@ -1817,7 +1863,7 @@ msgid ""
 msgstr ""
 
 msgid "Manual"
-msgstr ""
+msgstr "Manuell"
 
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
@@ -1846,16 +1892,16 @@ msgid "Maximum number of leased addresses."
 msgstr ""
 
 msgid "Mbit/s"
-msgstr ""
+msgstr "Mbit/s"
 
 msgid "Memory"
-msgstr ""
+msgstr "Minne"
 
 msgid "Memory usage (%)"
-msgstr ""
+msgstr "Minnesanvändning (%)"
 
 msgid "Metric"
-msgstr ""
+msgstr "Metrisk"
 
 msgid "Minimum hold time"
 msgstr ""
@@ -1873,28 +1919,28 @@ msgid "Mobility Domain"
 msgstr ""
 
 msgid "Mode"
-msgstr ""
+msgstr "Läge"
 
 msgid "Model"
-msgstr ""
+msgstr "Modell"
 
 msgid "Modem device"
-msgstr ""
+msgstr "Modem-enhet"
 
 msgid "Modem init timeout"
 msgstr ""
 
 msgid "Monitor"
-msgstr ""
+msgstr "Övervaka"
 
 msgid "Mount Entry"
 msgstr ""
 
 msgid "Mount Point"
-msgstr ""
+msgstr "Monteringspunkt"
 
 msgid "Mount Points"
-msgstr ""
+msgstr "Monteringspunkter"
 
 msgid "Mount Points - Mount Entry"
 msgstr ""
@@ -1911,124 +1957,124 @@ msgid "Mount filesystems not specifically configured"
 msgstr ""
 
 msgid "Mount options"
-msgstr ""
+msgstr "Monteringsalternativ"
 
 msgid "Mount point"
-msgstr ""
+msgstr "Monteringspunkt"
 
 msgid "Mount swap not specifically configured"
 msgstr ""
 
 msgid "Mounted file systems"
-msgstr ""
+msgstr "Monterade filsystem"
 
 msgid "Move down"
-msgstr ""
+msgstr "Flytta ner"
 
 msgid "Move up"
-msgstr ""
+msgstr "Flytta upp"
 
 msgid "Multicast address"
 msgstr ""
 
 msgid "NAS ID"
-msgstr ""
+msgstr "NAS-ID"
 
 msgid "NAT-T Mode"
-msgstr ""
+msgstr "NAT-T-läge"
 
 msgid "NAT64 Prefix"
 msgstr ""
 
 msgid "NCM"
-msgstr ""
+msgstr "NCM"
 
 msgid "NDP-Proxy"
 msgstr ""
 
 msgid "NT Domain"
-msgstr ""
+msgstr "NT-domän"
 
 msgid "NTP server candidates"
-msgstr ""
+msgstr "NTP-serverkandidater"
 
 msgid "NTP sync time-out"
 msgstr ""
 
 msgid "Name"
-msgstr ""
+msgstr "Namn"
 
 msgid "Name of the new interface"
-msgstr ""
+msgstr "Namn på det nya gränssnittet"
 
 msgid "Name of the new network"
-msgstr ""
+msgstr "Namnet på det nya nätverket"
 
 msgid "Navigation"
-msgstr ""
+msgstr "Navigering"
 
 msgid "Netmask"
-msgstr ""
+msgstr "Nätmask"
 
 msgid "Network"
-msgstr ""
+msgstr "Nätverk"
 
 msgid "Network Utilities"
-msgstr ""
+msgstr "Nätverksverktyg"
 
 msgid "Network boot image"
-msgstr ""
+msgstr "Uppstartsbild för nätverket"
 
 msgid "Network without interfaces."
-msgstr ""
+msgstr "Nätverk utan gränssnitt"
 
 msgid "Next »"
-msgstr ""
+msgstr "Nästa »"
 
 msgid "No DHCP Server configured for this interface"
-msgstr ""
+msgstr "Det finns ingen DHCP-server inställd för det här gränssnittet"
 
 msgid "No NAT-T"
-msgstr ""
+msgstr "Ingen NAT-T"
 
 msgid "No chains in this table"
-msgstr ""
+msgstr "Inga kedjor i den här tabellen"
 
 msgid "No files found"
-msgstr ""
+msgstr "Inga filer hittades"
 
 msgid "No information available"
-msgstr ""
+msgstr "Ingen information tillgänglig"
 
 msgid "No negative cache"
-msgstr ""
+msgstr "Ingen negativ cache"
 
 msgid "No network configured on this device"
-msgstr ""
+msgstr "Det finns inget nätverk inställt på den här enheten"
 
 msgid "No network name specified"
-msgstr ""
+msgstr "Inget nätverksnamn angavs"
 
 msgid "No package lists available"
-msgstr ""
+msgstr "Ingen paketlista tillgänglig"
 
 msgid "No password set!"
-msgstr ""
+msgstr "Inget lösenord inställt!"
 
 msgid "No rules in this chain"
-msgstr ""
+msgstr "Inga regler i den här kedjan"
 
 msgid "No zone assigned"
 msgstr ""
 
 msgid "Noise"
-msgstr ""
+msgstr "Buller"
 
 msgid "Noise Margin (SNR)"
 msgstr ""
 
 msgid "Noise:"
-msgstr ""
+msgstr "Buller:"
 
 msgid "Non Pre-emtive CRC errors (CRC_P)"
 msgstr ""
@@ -2037,34 +2083,34 @@ msgid "Non-wildcard"
 msgstr ""
 
 msgid "None"
-msgstr ""
+msgstr "Ingen"
 
 msgid "Normal"
-msgstr ""
+msgstr "Normal"
 
 msgid "Not Found"
-msgstr ""
+msgstr "Hittades inte"
 
 msgid "Not associated"
-msgstr ""
+msgstr "Inte associerad"
 
 msgid "Not connected"
-msgstr ""
+msgstr "Inte ansluten"
 
 msgid "Note: Configuration files will be erased."
-msgstr ""
+msgstr "Notera: Konfigurationsfiler kommer att raderas."
 
 msgid "Note: interface name length"
-msgstr ""
+msgstr "Notera: längden på gränssnittets namn"
 
 msgid "Notice"
-msgstr ""
+msgstr "Avisering"
 
 msgid "Nslookup"
-msgstr ""
+msgstr "Nslookup"
 
 msgid "OK"
-msgstr ""
+msgstr "OK"
 
 msgid "OPKG-Configuration"
 msgstr ""
@@ -2091,34 +2137,34 @@ msgid "On-State Delay"
 msgstr ""
 
 msgid "One of hostname or mac address must be specified!"
-msgstr ""
+msgstr "En utav värdnamn eller MAC-adress måste anges!"
 
 msgid "One or more fields contain invalid values!"
-msgstr ""
+msgstr "En eller fler fält innehåller ogiltiga värden!"
 
 msgid "One or more invalid/required values on tab"
 msgstr ""
 
 msgid "One or more required fields have no value!"
-msgstr ""
+msgstr "En eller fler fält som krävs har inget värde!"
 
 msgid "Open list..."
-msgstr ""
+msgstr "Öppna lista..."
 
 msgid "OpenConnect (CISCO AnyConnect)"
-msgstr ""
+msgstr "OpenConnect (CISCO AnyConnect)"
 
 msgid "Operating frequency"
 msgstr ""
 
 msgid "Option changed"
-msgstr ""
+msgstr "Alternativet ändrades"
 
 msgid "Option removed"
-msgstr ""
+msgstr "Alternativet togs bort"
 
 msgid "Optional"
-msgstr ""
+msgstr "Valfri"
 
 msgid "Optional, specify to override default server (tic.sixxs.net)"
 msgstr ""
@@ -2166,16 +2212,16 @@ msgid "Optional. UDP port used for outgoing and incoming packets."
 msgstr ""
 
 msgid "Options"
-msgstr ""
+msgstr "Alternativ"
 
 msgid "Other:"
-msgstr ""
+msgstr "Andra:"
 
 msgid "Out"
-msgstr ""
+msgstr "Ut"
 
 msgid "Outbound:"
-msgstr ""
+msgstr "Utgående"
 
 msgid "Output Interface"
 msgstr ""
@@ -2207,43 +2253,43 @@ msgid "Override the table used for internal routes"
 msgstr ""
 
 msgid "Overview"
-msgstr ""
+msgstr "Överblick"
 
 msgid "Owner"
-msgstr ""
+msgstr "Ägare"
 
 msgid "PAP/CHAP password"
-msgstr ""
+msgstr "PAP/CHAP-lösenord"
 
 msgid "PAP/CHAP username"
-msgstr ""
+msgstr "PAP/CHAP-användarnamn"
 
 msgid "PID"
-msgstr ""
+msgstr "PID"
 
 msgid "PIN"
-msgstr ""
+msgstr "PIN-kod"
 
 msgid "PMK R1 Push"
 msgstr ""
 
 msgid "PPP"
-msgstr ""
+msgstr "PPP"
 
 msgid "PPPoA Encapsulation"
 msgstr ""
 
 msgid "PPPoATM"
-msgstr ""
+msgstr "PPPoATM"
 
 msgid "PPPoE"
-msgstr ""
+msgstr "PPPoE"
 
 msgid "PPPoSSH"
-msgstr ""
+msgstr "PPPoSSH"
 
 msgid "PPtP"
-msgstr ""
+msgstr "PPtP"
 
 msgid "PSID offset"
 msgstr ""
@@ -2255,58 +2301,58 @@ msgid "PTM/EFM (Packet Transfer Mode)"
 msgstr ""
 
 msgid "Package libiwinfo required!"
-msgstr ""
+msgstr "Paketet libiwinfo krävs!"
 
 msgid "Package lists are older than 24 hours"
-msgstr ""
+msgstr "Paket-listor är äldre än 24 timmar"
 
 msgid "Package name"
-msgstr ""
+msgstr "Paketnamn"
 
 msgid "Packets"
-msgstr ""
+msgstr "Paket"
 
 msgid "Part of zone %q"
-msgstr ""
+msgstr "Del av zon %q"
 
 msgid "Password"
-msgstr ""
+msgstr "Lösenord"
 
 msgid "Password authentication"
-msgstr ""
+msgstr "Lösenordsautentisering"
 
 msgid "Password of Private Key"
-msgstr ""
+msgstr "Den privata nyckelns lösenord"
 
 msgid "Password of inner Private Key"
-msgstr ""
+msgstr "Lösenordet för den inre privata nyckeln"
 
 msgid "Password successfully changed!"
-msgstr ""
+msgstr "Ändring av lösenordet lyckades!"
 
 msgid "Password2"
-msgstr ""
+msgstr "Lösenord2"
 
 msgid "Path to CA-Certificate"
-msgstr ""
+msgstr "Genväg till CA-certifikat"
 
 msgid "Path to Client-Certificate"
-msgstr ""
+msgstr "Genväg till klient-certifikat"
 
 msgid "Path to Private Key"
-msgstr ""
+msgstr "Genväg till privat nyckel"
 
 msgid "Path to executable which handles the button event"
 msgstr ""
 
 msgid "Path to inner CA-Certificate"
-msgstr ""
+msgstr "Genväg till det inre CA-certifikatet"
 
 msgid "Path to inner Client-Certificate"
-msgstr ""
+msgstr "Genväg till det inre klient-certifikatet"
 
 msgid "Path to inner Private Key"
-msgstr ""
+msgstr "Genväg till den inre privata nyckeln"
 
 msgid "Peak:"
 msgstr ""
@@ -2321,10 +2367,10 @@ msgid "Perfect Forward Secrecy"
 msgstr ""
 
 msgid "Perform reboot"
-msgstr ""
+msgstr "Utför omstart"
 
 msgid "Perform reset"
-msgstr ""
+msgstr "Utför återställning"
 
 msgid "Persistent Keep Alive"
 msgstr ""
@@ -2333,25 +2379,25 @@ msgid "Phy Rate:"
 msgstr ""
 
 msgid "Physical Settings"
-msgstr ""
+msgstr "Fysiska inställningar"
 
 msgid "Ping"
-msgstr ""
+msgstr "Ping"
 
 msgid "Pkts."
-msgstr ""
+msgstr "Pkt."
 
 msgid "Please enter your username and password."
-msgstr ""
+msgstr "Vänligen ange ditt användarnamn och lösenord."
 
 msgid "Policy"
 msgstr ""
 
 msgid "Port"
-msgstr ""
+msgstr "Port"
 
 msgid "Port status:"
-msgstr ""
+msgstr "Port-status:"
 
 msgid "Power Management Mode"
 msgstr ""
@@ -2360,10 +2406,10 @@ msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
 msgid "Prefer LTE"
-msgstr ""
+msgstr "Föredra LTE"
 
 msgid "Prefer UMTS"
-msgstr ""
+msgstr "Föredra UMTS"
 
 msgid "Prefix Delegated"
 msgstr ""
@@ -2377,40 +2423,40 @@ msgid ""
 msgstr ""
 
 msgid "Prevent listening on these interfaces."
-msgstr ""
+msgstr "Förhindra lyssning på dessa gränssnitt."
 
 msgid "Prevents client-to-client communication"
-msgstr ""
+msgstr "Förhindrar kommunikation klient-till-klient"
 
 msgid "Prism2/2.5/3 802.11b Wireless Controller"
 msgstr ""
 
 msgid "Private Key"
-msgstr ""
+msgstr "Privat nyckel"
 
 msgid "Proceed"
-msgstr ""
+msgstr "Fortsätt"
 
 msgid "Processes"
-msgstr ""
+msgstr "Processer"
 
 msgid "Profile"
-msgstr ""
+msgstr "Profil"
 
 msgid "Prot."
-msgstr ""
+msgstr "Prot."
 
 msgid "Protocol"
-msgstr ""
+msgstr "Protokoll"
 
 msgid "Protocol family"
-msgstr ""
+msgstr "Protokoll-familj"
 
 msgid "Protocol of the new interface"
-msgstr ""
+msgstr "Det nya gränssnittets protokoll"
 
 msgid "Protocol support is not installed"
-msgstr ""
+msgstr "Stöd för protokoll är inte installerat"
 
 msgid "Provide NTP server"
 msgstr ""
@@ -2422,16 +2468,16 @@ msgid "Pseudo Ad-Hoc (ahdemo)"
 msgstr ""
 
 msgid "Public Key"
-msgstr ""
+msgstr "Publik nyckel"
 
 msgid "Public prefix routed to this device for distribution to clients."
 msgstr ""
 
 msgid "QMI Cellular"
-msgstr ""
+msgstr "QMI-telefoni"
 
 msgid "Quality"
-msgstr ""
+msgstr "Kvalité"
 
 msgid "R0 Key Lifetime"
 msgstr ""
@@ -2446,10 +2492,10 @@ msgid "RTS/CTS Threshold"
 msgstr ""
 
 msgid "RX"
-msgstr ""
+msgstr "RT"
 
 msgid "RX Rate"
-msgstr ""
+msgstr "RX-hastighet"
 
 msgid "RaLink 802.11%s Wireless Controller"
 msgstr ""
@@ -2476,6 +2522,8 @@ msgid ""
 "Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
 "Configuration Protocol\">DHCP</abbr>-Server"
 msgstr ""
+"Läs <code>/etc/ethers</code> för att ställa in <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-servern"
 
 msgid ""
 "Really delete this interface? The deletion cannot be undone!\\nYou might "
@@ -2488,7 +2536,7 @@ msgid ""
 msgstr ""
 
 msgid "Really reset all changes?"
-msgstr ""
+msgstr "Verkligen återställa alla ändringar?"
 
 msgid ""
 "Really shut down network?\\nYou might lose access to this device if you are "
@@ -2501,22 +2549,22 @@ msgid ""
 msgstr ""
 
 msgid "Really switch protocol?"
-msgstr ""
+msgstr "Verkligen byta protokoll?"
 
 msgid "Realtime Connections"
-msgstr ""
+msgstr "Anslutningar i realtid"
 
 msgid "Realtime Graphs"
-msgstr ""
+msgstr "Realtidsgrafer"
 
 msgid "Realtime Load"
 msgstr ""
 
 msgid "Realtime Traffic"
-msgstr ""
+msgstr "Trafik i realtid"
 
 msgid "Realtime Wireless"
-msgstr ""
+msgstr "Trådlöst i realtid"
 
 msgid "Reassociation Deadline"
 msgstr ""
@@ -2525,43 +2573,43 @@ msgid "Rebind protection"
 msgstr ""
 
 msgid "Reboot"
-msgstr ""
+msgstr "Starta om"
 
 msgid "Rebooting..."
-msgstr ""
+msgstr "Startar om..."
 
 msgid "Reboots the operating system of your device"
-msgstr ""
+msgstr "Startar om din enhets operativsystem"
 
 msgid "Receive"
-msgstr ""
+msgstr "Ta emot"
 
 msgid "Receiver Antenna"
-msgstr ""
+msgstr "Mottagningsantenn"
 
 msgid "Recommended. IP addresses of the WireGuard interface."
-msgstr ""
+msgstr "Rekommenderad. WireGuard-gränssnittets IP-adress"
 
 msgid "Reconnect this interface"
-msgstr ""
+msgstr "Återanslut det här gränssnittet"
 
 msgid "Reconnecting interface"
-msgstr ""
+msgstr "Återansluter gränssnittet"
 
 msgid "References"
-msgstr ""
+msgstr "Referens"
 
 msgid "Relay"
-msgstr ""
+msgstr "Relä"
 
 msgid "Relay Bridge"
-msgstr ""
+msgstr "Relä-brygga"
 
 msgid "Relay between networks"
-msgstr ""
+msgstr "Relä mellan nätverk"
 
 msgid "Relay bridge"
-msgstr ""
+msgstr "Relä-brygga"
 
 msgid "Remote IPv4 address"
 msgstr ""
@@ -2570,16 +2618,16 @@ msgid "Remote IPv4 address or FQDN"
 msgstr ""
 
 msgid "Remove"
-msgstr ""
+msgstr "Ta bort"
 
 msgid "Repeat scan"
-msgstr ""
+msgstr "Repetera skanning"
 
 msgid "Replace entry"
 msgstr ""
 
 msgid "Replace wireless configuration"
-msgstr ""
+msgstr "Ersätt trådlös konfiguration"
 
 msgid "Request IPv6-address"
 msgstr ""
@@ -2588,10 +2636,10 @@ msgid "Request IPv6-prefix of length"
 msgstr ""
 
 msgid "Require TLS"
-msgstr ""
+msgstr "Kräv TLS"
 
 msgid "Required"
-msgstr ""
+msgstr "Krävs!"
 
 msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
 msgstr ""
@@ -2619,49 +2667,49 @@ msgid ""
 msgstr ""
 
 msgid "Reset"
-msgstr ""
+msgstr "Återställ"
 
 msgid "Reset Counters"
-msgstr ""
+msgstr "Återställ räknare"
 
 msgid "Reset to defaults"
-msgstr ""
+msgstr "Återställ till standard"
 
 msgid "Resolv and Hosts Files"
-msgstr ""
+msgstr "Resolv och Värd-filer"
 
 msgid "Resolve file"
-msgstr ""
+msgstr "Resolv-fil"
 
 msgid "Restart"
-msgstr ""
+msgstr "Starta om"
 
 msgid "Restart Firewall"
-msgstr ""
+msgstr "Starta om brandvägg"
 
 msgid "Restore backup"
-msgstr ""
+msgstr "Återställ säkerhetskopian"
 
 msgid "Reveal/hide password"
-msgstr ""
+msgstr "Visa/göm lösenord"
 
 msgid "Revert"
-msgstr ""
+msgstr "Återgå"
 
 msgid "Root"
-msgstr ""
+msgstr "Root"
 
 msgid "Root directory for files served via TFTP"
-msgstr ""
+msgstr "Root-mappen för filer som skickas via TFTP"
 
 msgid "Root preparation"
-msgstr ""
+msgstr "Root-förberedelse"
 
 msgid "Route Allowed IPs"
 msgstr ""
 
 msgid "Route type"
-msgstr ""
+msgstr "Typ av rutt"
 
 msgid "Routed IPv6 prefix for downstream interfaces"
 msgstr ""
@@ -2670,10 +2718,10 @@ msgid "Router Advertisement-Service"
 msgstr ""
 
 msgid "Router Password"
-msgstr ""
+msgstr "Router-lösenord"
 
 msgid "Routes"
-msgstr ""
+msgstr "Rutter"
 
 msgid ""
 "Routes specify over which interface and gateway a certain host or network "
@@ -2681,13 +2729,13 @@ msgid ""
 msgstr ""
 
 msgid "Run a filesystem check before mounting the device"
-msgstr ""
+msgstr "Kör en filsystemskontroll innan enheten monteras"
 
 msgid "Run filesystem check"
-msgstr ""
+msgstr "Kör filsystemskontrollen"
 
 msgid "SHA256"
-msgstr ""
+msgstr "SHA256"
 
 msgid ""
 "SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) "
@@ -2698,46 +2746,46 @@ msgid "SIXXS-handle[/Tunnel-ID]"
 msgstr ""
 
 msgid "SNR"
-msgstr ""
+msgstr "SNR"
 
 msgid "SSH Access"
-msgstr ""
+msgstr "SSH-åtkomst"
 
 msgid "SSH server address"
-msgstr ""
+msgstr "SSH-serverns adress"
 
 msgid "SSH server port"
-msgstr ""
+msgstr "SSH-serverns port"
 
 msgid "SSH username"
-msgstr ""
+msgstr "Användarnamn för SSH"
 
 msgid "SSH-Keys"
-msgstr ""
+msgstr "SSH-nycklar"
 
 msgid "SSID"
-msgstr ""
+msgstr "SSID"
 
 msgid "Save"
-msgstr ""
+msgstr "Spara"
 
 msgid "Save & Apply"
-msgstr ""
+msgstr "Spara och Verkställ"
 
 msgid "Save &#38; Apply"
-msgstr ""
+msgstr "Spara &#38; Verkställ"
 
 msgid "Scan"
-msgstr ""
+msgstr "Skanna"
 
 msgid "Scheduled Tasks"
-msgstr ""
+msgstr "Schemalagda uppgifter"
 
 msgid "Section added"
-msgstr ""
+msgstr "Sektionen lades till"
 
 msgid "Section removed"
-msgstr ""
+msgstr "Sektionen togs bort"
 
 msgid "See \"mount\" manpage for details"
 msgstr ""
@@ -2748,13 +2796,13 @@ msgid ""
 msgstr ""
 
 msgid "Separate Clients"
-msgstr ""
+msgstr "Separera klienter"
 
 msgid "Server Settings"
-msgstr ""
+msgstr "Inställningar för server"
 
 msgid "Server password"
-msgstr ""
+msgstr "Lösenordet för servern"
 
 msgid ""
 "Server password, enter the specific password of the tunnel when the username "
@@ -2762,16 +2810,16 @@ msgid ""
 msgstr ""
 
 msgid "Server username"
-msgstr ""
+msgstr "Användarnamnet för servern"
 
 msgid "Service Name"
-msgstr ""
+msgstr "Namn på tjänst"
 
 msgid "Service Type"
-msgstr ""
+msgstr "Typ av tjänst"
 
 msgid "Services"
-msgstr ""
+msgstr "Tjänster"
 
 msgid ""
 "Set interface properties regardless of the link carrier (If set, carrier "
@@ -2779,10 +2827,10 @@ msgid ""
 msgstr ""
 
 msgid "Set up Time Synchronization"
-msgstr ""
+msgstr "Ställ in Tidssynkronisering"
 
 msgid "Setup DHCP Server"
-msgstr ""
+msgstr "Ställ in DHCP-server"
 
 msgid "Severely Errored Seconds (SES)"
 msgstr ""
@@ -2794,52 +2842,52 @@ msgid "Show current backup file list"
 msgstr ""
 
 msgid "Shutdown this interface"
-msgstr ""
+msgstr "Stäng ner det här gränssnittet"
 
 msgid "Shutdown this network"
-msgstr ""
+msgstr "Stäng ner det här nätverket"
 
 msgid "Signal"
-msgstr ""
+msgstr "Signal"
 
 msgid "Signal Attenuation (SATN)"
 msgstr ""
 
 msgid "Signal:"
-msgstr ""
+msgstr "Signal:"
 
 msgid "Size"
-msgstr ""
+msgstr "Storlek"
 
 msgid "Size (.ipk)"
-msgstr ""
+msgstr "Storlek (.ipk)"
 
 msgid "Skip"
-msgstr ""
+msgstr "Hoppa över"
 
 msgid "Skip to content"
-msgstr ""
+msgstr "Hoppa över till innehåll"
 
 msgid "Skip to navigation"
-msgstr ""
+msgstr "Hoppa över till navigering"
 
 msgid "Slot time"
 msgstr ""
 
 msgid "Software"
-msgstr ""
+msgstr "Mjukvara"
 
 msgid "Software VLAN"
 msgstr ""
 
 msgid "Some fields are invalid, cannot save values!"
-msgstr ""
+msgstr "Några fält är ogiltiga, kan inte spara värden!"
 
 msgid "Sorry, the object you requested was not found."
-msgstr ""
+msgstr "Tyvärr, objektet som du frågade efter kunde inte hittas."
 
 msgid "Sorry, the server encountered an unexpected error."
-msgstr ""
+msgstr "Tyvärr, servern stötte på ett oväntat fel."
 
 msgid ""
 "Sorry, there is no sysupgrade support present; a new firmware image must be "
@@ -2848,10 +2896,10 @@ msgid ""
 msgstr ""
 
 msgid "Sort"
-msgstr ""
+msgstr "Sortera"
 
 msgid "Source"
-msgstr ""
+msgstr "Källa"
 
 msgid "Source routing"
 msgstr ""
@@ -2863,7 +2911,7 @@ msgid "Specifies the directory the device is attached to"
 msgstr ""
 
 msgid "Specifies the listening port of this <em>Dropbear</em> instance"
-msgstr ""
+msgstr "Anger lyssningsporten för den här <em>Dropbear</em>-instansen"
 
 msgid ""
 "Specifies the maximum amount of failed ARP requests until hosts are presumed "
@@ -2876,7 +2924,7 @@ msgid ""
 msgstr ""
 
 msgid "Specify a TOS (Type of Service)."
-msgstr ""
+msgstr "Ange en TaT (Typ av Tjänst)."
 
 msgid ""
 "Specify a TTL (Time to Live) for the encapsulating packet other than the "
@@ -2889,7 +2937,7 @@ msgid ""
 msgstr ""
 
 msgid "Specify the secret encryption key here."
-msgstr ""
+msgstr "Ange den hemliga krypteringsnyckeln här."
 
 msgid "Start"
 msgstr ""
@@ -2901,19 +2949,19 @@ msgid "Startup"
 msgstr ""
 
 msgid "Static IPv4 Routes"
-msgstr ""
+msgstr "Statiska IPv4-rutter"
 
 msgid "Static IPv6 Routes"
-msgstr ""
+msgstr "Statiska IPv6-rutter"
 
 msgid "Static Leases"
 msgstr ""
 
 msgid "Static Routes"
-msgstr ""
+msgstr "Statiska rutter"
 
 msgid "Static address"
-msgstr ""
+msgstr "Statiska adresser"
 
 msgid ""
 "Static leases are used to assign fixed IP addresses and symbolic hostnames "
@@ -2922,16 +2970,16 @@ msgid ""
 msgstr ""
 
 msgid "Status"
-msgstr ""
+msgstr "Status"
 
 msgid "Stop"
 msgstr ""
 
 msgid "Strict order"
-msgstr ""
+msgstr "Strikt sortering"
 
 msgid "Submit"
-msgstr ""
+msgstr "Skicka in"
 
 msgid "Suppress logging"
 msgstr ""
@@ -2940,71 +2988,71 @@ msgid "Suppress logging of the routine operation of these protocols"
 msgstr ""
 
 msgid "Swap"
-msgstr ""
+msgstr "Swap"
 
 msgid "Swap Entry"
 msgstr ""
 
 msgid "Switch"
-msgstr ""
+msgstr "Byt"
 
 msgid "Switch %q"
-msgstr ""
+msgstr "Byt %q"
 
 msgid "Switch %q (%s)"
-msgstr ""
+msgstr "Byt %q (%s)"
 
 msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
 msgid "Switch VLAN"
-msgstr ""
+msgstr "Byt VLAN"
 
 msgid "Switch protocol"
-msgstr ""
+msgstr "Byt protokoll"
 
 msgid "Sync with browser"
-msgstr ""
+msgstr "Synkronisera med webbläsare"
 
 msgid "Synchronizing..."
-msgstr ""
+msgstr "Synkroniserar..."
 
 msgid "System"
-msgstr ""
+msgstr "System"
 
 msgid "System Log"
-msgstr ""
+msgstr "Systemlogg"
 
 msgid "System Properties"
-msgstr ""
+msgstr "Systemets egenskaper"
 
 msgid "System log buffer size"
 msgstr ""
 
 msgid "TCP:"
-msgstr ""
+msgstr "TCP:"
 
 msgid "TFTP Settings"
-msgstr ""
+msgstr "Inställningar för TFTP"
 
 msgid "TFTP server root"
-msgstr ""
+msgstr "Root för TFTP-server"
 
 msgid "TX"
-msgstr ""
+msgstr "TX"
 
 msgid "TX Rate"
-msgstr ""
+msgstr "TX-hastighet"
 
 msgid "Table"
-msgstr ""
+msgstr "Tabell"
 
 msgid "Target"
-msgstr ""
+msgstr "Mål"
 
 msgid "Target network"
-msgstr ""
+msgstr "Målnätverk"
 
 msgid "Terminate"
 msgstr ""
@@ -3061,7 +3109,7 @@ msgid ""
 msgstr ""
 
 msgid "The following changes have been committed"
-msgstr ""
+msgstr "Följande ändringar har skickats in"
 
 msgid "The following changes have been reverted"
 msgstr ""
@@ -3070,7 +3118,7 @@ msgid "The following rules are currently active on this system."
 msgstr ""
 
 msgid "The given network name is not unique"
-msgstr ""
+msgstr "Det angivna nätverksnamnet är inte unikt"
 
 msgid ""
 "The hardware is not multi-SSID capable and the existing configuration will "
@@ -3126,16 +3174,16 @@ msgid ""
 msgstr ""
 
 msgid "There are no active leases."
-msgstr ""
+msgstr "Det finns inga aktiva kontrakt."
 
 msgid "There are no pending changes to apply!"
-msgstr ""
+msgstr "Det finns inga pendlande ändringar att verkställa!"
 
 msgid "There are no pending changes to revert!"
-msgstr ""
+msgstr "Det finns inga pendlande ändringar att återkalla"
 
 msgid "There are no pending changes!"
-msgstr ""
+msgstr "Det finns inga pendlande ändringar!"
 
 msgid ""
 "There is no device assigned yet, please attach a network device in the "
@@ -3146,6 +3194,8 @@ msgid ""
 "There is no password set on this router. Please configure a root password to "
 "protect the web interface and enable SSH."
 msgstr ""
+"Det finns inget lösenord inställt på den här routern. Vänligen ställ in ett "
+"root-lösenord för att skydda webbgränssnittet och för att aktivera SSH."
 
 msgid "This IPv4 address of the relay"
 msgstr ""
@@ -3211,39 +3261,41 @@ msgid "This section contains no values yet"
 msgstr ""
 
 msgid "Time Synchronization"
-msgstr ""
+msgstr "Synkronisering av tid"
 
 msgid "Time Synchronization is not configured yet."
-msgstr ""
+msgstr "Synkronisering av tid är inte inställd än."
 
 msgid "Timezone"
-msgstr ""
+msgstr "Tidszon"
 
 msgid ""
 "To restore configuration files, you can upload a previously generated backup "
 "archive here."
 msgstr ""
+"För att återställa konfigurationsfiler så kan du ladda upp ett tidigare "
+"genererat säkerhetskopierings arkiv här."
 
 msgid "Tone"
-msgstr ""
+msgstr "Ton"
 
 msgid "Total Available"
-msgstr ""
+msgstr "Totalt tillgängligt"
 
 msgid "Traceroute"
-msgstr ""
+msgstr "Traceroute"
 
 msgid "Traffic"
-msgstr ""
+msgstr "Trafik"
 
 msgid "Transfer"
-msgstr ""
+msgstr "Överför"
 
 msgid "Transmission Rate"
-msgstr ""
+msgstr "Överföringshastighet"
 
 msgid "Transmit"
-msgstr ""
+msgstr "Överför"
 
 msgid "Transmit Power"
 msgstr ""
@@ -3258,13 +3310,13 @@ msgid "Trigger Mode"
 msgstr ""
 
 msgid "Tunnel ID"
-msgstr ""
+msgstr "Tunnel-ID"
 
 msgid "Tunnel Interface"
-msgstr ""
+msgstr "Tunnelgränssnitt"
 
 msgid "Tunnel Link"
-msgstr ""
+msgstr "Tunnel-länk"
 
 msgid "Tunnel broker protocol"
 msgstr ""
@@ -3273,58 +3325,58 @@ msgid "Tunnel setup server"
 msgstr ""
 
 msgid "Tunnel type"
-msgstr ""
+msgstr "Tunnel-typ"
 
 msgid "Tx-Power"
 msgstr ""
 
 msgid "Type"
-msgstr ""
+msgstr "Typ"
 
 msgid "UDP:"
-msgstr ""
+msgstr "UDP:"
 
 msgid "UMTS only"
-msgstr ""
+msgstr "Endast UMTS"
 
 msgid "UMTS/GPRS/EV-DO"
-msgstr ""
+msgstr "UMTS/GPRS/EV-DO"
 
 msgid "USB Device"
-msgstr ""
+msgstr "USB-enhet"
 
 msgid "USB Ports"
-msgstr ""
+msgstr "USB-portar"
 
 msgid "UUID"
-msgstr ""
+msgstr "UUID"
 
 msgid "Unable to dispatch"
-msgstr ""
+msgstr "Det går inte att skicka"
 
 msgid "Unavailable Seconds (UAS)"
-msgstr ""
+msgstr "Otillgängliga Sekunder (UAS)"
 
 msgid "Unknown"
-msgstr ""
+msgstr "Okänd"
 
 msgid "Unknown Error, password not changed!"
-msgstr ""
+msgstr "Okänt fel, lösenordet ändrades inte!"
 
 msgid "Unmanaged"
 msgstr ""
 
 msgid "Unmount"
-msgstr ""
+msgstr "Avmontera"
 
 msgid "Unsaved Changes"
-msgstr ""
+msgstr "Osparade ändringar"
 
 msgid "Unsupported protocol type."
-msgstr ""
+msgstr "Protokolltypen stöds inte."
 
 msgid "Update lists"
-msgstr ""
+msgstr "Uppdatera listor"
 
 msgid ""
 "Upload a sysupgrade-compatible image here to replace the running firmware. "
@@ -3333,19 +3385,19 @@ msgid ""
 msgstr ""
 
 msgid "Upload archive..."
-msgstr ""
+msgstr "Ladda upp arkiv..."
 
 msgid "Uploaded File"
-msgstr ""
+msgstr "Laddade upp fil"
 
 msgid "Uptime"
-msgstr ""
+msgstr "Upptid"
 
 msgid "Use <code>/etc/ethers</code>"
-msgstr ""
+msgstr "Använd <code>/etc/ethers</code>"
 
 msgid "Use DHCP gateway"
-msgstr ""
+msgstr "Använd DHCP-gateway"
 
 msgid "Use DNS servers advertised by peer"
 msgstr ""
@@ -3363,7 +3415,7 @@ msgid "Use as external overlay (/overlay)"
 msgstr ""
 
 msgid "Use as root filesystem (/)"
-msgstr ""
+msgstr "Använd som root-filsystem (/)"
 
 msgid "Use broadcast flag"
 msgstr ""
@@ -3372,10 +3424,10 @@ msgid "Use builtin IPv6-management"
 msgstr ""
 
 msgid "Use custom DNS servers"
-msgstr ""
+msgstr "Använd anpassade DNS-servrar"
 
 msgid "Use default gateway"
-msgstr ""
+msgstr "Använd standard-gateway"
 
 msgid "Use gateway metric"
 msgstr ""
@@ -3403,19 +3455,19 @@ msgid ""
 msgstr ""
 
 msgid "User certificate (PEM encoded)"
-msgstr ""
+msgstr "Användarcertifikat (PEM-krypterad)"
 
 msgid "User key (PEM encoded)"
-msgstr ""
+msgstr "Användarnyckel (PEM-krypterad)"
 
 msgid "Username"
-msgstr ""
+msgstr "Användarnamn"
 
 msgid "VC-Mux"
-msgstr ""
+msgstr "VC-Mux"
 
 msgid "VDSL"
-msgstr ""
+msgstr "VDSL"
 
 msgid "VLANs on %q"
 msgstr ""
@@ -3424,16 +3476,16 @@ msgid "VLANs on %q (%s)"
 msgstr ""
 
 msgid "VPN Local address"
-msgstr ""
+msgstr "Lokal adress för VPN"
 
 msgid "VPN Local port"
-msgstr ""
+msgstr "Lokal port för VPN"
 
 msgid "VPN Server"
-msgstr ""
+msgstr "VPN-server"
 
 msgid "VPN Server port"
-msgstr ""
+msgstr "Port för VPN-server"
 
 msgid "VPN Server's certificate SHA1 hash"
 msgstr ""
@@ -3442,40 +3494,40 @@ msgid "VPNC (CISCO 3000 (and others) VPN)"
 msgstr ""
 
 msgid "Vendor"
-msgstr ""
+msgstr "Tillverkare"
 
 msgid "Vendor Class to send when requesting DHCP"
 msgstr ""
 
 msgid "Verbose"
-msgstr ""
+msgstr "Utförlig"
 
 msgid "Verbose logging by aiccu daemon"
 msgstr ""
 
 msgid "Verify"
-msgstr ""
+msgstr "Verkställ"
 
 msgid "Version"
-msgstr ""
+msgstr "Version"
 
 msgid "WDS"
-msgstr ""
+msgstr "WDS"
 
 msgid "WEP Open System"
-msgstr ""
+msgstr "Öppet System WEP"
 
 msgid "WEP Shared Key"
 msgstr ""
 
 msgid "WEP passphrase"
-msgstr ""
+msgstr "WEP-lösenordsfras"
 
 msgid "WMM Mode"
-msgstr ""
+msgstr "WMM-läge"
 
 msgid "WPA passphrase"
-msgstr ""
+msgstr "WPA-lösenordsfras"
 
 msgid ""
 "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
@@ -3487,19 +3539,25 @@ msgid ""
 msgstr ""
 
 msgid "Waiting for changes to be applied..."
-msgstr ""
+msgstr "Väntar på att ändringarna ska tillämpas..."
 
 msgid "Waiting for command to complete..."
-msgstr ""
+msgstr "Väntar på att kommandot ska avsluta..."
 
 msgid "Waiting for device..."
-msgstr ""
+msgstr "Väntar på enheten..."
 
 msgid "Warning"
-msgstr ""
+msgstr "Varning"
 
 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 ""
+"When using a PSK, the PMK can be generated locally without inter AP "
+"communications"
+msgstr ""
 
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
@@ -3508,49 +3566,49 @@ msgid "Whether to route only packets from delegated prefixes"
 msgstr ""
 
 msgid "Width"
-msgstr ""
+msgstr "Bredd"
 
 msgid "WireGuard VPN"
 msgstr ""
 
 msgid "Wireless"
-msgstr ""
+msgstr "Trådlöst"
 
 msgid "Wireless Adapter"
-msgstr ""
+msgstr "Trådlös adapter"
 
 msgid "Wireless Network"
-msgstr ""
+msgstr "Trådlöst nätverk"
 
 msgid "Wireless Overview"
-msgstr ""
+msgstr "Trådlös överblick"
 
 msgid "Wireless Security"
-msgstr ""
+msgstr "Trådlös säkerhet"
 
 msgid "Wireless is disabled or not associated"
-msgstr ""
+msgstr "Trådlöst är avstängt eller inte associerat"
 
 msgid "Wireless is restarting..."
-msgstr ""
+msgstr "Trådlöst startar om..."
 
 msgid "Wireless network is disabled"
-msgstr ""
+msgstr "Trådlöst nätverk är avstängt"
 
 msgid "Wireless network is enabled"
-msgstr ""
+msgstr "Trådlöst nätverk är aktiverat"
 
 msgid "Wireless restarted"
-msgstr ""
+msgstr "Trådlöst startade om"
 
 msgid "Wireless shut down"
-msgstr ""
+msgstr "Trådlöst stängde ner"
 
 msgid "Write received DNS requests to syslog"
-msgstr ""
+msgstr "Skriv mottagna DNS-förfrågningar till syslogg"
 
 msgid "Write system log to file"
-msgstr ""
+msgstr "Skriv systemlogg till fil"
 
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
@@ -3561,42 +3619,47 @@ msgstr ""
 msgid ""
 "You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
+"Du måste aktivera JavaScript i din webbläsare, annars kommer inte LuCi att "
+"fungera korrekt."
 
 msgid ""
 "Your Internet Explorer is too old to display this page correctly. Please "
 "upgrade it to at least version 7 or use another browser like Firefox, Opera "
 "or Safari."
 msgstr ""
+"Din Internet Explorer är för gammal för att visa den här sidan korrekt. "
+"Vänligen uppgradera den till minst version 7 eller använd en annan "
+"webbläsare till exempel Firefox, Opera eller Safari."
 
 msgid "any"
-msgstr ""
+msgstr "något"
 
 msgid "auto"
-msgstr ""
+msgstr "auto"
 
 msgid "baseT"
 msgstr ""
 
 msgid "bridged"
-msgstr ""
+msgstr "bryggad"
 
 msgid "create:"
-msgstr ""
+msgstr "skapa:"
 
 msgid "creates a bridge over specified interface(s)"
-msgstr ""
+msgstr "skapar en brygga över angivna gränssnitt(en)"
 
 msgid "dB"
-msgstr ""
+msgstr "dB"
 
 msgid "dBm"
-msgstr ""
+msgstr "dBm"
 
 msgid "disable"
-msgstr ""
+msgstr "stäng ner"
 
 msgid "disabled"
-msgstr ""
+msgstr "avstängd"
 
 msgid "expired"
 msgstr ""
@@ -3607,79 +3670,79 @@ msgid ""
 msgstr ""
 
 msgid "forward"
-msgstr ""
+msgstr "vidarebefordra"
 
 msgid "full-duplex"
-msgstr ""
+msgstr "full-duplex"
 
 msgid "half-duplex"
-msgstr ""
+msgstr "halv-duplex"
 
 msgid "help"
-msgstr ""
+msgstr "hjälp"
 
 msgid "hidden"
-msgstr ""
+msgstr "gömd"
 
 msgid "hybrid mode"
-msgstr ""
+msgstr "hybrid-läge"
 
 msgid "if target is a network"
-msgstr ""
+msgstr "om målet är ett nätverk"
 
 msgid "input"
-msgstr ""
+msgstr "inmatning"
 
 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 ""
+msgstr "lokal <abbr title=\"Domain Name System\">DNS</abbr>-fil"
 
 msgid "minimum 1280, maximum 1480"
 msgstr ""
 
 msgid "minutes"
-msgstr ""
+msgstr "minuter"
 
 msgid "no"
-msgstr ""
+msgstr "nej"
 
 msgid "no link"
-msgstr ""
+msgstr "ingen länk"
 
 msgid "none"
 msgstr ""
 
 msgid "not present"
-msgstr ""
+msgstr "inte tillgängligt"
 
 msgid "off"
-msgstr ""
+msgstr "av"
 
 msgid "on"
-msgstr ""
+msgstr ""
 
 msgid "open"
-msgstr ""
+msgstr "öppen"
 
 msgid "overlay"
 msgstr ""
 
 msgid "relay mode"
-msgstr ""
+msgstr "relä-läge"
 
 msgid "routed"
 msgstr ""
 
 msgid "server mode"
-msgstr ""
+msgstr "server-läge"
 
 msgid "stateful-only"
 msgstr ""
@@ -3691,28 +3754,28 @@ msgid "stateless + stateful"
 msgstr ""
 
 msgid "tagged"
-msgstr ""
+msgstr "taggad"
 
 msgid "time units (TUs / 1.024 ms) [1000-65535]"
 msgstr ""
 
 msgid "unknown"
-msgstr ""
+msgstr "okänd"
 
 msgid "unlimited"
-msgstr ""
+msgstr "obegränsat"
 
 msgid "unspecified"
-msgstr ""
+msgstr "ospecifierat"
 
 msgid "unspecified -or- create:"
-msgstr ""
+msgstr "ospecifierat -eller- skapa:"
 
 msgid "untagged"
-msgstr ""
+msgstr "otaggat"
 
 msgid "yes"
-msgstr ""
+msgstr "ja"
 
 msgid "« Back"
-msgstr ""
+msgstr "« Bakåt"
index a8a336a6e42b790b7b5b95146b34d97eebff6ac3..1c21925fcd8d5da079e3fe0f62ab6a9990e08161 100644 (file)
@@ -1,6 +1,9 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -116,6 +119,9 @@ msgstr ""
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr ""
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -619,6 +625,13 @@ msgstr ""
 msgid "Common Configuration"
 msgstr ""
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr ""
 
@@ -892,6 +905,9 @@ msgstr ""
 msgid "Download backup"
 msgstr ""
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr ""
 
@@ -970,6 +986,9 @@ msgstr ""
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1063,6 +1082,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1208,6 +1236,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr ""
 
@@ -3488,6 +3519,11 @@ 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 5efad9e82b2ae1bdcc31899e06fc6bbeaf54e1d0..334ef00536dff848596deb03f38c6a82eff55061 100644 (file)
@@ -11,6 +11,9 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -128,6 +131,9 @@ msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> Adı"
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-Adresi"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -639,6 +645,13 @@ msgstr ""
 msgid "Common Configuration"
 msgstr ""
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr ""
 
@@ -912,6 +925,9 @@ msgstr ""
 msgid "Download backup"
 msgstr ""
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr ""
 
@@ -990,6 +1006,9 @@ msgstr ""
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1083,6 +1102,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1228,6 +1256,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr ""
 
@@ -3508,6 +3539,11 @@ 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index d2db414ed2d43692aae63a3f084c54d6376a843f..de7259b5d44ead0aa2bb4fabf15d8bf08a1b9629 100644 (file)
@@ -12,6 +12,9 @@ msgstr ""
 "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -142,6 +145,9 @@ msgstr ""
 "<abbr title=\"Media Access Control — управління доступом до носія\">MAC</"
 "abbr>-адреса"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -677,6 +683,13 @@ msgstr "Команда"
 msgid "Common Configuration"
 msgstr "Загальна конфігурація"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Конфігурація"
 
@@ -967,6 +980,9 @@ msgstr "Завантажити та інсталювати пакети"
 msgid "Download backup"
 msgstr "Завантажити резервну копію"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Реалізація Dropbear"
 
@@ -1051,6 +1067,9 @@ msgstr "Увімкнути підтримку VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Увімкнути learning та aging"
 
@@ -1146,6 +1165,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "Файл"
 
@@ -1291,6 +1319,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "Cтворити архів"
 
@@ -3717,6 +3748,11 @@ 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index 2294c9cb906d75f8c4b52759fcc67ac8e19e415e..48f6b73e82c22fbe4f6abf41681d3787d476e202 100644 (file)
@@ -12,6 +12,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Pootle 1.1.0\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -130,6 +133,9 @@ msgstr ""
 msgid "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 msgstr "<abbr title=\"Media Access Control\">MAC</abbr>-Address"
 
+msgid "<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"
+msgstr ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -633,6 +639,13 @@ msgstr "Lệnh"
 msgid "Common Configuration"
 msgstr ""
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "Cấu hình"
 
@@ -914,6 +927,9 @@ msgstr "Tải và cài đặt gói"
 msgid "Download backup"
 msgstr ""
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr ""
 
@@ -995,6 +1011,9 @@ msgstr ""
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1088,6 +1107,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr ""
 
@@ -1233,6 +1261,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr ""
 
@@ -3550,6 +3581,11 @@ 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
index f0eef125bb63e3fcdbff6317b1c84e7f20ad58e2..f516d42942c2289e953bfc03217090318cd7387b 100644 (file)
@@ -3,6 +3,9 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Last-Translator: Hsing-Wang Liao <kuoruan@gmail.com>\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr "%s 在多个 VLAN 中均未关联!"
 
@@ -122,6 +125,9 @@ msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 名称"
 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 ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -639,6 +645,13 @@ msgstr "命令"
 msgid "Common Configuration"
 msgstr "一般配置"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "配置"
 
@@ -920,6 +933,9 @@ msgstr "下载并安装软件包"
 msgid "Download backup"
 msgstr "下载备份"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Dropbear 实例"
 
@@ -1001,6 +1017,9 @@ msgstr "启用 VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr "启用 WPS 一键加密按钮,需要 WPA(2)-PSK"
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "启用智能交换学习"
 
@@ -1094,6 +1113,15 @@ msgstr "外部系统日志服务器协议"
 msgid "Extra SSH command options"
 msgstr "额外的 SSH 命令选项"
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "文件"
 
@@ -1241,6 +1269,9 @@ msgstr "OPKG 基础配置"
 msgid "Generate Config"
 msgstr "生成配置"
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "生成备份"
 
@@ -1588,7 +1619,7 @@ msgstr "隔离客户端"
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
 "flash memory, please verify the image file!"
-msgstr "尝试刷写的固件与本路由器不兼容,请重新验证固件文件。"
+msgstr "尝试刷写的固件与本路由器不兼容,请重新验证固件文件。"
 
 msgid "JavaScript required!"
 msgstr "需要 JavaScript!"
@@ -2122,7 +2153,7 @@ msgid ""
 "<samp>INTERFACE.VLANNR</samp> (<abbr title=\"for example\">e.g.</abbr>: "
 "<samp>eth0.1</samp>)."
 msgstr ""
-"在此页面,你可以配置网络接口。你可以勾选“桥接接口”,并输入由空格分隔的多个网"
+"在此页面,您可以配置网络接口。您可以勾选“桥接接口”,并输入由空格分隔的多个网"
 "络接口的名称来桥接多个接口。接口名称中可以使用 <abbr title=\"Virtual Local "
 "Area Network\">VLAN</abbr> 记号 <samp>INTERFACE.VLANNR</samp>(例如:"
 "<samp>eth0.1</samp>)。"
@@ -2164,7 +2195,7 @@ 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 账号拥有一个以上的隧道请设置此项"
+msgstr "可选,如果的 SIXXS 账号拥有一个以上的隧道请设置此项"
 
 msgid ""
 "Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
@@ -2545,14 +2576,14 @@ msgid ""
 "Really shut down network?\\nYou might lose access to this device if you are "
 "connected via this interface."
 msgstr ""
-"确定要关闭此网络?\\n如果正在使用此接口连接路由器,关闭此网络可能导致连接断"
+"确定要关闭此网络?\\n如果正在使用此接口连接路由器,关闭此网络可能导致连接断"
 "开!"
 
 msgid ""
 "Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
 "you are connected via this interface."
 msgstr ""
-"确定要关闭接口 \"%s\"?\\n如果正在使用此接口连接路由器,关闭此网络可能导致"
+"确定要关闭接口 \"%s\"?\\n如果正在使用此接口连接路由器,关闭此网络可能导致"
 "连接断开!"
 
 msgid "Really switch protocol?"
@@ -3273,7 +3304,7 @@ msgstr "登录账户时填写的用户名"
 
 msgid ""
 "This is the prefix routed to you by the tunnel broker for use by clients"
-msgstr "这是隧道代理分配给的路由前缀,供客户端使用"
+msgstr "这是隧道代理分配给的路由前缀,供客户端使用"
 
 msgid "This is the system crontab in which scheduled tasks can be defined."
 msgstr "自定义系统 crontab 中的计划任务。"
@@ -3596,6 +3627,11 @@ 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr "是否添加一条通向隧道的 IPv6 默认路由"
 
@@ -3664,7 +3700,7 @@ msgid ""
 "upgrade it to at least version 7 or use another browser like Firefox, Opera "
 "or Safari."
 msgstr ""
-"的 IE 浏览器太老了,无法正常显示这个页面!请更新到 IE7 及以上或使用其他浏览"
+"的 IE 浏览器太老了,无法正常显示这个页面!请更新到 IE7 及以上或使用其他浏览"
 "器,例如:Chrome、Firefox、Opera、Safari。"
 
 msgid "any"
index 53afa72bebbeb20c193fb6921c91a3b0244da1b5..c0abad2a7643d98be6a22d4853c2a2dcf54d6b6d 100644 (file)
@@ -11,6 +11,9 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "%.1f dB"
+msgstr ""
+
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
 
@@ -127,6 +130,9 @@ msgstr "<abbr title=\"Light Emitting Diode\">LED</abbr> 名稱"
 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 ""
+
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
@@ -597,14 +603,14 @@ msgid ""
 "fill out the <em>create</em> field to define a new zone and attach the "
 "interface to it."
 msgstr ""
-"選擇要指定給這介面的防火牆區. 撿選<em>unspecified</em>以便從指定區域除這個"
+"選擇要指定給這介面的防火牆區. 撿選<em>unspecified</em>以便從指定區域除這個"
 "介面或者填寫<em>create</em>欄以便定義附加這個介面到一個新的區域上."
 
 msgid ""
 "Choose the network(s) you want to attach to this wireless interface or fill "
 "out the <em>create</em> field to define a new network."
 msgstr ""
-"選擇要附加到無線網路介面的多個網路或者填寫<em>create</em> 以便定義一個新的"
+"選擇要附加到無線網路介面的多個網路或者填寫<em>create</em> 以便定義一個新的"
 "網路."
 
 msgid "Cipher"
@@ -644,6 +650,13 @@ msgstr "指令"
 msgid "Common Configuration"
 msgstr "一般設定"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Configuration"
 msgstr "設定"
 
@@ -927,6 +940,9 @@ msgstr "下載並安裝軟體包"
 msgid "Download backup"
 msgstr "下載備份檔"
 
+msgid "Downstream SNR offset"
+msgstr ""
+
 msgid "Dropbear Instance"
 msgstr "Dropbear SSH例子"
 
@@ -1007,6 +1023,9 @@ msgstr "啟用VLAN功能"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "啟用智慧學習功能"
 
@@ -1101,6 +1120,15 @@ msgstr ""
 msgid "Extra SSH command options"
 msgstr ""
 
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
 msgid "File"
 msgstr "檔案"
 
@@ -1246,6 +1274,9 @@ msgstr ""
 msgid "Generate Config"
 msgstr ""
 
+msgid "Generate PMK locally"
+msgstr ""
+
 msgid "Generate archive"
 msgstr "製作壓縮檔"
 
@@ -1479,7 +1510,7 @@ msgid ""
 "slow process as the swap-device cannot be accessed with the high datarates "
 "of the <abbr title=\"Random Access Memory\">RAM</abbr>."
 msgstr ""
-"如果的物理內存不足時,未使用的數據可以是暫時交換到導致更高的交換設備量的可用"
+"如果的物理內存不足時,未使用的數據可以是暫時交換到導致更高的交換設備量的可用"
 "<abbr title=\"Random Access Memory\">RAM</abbr>內.請注意,交換數據是一個非常"
 "緩慢的過程,作為交換裝置不能用高數據速率訪問該<abbr title=\"Random Access "
 "Memory\">RAM</縮寫>"
@@ -1592,7 +1623,7 @@ msgstr ""
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
 "flash memory, please verify the image file!"
-msgstr "它顯示正嘗試更新不適用於這個flash記憶體的映像檔,請檢查確認這個映像檔"
+msgstr "它顯示正嘗試更新不適用於這個flash記憶體的映像檔,請檢查確認這個映像檔"
 
 msgid "JavaScript required!"
 msgstr "需要Java腳本"
@@ -2117,8 +2148,8 @@ msgid ""
 "<samp>INTERFACE.VLANNR</samp> (<abbr title=\"for example\">e.g.</abbr>: "
 "<samp>eth0.1</samp>)."
 msgstr ""
-"在這個頁面可以設定網路介面. 只要點下這個\"介面群橋接\"而且打入數個以空格分"
-"開網路介面的名稱就可以橋接數個介面群. 也可以使用<abbr title=\"Virtual "
+"在這個頁面可以設定網路介面. 只要點下這個\"介面群橋接\"而且打入數個以空格分"
+"開網路介面的名稱就可以橋接數個介面群. 也可以使用<abbr title=\"Virtual "
 "Local Area Network\">VLAN</abbr> 符號<samp>INTERFACE.VLANNR</samp> (<abbr "
 "title=\"for example\">例.如</abbr>: <samp>eth0.1</samp>)."
 
@@ -2377,7 +2408,7 @@ msgid "Pkts."
 msgstr "封包數."
 
 msgid "Please enter your username and password."
-msgstr "請輸入的用戶名稱和密碼"
+msgstr "請輸入的用戶名稱和密碼"
 
 msgid "Policy"
 msgstr "策略"
@@ -2519,14 +2550,14 @@ msgid ""
 "lose access to this device if you are connected via this interface."
 msgstr ""
 "真的要刪除這介面?無法復元刪除!\n"
-"假如你要透過這個介面連線你可能會無法存取這個設備."
+"假如您要透過這個介面連線您可能會無法存取這個設備."
 
 msgid ""
 "Really delete this wireless network? The deletion cannot be undone!\\nYou "
 "might lose access to this device if you are connected via this network."
 msgstr ""
 "真的要刪除這個無線網路?無法復元的刪除!\n"
-"假如你是透過這個網路連線你可能會無法存取這個設備."
+"假如您是透過這個網路連線您可能會無法存取這個設備."
 
 msgid "Really reset all changes?"
 msgstr "確定要重置回復原廠?"
@@ -2537,14 +2568,14 @@ msgid ""
 "connected via this interface."
 msgstr ""
 "真的要刪除這個網路 ?\n"
-"假如你是透過這個介面連線你可能會無法存取這個設備."
+"假如您是透過這個介面連線您可能會無法存取這個設備."
 
 msgid ""
 "Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
 "you are connected via this interface."
 msgstr ""
 "真的要關閉這個介面 \"%s\" ?!\n"
-"假如你要透過這個介面連線你可能會無法存取這個設備."
+"假如您要透過這個介面連線您可能會無法存取這個設備."
 
 msgid "Really switch protocol?"
 msgstr "確定要更換協定?"
@@ -2577,7 +2608,7 @@ msgid "Rebooting..."
 msgstr "重開中..."
 
 msgid "Reboots the operating system of your device"
-msgstr "重啟設備的作業系統"
+msgstr "重啟設備的作業系統"
 
 msgid "Receive"
 msgstr "接收"
@@ -2883,7 +2914,7 @@ msgid "Some fields are invalid, cannot save values!"
 msgstr "有些欄位失效, 無法儲存數值!"
 
 msgid "Sorry, the object you requested was not found."
-msgstr "抱歉, 請求的這物件尚無發現."
+msgstr "抱歉, 請求的這物件尚無發現."
 
 msgid "Sorry, the server encountered an unexpected error."
 msgstr "抱歉, 伺服器遭遇非預期的錯誤."
@@ -3077,7 +3108,7 @@ msgid ""
 "The <em>libiwinfo-lua</em> package is not installed. You must install this "
 "component for working wireless configuration!"
 msgstr ""
-"這 <em>libiwinfo-lua</em> 軟體包尚未安裝. 必須安裝這個元件以便無線網路設定"
+"這 <em>libiwinfo-lua</em> 軟體包尚未安裝. 必須安裝這個元件以便無線網路設定"
 "有作用."
 
 msgid ""
@@ -3142,7 +3173,7 @@ msgstr "輸入的網路名稱非獨一"
 msgid ""
 "The hardware is not multi-SSID capable and the existing configuration will "
 "be replaced if you proceed."
-msgstr "如果繼續的話.這硬體並非多SSID工能並且已存的設定將會被覆蓋."
+msgstr "如果繼續的話.這硬體並非多SSID工能並且已存的設定將會被覆蓋."
 
 msgid ""
 "The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
@@ -3186,8 +3217,8 @@ msgid ""
 "address of your computer to reach the device again, depending on your "
 "settings."
 msgstr ""
-"系統現正刷機中.<br /> 請勿關閉設備!<br />  等待數分鐘直到重新在連線. 可能需"
-"要更新你電腦的位址以便再連設備, 端看你的設定. "
+"系統現正刷機中.<br /> 請勿關閉設備!<br />  等待數分鐘直到重新在連線. 可能需"
+"要更新您電腦的位址以便再連設備, 端看您的設定. "
 
 msgid ""
 "The tunnel end-point is behind NAT, defaults to disabled and only applies to "
@@ -3198,7 +3229,7 @@ msgid ""
 "The uploaded image file does not contain a supported format. Make sure that "
 "you choose the generic image format for your platform."
 msgstr ""
-"以上傳的映像檔不包含支援格式. 請確認你選擇的是針對你的平台採用的通用映像檔."
+"以上傳的映像檔不包含支援格式. 請確認您選擇的是針對您的平台採用的通用映像檔."
 
 msgid "There are no active leases."
 msgstr "租賃尚未啟動."
@@ -3589,6 +3620,11 @@ 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 ""
+
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
 
@@ -3645,12 +3681,12 @@ msgid ""
 "after a device reboot.<br /><strong>Warning: If you disable essential init "
 "scripts like \"network\", your device might become inaccessible!</strong>"
 msgstr ""
-"可以開啟或關閉初始化指令在這. 修改將會在設備重開後被啟用. <br /><strong>警"
-"告: 假如你關閉必要的初始化腳本像\"網路\", 你的設備將可能無法存取!</strong>"
+"可以開啟或關閉初始化指令在這. 修改將會在設備重開後被啟用. <br /><strong>警"
+"告: 假如您關閉必要的初始化腳本像\"網路\", 您的設備將可能無法存取!</strong>"
 
 msgid ""
 "You must enable JavaScript in your browser or LuCI will not work properly."
-msgstr "在瀏覽器必須啟用JavaScript否則LuCI無法正常運作."
+msgstr "在瀏覽器必須啟用JavaScript否則LuCI無法正常運作."
 
 msgid ""
 "Your Internet Explorer is too old to display this page correctly. Please "
index c7d330e68dd463fe12495d7f112afb3507ebeefa..0c01ceffca24358c9dc7f578740914ec1177e7ea 100644 (file)
@@ -296,6 +296,19 @@ ip.datatype = "or(ip4addr,'ignore')"
 time = s:option(Value, "leasetime", translate("Lease time"))
 time.rmempty  = true
 
+duid = s:option(Value, "duid", translate("<abbr title=\"The DHCP Unique Identifier\">DUID</abbr>"))
+duid.datatype = "and(rangelength(28,36),hexstring)"
+fp = io.open("/var/hosts/odhcpd")
+if fp then
+       for line in fp:lines() do
+               local net_val, duid_val = string.match(line, "# (%S+)%s+(%S+)")
+               if duid_val then
+                       duid:value(duid_val, duid_val)
+               end
+       end
+       fp:close()
+end
+
 hostid = s:option(Value, "hostid", translate("<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"))
 
 ipc.neighbors({ family = 4 }, function(n)
index 22f7c5f700ff88e64208594ed338fb2faef988ac..83fdaadcbb961915d3c375454d9737f10f63cd5f 100644 (file)
@@ -3,14 +3,21 @@
 -- Licensed to the public under the Apache License 2.0.
 
 local fs = require "nixio.fs"
+local json = require "luci.jsonc"
 
 m = Map("network", translate("Interfaces"))
 m.pageaction = false
 m:section(SimpleSection).template = "admin_network/iface_overview"
 
 if fs.access("/etc/init.d/dsl_control") then
-       dsl = m:section(TypedSection, "dsl", translate("DSL"))
+       local ok, boarddata = pcall(json.parse, fs.readfile("/etc/board.json"))
+       local modemtype = (ok == true)
+               and (type(boarddata) == "table")
+               and (type(boarddata.dsl) == "table")
+               and (type(boarddata.dsl.modem) == "table")
+               and boarddata.dsl.modem.type
 
+       dsl = m:section(TypedSection, "dsl", translate("DSL"))
        dsl.anonymous = true
 
        annex = dsl:option(ListValue, "annex", translate("Annex"))
@@ -37,15 +44,23 @@ if fs.access("/etc/init.d/dsl_control") then
        tone:value("b", translate("B43 + B43C"))
        tone:value("bv", translate("B43 + B43C + V43"))
 
-       xfer_mode = dsl:option(ListValue, "xfer_mode", translate("Encapsulation mode"))
-       xfer_mode:value("", translate("auto"))
-       xfer_mode:value("atm", translate("ATM (Asynchronous Transfer Mode)"))
-       xfer_mode:value("ptm", translate("PTM/EFM (Packet Transfer Mode)"))
-
-       line_mode = dsl:option(ListValue, "line_mode", translate("DSL line mode"))
-       line_mode:value("", translate("auto"))
-       line_mode:value("adsl", translate("ADSL"))
-       line_mode:value("vdsl", translate("VDSL"))
+       if modemtype == "vdsl" then
+               xfer_mode = dsl:option(ListValue, "xfer_mode", translate("Encapsulation mode"))
+               xfer_mode:value("", translate("auto"))
+               xfer_mode:value("atm", translate("ATM (Asynchronous Transfer Mode)"))
+               xfer_mode:value("ptm", translate("PTM/EFM (Packet Transfer Mode)"))
+
+               line_mode = dsl:option(ListValue, "line_mode", translate("DSL line mode"))
+               line_mode:value("", translate("auto"))
+               line_mode:value("adsl", translate("ADSL"))
+               line_mode:value("vdsl", translate("VDSL"))
+
+               ds_snr = dsl:option(ListValue, "ds_snr_offset", translate("Downstream SNR offset"))
+               ds_snr:depends("line_mode", "adsl")
+               for i = -50, 50, 5 do
+                       ds_snr:value(i, translate("%.1f dB" %{ i / 10} ))
+               end
+       end
 
        firmware = dsl:option(Value, "firmware", translate("Firmware File"))
 
index 51913729dc6489bb178903e284bf8b4fc6236d81..c64226931c71df2ef7f6f57e3921bd2739f93fcd 100644 (file)
@@ -460,7 +460,7 @@ if hwtype == "mac80211" then
        wmm:depends({mode="ap"})
        wmm:depends({mode="ap-wds"})
        wmm.default = wmm.enabled
-       
+
        isolate = s:taboption("advanced", Flag, "isolate", translate("Isolate Clients"),
         translate("Prevents client-to-client communication"))
        isolate:depends({mode="ap"})
@@ -793,9 +793,28 @@ if hwtype == "mac80211" or hwtype == "prism2" then
        mobility_domain.datatype = "and(hexstring,rangelength(4,4))"
        mobility_domain.rmempty = true
 
+       reassociation_deadline = s:taboption("encryption", Value, "reassociation_deadline",
+               translate("Reassociation Deadline"),
+               translate("time units (TUs / 1.024 ms) [1000-65535]"))
+       reassociation_deadline:depends({ieee80211r="1"})
+       reassociation_deadline.placeholder = "1000"
+       reassociation_deadline.datatype = "range(1000,65535)"
+       reassociation_deadline.rmempty = true
+
+       ft_protocol = s:taboption("encryption", ListValue, "ft_over_ds", translate("FT protocol"))
+       ft_protocol:depends({ieee80211r="1"})
+       ft_protocol:value("1", translatef("FT over DS"))
+       ft_protocol:value("0", translatef("FT over the Air"))
+       ft_protocol.rmempty = true
+
+       ft_psk_generate_local = s:taboption("encryption", Flag, "ft_psk_generate_local",
+               translate("Generate PMK locally"),
+               translate("When using a PSK, the PMK can be generated locally without inter AP communications"))
+       ft_psk_generate_local:depends({ieee80211r="1"})
+
        r0_key_lifetime = s:taboption("encryption", Value, "r0_key_lifetime",
                        translate("R0 Key Lifetime"), translate("minutes"))
-       r0_key_lifetime:depends({ieee80211r="1"})
+       r0_key_lifetime:depends({ieee80211r="1", ft_psk_generate_local=""})
        r0_key_lifetime.placeholder = "10000"
        r0_key_lifetime.datatype = "uinteger"
        r0_key_lifetime.rmempty = true
@@ -803,21 +822,13 @@ if hwtype == "mac80211" or hwtype == "prism2" then
        r1_key_holder = s:taboption("encryption", Value, "r1_key_holder",
                        translate("R1 Key Holder"),
                        translate("6-octet identifier as a hex string - no colons"))
-       r1_key_holder:depends({ieee80211r="1"})
+       r1_key_holder:depends({ieee80211r="1", ft_psk_generate_local=""})
        r1_key_holder.placeholder = "00004f577274"
        r1_key_holder.datatype = "and(hexstring,rangelength(12,12))"
        r1_key_holder.rmempty = true
 
-       reassociation_deadline = s:taboption("encryption", Value, "reassociation_deadline",
-               translate("Reassociation Deadline"),
-               translate("time units (TUs / 1.024 ms) [1000-65535]"))
-       reassociation_deadline:depends({ieee80211r="1"})
-       reassociation_deadline.placeholder = "1000"
-       reassociation_deadline.datatype = "range(1000,65535)"
-       reassociation_deadline.rmempty = true
-
        pmk_r1_push = s:taboption("encryption", Flag, "pmk_r1_push", translate("PMK R1 Push"))
-       pmk_r1_push:depends({ieee80211r="1"})
+       pmk_r1_push:depends({ieee80211r="1", ft_psk_generate_local=""})
        pmk_r1_push.placeholder = "0"
        pmk_r1_push.rmempty = true
 
@@ -827,8 +838,7 @@ if hwtype == "mac80211" or hwtype == "prism2" then
                        "<br />This list is used to map R0KH-ID (NAS Identifier) to a destination " ..
                        "MAC address when requesting PMK-R1 key from the R0KH that the STA " ..
                        "used during the Initial Mobility Domain Association."))
-
-       r0kh:depends({ieee80211r="1"})
+       r0kh:depends({ieee80211r="1", ft_psk_generate_local=""})
        r0kh.rmempty = true
 
        r1kh = s:taboption("encryption", DynamicList, "r1kh", translate("External R1 Key Holder List"),
@@ -837,7 +847,7 @@ if hwtype == "mac80211" or hwtype == "prism2" then
                        "<br />This list is used to map R1KH-ID to a destination MAC address " ..
                        "when sending PMK-R1 key from the R0KH. This is also the " ..
                        "list of authorized R1KHs in the MD that can request PMK-R1 keys."))
-       r1kh:depends({ieee80211r="1"})
+       r1kh:depends({ieee80211r="1", ft_psk_generate_local=""})
        r1kh.rmempty = true
        -- End of 802.11r options
 
@@ -981,43 +991,54 @@ end
 
 -- ieee802.11w options
 if hwtype == "mac80211" then
-   local has_80211w = (os.execute("hostapd -v11w 2>/dev/null || hostapd -veap 2>/dev/null") == 0)
-   if has_80211w then
-       ieee80211w = s:taboption("encryption", ListValue, "ieee80211w",
-               translate("802.11w Management Frame Protection"),
-               translate("Requires the 'full' version of wpad/hostapd " ..
-                       "and support from the wifi driver <br />(as of Feb 2017: " ..
-                       "ath9k and ath10k, in LEDE also mwlwifi and mt76)"))
-       ieee80211w.default = ""
-       ieee80211w.rmempty = true
-       ieee80211w:value("", translate("Disabled (default)"))
-       ieee80211w:value("1", translate("Optional"))
-       ieee80211w:value("2", translate("Required"))
-       ieee80211w:depends({mode="ap", encryption="wpa2"})
-       ieee80211w:depends({mode="ap-wds", encryption="wpa2"})
-       ieee80211w:depends({mode="ap", encryption="psk2"})
-       ieee80211w:depends({mode="ap", encryption="psk-mixed"})
-       ieee80211w:depends({mode="ap-wds", encryption="psk2"})
-       ieee80211w:depends({mode="ap-wds", encryption="psk-mixed"})
-
-       max_timeout = s:taboption("encryption", Value, "ieee80211w_max_timeout",
-                       translate("802.11w maximum timeout"),
-                       translate("802.11w Association SA Query maximum timeout"))
-       max_timeout:depends({ieee80211w="1"})
-       max_timeout:depends({ieee80211w="2"})
-       max_timeout.datatype = "uinteger"
-       max_timeout.placeholder = "1000"
-       max_timeout.rmempty = true
-
-       retry_timeout = s:taboption("encryption", Value, "ieee80211w_retry_timeout",
-                       translate("802.11w retry timeout"),
-                       translate("802.11w Association SA Query retry timeout"))
-       retry_timeout:depends({ieee80211w="1"})
-       retry_timeout:depends({ieee80211w="2"})
-       retry_timeout.datatype = "uinteger"
-       retry_timeout.placeholder = "201"
-       retry_timeout.rmempty = true
-   end
+       local has_80211w = (os.execute("hostapd -v11w 2>/dev/null || hostapd -veap 2>/dev/null") == 0)
+       if has_80211w then
+               ieee80211w = s:taboption("encryption", ListValue, "ieee80211w",
+                       translate("802.11w Management Frame Protection"),
+                       translate("Requires the 'full' version of wpad/hostapd " ..
+                               "and support from the wifi driver <br />(as of Feb 2017: " ..
+                               "ath9k and ath10k, in LEDE also mwlwifi and mt76)"))
+               ieee80211w.default = ""
+               ieee80211w.rmempty = true
+               ieee80211w:value("", translate("Disabled (default)"))
+               ieee80211w:value("1", translate("Optional"))
+               ieee80211w:value("2", translate("Required"))
+               ieee80211w:depends({mode="ap", encryption="wpa2"})
+               ieee80211w:depends({mode="ap-wds", encryption="wpa2"})
+               ieee80211w:depends({mode="ap", encryption="psk2"})
+               ieee80211w:depends({mode="ap", encryption="psk-mixed"})
+               ieee80211w:depends({mode="ap-wds", encryption="psk2"})
+               ieee80211w:depends({mode="ap-wds", encryption="psk-mixed"})
+
+               max_timeout = s:taboption("encryption", Value, "ieee80211w_max_timeout",
+                               translate("802.11w maximum timeout"),
+                               translate("802.11w Association SA Query maximum timeout"))
+               max_timeout:depends({ieee80211w="1"})
+               max_timeout:depends({ieee80211w="2"})
+               max_timeout.datatype = "uinteger"
+               max_timeout.placeholder = "1000"
+               max_timeout.rmempty = true
+
+               retry_timeout = s:taboption("encryption", Value, "ieee80211w_retry_timeout",
+                               translate("802.11w retry timeout"),
+                               translate("802.11w Association SA Query retry timeout"))
+               retry_timeout:depends({ieee80211w="1"})
+               retry_timeout:depends({ieee80211w="2"})
+               retry_timeout.datatype = "uinteger"
+               retry_timeout.placeholder = "201"
+               retry_timeout.rmempty = true
+       end
+
+       local key_retries = s:taboption("encryption", Flag, "wpa_disable_eapol_key_retries",
+               translate("Enable key reinstallation (KRACK) countermeasures"),
+               translate("Complicates key reinstallation attacks on the client side by disabling retransmission of EAPOL-Key frames that are used to install keys. This workaround might cause interoperability issues and reduced robustness of key negotiation especially in environments with heavy traffic load."))
+
+       key_retries:depends({mode="ap", encryption="wpa2"})
+       key_retries:depends({mode="ap", encryption="psk2"})
+       key_retries:depends({mode="ap", encryption="psk-mixed"})
+       key_retries:depends({mode="ap-wds", encryption="wpa2"})
+       key_retries:depends({mode="ap-wds", encryption="psk2"})
+       key_retries:depends({mode="ap-wds", encryption="psk-mixed"})
 end
 
 if hwtype == "mac80211" or hwtype == "prism2" then
index c119b572963b8f94056785e6db14e45f5fdaaf89..1a8770ef88f93a877685024a20e5f187f168bf3e 100644 (file)
@@ -7,6 +7,6 @@
 <%+header%>
 <h2 name="content"><%:Kernel Log%></h2>
 <div id="content_syslog">
-<textarea readonly="readonly" wrap="off" rows="<%=dmesg:cmatch("\n")+2%>" id="syslog"><%=dmesg:pcdata()%></textarea>
+<textarea style="font-size: 12px;" readonly="readonly" wrap="off" rows="<%=dmesg:cmatch("\n")+2%>" id="syslog"><%=dmesg:pcdata()%></textarea>
 </div>
 <%+footer%>
index b87f21d08d307c33349454b2db076e8a05d6c6df..fb734a76d96f7ef46f9c5fe165a80a8966cc51dd 100644 (file)
@@ -7,6 +7,6 @@
 <%+header%>
 <h2 name="content"><%:System Log%></h2>
 <div id="content_syslog">
-<textarea readonly="readonly" wrap="off" rows="<%=syslog:cmatch("\n")+2%>" id="syslog"><%=syslog:pcdata()%></textarea>
+<textarea style="font-size: 12px;" readonly="readonly" wrap="off" rows="<%=syslog:cmatch("\n")+2%>" id="syslog"><%=syslog:pcdata()%></textarea>
 </div>
 <%+footer%>
index 2d58b1653b42cccb90b560adced6d6aaf3475d8e..d273055d12e152a36a62480dfae9461a47556429 100644 (file)
@@ -143,7 +143,7 @@ msgid "If selected then the default content element is not shown."
 msgstr "如果选中,那么默认内容元素将不显示。"
 
 msgid "If you are interested in our project then contact the local community"
-msgstr "如果对我们的项目感兴趣,请联系当地的社区"
+msgstr "如果对我们的项目感兴趣,请联系当地的社区"
 
 msgid "Index Page"
 msgstr "索引页"
@@ -155,7 +155,7 @@ msgid ""
 "Internet access depends on technical and organisational conditions and may "
 "or may not work for you."
 msgstr ""
-"访问因特网取决于技术和机构的前提,可能会、也可能不会像设想的那样运作。"
+"访问因特网取决于技术和机构的前提,可能会、也可能不会像设想的那样运作。"
 
 msgid "It is operated by"
 msgstr "它是由"
@@ -324,7 +324,7 @@ msgstr "当地社区设置。"
 msgid ""
 "These pages will assist you in setting up your router for Freifunk or "
 "similar wireless community networks."
-msgstr "这些页面将帮助设置路由器Freifunk或类似的无线社区网络。"
+msgstr "这些页面将帮助设置路由器Freifunk或类似的无线社区网络。"
 
 msgid "This is the access point"
 msgstr "AP"
@@ -368,7 +368,7 @@ msgstr ""
 
 msgid ""
 "You can find further information about the global Freifunk initiative at"
-msgstr "可以找到更多有关全球Freifunk活动的信息"
+msgstr "可以找到更多有关全球Freifunk活动的信息"
 
 msgid "You can manually edit the selected community profile here."
 msgstr "您可以在这里手动编辑所选社区配置文件。"
@@ -376,7 +376,7 @@ msgstr "您可以在这里手动编辑所选社区配置文件。"
 msgid ""
 "You need to select a profile before you can edit it. To select a profile go "
 "to"
-msgstr "编辑它之前,需要选择一个配置文件。选择配置文件"
+msgstr "编辑它之前,需要选择一个配置文件。选择配置文件"
 
 msgid "and fill out all required fields."
 msgstr "填写所有必填字段。"
index 5c3761c9cb430786cec631ea5d56d34499640811..04d2e78b09f3ae700b1841ee386615665da3e388 100644 (file)
@@ -37,4 +37,4 @@ function proto.contains_interface(self, ifc)
         return (netmod:ifnameof(ifc) == self:ifname())
 end
 
-netmod:register_pattern_virtual("^ipip-%w")
+netmod:register_pattern_virtual("^ipip%-%w")
index d876d69ba81d86610dd166310e1cd73935d4b954..ad99073ad67fbdce624e68ee26f362b8fb0269af 100644 (file)
@@ -54,10 +54,10 @@ for _, p in ipairs({"dslite", "map", "464xlat"}) do
        end
 
        if p == "dslite" then
-               netmod:register_pattern_virtual("^ds-%w")
+               netmod:register_pattern_virtual("^ds%-%w")
        elseif p == "map" then
-               netmod:register_pattern_virtual("^map-%w")
+               netmod:register_pattern_virtual("^map%-%w")
        elseif p == "464xlat" then
-               netmod:register_pattern_virtual("^464-%w")
+               netmod:register_pattern_virtual("^464%-%w")
        end
 end
index d267ce9119e450e9e73a921672f49c22998f70b4..9a4396c5be431d33cfadd60789040c7fe0bc7547 100644 (file)
@@ -46,5 +46,5 @@ for _, p in ipairs({"6in4", "6to4", "6rd"}) do
                return (netmod:ifnameof(ifc) == self:ifname())
        end
 
-       netmod:register_pattern_virtual("^%s-%%w" % p)
+       netmod:register_pattern_virtual("^%s%%-%%w" % p)
 end
index 5896a278ce643001dd1ae1a648dbfb3befa9a73d..e0d7fd3e21a0a9503649eabf4ddb81153e6fd6b5 100644 (file)
@@ -46,4 +46,4 @@ function proto.contains_interface(self, ifname)
        end
 end
 
-netmod:register_pattern_virtual("^aiccu-%%w")
+netmod:register_pattern_virtual("^aiccu%-%w")
index 6c5b34e083771814097f3c820fe95396dc00cc31..4f835701ce126997de5a0113196a33f6ada39471 100644 (file)
@@ -58,4 +58,4 @@ function proto.contains_interface(self, ifc)
        return (netmod:ifnameof(ifc) == self:ifname())
 end
 
-netmod:register_pattern_virtual("^ncm-%%w")
+netmod:register_pattern_virtual("^ncm%-%w")
index 0af77d0140c8119273911ed599acfa00b5b37065..0944c7fe6ae633ee90c6a455be649fdec399e075 100644 (file)
@@ -42,4 +42,4 @@ function proto.contains_interface(self, ifc)
 
 end
 
-netmod:register_pattern_virtual("^vpn-%w")
+netmod:register_pattern_virtual("^vpn%-%w")
index 7bbd78fa1e6d91359cfc193a1512dd27d08f540a..1bcbd4808a0d82bdfc98e38e6dc5105b8e98dcf6 100644 (file)
@@ -90,5 +90,5 @@ for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "3g", "l2tp", "pppossh"}) d
                end
        end
 
-       netmod:register_pattern_virtual("^%s-%%w" % p)
+       netmod:register_pattern_virtual("^%s%%-%%w" % p)
 end
index cca8af109e4a0d70e7e0e0696b918fc995587ca1..8a28ad4716b0bdf54baac8225e58d9edd5b248a5 100644 (file)
@@ -48,4 +48,4 @@ function proto.contains_interface(self, ifc)
         return (netmod:ifnameof(ifc) == self:ifname())
 end
 
-netmod:register_pattern_virtual("^qmi-%w")
+netmod:register_pattern_virtual("^qmi%-%w")
index 5d40fc72d53f0de378604864425bed2c1b52d1fb..a2dabf9afeaa8a8fc03df506c0efe8a1a19748d8 100644 (file)
@@ -4,7 +4,7 @@
 local netmod = luci.model.network
 local device = luci.util.class(netmod.interface)
 
-netmod:register_pattern_virtual("^relay-%w")
+netmod:register_pattern_virtual("^relay%-%w")
 
 local proto = netmod:register_protocol("relay")
 
index f4cae0bd2ab0f81cc5bf9b13d1cf9ceed1d8b3f4..6c3136e384298ed251d8144819c34b9d54930610 100644 (file)
@@ -42,5 +42,5 @@ function proto.contains_interface(self, ifc)
 
 end
 
-netmod:register_pattern_virtual("^vpn-%w")
+netmod:register_pattern_virtual("^vpn%-%w")
 
index 94fd70232c7a27bb448d9b91507fa1446d0d838d..5888e1ef3f4e53c67f390732405b208a1ecba0ad 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dnsmasq
 PKG_VERSION:=2.78
-PKG_RELEASE:=1
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq/
index a762cd3309a5a951e0947541d8e2ada587d209d2..34c35c2dc65afc3abe170aca25ad259815fd1ed7 100644 (file)
@@ -116,12 +116,12 @@ append_ipset() {
 }
 
 append_interface() {
-       network_get_device ifname "$1" || return
+       network_get_device ifname "$1" || ifname="$1"
        xappend "--interface=$ifname"
 }
 
 append_notinterface() {
-       network_get_device ifname "$1" || return
+       network_get_device ifname "$1" || ifname="$1"
        xappend "--except-interface=$ifname"
 }
 
@@ -559,9 +559,14 @@ dnsmasq_start()
        echo "# auto-generated config file from /etc/config/dhcp" > $CONFIGFILE_TMP
        echo "# auto-generated config file from /etc/config/dhcp" > $HOSTFILE
 
+       local dnsmasqconffile="/etc/dnsmasq.${cfg}.conf"
+       if [ ! -r "$dnsmasqconffile" ]; then
+               dnsmasqconffile=/etc/dnsmasq.conf
+       fi
+
        # if we did this last, we could override auto-generated config
-       [ -f /etc/dnsmasq.conf ] && {
-               xappend "--conf-file=/etc/dnsmasq.conf"
+       [ -f "${dnsmasqconffile}" ] && {
+               xappend "--conf-file=${dnsmasqconffile}"
        }
 
        $PROG --version | grep -osqE "^Compile time options:.* DHCPv6( |$)" && DHCPv6CAPABLE=1 || DHCPv6CAPABLE=0
@@ -775,11 +780,6 @@ dnsmasq_start()
        procd_set_param file $CONFIGFILE
        procd_set_param respawn
 
-       local dnsmasqconffile="/etc/dnsmasq.${cfg}.conf"
-       if [ ! -r "$dnsmasqconffile" ]; then
-               dnsmasqconffile=/etc/dnsmasq.conf
-       fi
-
        procd_add_jail dnsmasq ubus log
        procd_add_jail_mount $CONFIGFILE $TRUSTANCHORSFILE $HOSTFILE /etc/passwd /etc/group /etc/TZ /dev/null /dev/urandom $dnsmasqconffile $dnsmasqconfdir $resolvfile $dhcpscript /etc/hosts /etc/ethers $EXTRA_MOUNT
        procd_add_jail_mount_rw /var/run/dnsmasq/ $leasefile
index 26d83e4bab53de1fecb6c832a5955800b3199c7d..6f8524cc4b8b0c0a21ea75838761a7ff5bc374ac 100644 (file)
@@ -11,17 +11,17 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=wireguard
 
-PKG_VERSION:=0.0.20171017
+PKG_VERSION:=0.0.20171127
 PKG_RELEASE:=1
 
 PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
-PKG_HASH:=57b79a62874d9b99659a744513d4f6f9d88cb772deaa99e485b6fed3004a35cd
+PKG_HASH:=5e0a93cccce70e5758ddebaaa94d3df74cb664f592895efbd43dc6171ee5b25b
 
 PKG_LICENSE:=GPL-2.0 Apache-2.0
 PKG_LICENSE_FILES:=COPYING
 
-PKG_BUILD_DIR:=$(BUILD_DIR)/WireGuard-$(PKG_VERSION)
+PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/WireGuard-$(PKG_VERSION)
 PKG_BUILD_PARALLEL:=1
 PKG_USE_MIPS16:=0
 
@@ -36,7 +36,6 @@ define Package/wireguard/Default
   SUBMENU:=VPN
   URL:=https://www.wireguard.com
   MAINTAINER:=Baptiste Jonglez <openwrt@bitsofnetworks.org>, \
-              Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>, \
               Dan Luedtke <mail@danrl.com>, \
               Jason A. Donenfeld <Jason@zx2c4.com>
 endef
diff --git a/package/network/services/wireguard/patches/100-portability.patch b/package/network/services/wireguard/patches/100-portability.patch
new file mode 100644 (file)
index 0000000..e55c922
--- /dev/null
@@ -0,0 +1,18 @@
+tools: fix portability issue
+
+Check if the compiler defines __linux__, instead of assuming that the
+host OS is the same as the target OS.
+
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+--- a/src/tools/Makefile
++++ b/src/tools/Makefile
+@@ -39,7 +39,7 @@ CFLAGS += -DRUNSTATEDIR="\"$(RUNSTATEDIR
+ ifeq ($(DEBUG_TOOLS),y)
+ CFLAGS += -g
+ endif
+-ifeq ($(shell uname -s),Linux)
++ifeq ($(strip $(shell echo __linux__ | $(CC) -E - | grep -v '^\#')),1)
+ LIBMNL_CFLAGS := $(shell $(PKG_CONFIG) --cflags libmnl 2>/dev/null)
+ LIBMNL_LDLIBS := $(shell $(PKG_CONFIG) --libs libmnl 2>/dev/null || echo -lmnl)
+ CFLAGS += $(LIBMNL_CFLAGS)
index 9b3c12becabfed1e0ff8fcbbcb19d7eed2996723..a578ddc98c03bc45c18ffc7bbf2f9ad3b8918c81 100644 (file)
@@ -30,7 +30,8 @@ endef
 
 define Build/Configure
        echo "const char iw_version[] = \"$(PKG_VERSION)\";" > $(PKG_BUILD_DIR)/version.c
-       echo "#!/bin/sh" > $(PKG_BUILD_DIR)/version.sh
+       rm -f $(PKG_BUILD_DIR)/version.sh
+       touch $(PKG_BUILD_DIR)/version.sh
        chmod +x $(PKG_BUILD_DIR)/version.sh
 endef
 
index 70275617fab321431a2d022a67ecd177923b7a6e..37367abd0ee36aa7efffe493bf63fec5e369f8c2 100644 (file)
@@ -4,13 +4,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mountd
-PKG_RELEASE:=1
+PKG_RELEASE:=3
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(LEDE_GIT)/project/mountd.git
-PKG_SOURCE_DATE:=2016-12-19
-PKG_SOURCE_VERSION:=dd5799c9f8cc7a01c0572c067bf907b37cdd7d04
-PKG_MIRROR_HASH:=cdc9f61bf4ad4b5d02b7cad435de1566b53306ed532fe39d099ed91eec6c405c
+PKG_SOURCE_DATE:=2017-11-09
+PKG_SOURCE_VERSION:=7826ca5d6aca691dcb6f98ab203a090d42e79337
+PKG_MIRROR_HASH:=6fda7666a99974ac9179b102f6e8027f6c4091be9b49e1eed49dee7442d83206
 CMAKE_INSTALL:=1
 
 PKG_MAINTAINER:=John Crispin <john@phrozen.org>
index 110116971ee556556893639d4c1f8c470c6d5eb8..4c6c080b7b8a0960ddc80cf1ae70de7d66156189 100644 (file)
@@ -16,9 +16,9 @@ PKG_FLAGS:=essential
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL:=https://git.lede-project.org/project/opkg-lede.git
-PKG_SOURCE_DATE:=2017-03-23
-PKG_SOURCE_VERSION:=1d0263bb40e3c099501fc1f2431907636230e7f2
-PKG_MIRROR_HASH:=1f527179e60b9404affa5f3c9c506d4249e085bf521f770819b8648273a1010c
+PKG_SOURCE_DATE:=2017-10-23
+PKG_SOURCE_VERSION:=c6caf07212150f5ec3b0c5f895c496452f9b1e21
+PKG_MIRROR_HASH:=8d1d608d7b7bb0a8dddc8801b9aaf2993cc028e6dde5dfc7641c24c7e64cd6a0
 
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=COPYING
index cbbd95f1ee71a8b3d118dfa6efc8db15ba8fd4f4..864d3f62a9c3e0f9ab1b72b1ede8205a2edd83d4 100644 (file)
@@ -12,9 +12,9 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(LEDE_GIT)/project/procd.git
-PKG_SOURCE_DATE:=2017-08-08
-PKG_SOURCE_VERSION:=66be6a23d71fcc068d6b813f0e0be2f8f0b6aa88
-PKG_MIRROR_HASH:=286dcc8855f1dc403895bc9252f617c14be6f7f6ec36f13d4f4de7c4a715f08c
+PKG_SOURCE_DATE:=2017-11-14
+PKG_SOURCE_VERSION:=d9dc0e03d70937dbbea12af86997701fbd717dc5
+PKG_MIRROR_HASH:=ad62410e6e43113c13aebf15f60c145f1eac09f309b8e7bd006a3621ca8f07a5
 CMAKE_INSTALL:=1
 
 PKG_LICENSE:=GPL-2.0
index d13f20eab41861beaf6ef90354af996e8cd5ef76..ce62e83673718ff755b4a327fb4391f75c107b75 100644 (file)
@@ -12,10 +12,10 @@ PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(LEDE_GIT)/project/rpcd.git
-PKG_SOURCE_DATE:=2016-12-03
-PKG_SOURCE_VERSION:=0577cfc1acdbaf30c31090e75045ba58d6dd8a78
+PKG_SOURCE_DATE:=2017-11-12
+PKG_SOURCE_VERSION:=a0231be8fbc61bb97e725eb206fc9b1ce9f69c05
 PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
-PKG_MIRROR_HASH:=bbcd750df4867a57604e3b922e28f7a019cf940c3586d813d88001dc314e2a1c
+PKG_MIRROR_HASH:=5f66a6ad2eced71cccd43fc011077806e3bbc6dadd0403175947a02c25fe6344
 
 PKG_LICENSE:=ISC
 PKG_LICENSE_FILES:=
index fa2751ae06571929d47c54d9d6c4f3440362d321..40bddd6b58195828951d1e48c12848f4fbfc1430 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=busybox
 PKG_VERSION:=1.25.1
-PKG_RELEASE:=5
+PKG_RELEASE:=4
 PKG_FLAGS:=essential
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
diff --git a/package/utils/busybox/patches/900-fix_cve2017-16544.patch b/package/utils/busybox/patches/900-fix_cve2017-16544.patch
deleted file mode 100644 (file)
index 4fd77e8..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
---- a/libbb/lineedit.c
-+++ b/libbb/lineedit.c
-@@ -632,6 +632,19 @@ static void free_tab_completion_data(voi
- static void add_match(char *matched)
- {
-+      unsigned char *p = (unsigned char*)matched;
-+      while (*p) {
-+              /* ESC attack fix: drop any string with control chars */
-+              if (*p < ' '
-+               || (!ENABLE_UNICODE_SUPPORT && *p >= 0x7f)
-+               || (ENABLE_UNICODE_SUPPORT && *p == 0x7f)
-+              ) {
-+                      free(matched);
-+                      return;
-+              }
-+              p++;
-+      }
-+
-       matches = xrealloc_vector(matches, 4, num_matches);
-       matches[num_matches] = matched;
-       num_matches++;
index 7f930ea8303638aee85a2ee28844e9527f5e4350..c4b7437b90250990c0bc9227fb503591a6fda0d3 100755 (executable)
@@ -173,7 +173,7 @@ if ($tree) {
        }
 
        if (!defined $root) {
-               print "Must be run from the top-level dir. of a libreCMC tree\n";
+               print "Must be run from the top-level dir. of a LEDE tree\n";
                exit(2);
        }
 }
diff --git a/target/linux/generic/patches-4.4/073-v4.10-0001-net-bgmac-allocate-struct-bgmac-just-once-don-t-copy.patch b/target/linux/generic/patches-4.4/073-v4.10-0001-net-bgmac-allocate-struct-bgmac-just-once-don-t-copy.patch
deleted file mode 100644 (file)
index 544a074..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-From 34a5102c3235c470a6c77fba16cb971964d9c136 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Tue, 31 Jan 2017 19:37:54 +0100
-Subject: [PATCH 1/3] net: bgmac: allocate struct bgmac just once & don't copy
- it
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-So far were were allocating struct bgmac in 3 places: platform code,
-bcma code and shared bgmac_enet_probe function. The reason for this was
-bgmac_enet_probe:
-1) Requiring early-filled struct bgmac
-2) Calling alloc_etherdev on its own in order to use netdev_priv later
-
-This solution got few drawbacks:
-1) Was duplicating allocating code
-2) Required copying early-filled struct
-3) Resulted in platform/bcma code having access only to unused struct
-
-Solve this situation by simply extracting some probe code into the new
-bgmac_alloc function.
-
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/ethernet/broadcom/bgmac-bcma.c     |  4 +---
- drivers/net/ethernet/broadcom/bgmac-platform.c |  2 +-
- drivers/net/ethernet/broadcom/bgmac.c          | 25 +++++++++++++++++--------
- drivers/net/ethernet/broadcom/bgmac.h          |  3 ++-
- 4 files changed, 21 insertions(+), 13 deletions(-)
-
---- a/drivers/net/ethernet/broadcom/bgmac-bcma.c
-+++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c
-@@ -99,12 +99,11 @@ static int bgmac_probe(struct bcma_devic
-       u8 *mac;
-       int err;
--      bgmac = kzalloc(sizeof(*bgmac), GFP_KERNEL);
-+      bgmac = bgmac_alloc(&core->dev);
-       if (!bgmac)
-               return -ENOMEM;
-       bgmac->bcma.core = core;
--      bgmac->dev = &core->dev;
-       bgmac->dma_dev = core->dma_dev;
-       bgmac->irq = core->irq;
-@@ -285,7 +284,6 @@ static int bgmac_probe(struct bcma_devic
- err1:
-       bcma_mdio_mii_unregister(bgmac->mii_bus);
- err:
--      kfree(bgmac);
-       bcma_set_drvdata(core, NULL);
-       return err;
---- a/drivers/net/ethernet/broadcom/bgmac-platform.c
-+++ b/drivers/net/ethernet/broadcom/bgmac-platform.c
-@@ -93,7 +93,7 @@ static int bgmac_probe(struct platform_d
-       struct resource *regs;
-       const u8 *mac_addr;
--      bgmac = devm_kzalloc(&pdev->dev, sizeof(*bgmac), GFP_KERNEL);
-+      bgmac = bgmac_alloc(&pdev->dev);
-       if (!bgmac)
-               return -ENOMEM;
---- a/drivers/net/ethernet/broadcom/bgmac.c
-+++ b/drivers/net/ethernet/broadcom/bgmac.c
-@@ -1475,22 +1475,32 @@ static int bgmac_phy_connect(struct bgma
-       return 0;
- }
--int bgmac_enet_probe(struct bgmac *info)
-+struct bgmac *bgmac_alloc(struct device *dev)
- {
-       struct net_device *net_dev;
-       struct bgmac *bgmac;
--      int err;
-       /* Allocation and references */
--      net_dev = alloc_etherdev(sizeof(*bgmac));
-+      net_dev = devm_alloc_etherdev(dev, sizeof(*bgmac));
-       if (!net_dev)
--              return -ENOMEM;
-+              return NULL;
-       net_dev->netdev_ops = &bgmac_netdev_ops;
-       net_dev->ethtool_ops = &bgmac_ethtool_ops;
-+
-       bgmac = netdev_priv(net_dev);
--      memcpy(bgmac, info, sizeof(*bgmac));
-+      bgmac->dev = dev;
-       bgmac->net_dev = net_dev;
-+
-+      return bgmac;
-+}
-+EXPORT_SYMBOL_GPL(bgmac_alloc);
-+
-+int bgmac_enet_probe(struct bgmac *bgmac)
-+{
-+      struct net_device *net_dev = bgmac->net_dev;
-+      int err;
-+
-       net_dev->irq = bgmac->irq;
-       SET_NETDEV_DEV(net_dev, bgmac->dev);
-@@ -1517,7 +1527,7 @@ int bgmac_enet_probe(struct bgmac *info)
-       err = bgmac_dma_alloc(bgmac);
-       if (err) {
-               dev_err(bgmac->dev, "Unable to alloc memory for DMA\n");
--              goto err_netdev_free;
-+              goto err_out;
-       }
-       bgmac->int_mask = BGMAC_IS_ERRMASK | BGMAC_IS_RX | BGMAC_IS_TX_MASK;
-@@ -1553,8 +1563,7 @@ err_phy_disconnect:
-       phy_disconnect(net_dev->phydev);
- err_dma_free:
-       bgmac_dma_free(bgmac);
--err_netdev_free:
--      free_netdev(net_dev);
-+err_out:
-       return err;
- }
---- a/drivers/net/ethernet/broadcom/bgmac.h
-+++ b/drivers/net/ethernet/broadcom/bgmac.h
-@@ -515,7 +515,8 @@ struct bgmac {
-                             u32 set);
- };
--int bgmac_enet_probe(struct bgmac *info);
-+struct bgmac *bgmac_alloc(struct device *dev);
-+int bgmac_enet_probe(struct bgmac *bgmac);
- void bgmac_enet_remove(struct bgmac *bgmac);
- struct mii_bus *bcma_mdio_mii_register(struct bcma_device *core, u8 phyaddr);
diff --git a/target/linux/generic/patches-4.4/073-v4.10-0003-net-bgmac-use-PHY-subsystem-for-initializing-PHY.patch b/target/linux/generic/patches-4.4/073-v4.10-0003-net-bgmac-use-PHY-subsystem-for-initializing-PHY.patch
deleted file mode 100644 (file)
index d1be3e3..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-From 8e6f31baba7e2c13ab7e954fe6179420a7545a8b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Tue, 31 Jan 2017 19:37:56 +0100
-Subject: [PATCH 3/3] net: bgmac: use PHY subsystem for initializing PHY
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This adds support for using bgmac with PHYs supported by standalone PHY
-drivers. Having any PHY initialization in bgmac is hacky and shouldn't
-be extended but rather removed if anyone has hardware to test it.
-
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
---- a/drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
-+++ b/drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c
-@@ -132,6 +132,10 @@ static void bcma_mdio_phy_init(struct bg
-       struct bcma_chipinfo *ci = &bgmac->bcma.core->bus->chipinfo;
-       u8 i;
-+      /* For some legacy hardware we do chipset-based PHY initialization here
-+       * without even detecting PHY ID. It's hacky and should be cleaned as
-+       * soon as someone can test it.
-+       */
-       if (ci->id == BCMA_CHIP_ID_BCM5356) {
-               for (i = 0; i < 5; i++) {
-                       bcma_mdio_phy_write(bgmac, i, 0x1f, 0x008b);
-@@ -140,6 +144,7 @@ static void bcma_mdio_phy_init(struct bg
-                       bcma_mdio_phy_write(bgmac, i, 0x12, 0x2aaa);
-                       bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b);
-               }
-+              return;
-       }
-       if ((ci->id == BCMA_CHIP_ID_BCM5357 && ci->pkg != 10) ||
-           (ci->id == BCMA_CHIP_ID_BCM4749 && ci->pkg != 10) ||
-@@ -161,7 +166,12 @@ static void bcma_mdio_phy_init(struct bg
-                       bcma_mdio_phy_write(bgmac, i, 0x17, 0x9273);
-                       bcma_mdio_phy_write(bgmac, i, 0x1f, 0x000b);
-               }
-+              return;
-       }
-+
-+      /* For all other hw do initialization using PHY subsystem. */
-+      if (bgmac->net_dev && bgmac->net_dev->phydev)
-+              phy_init_hw(bgmac->net_dev->phydev);
- }
- /* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipphyreset */
diff --git a/target/linux/generic/patches-4.4/078-0003-net-phy-cherry-pick-Broadcom-drivers-updates-from-v4.patch b/target/linux/generic/patches-4.4/078-0003-net-phy-cherry-pick-Broadcom-drivers-updates-from-v4.patch
deleted file mode 100644 (file)
index 1186559..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Subject: [PATCH 1/2] net: phy: cherry-pick Broadcom drivers updates from
- v4.10-rc1
-
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
----
-
---- a/drivers/net/phy/broadcom.c
-+++ b/drivers/net/phy/broadcom.c
-@@ -18,7 +18,7 @@
- #include <linux/module.h>
- #include <linux/phy.h>
- #include <linux/brcmphy.h>
--
-+#include <linux/of.h>
- #define BRCM_PHY_MODEL(phydev) \
-       ((phydev)->drv->phy_id & (phydev)->drv->phy_id_mask)
-@@ -30,9 +30,32 @@ MODULE_DESCRIPTION("Broadcom PHY driver"
- MODULE_AUTHOR("Maciej W. Rozycki");
- MODULE_LICENSE("GPL");
--static int bcm54xx_auxctl_write(struct phy_device *phydev, u16 regnum, u16 val)
-+static int bcm54810_config(struct phy_device *phydev)
- {
--      return phy_write(phydev, MII_BCM54XX_AUX_CTL, regnum | val);
-+      int rc, val;
-+
-+      val = bcm_phy_read_exp(phydev, BCM54810_EXP_BROADREACH_LRE_MISC_CTL);
-+      val &= ~BCM54810_EXP_BROADREACH_LRE_MISC_CTL_EN;
-+      rc = bcm_phy_write_exp(phydev, BCM54810_EXP_BROADREACH_LRE_MISC_CTL,
-+                             val);
-+      if (rc < 0)
-+              return rc;
-+
-+      val = bcm54xx_auxctl_read(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC);
-+      val &= ~MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN;
-+      val |= MII_BCM54XX_AUXCTL_MISC_WREN;
-+      rc = bcm54xx_auxctl_write(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC,
-+                                val);
-+      if (rc < 0)
-+              return rc;
-+
-+      val = bcm_phy_read_shadow(phydev, BCM54810_SHD_CLK_CTL);
-+      val &= ~BCM54810_SHD_CLK_CTL_GTXCLK_EN;
-+      rc = bcm_phy_write_shadow(phydev, BCM54810_SHD_CLK_CTL, val);
-+      if (rc < 0)
-+              return rc;
-+
-+      return 0;
- }
- /* Needs SMDSP clock enabled via bcm54xx_phydsp_config() */
-@@ -207,6 +230,12 @@ static int bcm54xx_config_init(struct ph
-           (phydev->dev_flags & PHY_BRCM_AUTO_PWRDWN_ENABLE))
-               bcm54xx_adjust_rxrefclk(phydev);
-+      if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM54810) {
-+              err = bcm54810_config(phydev);
-+              if (err)
-+                      return err;
-+      }
-+
-       bcm54xx_phydsp_config(phydev);
-       return 0;
-@@ -304,6 +333,7 @@ static int bcm5482_read_status(struct ph
- static int bcm5481_config_aneg(struct phy_device *phydev)
- {
-+      struct device_node *np = phydev->dev.of_node;
-       int ret;
-       /* Aneg firsly. */
-@@ -334,6 +364,49 @@ static int bcm5481_config_aneg(struct ph
-               phy_write(phydev, 0x18, reg);
-       }
-+      if (of_property_read_bool(np, "enet-phy-lane-swap")) {
-+              /* Lane Swap - Undocumented register...magic! */
-+              ret = bcm_phy_write_exp(phydev, MII_BCM54XX_EXP_SEL_ER + 0x9,
-+                                      0x11B);
-+              if (ret < 0)
-+                      return ret;
-+      }
-+
-+      return ret;
-+}
-+
-+static int bcm54612e_config_aneg(struct phy_device *phydev)
-+{
-+      int ret;
-+
-+      /* First, auto-negotiate. */
-+      ret = genphy_config_aneg(phydev);
-+
-+      /* Clear TX internal delay unless requested. */
-+      if ((phydev->interface != PHY_INTERFACE_MODE_RGMII_ID) &&
-+          (phydev->interface != PHY_INTERFACE_MODE_RGMII_TXID)) {
-+              /* Disable TXD to GTXCLK clock delay (default set) */
-+              /* Bit 9 is the only field in shadow register 00011 */
-+              bcm_phy_write_shadow(phydev, 0x03, 0);
-+      }
-+
-+      /* Clear RX internal delay unless requested. */
-+      if ((phydev->interface != PHY_INTERFACE_MODE_RGMII_ID) &&
-+          (phydev->interface != PHY_INTERFACE_MODE_RGMII_RXID)) {
-+              u16 reg;
-+
-+              /* Errata: reads require filling in the write selector field */
-+              bcm54xx_auxctl_write(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC,
-+                                   MII_BCM54XX_AUXCTL_MISC_RDSEL_MISC);
-+              reg = phy_read(phydev, MII_BCM54XX_AUX_CTL);
-+              /* Disable RXD to RXC delay (default set) */
-+              reg &= ~MII_BCM54XX_AUXCTL_MISC_RXD_RXC_SKEW;
-+              /* Clear shadow selector field */
-+              reg &= ~MII_BCM54XX_AUXCTL_SHDWSEL_MASK;
-+              bcm54xx_auxctl_write(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC,
-+                                   MII_BCM54XX_AUXCTL_MISC_WREN | reg);
-+      }
-+
-       return ret;
- }
-@@ -488,6 +561,19 @@ static struct phy_driver broadcom_driver
-       .config_intr    = bcm_phy_config_intr,
-       .driver         = { .owner = THIS_MODULE },
- }, {
-+      .phy_id         = PHY_ID_BCM54612E,
-+      .phy_id_mask    = 0xfffffff0,
-+      .name           = "Broadcom BCM54612E",
-+      .features       = PHY_GBIT_FEATURES |
-+                        SUPPORTED_Pause | SUPPORTED_Asym_Pause,
-+      .flags          = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
-+      .config_init    = bcm54xx_config_init,
-+      .config_aneg    = bcm54612e_config_aneg,
-+      .read_status    = genphy_read_status,
-+      .ack_interrupt  = bcm_phy_ack_intr,
-+      .config_intr    = bcm_phy_config_intr,
-+      .driver         = { .owner = THIS_MODULE },
-+}, {
-       .phy_id         = PHY_ID_BCM54616S,
-       .phy_id_mask    = 0xfffffff0,
-       .name           = "Broadcom BCM54616S",
-@@ -527,6 +613,19 @@ static struct phy_driver broadcom_driver
-       .config_intr    = bcm_phy_config_intr,
-       .driver         = { .owner = THIS_MODULE },
- }, {
-+      .phy_id         = PHY_ID_BCM54810,
-+      .phy_id_mask    = 0xfffffff0,
-+      .name           = "Broadcom BCM54810",
-+      .features       = PHY_GBIT_FEATURES |
-+                        SUPPORTED_Pause | SUPPORTED_Asym_Pause,
-+      .flags          = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
-+      .config_init    = bcm54xx_config_init,
-+      .config_aneg    = bcm5481_config_aneg,
-+      .read_status    = genphy_read_status,
-+      .ack_interrupt  = bcm_phy_ack_intr,
-+      .config_intr    = bcm_phy_config_intr,
-+      .driver         = { .owner = THIS_MODULE },
-+}, {
-       .phy_id         = PHY_ID_BCM5482,
-       .phy_id_mask    = 0xfffffff0,
-       .name           = "Broadcom BCM5482",
-@@ -612,9 +711,11 @@ static struct mdio_device_id __maybe_unu
-       { PHY_ID_BCM5411, 0xfffffff0 },
-       { PHY_ID_BCM5421, 0xfffffff0 },
-       { PHY_ID_BCM5461, 0xfffffff0 },
-+      { PHY_ID_BCM54612E, 0xfffffff0 },
-       { PHY_ID_BCM54616S, 0xfffffff0 },
-       { PHY_ID_BCM5464, 0xfffffff0 },
-       { PHY_ID_BCM5481, 0xfffffff0 },
-+      { PHY_ID_BCM54810, 0xfffffff0 },
-       { PHY_ID_BCM5482, 0xfffffff0 },
-       { PHY_ID_BCM50610, 0xfffffff0 },
-       { PHY_ID_BCM50610M, 0xfffffff0 },
---- a/include/linux/brcmphy.h
-+++ b/include/linux/brcmphy.h
-@@ -13,11 +13,13 @@
- #define PHY_ID_BCM5241                        0x0143bc30
- #define PHY_ID_BCMAC131                       0x0143bc70
- #define PHY_ID_BCM5481                        0x0143bca0
-+#define PHY_ID_BCM54810                       0x03625d00
- #define PHY_ID_BCM5482                        0x0143bcb0
- #define PHY_ID_BCM5411                        0x00206070
- #define PHY_ID_BCM5421                        0x002060e0
- #define PHY_ID_BCM5464                        0x002060b0
- #define PHY_ID_BCM5461                        0x002060c0
-+#define PHY_ID_BCM54612E              0x03625e60
- #define PHY_ID_BCM54616S              0x03625d10
- #define PHY_ID_BCM57780                       0x03625d90
-@@ -52,6 +54,7 @@
- #define PHY_BRCM_EXT_IBND_TX_ENABLE   0x00002000
- #define PHY_BRCM_CLEAR_RGMII_MODE     0x00004000
- #define PHY_BRCM_DIS_TXCRXC_NOENRGY   0x00008000
-+
- /* Broadcom BCM7xxx specific workarounds */
- #define PHY_BRCM_7XXX_REV(x)          (((x) >> 8) & 0xff)
- #define PHY_BRCM_7XXX_PATCH(x)                ((x) & 0xff)
-@@ -102,11 +105,14 @@
- #define MII_BCM54XX_AUXCTL_ACTL_SMDSP_ENA     0x0800
- #define MII_BCM54XX_AUXCTL_MISC_WREN  0x8000
-+#define MII_BCM54XX_AUXCTL_MISC_RXD_RXC_SKEW  0x0100
- #define MII_BCM54XX_AUXCTL_MISC_FORCE_AMDIX   0x0200
- #define MII_BCM54XX_AUXCTL_MISC_RDSEL_MISC    0x7000
- #define MII_BCM54XX_AUXCTL_SHDWSEL_MISC       0x0007
-+#define MII_BCM54XX_AUXCTL_SHDWSEL_READ_SHIFT 12
-+#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN (1 << 8)
--#define MII_BCM54XX_AUXCTL_SHDWSEL_AUXCTL     0x0000
-+#define MII_BCM54XX_AUXCTL_SHDWSEL_MASK       0x0007
- /*
-  * Broadcom LED source encodings.  These are used in BCM5461, BCM5481,
-@@ -186,6 +192,12 @@
- #define BCM5482_SSD_SGMII_SLAVE_EN    0x0002  /* Slave mode enable */
- #define BCM5482_SSD_SGMII_SLAVE_AD    0x0001  /* Slave auto-detection */
-+/* BCM54810 Registers */
-+#define BCM54810_EXP_BROADREACH_LRE_MISC_CTL  (MII_BCM54XX_EXP_SEL_ER + 0x90)
-+#define BCM54810_EXP_BROADREACH_LRE_MISC_CTL_EN       (1 << 0)
-+#define BCM54810_SHD_CLK_CTL                  0x3
-+#define BCM54810_SHD_CLK_CTL_GTXCLK_EN                (1 << 9)
-+
- /*****************************************************************************/
- /* Fast Ethernet Transceiver definitions. */
---- a/drivers/net/phy/Kconfig
-+++ b/drivers/net/phy/Kconfig
-@@ -77,7 +77,7 @@ config BROADCOM_PHY
-       select BCM_NET_PHYLIB
-       ---help---
-         Currently supports the BCM5411, BCM5421, BCM5461, BCM54616S, BCM5464,
--        BCM5481 and BCM5482 PHYs.
-+        BCM5481, BCM54810 and BCM5482 PHYs.
- config BCM_CYGNUS_PHY
-       tristate "Drivers for Broadcom Cygnus SoC internal PHY"
---- a/drivers/net/phy/bcm-phy-lib.c
-+++ b/drivers/net/phy/bcm-phy-lib.c
-@@ -50,6 +50,23 @@ int bcm_phy_read_exp(struct phy_device *
- }
- EXPORT_SYMBOL_GPL(bcm_phy_read_exp);
-+int bcm54xx_auxctl_read(struct phy_device *phydev, u16 regnum)
-+{
-+      /* The register must be written to both the Shadow Register Select and
-+       * the Shadow Read Register Selector
-+       */
-+      phy_write(phydev, MII_BCM54XX_AUX_CTL, regnum |
-+                regnum << MII_BCM54XX_AUXCTL_SHDWSEL_READ_SHIFT);
-+      return phy_read(phydev, MII_BCM54XX_AUX_CTL);
-+}
-+EXPORT_SYMBOL_GPL(bcm54xx_auxctl_read);
-+
-+int bcm54xx_auxctl_write(struct phy_device *phydev, u16 regnum, u16 val)
-+{
-+      return phy_write(phydev, MII_BCM54XX_AUX_CTL, regnum | val);
-+}
-+EXPORT_SYMBOL(bcm54xx_auxctl_write);
-+
- int bcm_phy_write_misc(struct phy_device *phydev,
-                      u16 reg, u16 chl, u16 val)
- {
---- a/drivers/net/phy/bcm-phy-lib.h
-+++ b/drivers/net/phy/bcm-phy-lib.h
-@@ -19,6 +19,9 @@
- int bcm_phy_write_exp(struct phy_device *phydev, u16 reg, u16 val);
- int bcm_phy_read_exp(struct phy_device *phydev, u16 reg);
-+int bcm54xx_auxctl_write(struct phy_device *phydev, u16 regnum, u16 val);
-+int bcm54xx_auxctl_read(struct phy_device *phydev, u16 regnum);
-+
- int bcm_phy_write_misc(struct phy_device *phydev,
-                      u16 reg, u16 chl, u16 value);
- int bcm_phy_read_misc(struct phy_device *phydev,
diff --git a/target/linux/generic/patches-4.4/078-0004-net-phy-pick-Broadcom-drivers-updates-from-net-next-.patch b/target/linux/generic/patches-4.4/078-0004-net-phy-pick-Broadcom-drivers-updates-from-net-next-.patch
deleted file mode 100644 (file)
index d050691..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
---- a/drivers/net/phy/broadcom.c
-+++ b/drivers/net/phy/broadcom.c
-@@ -30,6 +30,50 @@ MODULE_DESCRIPTION("Broadcom PHY driver"
- MODULE_AUTHOR("Maciej W. Rozycki");
- MODULE_LICENSE("GPL");
-+static int bcm54210e_config_init(struct phy_device *phydev)
-+{
-+      int val;
-+
-+      val = bcm54xx_auxctl_read(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC);
-+      val &= ~MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN;
-+      val |= MII_BCM54XX_AUXCTL_MISC_WREN;
-+      bcm54xx_auxctl_write(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC, val);
-+
-+      val = bcm_phy_read_shadow(phydev, BCM54810_SHD_CLK_CTL);
-+      val &= ~BCM54810_SHD_CLK_CTL_GTXCLK_EN;
-+      bcm_phy_write_shadow(phydev, BCM54810_SHD_CLK_CTL, val);
-+
-+      return 0;
-+}
-+
-+static int bcm54612e_config_init(struct phy_device *phydev)
-+{
-+      /* Clear TX internal delay unless requested. */
-+      if ((phydev->interface != PHY_INTERFACE_MODE_RGMII_ID) &&
-+          (phydev->interface != PHY_INTERFACE_MODE_RGMII_TXID)) {
-+              /* Disable TXD to GTXCLK clock delay (default set) */
-+              /* Bit 9 is the only field in shadow register 00011 */
-+              bcm_phy_write_shadow(phydev, 0x03, 0);
-+      }
-+
-+      /* Clear RX internal delay unless requested. */
-+      if ((phydev->interface != PHY_INTERFACE_MODE_RGMII_ID) &&
-+          (phydev->interface != PHY_INTERFACE_MODE_RGMII_RXID)) {
-+              u16 reg;
-+
-+              reg = bcm54xx_auxctl_read(phydev,
-+                                        MII_BCM54XX_AUXCTL_SHDWSEL_MISC);
-+              /* Disable RXD to RXC delay (default set) */
-+              reg &= ~MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN;
-+              /* Clear shadow selector field */
-+              reg &= ~MII_BCM54XX_AUXCTL_SHDWSEL_MASK;
-+              bcm54xx_auxctl_write(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC,
-+                                   MII_BCM54XX_AUXCTL_MISC_WREN | reg);
-+      }
-+
-+      return 0;
-+}
-+
- static int bcm54810_config(struct phy_device *phydev)
- {
-       int rc, val;
-@@ -230,7 +274,15 @@ static int bcm54xx_config_init(struct ph
-           (phydev->dev_flags & PHY_BRCM_AUTO_PWRDWN_ENABLE))
-               bcm54xx_adjust_rxrefclk(phydev);
--      if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM54810) {
-+      if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM54210E) {
-+              err = bcm54210e_config_init(phydev);
-+              if (err)
-+                      return err;
-+      } else if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM54612E) {
-+              err = bcm54612e_config_init(phydev);
-+              if (err)
-+                      return err;
-+      } else if (BRCM_PHY_MODEL(phydev) == PHY_ID_BCM54810) {
-               err = bcm54810_config(phydev);
-               if (err)
-                       return err;
-@@ -375,41 +427,6 @@ static int bcm5481_config_aneg(struct ph
-       return ret;
- }
--static int bcm54612e_config_aneg(struct phy_device *phydev)
--{
--      int ret;
--
--      /* First, auto-negotiate. */
--      ret = genphy_config_aneg(phydev);
--
--      /* Clear TX internal delay unless requested. */
--      if ((phydev->interface != PHY_INTERFACE_MODE_RGMII_ID) &&
--          (phydev->interface != PHY_INTERFACE_MODE_RGMII_TXID)) {
--              /* Disable TXD to GTXCLK clock delay (default set) */
--              /* Bit 9 is the only field in shadow register 00011 */
--              bcm_phy_write_shadow(phydev, 0x03, 0);
--      }
--
--      /* Clear RX internal delay unless requested. */
--      if ((phydev->interface != PHY_INTERFACE_MODE_RGMII_ID) &&
--          (phydev->interface != PHY_INTERFACE_MODE_RGMII_RXID)) {
--              u16 reg;
--
--              /* Errata: reads require filling in the write selector field */
--              bcm54xx_auxctl_write(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC,
--                                   MII_BCM54XX_AUXCTL_MISC_RDSEL_MISC);
--              reg = phy_read(phydev, MII_BCM54XX_AUX_CTL);
--              /* Disable RXD to RXC delay (default set) */
--              reg &= ~MII_BCM54XX_AUXCTL_MISC_RXD_RXC_SKEW;
--              /* Clear shadow selector field */
--              reg &= ~MII_BCM54XX_AUXCTL_SHDWSEL_MASK;
--              bcm54xx_auxctl_write(phydev, MII_BCM54XX_AUXCTL_SHDWSEL_MISC,
--                                   MII_BCM54XX_AUXCTL_MISC_WREN | reg);
--      }
--
--      return ret;
--}
--
- static int brcm_phy_setbits(struct phy_device *phydev, int reg, int set)
- {
-       int val;
-@@ -548,6 +565,19 @@ static struct phy_driver broadcom_driver
-       .config_intr    = bcm_phy_config_intr,
-       .driver         = { .owner = THIS_MODULE },
- }, {
-+      .phy_id         = PHY_ID_BCM54210E,
-+      .phy_id_mask    = 0xfffffff0,
-+      .name           = "Broadcom BCM54210E",
-+      .features       = PHY_GBIT_FEATURES |
-+                        SUPPORTED_Pause | SUPPORTED_Asym_Pause,
-+      .flags          = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
-+      .config_init    = bcm54xx_config_init,
-+      .config_aneg    = genphy_config_aneg,
-+      .read_status    = genphy_read_status,
-+      .ack_interrupt  = bcm_phy_ack_intr,
-+      .config_intr    = bcm_phy_config_intr,
-+      .driver         = { .owner = THIS_MODULE },
-+}, {
-       .phy_id         = PHY_ID_BCM5461,
-       .phy_id_mask    = 0xfffffff0,
-       .name           = "Broadcom BCM5461",
-@@ -568,7 +598,7 @@ static struct phy_driver broadcom_driver
-                         SUPPORTED_Pause | SUPPORTED_Asym_Pause,
-       .flags          = PHY_HAS_MAGICANEG | PHY_HAS_INTERRUPT,
-       .config_init    = bcm54xx_config_init,
--      .config_aneg    = bcm54612e_config_aneg,
-+      .config_aneg    = genphy_config_aneg,
-       .read_status    = genphy_read_status,
-       .ack_interrupt  = bcm_phy_ack_intr,
-       .config_intr    = bcm_phy_config_intr,
-@@ -710,6 +740,7 @@ module_phy_driver(broadcom_drivers);
- static struct mdio_device_id __maybe_unused broadcom_tbl[] = {
-       { PHY_ID_BCM5411, 0xfffffff0 },
-       { PHY_ID_BCM5421, 0xfffffff0 },
-+      { PHY_ID_BCM54210E, 0xfffffff0 },
-       { PHY_ID_BCM5461, 0xfffffff0 },
-       { PHY_ID_BCM54612E, 0xfffffff0 },
-       { PHY_ID_BCM54616S, 0xfffffff0 },
---- a/include/linux/brcmphy.h
-+++ b/include/linux/brcmphy.h
-@@ -17,6 +17,7 @@
- #define PHY_ID_BCM5482                        0x0143bcb0
- #define PHY_ID_BCM5411                        0x00206070
- #define PHY_ID_BCM5421                        0x002060e0
-+#define PHY_ID_BCM54210E              0x600d84a0
- #define PHY_ID_BCM5464                        0x002060b0
- #define PHY_ID_BCM5461                        0x002060c0
- #define PHY_ID_BCM54612E              0x03625e60
diff --git a/target/linux/generic/patches-4.4/086-0004-thermal-broadcom-add-Northstar-thermal-driver.patch b/target/linux/generic/patches-4.4/086-0004-thermal-broadcom-add-Northstar-thermal-driver.patch
deleted file mode 100644 (file)
index 1821096..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-From a94cb7eeecc4104a6874339f90c5d0647359c102 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Mon, 3 Apr 2017 17:48:29 +0200
-Subject: [PATCH] thermal: broadcom: add Northstar thermal driver
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Northstar is a SoC family commonly used in home routers. This commit
-adds a driver for checking CPU temperature. As Northstar Plus seems to
-also have this IP block this new symbol gets ARCH_BCM_IPROC dependency.
-
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-Signed-off-by: Jon Mason <jon.mason@broadcom.com>
-Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
----
- drivers/thermal/Kconfig               |   5 ++
- drivers/thermal/Makefile              |   1 +
- drivers/thermal/broadcom/Kconfig      |   8 +++
- drivers/thermal/broadcom/Makefile     |   1 +
- drivers/thermal/broadcom/ns-thermal.c | 105 ++++++++++++++++++++++++++++++++++
- 5 files changed, 120 insertions(+)
- create mode 100644 drivers/thermal/broadcom/Kconfig
- create mode 100644 drivers/thermal/broadcom/Makefile
- create mode 100644 drivers/thermal/broadcom/ns-thermal.c
-
---- a/drivers/thermal/Kconfig
-+++ b/drivers/thermal/Kconfig
-@@ -365,6 +365,11 @@ config INTEL_PCH_THERMAL
-         Thermal reporting device will provide temperature reading,
-         programmable trip points and other information.
-+menu "Broadcom thermal drivers"
-+depends on ARCH_BCM || COMPILE_TEST
-+source "drivers/thermal/broadcom/Kconfig"
-+endmenu
-+
- menu "Texas Instruments thermal drivers"
- depends on ARCH_HAS_BANDGAP || COMPILE_TEST
- source "drivers/thermal/ti-soc-thermal/Kconfig"
---- a/drivers/thermal/Makefile
-+++ b/drivers/thermal/Makefile
-@@ -26,6 +26,7 @@ thermal_sys-$(CONFIG_CLOCK_THERMAL)  += c
- thermal_sys-$(CONFIG_DEVFREQ_THERMAL) += devfreq_cooling.o
- # platform thermal drivers
-+obj-y                         += broadcom/
- obj-$(CONFIG_QCOM_SPMI_TEMP_ALARM)    += qcom-spmi-temp-alarm.o
- obj-$(CONFIG_SPEAR_THERMAL)   += spear_thermal.o
- obj-$(CONFIG_ROCKCHIP_THERMAL)        += rockchip_thermal.o
---- /dev/null
-+++ b/drivers/thermal/broadcom/Kconfig
-@@ -0,0 +1,8 @@
-+config BCM_NS_THERMAL
-+      tristate "Northstar thermal driver"
-+      depends on ARCH_BCM_IPROC || COMPILE_TEST
-+      help
-+        Northstar is a family of SoCs that includes e.g. BCM4708, BCM47081,
-+        BCM4709 and BCM47094. It contains DMU (Device Management Unit) block
-+        with a thermal sensor that allows checking CPU temperature. This
-+        driver provides support for it.
---- /dev/null
-+++ b/drivers/thermal/broadcom/Makefile
-@@ -0,0 +1 @@
-+obj-$(CONFIG_BCM_NS_THERMAL)          += ns-thermal.o
---- /dev/null
-+++ b/drivers/thermal/broadcom/ns-thermal.c
-@@ -0,0 +1,105 @@
-+/*
-+ * Copyright (C) 2017 Rafał Miłecki <rafal@milecki.pl>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/of_address.h>
-+#include <linux/platform_device.h>
-+#include <linux/thermal.h>
-+
-+#define PVTMON_CONTROL0                                       0x00
-+#define PVTMON_CONTROL0_SEL_MASK                      0x0000000e
-+#define PVTMON_CONTROL0_SEL_TEMP_MONITOR              0x00000000
-+#define PVTMON_CONTROL0_SEL_TEST_MODE                 0x0000000e
-+#define PVTMON_STATUS                                 0x08
-+
-+struct ns_thermal {
-+      struct thermal_zone_device *tz;
-+      void __iomem *pvtmon;
-+};
-+
-+static int ns_thermal_get_temp(void *data, int *temp)
-+{
-+      struct ns_thermal *ns_thermal = data;
-+      int offset = thermal_zone_get_offset(ns_thermal->tz);
-+      int slope = thermal_zone_get_slope(ns_thermal->tz);
-+      u32 val;
-+
-+      val = readl(ns_thermal->pvtmon + PVTMON_CONTROL0);
-+      if ((val & PVTMON_CONTROL0_SEL_MASK) != PVTMON_CONTROL0_SEL_TEMP_MONITOR) {
-+              /* Clear current mode selection */
-+              val &= ~PVTMON_CONTROL0_SEL_MASK;
-+
-+              /* Set temp monitor mode (it's the default actually) */
-+              val |= PVTMON_CONTROL0_SEL_TEMP_MONITOR;
-+
-+              writel(val, ns_thermal->pvtmon + PVTMON_CONTROL0);
-+      }
-+
-+      val = readl(ns_thermal->pvtmon + PVTMON_STATUS);
-+      *temp = slope * val + offset;
-+
-+      return 0;
-+}
-+
-+static const struct thermal_zone_of_device_ops ns_thermal_ops = {
-+      .get_temp = ns_thermal_get_temp,
-+};
-+
-+static int ns_thermal_probe(struct platform_device *pdev)
-+{
-+      struct device *dev = &pdev->dev;
-+      struct ns_thermal *ns_thermal;
-+
-+      ns_thermal = devm_kzalloc(dev, sizeof(*ns_thermal), GFP_KERNEL);
-+      if (!ns_thermal)
-+              return -ENOMEM;
-+
-+      ns_thermal->pvtmon = of_iomap(dev_of_node(dev), 0);
-+      if (WARN_ON(!ns_thermal->pvtmon))
-+              return -ENOENT;
-+
-+      ns_thermal->tz = devm_thermal_zone_of_sensor_register(dev, 0,
-+                                                            ns_thermal,
-+                                                            &ns_thermal_ops);
-+      if (IS_ERR(ns_thermal->tz)) {
-+              iounmap(ns_thermal->pvtmon);
-+              return PTR_ERR(ns_thermal->tz);
-+      }
-+
-+      platform_set_drvdata(pdev, ns_thermal);
-+
-+      return 0;
-+}
-+
-+static int ns_thermal_remove(struct platform_device *pdev)
-+{
-+      struct ns_thermal *ns_thermal = platform_get_drvdata(pdev);
-+
-+      iounmap(ns_thermal->pvtmon);
-+
-+      return 0;
-+}
-+
-+static const struct of_device_id ns_thermal_of_match[] = {
-+      { .compatible = "brcm,ns-thermal", },
-+      {},
-+};
-+MODULE_DEVICE_TABLE(of, ns_thermal_of_match);
-+
-+static struct platform_driver ns_thermal_driver = {
-+      .probe          = ns_thermal_probe,
-+      .remove         = ns_thermal_remove,
-+      .driver = {
-+              .name = "ns-thermal",
-+              .of_match_table = ns_thermal_of_match,
-+      },
-+};
-+module_platform_driver(ns_thermal_driver);
-+
-+MODULE_DESCRIPTION("Northstar thermal driver");
-+MODULE_LICENSE("GPL v2");
diff --git a/target/linux/generic/patches-4.4/086-0005-thermal-broadcom-fix-compilation-of-Northstar-driver.patch b/target/linux/generic/patches-4.4/086-0005-thermal-broadcom-fix-compilation-of-Northstar-driver.patch
deleted file mode 100644 (file)
index 62bfffe..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-From d44264c8735f79da3253520024841311c555ca31 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Fri, 14 Apr 2017 22:25:12 +0200
-Subject: [PATCH] thermal: broadcom: fix compilation of Northstar driver
-
----
- drivers/thermal/broadcom/ns-thermal.c | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/drivers/thermal/broadcom/ns-thermal.c
-+++ b/drivers/thermal/broadcom/ns-thermal.c
-@@ -6,6 +6,7 @@
-  * published by the Free Software Foundation.
-  */
-+#include <asm/io.h>
- #include <linux/module.h>
- #include <linux/of_address.h>
- #include <linux/platform_device.h>
index 764c1cb830cbfbd7432517654191b92e55364d23..d868d210aae9446b7694c96bc05924596483f583 100644 (file)
@@ -119,7 +119,7 @@ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
        /* Set the SP after an empty pt_regs.  */
 --- a/arch/mips/kernel/setup.c
 +++ b/arch/mips/kernel/setup.c
-@@ -814,6 +814,10 @@ void __init setup_arch(char **cmdline_p)
+@@ -886,6 +886,10 @@ void __init setup_arch(char **cmdline_p)
  unsigned long kernelsp[NR_CPUS];
  unsigned long fw_arg0, fw_arg1, fw_arg2, fw_arg3;
  
index 6c9b12c2e17e80629a9e3f55bbf93d9d28b3479d..a53be2d15cad538df9ddc2e55869e7e5dd35fe56 100644 (file)
@@ -75,7 +75,7 @@ Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de>
 
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
-@@ -5357,7 +5357,7 @@ static void __init_refok alloc_node_mem_
+@@ -5372,7 +5372,7 @@ static void __init_refok alloc_node_mem_
                mem_map = NODE_DATA(0)->node_mem_map;
  #if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM)
                if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
index dbee0905473d97c7d09b028767f2f4a72da79d58..39fa32ffa273f9b7856dadbd6ed985c5b6c2ddf5 100644 (file)
@@ -1,6 +1,6 @@
 --- a/include/uapi/linux/spi/spidev.h
 +++ b/include/uapi/linux/spi/spidev.h
-@@ -111,7 +111,7 @@ struct spi_ioc_transfer {
+@@ -112,7 +112,7 @@ struct spi_ioc_transfer {
  
  /* not all platforms use <asm-generic/ioctl.h> or _IOC_TYPECHECK() ... */
  #define SPI_MSGSIZE(N) \
index 8c6b7a37b575ab6811525a15ccb590b328af35fb..a427165f410272055b43a46fc6c9b5f448c0b304 100644 (file)
@@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #define PACKET_FANOUT_LB              1
 --- a/net/packet/af_packet.c
 +++ b/net/packet/af_packet.c
-@@ -1776,6 +1776,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1784,6 +1784,7 @@ static int packet_rcv_spkt(struct sk_buf
  {
        struct sock *sk;
        struct sockaddr_pkt *spkt;
@@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        /*
         *      When we registered the protocol we saved the socket in the data
-@@ -1783,6 +1784,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1791,6 +1792,7 @@ static int packet_rcv_spkt(struct sk_buf
         */
  
        sk = pt->af_packet_priv;
@@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        /*
         *      Yank back the headers [hope the device set this
-@@ -1795,7 +1797,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1803,7 +1805,7 @@ static int packet_rcv_spkt(struct sk_buf
         *      so that this procedure is noop.
         */
  
@@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
                goto out;
  
        if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -1998,12 +2000,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2006,12 +2008,12 @@ static int packet_rcv(struct sk_buff *sk
        int skb_len = skb->len;
        unsigned int snaplen, res;
  
@@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        if (!net_eq(dev_net(dev), sock_net(sk)))
                goto drop;
  
-@@ -2123,12 +2125,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2131,12 +2133,12 @@ static int tpacket_rcv(struct sk_buff *s
        BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
        BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
  
@@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        if (!net_eq(dev_net(dev), sock_net(sk)))
                goto drop;
  
-@@ -3115,6 +3117,7 @@ static int packet_create(struct net *net
+@@ -3127,6 +3129,7 @@ static int packet_create(struct net *net
        mutex_init(&po->pg_vec_lock);
        po->rollover = NULL;
        po->prot_hook.func = packet_rcv;
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
        if (sock->type == SOCK_PACKET)
                po->prot_hook.func = packet_rcv_spkt;
-@@ -3744,6 +3747,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3756,6 +3759,16 @@ packet_setsockopt(struct socket *sock, i
                po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
                return 0;
        }
@@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        default:
                return -ENOPROTOOPT;
        }
-@@ -3796,6 +3809,13 @@ static int packet_getsockopt(struct sock
+@@ -3809,6 +3822,13 @@ static int packet_getsockopt(struct sock
        case PACKET_VNET_HDR:
                val = po->has_vnet_hdr;
                break;
index 0616eaa7c0a9920d6643b77451aa0e87c6824136..b7ba384f4c632ce4e260e71a393f2f944ffc594d 100644 (file)
@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -4256,6 +4256,9 @@ static enum gro_result dev_gro_receive(s
+@@ -4259,6 +4259,9 @@ static enum gro_result dev_gro_receive(s
        enum gro_result ret;
        int grow;
  
@@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        if (!(skb->dev->features & NETIF_F_GRO))
                goto normal;
  
-@@ -5422,6 +5425,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -5425,6 +5428,48 @@ static void __netdev_adjacent_dev_unlink
                                           &upper_dev->adj_list.lower);
  }
  
@@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  static int __netdev_upper_dev_link(struct net_device *dev,
                                   struct net_device *upper_dev, bool master,
                                   void *private)
-@@ -5493,6 +5538,7 @@ static int __netdev_upper_dev_link(struc
+@@ -5496,6 +5541,7 @@ static int __netdev_upper_dev_link(struc
                        goto rollback_lower_mesh;
        }
  
@@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
                                      &changeupper_info.info);
        return 0;
-@@ -5619,6 +5665,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -5622,6 +5668,7 @@ void netdev_upper_dev_unlink(struct net_
        list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
                __netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr);
  
@@ -92,7 +92,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
        call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
                                      &changeupper_info.info);
  }
-@@ -6159,6 +6206,7 @@ int dev_set_mac_address(struct net_devic
+@@ -6162,6 +6209,7 @@ int dev_set_mac_address(struct net_devic
        if (err)
                return err;
        dev->addr_assign_type = NET_ADDR_SET;
index a1c48b7a3a4a901f4d0daa6e695d390134a5c02b..6cb3fdfd4431674ca4f816a5e113fa1b60cf3a7f 100644 (file)
@@ -53,7 +53,7 @@
   * @phydev: the phy_device struct
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -800,6 +800,7 @@ void phy_start_machine(struct phy_device
+@@ -796,6 +796,7 @@ void phy_start_machine(struct phy_device
  void phy_stop_machine(struct phy_device *phydev);
  int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd);
  int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd);
index f16efa495e3e8c0bb459b5267000a6a81a54cfc6..2a75fb02e5242fbe8f5b2e0e32b066edf873962b 100644 (file)
@@ -1,6 +1,6 @@
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -501,6 +501,12 @@ struct phy_driver {
+@@ -497,6 +497,12 @@ struct phy_driver {
        /* Determines the negotiated speed and duplex */
        int (*read_status)(struct phy_device *phydev);
  
index 5babfdf5e2f6b6598a306c30cb4be8bc2a80316d..4ef3b781fafdf588a68ca1393787c08ffbe2abee 100644 (file)
@@ -12,7 +12,7 @@
        phy_suspend(phydev);
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -519,6 +519,12 @@ struct phy_driver {
+@@ -515,6 +515,12 @@ struct phy_driver {
         */
        int (*did_interrupt)(struct phy_device *phydev);
  
index bd15df23841aded61e8650a879e4ebe26519f0c4..4886dd0e3aa7e023ab97103a877867bc63053612 100644 (file)
@@ -46,7 +46,7 @@
                phy_device_free(phydev);
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -839,6 +839,23 @@ void mdio_bus_exit(void);
+@@ -835,6 +835,23 @@ void mdio_bus_exit(void);
  
  extern struct bus_type mdio_bus_type;
  
index 89ffdc558d50bdbcdc0ed6884412b8373e465035..a7a23278d04567d25049f6cabba4081534fe01d5 100644 (file)
@@ -86,7 +86,7 @@
        help
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -2743,10 +2743,20 @@ static int xmit_one(struct sk_buff *skb,
+@@ -2746,10 +2746,20 @@ static int xmit_one(struct sk_buff *skb,
        if (!list_empty(&ptype_all) || !list_empty(&dev->ptype_all))
                dev_queue_xmit_nit(skb, dev);
  
index 5e358c38c1d0b4a338ee98d123449438eefe8a24..b3cb08723593ac51cd67e7cd1d044c50a6575f6e 100644 (file)
@@ -78,7 +78,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
  struct bgmac *bgmac_alloc(struct device *dev);
 --- a/drivers/net/ethernet/broadcom/bgmac-bcma.c
 +++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c
-@@ -230,6 +230,7 @@ static int bgmac_probe(struct bcma_devic
+@@ -236,6 +236,7 @@ static int bgmac_probe(struct bcma_devic
                bgmac->feature_flags |= BGMAC_FEAT_CLKCTLST;
                bgmac->feature_flags |= BGMAC_FEAT_NO_RESET;
                bgmac->feature_flags |= BGMAC_FEAT_FORCE_SPEED_2500;
index 98e78183deebda3c8e2cad90c2ee66b6b43a2ed6..b59ecf2a0a77bdf2e89e76662516753a0248764e 100644 (file)
  }
 --- a/mm/vmstat.c
 +++ b/mm/vmstat.c
-@@ -1553,10 +1553,12 @@ static int __init setup_vmstat(void)
+@@ -1555,10 +1555,12 @@ static int __init setup_vmstat(void)
        cpu_notifier_register_done();
  #endif
  #ifdef CONFIG_PROC_FS
                goto err;
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -3042,6 +3042,8 @@ static __net_initdata struct pernet_oper
+@@ -3044,6 +3044,8 @@ static __net_initdata struct pernet_oper
  
  static int __init proto_init(void)
  {
index 848f041aebefff18cc25588a16057c0420334b59..b7028e49d5827e2ac0aa4dd0997e107ec1f48f0b 100644 (file)
@@ -5,7 +5,7 @@ CONFIG_ACPI_BATTERY=y
 # CONFIG_ACPI_BGRT is not set
 CONFIG_ACPI_BUTTON=y
 # CONFIG_ACPI_CMPC is not set
-# CONFIG_ACPI_CONTAINER is not set
+CONFIG_ACPI_CONTAINER=y
 CONFIG_ACPI_CPU_FREQ_PSS=y
 # CONFIG_ACPI_CUSTOM_DSDT is not set
 # CONFIG_ACPI_DEBUG is not set
@@ -13,6 +13,7 @@ CONFIG_ACPI_CPU_FREQ_PSS=y
 # CONFIG_ACPI_DOCK is not set
 # CONFIG_ACPI_EC_DEBUGFS is not set
 CONFIG_ACPI_FAN=y
+CONFIG_ACPI_HOTPLUG_CPU=y
 CONFIG_ACPI_HOTPLUG_IOAPIC=y
 # CONFIG_ACPI_INITRD_TABLE_OVERRIDE is not set
 CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
@@ -30,7 +31,6 @@ CONFIG_ACPI_THERMAL=y
 # CONFIG_ACPI_WMI is not set
 CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
 CONFIG_ARCH_DMA_ADDR_T_64BIT=y
-CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
 CONFIG_ARCH_HAS_PMEM_API=y
 CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11"
@@ -47,13 +47,17 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
 CONFIG_BACKLIGHT_GENERIC=y
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_BLK_DEV_INTEGRITY=y
+# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
 CONFIG_CALGARY_IOMMU=y
 CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
 CONFIG_CONNECTOR=y
 CONFIG_CPU_RMAP=y
 CONFIG_CRC_T10DIF=y
-CONFIG_CRYPTO_AES_X86_64=y
+CONFIG_CRYPTO_ABLK_HELPER=y
+CONFIG_CRYPTO_AEAD=y
+CONFIG_CRYPTO_AEAD2=y
 CONFIG_CRYPTO_AES_NI_INTEL=y
+CONFIG_CRYPTO_AES_X86_64=y
 # CONFIG_CRYPTO_BLOWFISH_X86_64 is not set
 # CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 is not set
 # CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 is not set
@@ -63,7 +67,14 @@ CONFIG_CRYPTO_AES_NI_INTEL=y
 # CONFIG_CRYPTO_CHACHA20_X86_64 is not set
 CONFIG_CRYPTO_CRCT10DIF=y
 # CONFIG_CRYPTO_CRCT10DIF_PCLMUL is not set
+CONFIG_CRYPTO_CRYPTD=y
 # CONFIG_CRYPTO_DES3_EDE_X86_64 is not set
+CONFIG_CRYPTO_GF128MUL=y
+CONFIG_CRYPTO_GLUE_HELPER_X86=y
+CONFIG_CRYPTO_LRW=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_NULL2=y
 # CONFIG_CRYPTO_POLY1305_X86_64 is not set
 # CONFIG_CRYPTO_SALSA20_X86_64 is not set
 # CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set
@@ -77,6 +88,8 @@ CONFIG_CRYPTO_CRCT10DIF=y
 # CONFIG_CRYPTO_TWOFISH_AVX_X86_64 is not set
 # CONFIG_CRYPTO_TWOFISH_X86_64 is not set
 # CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set
+CONFIG_CRYPTO_XTS=y
+# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
 # CONFIG_EARLY_PRINTK_EFI is not set
 CONFIG_EFI=y
 CONFIG_EFIVAR_FS=m
@@ -93,9 +106,14 @@ CONFIG_FB_CFB_COPYAREA=y
 CONFIG_FB_CFB_FILLRECT=y
 CONFIG_FB_CFB_IMAGEBLIT=y
 CONFIG_FB_CMDLINE=y
+CONFIG_FB_DEFERRED_IO=y
 # CONFIG_FB_EFI is not set
 CONFIG_FB_HYPERV=y
 CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_SYS_COPYAREA=y
+CONFIG_FB_SYS_FILLRECT=y
+CONFIG_FB_SYS_FOPS=y
+CONFIG_FB_SYS_IMAGEBLIT=y
 CONFIG_FB_TILEBLITTING=y
 # CONFIG_FB_VESA is not set
 # CONFIG_FONTS is not set
@@ -105,13 +123,16 @@ CONFIG_FONT_SUPPORT=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
 # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_FREEZER=y
 CONFIG_GART_IOMMU=y
 CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
 CONFIG_GENERIC_CPU=y
 CONFIG_GENERIC_PENDING_IRQ=y
 CONFIG_GPIOLIB=y
 # CONFIG_GPIO_104_IDIO_16 is not set
+CONFIG_GPIO_ACPI=y
 # CONFIG_GPIO_AMDPT is not set
+CONFIG_GPIO_DEVRES=y
 # CONFIG_GPIO_F7188X is not set
 # CONFIG_GPIO_INTEL_MID is not set
 # CONFIG_GPIO_IT87 is not set
@@ -130,10 +151,12 @@ CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
 CONFIG_HAVE_LIVEPATCH=y
 CONFIG_HAVE_MEMORY_PRESENT=y
 CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_HIBERNATE_CALLBACKS=y
 CONFIG_HID=y
 CONFIG_HID_BATTERY_STRENGTH=y
 CONFIG_HID_GENERIC=y
 CONFIG_HID_HYPERV_MOUSE=y
+CONFIG_HOTPLUG_CPU=y
 CONFIG_HOTPLUG_PCI=y
 CONFIG_HOTPLUG_PCI_ACPI=y
 # CONFIG_HOTPLUG_PCI_ACPI_IBM is not set
@@ -144,6 +167,9 @@ CONFIG_HPET=y
 CONFIG_HPET_MMAP=y
 # CONFIG_HP_ACCEL is not set
 CONFIG_HVC_DRIVER=y
+CONFIG_HVC_IRQ=y
+CONFIG_HVC_XEN=y
+CONFIG_HVC_XEN_FRONTEND=y
 CONFIG_HW_RANDOM_AMD=y
 CONFIG_HW_RANDOM_INTEL=y
 CONFIG_HW_RANDOM_VIRTIO=y
@@ -157,6 +183,7 @@ CONFIG_HYPERV_UTILS=y
 # CONFIG_I7300_IDLE is not set
 # CONFIG_IA32_EMULATION is not set
 CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
+CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
 # CONFIG_INTEL_IPS is not set
 # CONFIG_INTEL_MENLOW is not set
 # CONFIG_INTEL_MIC_BUS is not set
@@ -189,6 +216,7 @@ CONFIG_MMC_SDHCI_PCI=y
 # CONFIG_MMC_SDHCI_PLTFM is not set
 # CONFIG_MMC_TIFM_SD is not set
 # CONFIG_MMC_WBSD is not set
+CONFIG_MMU_NOTIFIER=y
 CONFIG_MODULES_USE_ELF_RELA=y
 # CONFIG_MPSC is not set
 CONFIG_MUTEX_SPIN_ON_OWNER=y
@@ -197,6 +225,7 @@ CONFIG_NET_FLOW_LIMIT=y
 CONFIG_NR_CPUS=8
 # CONFIG_NUMA is not set
 CONFIG_OUTPUT_FORMAT="elf64-x86-64"
+CONFIG_PADATA=y
 CONFIG_PARAVIRT=y
 CONFIG_PARAVIRT_CLOCK=y
 # CONFIG_PARAVIRT_DEBUG is not set
@@ -204,19 +233,24 @@ CONFIG_PARAVIRT_SPINLOCKS=y
 # CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
 CONFIG_PATA_AMD=y
 CONFIG_PATA_ATIIXP=y
-CONFIG_PATA_LEGACY=y
 CONFIG_PATA_MPIIX=y
 CONFIG_PATA_OLDPIIX=y
 CONFIG_PATA_PLATFORM=y
 CONFIG_PATA_VIA=y
 CONFIG_PCIEAER=y
 CONFIG_PCIEPORTBUS=y
+CONFIG_PCIE_PME=y
 CONFIG_PCI_BUS_ADDR_T_64BIT=y
 # CONFIG_PCI_MMCONFIG is not set
+CONFIG_PCI_XEN=y
 CONFIG_PGTABLE_LEVELS=4
 CONFIG_PHYSICAL_ALIGN=0x1000000
 CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_PM=y
 # CONFIG_PMIC_OPREGION is not set
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_PM_SLEEP_SMP=y
 CONFIG_PNP=y
 CONFIG_PNPACPI=y
 CONFIG_PNP_DEBUG_MESSAGES=y
@@ -247,6 +281,8 @@ CONFIG_SPARSEMEM_MANUAL=y
 CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
 # CONFIG_SURFACE_PRO3_BUTTON is not set
 CONFIG_SWIOTLB=y
+CONFIG_SWIOTLB_XEN=y
+CONFIG_SYS_HYPERVISOR=y
 # CONFIG_THUNDER_NIC_BGX is not set
 # CONFIG_THUNDER_NIC_PF is not set
 # CONFIG_THUNDER_NIC_VF is not set
@@ -285,6 +321,7 @@ CONFIG_VMWARE_VMCI=y
 CONFIG_VMWARE_VMCI_VSOCKETS=y
 CONFIG_VMXNET3=y
 CONFIG_VSOCKETS=y
+CONFIG_VT_CONSOLE_SLEEP=y
 CONFIG_WATCHDOG_CORE=y
 CONFIG_X86_64=y
 CONFIG_X86_64_SMP=y
@@ -308,5 +345,37 @@ CONFIG_X86_TSC=y
 # CONFIG_X86_VSYSCALL_EMULATION is not set
 CONFIG_X86_X2APIC=y
 # CONFIG_X86_X32 is not set
+CONFIG_XEN=y
+CONFIG_XENFS=y
+CONFIG_XEN_512GB=y
+CONFIG_XEN_ACPI=y
+CONFIG_XEN_ACPI_PROCESSOR=y
+CONFIG_XEN_AUTO_XLATE=y
+# CONFIG_XEN_BACKEND is not set
+CONFIG_XEN_BALLOON=y
+CONFIG_XEN_BLKDEV_FRONTEND=y
+CONFIG_XEN_COMPAT_XENFS=y
+CONFIG_XEN_DEBUG_FS=y
+CONFIG_XEN_DEV_EVTCHN=y
+CONFIG_XEN_DOM0=y
+CONFIG_XEN_EFI=y
+CONFIG_XEN_FBDEV_FRONTEND=y
+CONFIG_XEN_GNTDEV=y
+CONFIG_XEN_GRANT_DEV_ALLOC=y
+CONFIG_XEN_HAVE_PVMMU=y
+CONFIG_XEN_HAVE_VPMU=y
+# CONFIG_XEN_MCE_LOG is not set
+CONFIG_XEN_NETDEV_FRONTEND=y
+CONFIG_XEN_PCIDEV_FRONTEND=y
+CONFIG_XEN_PRIVCMD=y
+CONFIG_XEN_PVH=y
+CONFIG_XEN_PVHVM=y
+CONFIG_XEN_SAVE_RESTORE=y
+CONFIG_XEN_SCRUB_PAGES=y
+CONFIG_XEN_SCSI_FRONTEND=y
+CONFIG_XEN_SYMS=y
+CONFIG_XEN_SYS_HYPERVISOR=y
+CONFIG_XEN_WDT=y
+CONFIG_XEN_XENBUS_FRONTEND=y
 CONFIG_XPS=y
 CONFIG_ZONE_DMA32=y
index 1a14c270bc6a1622b0c68cb61a0fdacb42902017..a0472f38a304bc4e8141fd94979faf6170b47a2e 100644 (file)
@@ -42,6 +42,7 @@ CONFIG_AGP_INTEL=y
 # CONFIG_AGP_SWORKS is not set
 # CONFIG_AGP_VIA is not set
 # CONFIG_APM is not set
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
 CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
 CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
 CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
@@ -165,7 +166,8 @@ CONFIG_HDMI=y
 CONFIG_HIBERNATE_CALLBACKS=y
 CONFIG_HID=y
 CONFIG_HID_BATTERY_STRENGTH=y
-# CONFIG_HIGHMEM64G is not set
+# CONFIG_HIGHMEM4G is not set
+CONFIG_HIGHMEM64G=y
 CONFIG_HOTPLUG_CPU=y
 CONFIG_HPET=y
 CONFIG_HPET_MMAP=y
@@ -258,7 +260,6 @@ CONFIG_PARAVIRT_SPINLOCKS=y
 # CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
 CONFIG_PATA_AMD=y
 CONFIG_PATA_ATIIXP=y
-CONFIG_PATA_LEGACY=y
 CONFIG_PATA_MPIIX=y
 CONFIG_PATA_OLDPIIX=y
 CONFIG_PATA_PLATFORM=y
@@ -267,6 +268,7 @@ CONFIG_PATA_VIA=y
 CONFIG_PCIEAER=y
 CONFIG_PCIEPORTBUS=y
 CONFIG_PCIE_PME=y
+CONFIG_PCI_BUS_ADDR_T_64BIT=y
 CONFIG_PCI_MMCONFIG=y
 CONFIG_PCI_XEN=y
 # CONFIG_PCWATCHDOG is not set
index c49ddca7d6070e1f9cc92b9c319ae0afcbae8270..c3a7fce9ceb1c9da62ec160c70b201576eaf66a0 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/clocksource/cs5535-clockevt.c
 +++ b/drivers/clocksource/cs5535-clockevt.c
-@@ -129,7 +129,8 @@ static irqreturn_t mfgpt_tick(int irq, v
+@@ -130,7 +130,8 @@ static irqreturn_t mfgpt_tick(int irq, v
                cs5535_mfgpt_write(cs5535_event_clock, MFGPT_REG_SETUP,
                                MFGPT_SETUP_CNTEN | MFGPT_SETUP_CMP2);
  
diff --git a/target/linux/xburst/Makefile b/target/linux/xburst/Makefile
deleted file mode 100644 (file)
index 16d0b8b..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Copyright (C) 2009-2011 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-include $(TOPDIR)/rules.mk
-
-ARCH:=mipsel
-BOARD:=xburst
-BOARDNAME:=Ingenic XBurst
-FEATURES:=targz nand ubifs audio source-only
-SUBTARGETS:=qi_lb60
-
-KERNEL_PATCHVER:=3.18
-
-DEVICE_TYPE:=other
-
-define Target/Description
-       Build firmware images for XBurst JZ47x0 based boards.
-endef
-
-include $(INCLUDE_DIR)/target.mk
-
-$(eval $(call BuildTarget))
diff --git a/target/linux/xburst/base-files/etc/board.d/01_system b/target/linux/xburst/base-files/etc/board.d/01_system
deleted file mode 100755 (executable)
index 16f4987..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-. /lib/functions/uci-defaults.sh
-
-board_config_update
-
-ucidef_set_hostname "BenNanoNote"
-ucidef_set_ntpserver
-
-board_config_flush
-
-exit 0
diff --git a/target/linux/xburst/base-files/etc/config/fstab b/target/linux/xburst/base-files/etc/config/fstab
deleted file mode 100644 (file)
index 5223561..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-config mount
-       option target   /card
-       option device   /dev/mmcblk0p1
-       option fstype   auto
-       option options  rw,sync
-       option enabled  1
diff --git a/target/linux/xburst/base-files/etc/config/network b/target/linux/xburst/base-files/etc/config/network
deleted file mode 100644 (file)
index a086003..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright (C) 2006 OpenWrt.org
-
-config interface loopback
-       option ifname   lo
-       option proto    static
-       option ipaddr   127.0.0.1
-       option netmask  255.0.0.0
-
-config interface lan
-       option ifname   usb0
-       option proto    static
-       option ipaddr   192.168.1.1
-       option netmask  255.255.255.0
diff --git a/target/linux/xburst/config-3.18 b/target/linux/xburst/config-3.18
deleted file mode 100644 (file)
index 71411bf..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
-CONFIG_ARCH_DISCARD_MEMBLOCK=y
-CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
-# CONFIG_ARCH_HAS_SG_CHAIN is not set
-CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
-CONFIG_ARCH_HIBERNATION_POSSIBLE=y
-CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
-CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
-# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
-CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_ARCH_SUSPEND_POSSIBLE=y
-CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
-# CONFIG_BACKLIGHT_ADP8860 is not set
-# CONFIG_BACKLIGHT_ADP8870 is not set
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_BACKLIGHT_GENERIC is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-# CONFIG_BACKLIGHT_PWM is not set
-CONFIG_BATTERY_JZ4740=y
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CHARGER_GPIO=y
-CONFIG_CLONE_BACKWARDS=y
-CONFIG_CONFIGFS_FS=y
-CONFIG_CONSOLE_TRANSLATIONS=y
-CONFIG_CPU_GENERIC_DUMP_TLB=y
-CONFIG_CPU_HAS_PREFETCH=y
-CONFIG_CPU_HAS_SYNC=y
-CONFIG_CPU_LITTLE_ENDIAN=y
-CONFIG_CPU_MIPS32=y
-CONFIG_CPU_MIPS32_R1=y
-CONFIG_CPU_MIPSR1=y
-CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y
-CONFIG_CPU_R4K_CACHE_TLB=y
-CONFIG_CPU_R4K_FPU=y
-CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
-CONFIG_CPU_SUPPORTS_HIGHMEM=y
-CONFIG_CRC16=y
-CONFIG_CRYPTO_CRC32C=y
-CONFIG_CRYPTO_DEFLATE=y
-CONFIG_CRYPTO_HASH=y
-CONFIG_CRYPTO_HASH2=y
-CONFIG_CRYPTO_LZO=y
-CONFIG_DMADEVICES=y
-CONFIG_DMA_ENGINE=y
-CONFIG_DMA_JZ4740=y
-CONFIG_DMA_NONCOHERENT=y
-CONFIG_DMA_VIRTUAL_CHANNELS=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_DW_DMAC_CORE is not set
-CONFIG_EARLY_PRINTK=y
-CONFIG_ENABLE_MUST_CHECK=y
-CONFIG_EXT4_FS=y
-CONFIG_FAT_FS=y
-CONFIG_FB=y
-CONFIG_FB_CMDLINE=y
-CONFIG_FB_JZ4740=y
-CONFIG_FB_SYS_COPYAREA=y
-CONFIG_FB_SYS_FILLRECT=y
-CONFIG_FB_SYS_IMAGEBLIT=y
-CONFIG_FONTS=y
-# CONFIG_FONT_10x18 is not set
-# CONFIG_FONT_6x10 is not set
-CONFIG_FONT_6x11=y
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-# CONFIG_FONT_MINI_4x6 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_SUN8x16 is not set
-CONFIG_FONT_SUPPORT=y
-CONFIG_FORCE_MAX_ZONEORDER=12
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FREEZER=y
-CONFIG_FS_MBCACHE=y
-CONFIG_FW_LOADER_USER_HELPER=y
-CONFIG_GENERIC_ATOMIC64=y
-CONFIG_GENERIC_CLOCKEVENTS=y
-CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-CONFIG_GENERIC_CMOS_UPDATE=y
-CONFIG_GENERIC_IO=y
-CONFIG_GENERIC_IRQ_CHIP=y
-CONFIG_GENERIC_IRQ_SHOW=y
-CONFIG_GENERIC_PCI_IOMAP=y
-CONFIG_GENERIC_SMP_IDLE_THREAD=y
-CONFIG_GPIOLIB=y
-CONFIG_GPIO_DEVRES=y
-# CONFIG_HAMRADIO is not set
-CONFIG_HARDWARE_WATCHPOINTS=y
-CONFIG_HAS_DMA=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT_MAP=y
-# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
-CONFIG_HAVE_ARCH_JUMP_LABEL=y
-CONFIG_HAVE_ARCH_KGDB=y
-CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
-CONFIG_HAVE_ARCH_TRACEHOOK=y
-# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
-CONFIG_HAVE_BPF_JIT=y
-CONFIG_HAVE_CC_STACKPROTECTOR=y
-CONFIG_HAVE_CLK=y
-CONFIG_HAVE_CONTEXT_TRACKING=y
-CONFIG_HAVE_C_RECORDMCOUNT=y
-CONFIG_HAVE_DEBUG_KMEMLEAK=y
-CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
-CONFIG_HAVE_DMA_API_DEBUG=y
-CONFIG_HAVE_DMA_ATTRS=y
-CONFIG_HAVE_DMA_CONTIGUOUS=y
-CONFIG_HAVE_DYNAMIC_FTRACE=y
-CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
-CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
-CONFIG_HAVE_FUNCTION_TRACER=y
-CONFIG_HAVE_GENERIC_DMA_COHERENT=y
-CONFIG_HAVE_IDE=y
-CONFIG_HAVE_KERNEL_BZIP2=y
-CONFIG_HAVE_KERNEL_GZIP=y
-CONFIG_HAVE_KERNEL_LZ4=y
-CONFIG_HAVE_KERNEL_LZMA=y
-CONFIG_HAVE_KERNEL_LZO=y
-CONFIG_HAVE_KERNEL_XZ=y
-CONFIG_HAVE_MEMBLOCK=y
-CONFIG_HAVE_MEMBLOCK_NODE_MAP=y
-CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
-CONFIG_HAVE_NET_DSA=y
-CONFIG_HAVE_OPROFILE=y
-CONFIG_HAVE_PERF_EVENTS=y
-CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
-# CONFIG_HIGH_RES_TIMERS is not set
-CONFIG_HW_CONSOLE=y
-CONFIG_HZ_PERIODIC=y
-CONFIG_I2C=y
-CONFIG_I2C_BOARDINFO=y
-CONFIG_INPUT=y
-CONFIG_INPUT_EVDEV=y
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_INPUT_MATRIXKMAP=y
-CONFIG_INPUT_MOUSE=y
-CONFIG_INPUT_MOUSEDEV=y
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
-CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-CONFIG_INPUT_PWM_BEEPER=y
-CONFIG_INPUT_UINPUT=y
-CONFIG_IRQ_CPU=y
-CONFIG_IRQ_DOMAIN=y
-CONFIG_IRQ_FORCED_THREADING=y
-CONFIG_IRQ_WORK=y
-CONFIG_JBD2=y
-CONFIG_JZ4740_QI_LB60=y
-CONFIG_KALLSYMS=y
-CONFIG_KERNFS=y
-CONFIG_KEXEC=y
-CONFIG_KEYBOARD_GPIO=y
-CONFIG_KEYBOARD_MATRIX=y
-# CONFIG_LCD_AMS369FG06 is not set
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_ILI8960=y
-# CONFIG_LCD_L4F00242T03 is not set
-# CONFIG_LCD_LD9040 is not set
-# CONFIG_LCD_LMS283GF05 is not set
-# CONFIG_LCD_LTV350QV is not set
-# CONFIG_LCD_PLATFORM is not set
-# CONFIG_LCD_S6E63M0 is not set
-# CONFIG_LCD_TDO24M is not set
-# CONFIG_LCD_VGG2432A4 is not set
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=2
-CONFIG_LZO_COMPRESS=y
-CONFIG_LZO_DECOMPRESS=y
-CONFIG_MACH_JZ4740=y
-CONFIG_MFD_CORE=y
-CONFIG_MFD_JZ4740_ADC=y
-CONFIG_MIPS=y
-# CONFIG_MIPS_HUGE_TLB_SUPPORT is not set
-CONFIG_MIPS_L1_CACHE_SHIFT=5
-# CONFIG_MIPS_MACHINE is not set
-CONFIG_MMC=y
-CONFIG_MMC_BLOCK=y
-# CONFIG_MMC_BLOCK_BOUNCE is not set
-CONFIG_MMC_JZ4740=y
-CONFIG_MODULES_USE_ELF_REL=y
-# CONFIG_MOUSE_BCM5974 is not set
-# CONFIG_MOUSE_CYAPA is not set
-# CONFIG_MOUSE_PS2 is not set
-# CONFIG_MOUSE_SERIAL is not set
-# CONFIG_MOUSE_VSXXXAA is not set
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_NAND=y
-CONFIG_MTD_NAND_ECC=y
-CONFIG_MTD_NAND_JZ4740=y
-CONFIG_MTD_SPLIT_SUPPORT=y
-CONFIG_MTD_UBI=y
-CONFIG_MTD_UBI_BEB_LIMIT=20
-# CONFIG_MTD_UBI_BLOCK is not set
-# CONFIG_MTD_UBI_FASTMAP is not set
-# CONFIG_MTD_UBI_GLUEBI is not set
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MUSB_PIO_ONLY=y
-CONFIG_NEED_DMA_MAP_STATE=y
-CONFIG_NEED_PER_CPU_KM=y
-CONFIG_NLS=y
-CONFIG_NLS_ASCII=y
-CONFIG_NLS_CODEPAGE_1250=y
-CONFIG_NLS_CODEPAGE_1251=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_CODEPAGE_737=y
-CONFIG_NLS_CODEPAGE_775=y
-CONFIG_NLS_CODEPAGE_850=y
-CONFIG_NLS_CODEPAGE_852=y
-CONFIG_NLS_CODEPAGE_855=y
-CONFIG_NLS_CODEPAGE_857=y
-CONFIG_NLS_CODEPAGE_860=y
-CONFIG_NLS_CODEPAGE_861=y
-CONFIG_NLS_CODEPAGE_862=y
-CONFIG_NLS_CODEPAGE_863=y
-CONFIG_NLS_CODEPAGE_864=y
-CONFIG_NLS_CODEPAGE_865=y
-CONFIG_NLS_CODEPAGE_866=y
-CONFIG_NLS_CODEPAGE_869=y
-CONFIG_NLS_CODEPAGE_874=y
-CONFIG_NLS_CODEPAGE_932=y
-CONFIG_NLS_CODEPAGE_936=y
-CONFIG_NLS_CODEPAGE_949=y
-CONFIG_NLS_CODEPAGE_950=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_NLS_ISO8859_13=y
-CONFIG_NLS_ISO8859_14=y
-CONFIG_NLS_ISO8859_15=y
-CONFIG_NLS_ISO8859_2=y
-CONFIG_NLS_ISO8859_3=y
-CONFIG_NLS_ISO8859_4=y
-CONFIG_NLS_ISO8859_5=y
-CONFIG_NLS_ISO8859_6=y
-CONFIG_NLS_ISO8859_7=y
-CONFIG_NLS_ISO8859_8=y
-CONFIG_NLS_ISO8859_9=y
-CONFIG_NLS_KOI8_R=y
-CONFIG_NLS_KOI8_U=y
-CONFIG_NLS_UTF8=y
-CONFIG_NOP_USB_XCEIV=y
-# CONFIG_NO_IOPORT_MAP is not set
-CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PM=y
-CONFIG_PM_CLK=y
-# CONFIG_PM_DEBUG is not set
-CONFIG_PM_SLEEP=y
-CONFIG_POWER_SUPPLY=y
-CONFIG_PREEMPT=y
-CONFIG_PREEMPT_COUNT=y
-# CONFIG_PREEMPT_NONE is not set
-CONFIG_PREEMPT_RCU=y
-CONFIG_PRINTK_TIME=y
-CONFIG_PROC_PAGE_MONITOR=y
-CONFIG_PWM=y
-CONFIG_PWM_JZ4740=y
-# CONFIG_RCU_BOOST is not set
-CONFIG_RCU_CPU_STALL_VERBOSE=y
-CONFIG_RCU_STALL_COMMON=y
-CONFIG_REGMAP=y
-CONFIG_REGMAP_I2C=y
-CONFIG_REGMAP_MMIO=y
-CONFIG_REGMAP_SPI=y
-CONFIG_RTC_CLASS=y
-# CONFIG_RTC_DRV_CMOS is not set
-CONFIG_RTC_DRV_JZ4740=y
-# CONFIG_SCSI_DMA is not set
-# CONFIG_SENSORS_JZ4740 is not set
-CONFIG_SERIO=y
-CONFIG_SERIO_LIBPS2=y
-CONFIG_SND=y
-CONFIG_SND_COMPRESS_OFFLOAD=y
-CONFIG_SND_DMAENGINE_PCM=y
-# CONFIG_SND_EMU10K1_SEQ is not set
-CONFIG_SND_JACK=y
-CONFIG_SND_JZ4740_SOC=y
-CONFIG_SND_JZ4740_SOC_I2S=y
-CONFIG_SND_JZ4740_SOC_QI_LB60=y
-# CONFIG_SND_OPL3_LIB_SEQ is not set
-# CONFIG_SND_OPL4_LIB_SEQ is not set
-CONFIG_SND_PCM=y
-# CONFIG_SND_RAWMIDI_SEQ is not set
-# CONFIG_SND_SBAWE_SEQ is not set
-CONFIG_SND_SOC=y
-# CONFIG_SND_SOC_FSL_SSI is not set
-CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
-CONFIG_SND_SOC_I2C_AND_SPI=y
-# CONFIG_SND_SOC_IMX_AUDMUX is not set
-CONFIG_SND_SOC_JZ4740_CODEC=y
-CONFIG_SND_TIMER=y
-CONFIG_SOUND=y
-# CONFIG_SOUND_OSS_CORE is not set
-CONFIG_SPI=y
-CONFIG_SPI_BITBANG=y
-CONFIG_SPI_GPIO=y
-CONFIG_SPI_MASTER=y
-# CONFIG_SQUASHFS is not set
-# CONFIG_STAGING is not set
-CONFIG_SUSPEND=y
-CONFIG_SUSPEND_FREEZER=y
-# CONFIG_SYN_COOKIES is not set
-CONFIG_SYS_HAS_CPU_MIPS32_R1=y
-CONFIG_SYS_HAS_EARLY_PRINTK=y
-CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
-CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
-CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
-CONFIG_SYS_SUPPORTS_ZBOOT=y
-CONFIG_SYS_SUPPORTS_ZBOOT_UART16550=y
-CONFIG_TICK_CPU_ACCOUNTING=y
-CONFIG_TREE_PREEMPT_RCU=y
-CONFIG_UBIFS_FS=y
-CONFIG_UBIFS_FS_ADVANCED_COMPR=y
-CONFIG_UBIFS_FS_LZO=y
-CONFIG_UBIFS_FS_ZLIB=y
-CONFIG_UNINLINE_SPIN_UNLOCK=y
-CONFIG_USB=y
-# CONFIG_USB_AUDIO is not set
-CONFIG_USB_COMMON=y
-# CONFIG_USB_EHCI_HCD is not set
-CONFIG_USB_ETH=y
-# CONFIG_USB_ETH_EEM is not set
-# CONFIG_USB_ETH_RNDIS is not set
-CONFIG_USB_F_ECM=y
-CONFIG_USB_F_SUBSET=y
-CONFIG_USB_GADGET=y
-CONFIG_USB_LIBCOMPOSITE=y
-# CONFIG_USB_MUSB_DUAL_ROLE is not set
-CONFIG_USB_MUSB_GADGET=y
-CONFIG_USB_MUSB_HDRC=y
-# CONFIG_USB_MUSB_HOST is not set
-CONFIG_USB_MUSB_JZ4740=y
-# CONFIG_USB_MUSB_TUSB6010 is not set
-# CONFIG_USB_MUSB_UX500 is not set
-CONFIG_USB_OTG_BLACKLIST_HUB=y
-CONFIG_USB_PHY=y
-CONFIG_USB_SUPPORT=y
-CONFIG_USB_U_ETHER=y
-CONFIG_VFAT_FS=y
-# CONFIG_VGA_CONSOLE is not set
-# CONFIG_VLAN_8021Q is not set
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_VT_CONSOLE_SLEEP=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
-# CONFIG_WATCHDOG is not set
-CONFIG_ZLIB_DEFLATE=y
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZONE_DMA_FLAG=0
diff --git a/target/linux/xburst/image/Makefile b/target/linux/xburst/image/Makefile
deleted file mode 100644 (file)
index ff25fbe..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-# Copyright (C) 2009-2010 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-JFFS2_BLOCKSIZE=256k 512k
-
-include $(TOPDIR)/rules.mk
-include $(INCLUDE_DIR)/image.mk
-
-ifneq ($(CONFIG_TARGET_xburst_qi_lb60),)
-UBI_OPTS = -m 4096 -p 512KiB
-UBIFS_OPTS = -m 4096 -e 516096 -c 4095
-else
-UBI_OPTS = -m 2048 -p 128KiB -s 512
-UBIFS_OPTS = -m 2048 -e 126KiB -c 4096
-endif
-
-UIMAGE:=$(BIN_DIR)/$(IMG_PREFIX)-uImage.bin
-
-define MkImageGzip
-       gzip -9n -c $(1) > $(1).gz
-       mkimage -A mips -O linux -T kernel -a 0x80010000 -C gzip \
-               -e 0x80010000 -n 'MIPS OpenWrt Linux-$(LINUX_VERSION)' \
-               -d $(1).gz $(2)
-endef
-
-define Image/Prepare
-       $(call MkImageGzip,$(KDIR)/vmlinux,$(KDIR)/uimage)
-endef
-
-define Image/BuildKernel
-       cp $(KDIR)/uimage $(UIMAGE)
-endef
-
-define Image/Build/squashfs
-       $(call prepare_generic_squashfs,$(KDIR)/root.squashfs)
-endef
-
-define Image/Build
-       dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/$(IMG_PREFIX)-root.$(1) bs=128k conv=sync
-endef
-
-$(eval $(call BuildImage))
diff --git a/target/linux/xburst/image/ubinize.cfg b/target/linux/xburst/image/ubinize.cfg
deleted file mode 100644 (file)
index 49d55b9..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-[rootfs]
-# Volume mode (other option is static)
-mode=ubi
-# Source image
-image=root.ubifs
-# Volume ID in UBI image
-vol_id=0
-# Allow for dynamic resize
-vol_type=dynamic
-# Volume name
-vol_name=rootfs
-# Autoresize volume at first mount
-vol_flags=autoresize
-
diff --git a/target/linux/xburst/modules.mk b/target/linux/xburst/modules.mk
deleted file mode 100644 (file)
index 95cebda..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-SOUND_MENU:=Sound Support
-
-define KernelPackage/sound-soc-jz4740
-  SUBMENU:=$(SOUND_MENU)
-  DEPENDS:=kmod-sound-soc-core @TARGET_xburst @BROKEN
-  TITLE:=JZ4740 SoC sound support
-  KCONFIG:=CONFIG_SND_JZ4740_SOC CONFIG_SND_JZ4740_SOC_I2S
-  FILES:= \
-       $(LINUX_DIR)/sound/soc/jz4740/snd-soc-jz4740.ko \
-       $(LINUX_DIR)/sound/soc/jz4740/snd-soc-jz4740-i2s.ko
-  AUTOLOAD:=$(call AutoLoad,60,snd-soc-jz4740 snd-soc-jz4740-i2s)
-endef
-
-define KernelPackage/sound-soc-jz4740-codec
-  SUBMENU:=$(SOUND_MENU)
-  DEPENDS:=kmod-sound-soc-core @TARGET_xburst @BROKEN
-  TITLE:=JZ4740 SoC internal codec support
-  KCONFIG:=CONFIG_SND_SOC_JZ4740_CODEC
-  FILES:=$(LINUX_DIR)/sound/soc/codecs/snd-soc-jz4740-codec.ko
-  AUTOLOAD:=$(call AutoLoad,60,snd-soc-jz4740-codec)
-endef
-
-define KernelPackage/sound-soc-xburst/default
-  SUBMENU:=$(SOUND_MENU)
-  DEPENDS:=kmod-sound-soc-jz4740 kmod-sound-soc-jz4740-codec @TARGET_xburst_$(if $(4),$(4),$(3)) @BROKEN
-  TITLE:=$(1) sound support
-  KCONFIG:=CONFIG_SND_JZ4740_SOC_$(2)
-  FILES:=$(LINUX_DIR)/sound/soc/jz4740/snd-soc-$(3).ko
-  AUTOLOAD:=$(call AutoLoad,65,snd-soc-$(3))
-endef
-
-define KernelPackage/sound-soc-qilb60
-$(call KernelPackage/sound-soc-xburst/default,QI NanoNote,QI_LB60,qi-lb60,qi_lb60)
-endef
-
-$(eval $(call KernelPackage,sound-soc-jz4740))
-$(eval $(call KernelPackage,sound-soc-jz4740-codec))
-$(eval $(call KernelPackage,sound-soc-qilb60))
diff --git a/target/linux/xburst/patches-3.18/001-ubi-Read-only-the-vid-header-instead-of-the-whole-pa.patch b/target/linux/xburst/patches-3.18/001-ubi-Read-only-the-vid-header-instead-of-the-whole-pa.patch
deleted file mode 100644 (file)
index 93851d7..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-From b0eb5175e0de3e5134a36a7da382d8811562af12 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Tue, 15 Mar 2011 12:49:15 +0100
-Subject: [PATCH 1/7] ubi: Read only the vid header instead of the whole page
-
----
- drivers/mtd/ubi/io.c |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/mtd/ubi/io.c
-+++ b/drivers/mtd/ubi/io.c
-@@ -1014,7 +1014,7 @@ int ubi_io_read_vid_hdr(struct ubi_devic
-       p = (char *)vid_hdr - ubi->vid_hdr_shift;
-       read_err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset,
--                        ubi->vid_hdr_alsize);
-+                        UBI_VID_HDR_SIZE + ubi->vid_hdr_shift);
-       if (read_err && read_err != UBI_IO_BITFLIPS && !mtd_is_eccerr(read_err))
-               return read_err;
diff --git a/target/linux/xburst/patches-3.18/002-NAND-Optimize-NAND_ECC_HW_OOB_FIRST-read.patch b/target/linux/xburst/patches-3.18/002-NAND-Optimize-NAND_ECC_HW_OOB_FIRST-read.patch
deleted file mode 100644 (file)
index 046da51..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-From 98d33db1c87e2447b9b203399d2f995e05ecdb52 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sat, 26 Feb 2011 15:30:07 +0100
-Subject: [PATCH 2/7] NAND: Optimize NAND_ECC_HW_OOB_FIRST read
-
-Avoid sending unnecessary READ commands to the chip.
----
- drivers/mtd/nand/nand_base.c |   17 +++++++++++++----
- 1 file changed, 13 insertions(+), 4 deletions(-)
-
---- a/drivers/mtd/nand/nand_base.c
-+++ b/drivers/mtd/nand/nand_base.c
-@@ -1360,9 +1360,16 @@ static int nand_read_page_hwecc_oob_firs
-       unsigned int max_bitflips = 0;
-       /* Read the OOB area first */
--      chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page);
--      chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
--      chip->cmdfunc(mtd, NAND_CMD_READ0, 0, page);
-+      /* Read the OOB area first */
-+      if (mtd->writesize > 512) {
-+              chip->cmdfunc(mtd, NAND_CMD_READ0, mtd->writesize, page);
-+              chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
-+              chip->cmdfunc(mtd, NAND_CMD_RNDOUT, 0, -1);
-+      } else {
-+              chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page);
-+              chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
-+              chip->cmdfunc(mtd, NAND_CMD_READ0, 0, page);
-+      }
-       for (i = 0; i < chip->ecc.total; i++)
-               ecc_code[i] = chip->oob_poi[eccpos[i]];
-@@ -1575,7 +1582,9 @@ static int nand_do_read_ops(struct mtd_i
-                                                __func__, buf);
- read_retry:
--                      chip->cmdfunc(mtd, NAND_CMD_READ0, 0x00, page);
-+                      if (chip->ecc.mode != NAND_ECC_HW_OOB_FIRST) {
-+                              chip->cmdfunc(mtd, NAND_CMD_READ0, 0x00, page);
-+                      }
-                       /*
-                        * Now read the page into the buffer.  Absent an error,
diff --git a/target/linux/xburst/patches-3.18/003-NAND-Add-support-for-subpage-reads-for-NAND_ECC_HW_O.patch b/target/linux/xburst/patches-3.18/003-NAND-Add-support-for-subpage-reads-for-NAND_ECC_HW_O.patch
deleted file mode 100644 (file)
index 974eb7a..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-From 6031a240816d1c9a10f596d0648e586f6b878809 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Tue, 15 Mar 2011 12:33:41 +0100
-Subject: [PATCH 3/7] NAND: Add support for subpage reads for
- NAND_ECC_HW_OOB_FIRST
-
----
- drivers/mtd/nand/nand_base.c |   77 +++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 76 insertions(+), 1 deletion(-)
-
---- a/drivers/mtd/nand/nand_base.c
-+++ b/drivers/mtd/nand/nand_base.c
-@@ -1393,6 +1393,75 @@ static int nand_read_page_hwecc_oob_firs
- }
- /**
-+ * nand_read_subpage_hwecc_oob_first - [REPLACABLE] hw ecc based sub-page read function
-+ * @mtd:      mtd info structure
-+ * @chip:     nand chip info structure
-+ * @data_offs:        offset of requested data within the page
-+ * @readlen:  data length
-+ * @bufpoi:   buffer to store read data
-+ * @page:     page number to read
-+ *
-+ * Hardware ECC for large page chips, require OOB to be read first.
-+ * For this ECC mode, the write_page method is re-used from ECC_HW.
-+ * These methods read/write ECC from the OOB area, unlike the
-+ * ECC_HW_SYNDROME support with multiple ECC steps, follows the
-+ * "infix ECC" scheme and reads/writes ECC from the data area, by
-+ * overwriting the NAND manufacturer bad block markings.
-+ */
-+static int nand_read_subpage_hwecc_oob_first(struct mtd_info *mtd, struct nand_chip *chip,
-+                      uint32_t data_offs, uint32_t readlen, uint8_t *bufpoi, int page)
-+{
-+      int start_step, end_step, num_steps;
-+      uint32_t *eccpos = chip->ecc.layout->eccpos;
-+      uint8_t *p;
-+      int data_col_addr;
-+      int eccsize = chip->ecc.size;
-+      int eccbytes = chip->ecc.bytes;
-+      uint8_t *ecc_code = chip->buffers->ecccode;
-+      uint8_t *ecc_calc = chip->buffers->ecccalc;
-+      int i;
-+
-+      /* Column address wihin the page aligned to ECC size */
-+      start_step = data_offs / chip->ecc.size;
-+      end_step = (data_offs + readlen - 1) / chip->ecc.size;
-+      num_steps = end_step - start_step + 1;
-+
-+      data_col_addr = start_step * chip->ecc.size;
-+
-+      /* Read the OOB area first */
-+      if (mtd->writesize > 512) {
-+              chip->cmdfunc(mtd, NAND_CMD_READ0, mtd->writesize, page);
-+              chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
-+              chip->cmdfunc(mtd, NAND_CMD_RNDOUT, data_col_addr, -1);
-+      } else {
-+              chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page);
-+              chip->read_buf(mtd, chip->oob_poi, mtd->oobsize);
-+              chip->cmdfunc(mtd, NAND_CMD_READ0, data_col_addr, page);
-+      }
-+
-+      for (i = 0; i < chip->ecc.total; i++)
-+              ecc_code[i] = chip->oob_poi[eccpos[i]];
-+
-+      p = bufpoi + data_col_addr;
-+
-+      for (i = eccbytes * start_step; num_steps; num_steps--, i += eccbytes, p += eccsize) {
-+              int stat;
-+
-+              chip->ecc.hwctl(mtd, NAND_ECC_READ);
-+              chip->read_buf(mtd, p, eccsize);
-+              chip->ecc.calculate(mtd, p, &ecc_calc[i]);
-+
-+              stat = chip->ecc.correct(mtd, p, &ecc_code[i], NULL);
-+              if (stat < 0)
-+                      mtd->ecc_stats.failed++;
-+              else
-+                      mtd->ecc_stats.corrected += stat;
-+      }
-+
-+      return 0;
-+}
-+
-+/**
-  * nand_read_page_syndrome - [REPLACEABLE] hardware ECC syndrome based page read
-  * @mtd: mtd info structure
-  * @chip: nand chip info structure
-@@ -3950,8 +4019,14 @@ int nand_scan_tail(struct mtd_info *mtd)
-                       pr_warn("No ECC functions supplied; hardware ECC not possible\n");
-                       BUG();
-               }
--              if (!ecc->read_page)
-+
-+              if (!ecc->read_page) {
-                       ecc->read_page = nand_read_page_hwecc_oob_first;
-+                      if (!ecc->read_subpage) {
-+                              ecc->read_subpage = nand_read_subpage_hwecc_oob_first;
-+                              chip->options |= NAND_SUBPAGE_READ;
-+                      }
-+              }
-       case NAND_ECC_HW:
-               /* Use standard hwecc read page function? */
diff --git a/target/linux/xburst/patches-3.18/004-ASoC-JZ4740-delay-activation-of-the-DAC-to-work-arou.patch b/target/linux/xburst/patches-3.18/004-ASoC-JZ4740-delay-activation-of-the-DAC-to-work-arou.patch
deleted file mode 100644 (file)
index f2c26ad..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-From 1a1095927d224403af8ad57c354cc64521bf3081 Mon Sep 17 00:00:00 2001
-From: Paul Cercueil <paul@crapouillou.net>
-Date: Sat, 16 Jun 2012 19:36:31 +0200
-Subject: [PATCH 4/7] ASoC: JZ4740: delay activation of the DAC to work around
- a sound bug.
-
-A proper fix of that bug would require a big rewrite of the driver,
-which (I hope) will be done eventually.
----
- sound/soc/codecs/jz4740.c |    9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
---- a/sound/soc/codecs/jz4740.c
-+++ b/sound/soc/codecs/jz4740.c
-@@ -249,12 +249,15 @@ static int jz4740_codec_set_bias_level(s
-       case SND_SOC_BIAS_ON:
-               break;
-       case SND_SOC_BIAS_PREPARE:
--              mask = JZ4740_CODEC_1_VREF_DISABLE |
--                              JZ4740_CODEC_1_VREF_AMP_DISABLE |
--                              JZ4740_CODEC_1_HEADPHONE_POWERDOWN_M;
-+              mask = JZ4740_CODEC_1_HEADPHONE_POWERDOWN_M;
-               value = 0;
-               regmap_update_bits(regmap, JZ4740_REG_CODEC_1, mask, value);
-+
-+              msleep(500);
-+              mask = JZ4740_CODEC_1_VREF_DISABLE |
-+                                              JZ4740_CODEC_1_VREF_AMP_DISABLE;
-+              regmap_update_bits(regmap, JZ4740_REG_CODEC_1, mask, 0);
-               break;
-       case SND_SOC_BIAS_STANDBY:
-               /* The only way to clear the suspend flag is to reset the codec */
diff --git a/target/linux/xburst/patches-3.18/005-RTC-JZ4740-Init-the-regulator-register-on-startup.patch b/target/linux/xburst/patches-3.18/005-RTC-JZ4740-Init-the-regulator-register-on-startup.patch
deleted file mode 100644 (file)
index f38483a..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-From f05b1ecd7e4fde7e69320a4b7be461636e982991 Mon Sep 17 00:00:00 2001
-From: Paul Cercueil <paul@crapouillou.net>
-Date: Thu, 13 Sep 2012 00:09:20 +0200
-Subject: [PATCH 5/7] RTC: JZ4740: Init the "regulator" register on startup.
-
-This register controls the accuracy of the RTC. uC/OS-II use
-the RTC as a 100Hz clock, and writes a completely wrong value
-on that register, that we have to overwrite if we want a working
-real-time clock.
-
-Signed-off-by: Paul Cercueil <paul@crapouillou.net>
----
- drivers/rtc/rtc-jz4740.c |   17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
-
---- a/drivers/rtc/rtc-jz4740.c
-+++ b/drivers/rtc/rtc-jz4740.c
-@@ -15,6 +15,7 @@
-  */
- #include <linux/io.h>
-+#include <linux/clk.h>
- #include <linux/kernel.h>
- #include <linux/module.h>
- #include <linux/platform_device.h>
-@@ -216,6 +217,7 @@ static int jz4740_rtc_probe(struct platf
-       struct jz4740_rtc *rtc;
-       uint32_t scratchpad;
-       struct resource *mem;
-+      struct clk *rtc_clk;
-       rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL);
-       if (!rtc)
-@@ -263,6 +265,21 @@ static int jz4740_rtc_probe(struct platf
-               }
-       }
-+      rtc_clk = clk_get(&pdev->dev, "rtc");
-+      if (IS_ERR(rtc_clk)) {
-+              dev_err(&pdev->dev, "Failed to get RTC clock\n");
-+              return PTR_ERR(rtc_clk);
-+      }
-+
-+      /* TODO: initialize the ADJC bits (25:16) to fine-tune
-+       * the accuracy of the RTC */
-+      ret = jz4740_rtc_reg_write(rtc, JZ_REG_RTC_REGULATOR,
-+                              (clk_get_rate(rtc_clk) - 1) & 0xffff);
-+      clk_put(rtc_clk);
-+
-+      if (ret)
-+              dev_warn(&pdev->dev, "Could not update RTC regulator register\n");
-+
-       return 0;
- }
diff --git a/target/linux/xburst/patches-3.18/006-Add-ili8960-lcd-driver.patch b/target/linux/xburst/patches-3.18/006-Add-ili8960-lcd-driver.patch
deleted file mode 100644 (file)
index dc12d93..0000000
+++ /dev/null
@@ -1,309 +0,0 @@
-From 8741ead92bc93e66740237e51b88b8690ebcbba3 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Sun, 1 Aug 2010 21:19:40 +0200
-Subject: [PATCH 6/7] Add ili8960 lcd driver
-
-Includes the following changes from the jz-3.5 branch:
-- Use module_spi_driver
-- Use devm_kzalloc
-- Use kstrtoul
-
-Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
----
- drivers/video/backlight/Kconfig   |    7 +
- drivers/video/backlight/Makefile  |    1 +
- drivers/video/backlight/ili8960.c |  262 +++++++++++++++++++++++++++++++++++++
- 3 files changed, 270 insertions(+)
- create mode 100644 drivers/video/backlight/ili8960.c
-
---- a/drivers/video/backlight/Kconfig
-+++ b/drivers/video/backlight/Kconfig
-@@ -59,6 +59,13 @@ config LCD_LTV350QV
-         The LTV350QV panel is present on all ATSTK1000 boards.
-+config LCD_ILI8960
-+      tristate "Ilitek ili8960 LCD driver"
-+      depends on LCD_CLASS_DEVICE && SPI
-+      default n
-+      help
-+        Driver for the Ilitek ili8960 LCD controller chip.
-+
- config LCD_ILI922X
-       tristate "ILI Technology ILI9221/ILI9222 support"
-       depends on SPI
---- a/drivers/video/backlight/Makefile
-+++ b/drivers/video/backlight/Makefile
-@@ -5,6 +5,7 @@ obj-$(CONFIG_LCD_CLASS_DEVICE)         += lcd.o
- obj-$(CONFIG_LCD_CORGI)                       += corgi_lcd.o
- obj-$(CONFIG_LCD_HP700)                       += jornada720_lcd.o
- obj-$(CONFIG_LCD_HX8357)              += hx8357.o
-+obj-$(CONFIG_LCD_ILI8960)             += ili8960.o
- obj-$(CONFIG_LCD_ILI922X)             += ili922x.o
- obj-$(CONFIG_LCD_ILI9320)             += ili9320.o
- obj-$(CONFIG_LCD_L4F00242T03)         += l4f00242t03.o
---- /dev/null
-+++ b/drivers/video/backlight/ili8960.c
-@@ -0,0 +1,262 @@
-+/*
-+ *  Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de>
-+ *  Driver for Ilitek ili8960 LCD
-+ *
-+ *  This program is free software; you can redistribute        it and/or modify it
-+ *  under  the terms of        the GNU General  Public License as published by the
-+ *  Free Software Foundation;  either version 2 of the        License, or (at your
-+ *  option) any later version.
-+ *
-+ *  You should have received a copy of the  GNU General Public License along
-+ *  with this program; if not, write  to the Free Software Foundation, Inc.,
-+ *  675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/spi/spi.h>
-+#include <linux/lcd.h>
-+#include <linux/delay.h>
-+
-+struct ili8960 {
-+      struct spi_device *spi;
-+      struct lcd_device *lcd;
-+      bool enabled;
-+      unsigned int brightness;
-+};
-+
-+#define ILI8960_REG_BRIGHTNESS        0x03
-+#define ILI8960_REG_POWER     0x05
-+#define ILI8960_REG_CONTRAST  0x0d
-+
-+static int ili8960_write_reg(struct spi_device *spi, uint8_t reg,
-+                              uint8_t data)
-+{
-+      uint8_t buf[2];
-+      buf[0] = ((reg & 0x40) << 1) | (reg & 0x3f);
-+      buf[1] = data;
-+
-+      return spi_write(spi, buf, sizeof(buf));
-+}
-+
-+static int ili8960_programm_power(struct spi_device *spi, bool enabled)
-+{
-+      int ret;
-+
-+      if (enabled)
-+              mdelay(20);
-+
-+      ret = ili8960_write_reg(spi, ILI8960_REG_POWER, enabled ? 0xc7 : 0xc6);
-+
-+      if (!enabled)
-+              mdelay(20);
-+
-+      return ret;
-+}
-+
-+static int ili8960_set_power(struct lcd_device *lcd, int power)
-+{
-+      struct ili8960 *ili8960 = lcd_get_data(lcd);
-+
-+      switch (power) {
-+      case FB_BLANK_UNBLANK:
-+              ili8960->enabled = true;
-+              break;
-+      default:
-+              return 0;
-+      }
-+
-+      return ili8960_programm_power(ili8960->spi, ili8960->enabled);
-+}
-+
-+static int ili8960_early_set_power(struct lcd_device *lcd, int power)
-+{
-+      struct ili8960 *ili8960 = lcd_get_data(lcd);
-+
-+      switch (power) {
-+      case FB_BLANK_UNBLANK:
-+              return 0;
-+      default:
-+              ili8960->enabled = false;
-+              break;
-+      }
-+
-+      return ili8960_programm_power(ili8960->spi, ili8960->enabled);
-+}
-+
-+static int ili8960_get_power(struct lcd_device *lcd)
-+{
-+      struct ili8960 *ili8960 = lcd_get_data(lcd);
-+      return ili8960->enabled ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN;
-+}
-+
-+static int ili8960_set_contrast(struct lcd_device *lcd, int contrast)
-+{
-+      struct ili8960 *ili8960 = lcd_get_data(lcd);
-+
-+      return ili8960_write_reg(ili8960->spi, ILI8960_REG_CONTRAST, contrast);
-+}
-+
-+static int ili8960_set_mode(struct lcd_device *lcd, struct fb_videomode *mode)
-+{
-+      if (mode->xres != 320 && mode->yres != 240)
-+              return -EINVAL;
-+
-+      return 0;
-+}
-+
-+static int ili8960_set_brightness(struct ili8960 *ili8960, int brightness)
-+{
-+      int ret;
-+
-+      ret = ili8960_write_reg(ili8960->spi, ILI8960_REG_BRIGHTNESS, brightness);
-+
-+      if (ret == 0)
-+              ili8960->brightness = brightness;
-+
-+      return ret;
-+}
-+
-+static ssize_t ili8960_show_brightness(struct device *dev,
-+              struct device_attribute *attr, char *buf)
-+{
-+      struct lcd_device *ld = to_lcd_device(dev);
-+      struct ili8960 *ili8960 = lcd_get_data(ld);
-+
-+      return sprintf(buf, "%u\n", ili8960->brightness);
-+}
-+
-+static ssize_t ili8960_store_brightness(struct device *dev,
-+              struct device_attribute *attr, const char *buf, size_t count)
-+{
-+      struct lcd_device *ld = to_lcd_device(dev);
-+      struct ili8960 *ili8960 = lcd_get_data(ld);
-+      unsigned long brightness;
-+      int ret;
-+
-+      ret = kstrtoul(buf, 0, &brightness);
-+      if (ret)
-+              return ret;
-+
-+      if (brightness > 255)
-+              return -EINVAL;
-+
-+      ili8960_set_brightness(ili8960, brightness);
-+
-+      return count;
-+}
-+
-+
-+static DEVICE_ATTR(brightness, 0644, ili8960_show_brightness,
-+      ili8960_store_brightness);
-+
-+static struct lcd_ops ili8960_lcd_ops = {
-+      .set_power = ili8960_set_power,
-+      .early_set_power = ili8960_early_set_power,
-+      .get_power = ili8960_get_power,
-+      .set_contrast = ili8960_set_contrast,
-+      .set_mode = ili8960_set_mode,
-+};
-+
-+static int ili8960_probe(struct spi_device *spi)
-+{
-+      int ret;
-+      struct ili8960 *ili8960;
-+
-+      ili8960 = devm_kzalloc(&spi->dev, sizeof(*ili8960), GFP_KERNEL);
-+      if (!ili8960)
-+              return -ENOMEM;
-+
-+      spi->bits_per_word = 8;
-+      spi->mode = SPI_MODE_3;
-+
-+      ret = spi_setup(spi);
-+      if (ret) {
-+              dev_err(&spi->dev, "Failed to setup spi\n");
-+              return ret;
-+      }
-+
-+      ili8960->spi = spi;
-+
-+      ili8960->lcd = lcd_device_register("ili8960-lcd", &spi->dev, ili8960,
-+                                              &ili8960_lcd_ops);
-+
-+      if (IS_ERR(ili8960->lcd)) {
-+              ret = PTR_ERR(ili8960->lcd);
-+              dev_err(&spi->dev, "Failed to register lcd device: %d\n", ret);
-+              return ret;
-+      }
-+
-+      ili8960->lcd->props.max_contrast = 255;
-+
-+      ret = device_create_file(&ili8960->lcd->dev, &dev_attr_brightness);
-+      if (ret)
-+              goto err_unregister_lcd;
-+
-+      ili8960_programm_power(ili8960->spi, true);
-+      ili8960->enabled = true;
-+
-+      spi_set_drvdata(spi, ili8960);
-+
-+      ili8960_write_reg(spi, 0x13, 0x01);
-+
-+      return 0;
-+err_unregister_lcd:
-+      lcd_device_unregister(ili8960->lcd);
-+      return ret;
-+}
-+
-+static int ili8960_remove(struct spi_device *spi)
-+{
-+      struct ili8960 *ili8960 = spi_get_drvdata(spi);
-+
-+      device_remove_file(&ili8960->lcd->dev, &dev_attr_brightness);
-+      lcd_device_unregister(ili8960->lcd);
-+
-+      spi_set_drvdata(spi, NULL);
-+      return 0;
-+}
-+
-+#ifdef CONFIG_PM
-+
-+static int ili8960_suspend(struct spi_device *spi, pm_message_t state)
-+{
-+      struct ili8960 *ili8960 = spi_get_drvdata(spi);
-+
-+      if (ili8960->enabled)
-+              ili8960_programm_power(ili8960->spi, false);
-+
-+      return 0;
-+}
-+
-+static int ili8960_resume(struct spi_device *spi)
-+{
-+      struct ili8960 *ili8960 = spi_get_drvdata(spi);
-+
-+      if (ili8960->enabled)
-+              ili8960_programm_power(ili8960->spi, true);
-+
-+      return 0;
-+}
-+
-+#else
-+#define ili8960_suspend NULL
-+#define ili8960_resume NULL
-+#endif
-+
-+static struct spi_driver ili8960_driver = {
-+      .driver = {
-+              .name = "ili8960",
-+              .owner = THIS_MODULE,
-+      },
-+      .probe = ili8960_probe,
-+      .remove = ili8960_remove,
-+      .suspend = ili8960_suspend,
-+      .resume = ili8960_resume,
-+};
-+module_spi_driver(ili8960_driver);
-+
-+MODULE_AUTHOR("Lars-Peter Clausen");
-+MODULE_LICENSE("GPL");
-+MODULE_DESCRIPTION("LCD driver for Ilitek ili8960");
-+MODULE_ALIAS("spi:ili8960");
diff --git a/target/linux/xburst/patches-3.18/007-qi_lb60-Don-t-use-3-wire-spi-mode-for-the-display-fo.patch b/target/linux/xburst/patches-3.18/007-qi_lb60-Don-t-use-3-wire-spi-mode-for-the-display-fo.patch
deleted file mode 100644 (file)
index b8aac66..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-From 4371d60ae342c76708c4317e06fb7dcf0159c2f1 Mon Sep 17 00:00:00 2001
-From: Lars-Peter Clausen <lars@metafoo.de>
-Date: Wed, 13 Oct 2010 01:17:24 +0200
-Subject: [PATCH 7/7] qi_lb60: Don't use 3-wire spi mode for the display for
- now
-
-The spi_gpio driver does not support 3-wire mode.
----
- arch/mips/jz4740/board-qi_lb60.c |    1 -
- 1 file changed, 1 deletion(-)
-
---- a/arch/mips/jz4740/board-qi_lb60.c
-+++ b/arch/mips/jz4740/board-qi_lb60.c
-@@ -312,7 +312,6 @@ static struct spi_board_info qi_lb60_spi
-               .chip_select = 0,
-               .bus_num = 1,
-               .max_speed_hz = 30 * 1000,
--              .mode = SPI_3WIRE,
-       },
- };
diff --git a/target/linux/xburst/qi_lb60/config-default b/target/linux/xburst/qi_lb60/config-default
deleted file mode 100644 (file)
index 1fd421b..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_INPUT_MATRIXKMAP=y
-CONFIG_KEYBOARD_GPIO=y
-CONFIG_KEYBOARD_MATRIX=y
-CONFIG_LCD_CLASS_DEVICE=y
-CONFIG_LCD_ILI8960=y
-# CONFIG_LCD_L4F00242T03 is not set
-# CONFIG_LCD_LMS283GF05 is not set
-# CONFIG_LCD_LTV350QV is not set
-# CONFIG_LCD_PLATFORM is not set
-# CONFIG_LCD_TDO24M is not set
-# CONFIG_LCD_VGG2432A4 is not set
-CONFIG_LOGO=y
-# CONFIG_LOGO_LINUX_CLUT224 is not set
-# CONFIG_LOGO_LINUX_MONO is not set
-# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_REGMAP_SPI=y
-CONFIG_SND_HWDEP=y
-CONFIG_SND_MIXER_OSS=y
-CONFIG_SND_PCM_OSS=y
-CONFIG_SND_SEQUENCER=y
-# CONFIG_SND_SEQUENCER_OSS is not set
-CONFIG_SND_SEQ_DUMMY=y
-# CONFIG_SND_VIRMIDI is not set
-CONFIG_SOUND_OSS_CORE=y
-CONFIG_SOUND_OSS_CORE_PRECLAIM=y
-CONFIG_SPI=y
-CONFIG_SPI_BITBANG=y
-CONFIG_SPI_GPIO=y
-CONFIG_SPI_MASTER=y
-# CONFIG_USB_FUSB300 is not set
-CONFIG_USB_JZ4740=y
diff --git a/target/linux/xburst/qi_lb60/target.mk b/target/linux/xburst/qi_lb60/target.mk
deleted file mode 100644 (file)
index 8ae71bd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-BOARDNAME:=QI Ben Nanonote (qi_lb60)
index d9e0b9193d2c82d39c83fc93e7d94746f76ebd51..2a5fddd2e5523926194bec051e69bcb2f2a8d69d 100644 (file)
@@ -5,6 +5,6 @@ config SDK
        help
          This is essentially a stripped-down version of the buildroot
          with a precompiled toolchain. It can be used to develop and
-         test packages for LEDE before including them in the buildroot
+         test packages for libreCMC before including them in the buildroot
 
 
index 6f04f94d2c7948107d63f8503a2a2e1f90a5f1af..13e222fc5c819cee43cca9e70bc40e96483791c2 100644 (file)
@@ -1,7 +1,7 @@
-This is the LEDE SDK. It contains a stripped-down version of
+This is the libreCMC SDK. It contains a stripped-down version of
 the buildroot. You can use it to test/develop packages without
 having to compile your own toolchain or any of the libraries
-included with LEDE.
+included with libreCMC.
 
 To use it, just put your buildroot-compatible package directory
 (including its dependencies) in the subdir 'package/' and run
index c7548d4f2881f8a4a5eb6c432a8d0bf692ee3283..e377c20a1b6aacd07def1403c46485ac271eb4c2 100644 (file)
@@ -1,8 +1,8 @@
 config MAKE_TOOLCHAIN
-       bool "Package the libreCMC-based Toolchain"
+       bool "Package the LEDE-based Toolchain"
        depends on !EXTERNAL_TOOLCHAIN
        help
          Package the created toolchain as a tarball under the bin/ directory as
-         libreCMC-Toolchain-$(BOARD)-for-$(ARCH)$(ARCH_SUFFIX)-gcc-$(GCCV)$(DIR_SUFFIX).
+         LEDE-Toolchain-$(BOARD)-for-$(ARCH)$(ARCH_SUFFIX)-gcc-$(GCCV)$(DIR_SUFFIX).
          For example, a toolchain for the MIPS architecture might be named
-         libreCMC-Toolchain-malta-for-mipsel_mips32-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2.
+         LEDE-Toolchain-malta-for-mipsel_mips32-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2.
index 656e6968bc2cdb8dc6b903814716a3821ed92ac2..86b0189d356a457ec6810627e9544585e01c6470 100644 (file)
@@ -1,2 +1,2 @@
-This is the libreCMC SDK. It contains just the toolchain created
+This is the LEDE SDK. It contains just the toolchain created
 by buildroot.
index 7544023f056d0c1bde892e45b51ac472a6c9101c..b53b8e63ec111697e0f6af45538e9efa84bf5a3f 100644 (file)
@@ -42,7 +42,7 @@ menuconfig EXTERNAL_TOOLCHAIN
        bool
        prompt "Use external toolchain"  if DEVEL
        help
-         If enabled, libreCMC will compile using an existing toolchain instead of
+         If enabled, LEDE will compile using an existing toolchain instead of
          compiling one.
 
        config NATIVE_TOOLCHAIN
@@ -51,7 +51,7 @@ menuconfig EXTERNAL_TOOLCHAIN
                depends on EXTERNAL_TOOLCHAIN
                select NO_STRIP
                help
-                 If enabled, libreCMC will compile using the native toolchain for your
+                 If enabled, LEDE will compile using the native toolchain for your
                  host instead of compiling one.
 
        config TARGET_NAME
diff --git a/toolchain/gcc/patches/5.4.0/030-macos-header-fix-backport.patch b/toolchain/gcc/patches/5.4.0/030-macos-header-fix-backport.patch
new file mode 100644 (file)
index 0000000..37c774e
--- /dev/null
@@ -0,0 +1,10 @@
+--- a/gcc/system.h
++++ b/gcc/system.h
+@@ -216,6 +216,7 @@ extern int errno;
+ #ifdef __cplusplus
+ # include <algorithm>
++# include <map>
+ # include <cstring>
+ # include <utility>
+ #endif
index 8a18d3ec078ef7b1b39cec48579f2e616737ed7c..e6c845a819d5a893a588612f19abd7d02414da50 100644 (file)
@@ -17,11 +17,11 @@ PKG_HASH:=6a91f86cc487c1548d3f5d4f29f7226d2019c0db8a63633aeabd5914a340f3f9
 GDB_DIR:=binutils-$(PKG_NAME)-$(PKG_VERSION)
 PATCH_DIR:=./patches-arc
 else
-PKG_VERSION:=7.12.1
+PKG_VERSION:=8.0.1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@GNU/gdb
-PKG_HASH:=4607680b973d3ec92c30ad029f1b7dbde3876869e6b3a117d8a7e90081113186
+PKG_HASH:=3dbd5f93e36ba2815ad0efab030dcd0c7b211d7b353a40a53f4c02d7d56295e3
 GDB_DIR:=$(PKG_NAME)-$(PKG_VERSION)
 endif
 
index 68d1c90359d17465de22891dffe9a06688c5a1e6..e86ba6d0cd7df9766e2678128c775b710a6abfaa 100644 (file)
@@ -1,6 +1,6 @@
 --- a/gdb/configure
 +++ b/gdb/configure
-@@ -874,8 +874,7 @@ MAKEINFOFLAGS
+@@ -869,8 +869,7 @@ MAKEINFOFLAGS
  YACC
  YFLAGS
  XMKMF'
@@ -10,7 +10,7 @@
  multi-ice
  gdbserver'
  
-@@ -5617,7 +5616,7 @@ $as_echo "$with_auto_load_safe_path" >&6
+@@ -6473,7 +6472,7 @@ $as_echo "$with_auto_load_safe_path" >&6
  
  
  
index 562902c50f2e61954a6ef669d92576617639f429..9ce91a024b03bce7af55a3160e75bee24ddee8ca 100644 (file)
@@ -1,6 +1,6 @@
 --- a/gdb/gdbserver/configure
 +++ b/gdb/gdbserver/configure
-@@ -2476,7 +2476,7 @@ $as_echo "$as_me: error: \`$ac_var' was
+@@ -2469,7 +2469,7 @@ $as_echo "$as_me: error: \`$ac_var' was 
        ac_cache_corrupted=: ;;
      ,);;
      *)
index 22e5d3e858ef797648dbe388d6a95e964e2f73d4..d6f03e42089264838c7cc202e42c8fe6294ab451 100644 (file)
@@ -7,13 +7,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=cmake
-PKG_VERSION:=3.9.3
-PKG_CPE_ID:=cpe:/a:kitware:cmake
+PKG_VERSION:=3.7.1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://cmake.org/files/v3.9/ \
+PKG_SOURCE_URL:=https://cmake.org/files/v3.7/ \
                https://fossies.org/linux/misc/
-PKG_HASH:=8eaf75e1e932159aae98ab5e7491499545554be62a08cbcbc7c75c84b999f28a
+PKG_HASH:=449a5bce64dbd4d5b9517ebd1a1248ed197add6ad27934478976fd5f1f9330e1
 
 HOST_BUILD_PARALLEL:=1
 HOST_CONFIGURE_PARALLEL:=1
index f8baafe3331bf91acf8c71fc1295ad1cbfcb298c..6f28c435e018f53fedc3ba840298b6aaf8a07e9b 100644 (file)
@@ -1,6 +1,6 @@
 --- a/Tests/RunCMake/CMakeLists.txt
 +++ b/Tests/RunCMake/CMakeLists.txt
-@@ -246,15 +246,6 @@ add_RunCMake_test(no_install_prefix)
+@@ -225,15 +225,6 @@ add_RunCMake_test(no_install_prefix)
  add_RunCMake_test(configure_file)
  add_RunCMake_test(CTestTimeoutAfterMatch)
  
@@ -18,7 +18,7 @@
    add_RunCMake_test(FindPkgConfig)
 --- a/Tests/CMakeLists.txt
 +++ b/Tests/CMakeLists.txt
-@@ -403,10 +403,6 @@ if(BUILD_TESTING)
+@@ -393,10 +393,6 @@ if(BUILD_TESTING)
  
    list(APPEND TEST_BUILD_DIRS ${CMake_TEST_INSTALL_PREFIX})
  
diff --git a/tools/cmake/patches/110-alpine_musl-compat.patch b/tools/cmake/patches/110-alpine_musl-compat.patch
deleted file mode 100644 (file)
index ae93201..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
---- a/Utilities/cmjsoncpp/include/json/assertions.h
-+++ b/Utilities/cmjsoncpp/include/json/assertions.h
-@@ -6,12 +6,12 @@
- #ifndef CPPTL_JSON_ASSERTIONS_H_INCLUDED
- #define CPPTL_JSON_ASSERTIONS_H_INCLUDED
-+#include <stdlib.h>
-+
- #if !defined(JSON_IS_AMALGAMATION)
- #include "config.h"
- #endif // if !defined(JSON_IS_AMALGAMATION)
--#include <stdlib.h>
--
- #if JSON_USE_EXCEPTION
- #include <stdexcept>
- #define JSON_ASSERT(condition)                                                 \
diff --git a/tools/cmake/patches/110-freebsd-compat.patch b/tools/cmake/patches/110-freebsd-compat.patch
new file mode 100644 (file)
index 0000000..c1d4a27
--- /dev/null
@@ -0,0 +1,39 @@
+From 6eab64c3adc7a38c322cd4d9a1a1881f2d49cb9c Mon Sep 17 00:00:00 2001
+From: Raphael Kubo da Costa <rakuco@FreeBSD.org>
+Date: Tue, 15 Oct 2013 00:10:56 +0300
+Subject: [PATCH] SystemInformation: Include backtrace-related headers on
+ FreeBSD
+
+This was probably broken for a long while, but the problem was not apparent
+because the check for execinfo.h would fail by default because
+-I/usr/local/include was not being passed to the compiler when making the
+checks for the header's existence.
+
+Now that very recent FreeBSD versions (ie. 10-CURRENT) have NetBSD's
+libexecinfo in base (and it is thus installed into /usr), the
+backtrace-related checks would pass, but the required headers were not being
+included in SystemInformation.cxx.
+
+Change-Id: I3b91ed7ac0e6878035aee202b3336c536cc6d2ff
+---
+ Source/kwsys/SystemInformation.cxx |    9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/Source/kwsys/SystemInformation.cxx
++++ b/Source/kwsys/SystemInformation.cxx
+@@ -89,6 +89,15 @@ typedef int siginfo_t;
+ #  include <ifaddrs.h>
+ #  define KWSYS_SYSTEMINFORMATION_IMPLEMENT_FQDN
+ # endif
++# if defined(KWSYS_SYSTEMINFORMATION_HAS_BACKTRACE)
++#  include <execinfo.h>
++#  if defined(KWSYS_SYSTEMINFORMATION_HAS_CPP_DEMANGLE)
++#    include <cxxabi.h>
++#  endif
++#  if defined(KWSYS_SYSTEMINFORMATION_HAS_SYMBOL_LOOKUP)
++#    include <dlfcn.h>
++#  endif
++# endif
+ #endif
+ #if defined(KWSYS_SYS_HAS_MACHINE_CPU_H)
diff --git a/tools/cmake/patches/120-alpine_musl-compat.patch b/tools/cmake/patches/120-alpine_musl-compat.patch
new file mode 100644 (file)
index 0000000..ae93201
--- /dev/null
@@ -0,0 +1,17 @@
+--- a/Utilities/cmjsoncpp/include/json/assertions.h
++++ b/Utilities/cmjsoncpp/include/json/assertions.h
+@@ -6,12 +6,12 @@
+ #ifndef CPPTL_JSON_ASSERTIONS_H_INCLUDED
+ #define CPPTL_JSON_ASSERTIONS_H_INCLUDED
++#include <stdlib.h>
++
+ #if !defined(JSON_IS_AMALGAMATION)
+ #include "config.h"
+ #endif // if !defined(JSON_IS_AMALGAMATION)
+-#include <stdlib.h>
+-
+ #if JSON_USE_EXCEPTION
+ #include <stdexcept>
+ #define JSON_ASSERT(condition)                                                 \
diff --git a/tools/cmake/patches/120-libarchive-fix-libressl-compat.patch b/tools/cmake/patches/120-libarchive-fix-libressl-compat.patch
deleted file mode 100644 (file)
index a56ac2e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
---- a/Utilities/cmlibarchive/libarchive/archive_openssl_evp_private.h
-+++ b/Utilities/cmlibarchive/libarchive/archive_openssl_evp_private.h
-@@ -28,7 +28,7 @@
- #include <openssl/evp.h>
- #include <openssl/opensslv.h>
--#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
- #include <stdlib.h> /* malloc, free */
- #include <string.h> /* memset */
- static inline EVP_MD_CTX *EVP_MD_CTX_new(void)
---- a/Utilities/cmlibarchive/libarchive/archive_openssl_hmac_private.h
-+++ b/Utilities/cmlibarchive/libarchive/archive_openssl_hmac_private.h
-@@ -28,7 +28,7 @@
- #include <openssl/hmac.h>
- #include <openssl/opensslv.h>
--#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
- #include <stdlib.h> /* malloc, free */
- #include <string.h> /* memset */
- static inline HMAC_CTX *HMAC_CTX_new(void)
diff --git a/tools/cmake/patches/130-curl-fix-libressl-linking.patch b/tools/cmake/patches/130-curl-fix-libressl-linking.patch
deleted file mode 100644 (file)
index b5ee61b..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-From: Jo-Philipp Wich <jo@mein.io>
-Date: Wed, 11 Jan 2017 03:36:04 +0100
-Subject: [PATCH] cmcurl: link librt
-
-When cmake is linked against LibreSSL, there might be an indirect
-dependency on librt on certain systems if LibreSSL's libcrypto uses
-clock_gettime() from librt:
-
-    [ 28%] Linking C executable LIBCURL
-    .../lib/libcrypto.a(getentropy_linux.o): In function `getentropy_fallback':
-    getentropy_linux.c:(.text+0x16d): undefined reference to `clock_gettime'
-    getentropy_linux.c:(.text+0x412): undefined reference to `clock_gettime'
-    collect2: error: ld returned 1 exit status
-    make[5]: *** [Utilities/cmcurl/LIBCURL] Error 1
-
-Modify the cmcurl CMakeLists.txt to check for clock_gettime() in librt
-and unconditionally link the rt library when the symbol is found.
-
-Signed-off-by: Jo-Philipp Wich <jo@mein.io>
----
---- a/Utilities/cmcurl/CMakeLists.txt
-+++ b/Utilities/cmcurl/CMakeLists.txt
-@@ -456,6 +456,10 @@ if(CMAKE_USE_OPENSSL)
-   set(USE_OPENSSL ON)
-   set(HAVE_LIBCRYPTO ON)
-   set(HAVE_LIBSSL ON)
-+  check_library_exists("rt" clock_gettime "" HAVE_LIBRT)
-+  if(HAVE_LIBRT)
-+    list(APPEND OPENSSL_LIBRARIES rt)
-+  endif()
-   list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES})
-   include_directories(${OPENSSL_INCLUDE_DIR})
-   set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR})
diff --git a/tools/cmake/patches/130-libarchive-fix-libressl-compat.patch b/tools/cmake/patches/130-libarchive-fix-libressl-compat.patch
new file mode 100644 (file)
index 0000000..a56ac2e
--- /dev/null
@@ -0,0 +1,22 @@
+--- a/Utilities/cmlibarchive/libarchive/archive_openssl_evp_private.h
++++ b/Utilities/cmlibarchive/libarchive/archive_openssl_evp_private.h
+@@ -28,7 +28,7 @@
+ #include <openssl/evp.h>
+ #include <openssl/opensslv.h>
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ #include <stdlib.h> /* malloc, free */
+ #include <string.h> /* memset */
+ static inline EVP_MD_CTX *EVP_MD_CTX_new(void)
+--- a/Utilities/cmlibarchive/libarchive/archive_openssl_hmac_private.h
++++ b/Utilities/cmlibarchive/libarchive/archive_openssl_hmac_private.h
+@@ -28,7 +28,7 @@
+ #include <openssl/hmac.h>
+ #include <openssl/opensslv.h>
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+ #include <stdlib.h> /* malloc, free */
+ #include <string.h> /* memset */
+ static inline HMAC_CTX *HMAC_CTX_new(void)
diff --git a/tools/cmake/patches/140-bootstrap_parallel_make_flag.patch b/tools/cmake/patches/140-bootstrap_parallel_make_flag.patch
deleted file mode 100644 (file)
index 734e8cb..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
---- a/bootstrap
-+++ b/bootstrap
-@@ -1094,7 +1094,10 @@ int main(){ printf("1%c", (char)0x0a); r
- ' > "test.c"
- cmake_original_make_flags="${cmake_make_flags}"
- if [ "x${cmake_parallel_make}" != "x" ]; then
--  cmake_make_flags="${cmake_make_flags} -j ${cmake_parallel_make}"
-+  case "$cmake_paralle_make" in
-+    [0-9]*) cmake_parallel_make="-j ${cmake_parallel_make}";;
-+  esac
-+  cmake_make_flags="${cmake_make_flags} ${cmake_parallel_make}"
- fi
- for a in ${cmake_make_processors}; do
-   if [ -z "${cmake_make_processor}" ] && cmake_try_make "${a}" "${cmake_make_flags}" >> ../cmake_bootstrap.log 2>&1; then
diff --git a/tools/cmake/patches/140-curl-fix-libressl-linking.patch b/tools/cmake/patches/140-curl-fix-libressl-linking.patch
new file mode 100644 (file)
index 0000000..5b57172
--- /dev/null
@@ -0,0 +1,32 @@
+From: Jo-Philipp Wich <jo@mein.io>
+Date: Wed, 11 Jan 2017 03:36:04 +0100
+Subject: [PATCH] cmcurl: link librt
+
+When cmake is linked against LibreSSL, there might be an indirect
+dependency on librt on certain systems if LibreSSL's libcrypto uses
+clock_gettime() from librt:
+
+    [ 28%] Linking C executable LIBCURL
+    .../lib/libcrypto.a(getentropy_linux.o): In function `getentropy_fallback':
+    getentropy_linux.c:(.text+0x16d): undefined reference to `clock_gettime'
+    getentropy_linux.c:(.text+0x412): undefined reference to `clock_gettime'
+    collect2: error: ld returned 1 exit status
+    make[5]: *** [Utilities/cmcurl/LIBCURL] Error 1
+
+Modify the cmcurl CMakeLists.txt to check for clock_gettime() in librt
+and unconditionally link the rt library when the symbol is found.
+
+Signed-off-by: Jo-Philipp Wich <jo@mein.io>
+--- a/Utilities/cmcurl/CMakeLists.txt
++++ b/Utilities/cmcurl/CMakeLists.txt
+@@ -362,6 +362,10 @@ set(HAVE_LIBSSL OFF)
+ if(CMAKE_USE_OPENSSL)
+   find_package(OpenSSL)
+   if(OPENSSL_FOUND)
++    check_library_exists("rt" clock_gettime "" HAVE_LIBRT)
++    if(HAVE_LIBRT)
++      list(APPEND OPENSSL_LIBRARIES rt)
++    endif()
+     list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES})
+     set(USE_OPENSSL ON)
+     set(HAVE_LIBCRYPTO ON)
diff --git a/tools/cmake/patches/150-bootstrap_parallel_make_flag.patch b/tools/cmake/patches/150-bootstrap_parallel_make_flag.patch
new file mode 100644 (file)
index 0000000..6970b83
--- /dev/null
@@ -0,0 +1,14 @@
+--- a/bootstrap
++++ b/bootstrap
+@@ -958,7 +958,10 @@ int main(){ printf("1%c", (char)0x0a); r
+ ' > "test.c"
+ cmake_original_make_flags="${cmake_make_flags}"
+ if [ "x${cmake_parallel_make}" != "x" ]; then
+-  cmake_make_flags="${cmake_make_flags} -j ${cmake_parallel_make}"
++  case "$cmake_paralle_make" in
++    [0-9]*) cmake_parallel_make="-j ${cmake_parallel_make}";;
++  esac
++  cmake_make_flags="${cmake_make_flags} ${cmake_parallel_make}"
+ fi
+ for a in ${cmake_make_processors}; do
+   if [ -z "${cmake_make_processor}" ] && cmake_try_make "${a}" "${cmake_make_flags}" >> ../cmake_bootstrap.log 2>&1; then
diff --git a/tools/findutils/patches/100-include_sysmacros.patch b/tools/findutils/patches/100-include_sysmacros.patch
new file mode 100644 (file)
index 0000000..82b1ee9
--- /dev/null
@@ -0,0 +1,13 @@
+--- a/gl/lib/mountlist.c
++++ b/gl/lib/mountlist.c
+@@ -17,6 +17,10 @@
+ #include <config.h>
++#ifdef MAJOR_IN_SYSMACROS
++# include <sys/sysmacros.h>
++#endif
++
+ #include "mountlist.h"
+ #include <limits.h>
index f20a3d4a85f796234837664dedd1cd81c88e1cfc..bfe60993e27093888858df70dbf3201ad8f8f578 100644 (file)
@@ -7,13 +7,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mkimage
-PKG_VERSION:=2014.10-librecmc
+PKG_VERSION:=2014.10
 
 PKG_SOURCE:=u-boot-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=\
-       https://librecmc.org/librecmc/downloads/sources/v1.4/
-
-PKG_HASH:=e74e658ef6b09ad1b682f5d1651f9ab1755bb3523c5261c6176d212341f7962d
+       http://mirror2.openwrt.org/sources \
+       ftp://ftp.denx.de/pub/u-boot
+PKG_HASH:=d3b132a7a9b3f3182b7aad71c2dfbd4fc15bea83e12c76134eb3ffefc07d1c71
 PKG_CAT:=bzcat
 
 HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/u-boot-$(PKG_VERSION)
diff --git a/tools/mkimage/patches/110-fix_musl_build.patch b/tools/mkimage/patches/110-fix_musl_build.patch
deleted file mode 100644 (file)
index 13f7ab0..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-From: Jörg Krause <joerg.krause@embedded.rocks>
-Date: Wed, 22 Apr 2015 19:36:22 +0000 (+0200)
-Subject: Fix musl build
-X-Git-Tag: v2015.07-rc2~281
-X-Git-Url: http://git.denx.de/?p=u-boot.git;a=commitdiff_plain;h=26e355d131a6b56ea78a156c1cee4f6ba0500b37;hp=1cdd9412002000aafcfb6f10cd02069adc66ba49
-
-Fix musl build
-
-This patch fixes cross-compiling U-Boot tools with the musl C library:
-  * including <sys/types.h> is needed for ulong
-  * defining _GNU_SOURCE is needed for loff_t
-
-Tested for target at91sam9261ek_dataflash_cs3.
-
-Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
-Cc: Tom Rini <trini@konsulko.com>
----
-
-diff --git a/include/image.h b/include/image.h
-index 3844be6..60b924a 100644
---- a/include/image.h
-+++ b/include/image.h
-@@ -23,6 +23,7 @@
- struct lmb;
- #ifdef USE_HOSTCC
-+#include <sys/types.h>
- /* new uImage format support enabled on host */
- #define CONFIG_FIT            1
-diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c
-index 1173eea..daa02a7 100644
---- a/tools/env/fw_env.c
-+++ b/tools/env/fw_env.c
-@@ -8,6 +8,8 @@
-  * SPDX-License-Identifier:   GPL-2.0+
-  */
-+#define _GNU_SOURCE
-+
- #include <errno.h>
- #include <env_flags.h>
- #include <fcntl.h>
-diff --git a/tools/imagetool.h b/tools/imagetool.h
-index 3e15b4e..b7874f4 100644
---- a/tools/imagetool.h
-+++ b/tools/imagetool.h
-@@ -16,6 +16,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <sys/stat.h>
-+#include <sys/types.h>
- #include <time.h>
- #include <unistd.h>
- #include <u-boot/sha1.h>
-diff --git a/tools/proftool.c b/tools/proftool.c
-index 3482951..9ce7a77 100644
---- a/tools/proftool.c
-+++ b/tools/proftool.c
-@@ -16,6 +16,7 @@
- #include <string.h>
- #include <unistd.h>
- #include <sys/param.h>
-+#include <sys/types.h>
- #include <compiler.h>
- #include <trace.h>
diff --git a/tools/mtd-utils/patches/120-include_sysmacros.patch b/tools/mtd-utils/patches/120-include_sysmacros.patch
new file mode 100644 (file)
index 0000000..81ba1cf
--- /dev/null
@@ -0,0 +1,25 @@
+From 9a06f45ec71116d76ee4b268ebe1b33d45b06fc0 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Sat, 16 Apr 2016 22:10:43 -0400
+Subject: [PATCH mtd-utils] include sys/sysmacros.h for major/minor/makedev
+
+These functions have always been defined in sys/sysmacros.h under
+Linux C libraries.  For some, including sys/types.h implicitly
+includes that as well, but glibc wants to deprecate that, and some
+others already have.  Include the header explicitly for the funcs.
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ include/common.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/include/common.h
++++ b/include/common.h
+@@ -27,6 +27,7 @@
+ #include <fcntl.h>
+ #include <errno.h>
+ #include <inttypes.h>
++#include <sys/sysmacros.h>
+ #include "version.h"
+ #ifndef PROGRAM_NAME
diff --git a/tools/squashfs/patches/130-include_sysmacros.patch b/tools/squashfs/patches/130-include_sysmacros.patch
new file mode 100644 (file)
index 0000000..f0149d6
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/squashfs-tools/mksquashfs.c
++++ b/squashfs-tools/mksquashfs.c
+@@ -30,6 +30,7 @@
+ #include <unistd.h>
+ #include <stdio.h>
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <errno.h>
+--- a/squashfs-tools/unsquashfs.c
++++ b/squashfs-tools/unsquashfs.c
+@@ -25,6 +25,7 @@
+ #define FALSE 0
+ #include <stdio.h>
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <errno.h>
diff --git a/tools/squashfs4/patches/130-include_sysmacros.patch b/tools/squashfs4/patches/130-include_sysmacros.patch
new file mode 100644 (file)
index 0000000..e884513
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/squashfs-tools/mksquashfs.c
++++ b/squashfs-tools/mksquashfs.c
+@@ -33,6 +33,7 @@
+ #include <stddef.h>
+ #include <sys/time.h>
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <errno.h>
+--- a/squashfs-tools/unsquashfs.c
++++ b/squashfs-tools/unsquashfs.c
+@@ -30,6 +30,7 @@
+ #include "xattr.h"
+ #include <sys/types.h>
++#include <sys/sysmacros.h>
+ struct cache *fragment_cache, *data_cache;
+ struct queue *to_reader, *to_deflate, *to_writer, *from_writer;
index ad69b190ea9f1d2335d7b83e8b0a26700dd5c05c..bc7d6c7a4a06b7ed62233a263dce68d935317621 100644 (file)
@@ -16,7 +16,7 @@
  #define SQUASHFS_METADATA_LOG         13
 --- a/squashfs-tools/unsquashfs.c
 +++ b/squashfs-tools/unsquashfs.c
-@@ -1463,10 +1463,12 @@ int read_super(char *source)
+@@ -1464,10 +1464,12 @@ int read_super(char *source)
         */
        read_fs_bytes(fd, SQUASHFS_START, sizeof(struct squashfs_super_block),
                &sBlk_4);
@@ -31,7 +31,7 @@
                        sBlk_4.s_minor == 0) {
                s_ops.squashfs_opendir = squashfs_opendir_4;
                s_ops.read_fragment = read_fragment_4;
-@@ -1479,7 +1481,11 @@ int read_super(char *source)
+@@ -1480,7 +1482,11 @@ int read_super(char *source)
                /*
                 * Check the compression type
                 */
@@ -44,7 +44,7 @@
                return TRUE;
        }
  
-@@ -1494,8 +1500,10 @@ int read_super(char *source)
+@@ -1495,8 +1501,10 @@ int read_super(char *source)
         * Check it is a SQUASHFS superblock
         */
        swap = 0;
@@ -57,7 +57,7 @@
                        squashfs_super_block_3 sblk;
                        ERROR("Reading a different endian SQUASHFS filesystem "
                                "on %s\n", source);
-@@ -1573,7 +1581,11 @@ int read_super(char *source)
+@@ -1574,7 +1582,11 @@ int read_super(char *source)
        /*
         * 1.x, 2.x and 3.x filesystems use gzip compression.
         */
index b9c1b5925d8526454a6bed5139bf6301a5896c02..4f7afd89cc914af1e2a05a469256a651beb4892d 100644 (file)
@@ -8,8 +8,8 @@
 +#include <sys/param.h>
 +#endif
  #include <sys/types.h>
+ #include <sys/sysmacros.h>
  #include <sys/stat.h>
- #include <fcntl.h>
 --- a/squashfs-tools/unsquashfs.h
 +++ b/squashfs-tools/unsquashfs.h
 @@ -25,6 +25,9 @@
index 27ebc6a2639be8d3b303e34ab73e224f394d9b2d..8cab12083259492095016c8032a25b13b3fe8784 100644 (file)
@@ -1,6 +1,6 @@
 --- a/squashfs-tools/mksquashfs.c
 +++ b/squashfs-tools/mksquashfs.c
-@@ -735,13 +735,13 @@ void cache_block_put(struct file_buffer
+@@ -736,13 +736,13 @@ void cache_block_put(struct file_buffer
                        + (((char *)A) - data_cache)))
  
  
@@ -16,7 +16,7 @@
  {
        pthread_mutex_lock(&progress_mutex);
        pthread_cond_signal(&progress_wait);
-@@ -749,7 +749,7 @@ inline void update_progress_bar()
+@@ -750,7 +750,7 @@ inline void update_progress_bar()
  }
  
  
@@ -25,7 +25,7 @@
  {
        TRACE("Waiting for thread %d\n", i);
        while(thread[i] != 0)
-@@ -3358,7 +3358,7 @@ struct inode_info *lookup_inode(struct s
+@@ -3359,7 +3359,7 @@ struct inode_info *lookup_inode(struct s
  }
  
  
index 5cec51f7b7ea716b76fdb63db307728728f21f44..7411b97844978d5c7a4ec0030bd204a3fadb5c64 100644 (file)
@@ -1,6 +1,6 @@
 --- a/squashfs-tools/mksquashfs.c
 +++ b/squashfs-tools/mksquashfs.c
-@@ -175,6 +175,9 @@ unsigned int cache_bytes = 0, cache_size
+@@ -176,6 +176,9 @@ unsigned int cache_bytes = 0, cache_size
  /* inode lookup table */
  squashfs_inode *inode_lookup_table = NULL;
  
@@ -10,7 +10,7 @@
  /* in memory directory data */
  #define I_COUNT_SIZE          128
  #define DIR_ENTRIES           32
-@@ -2452,6 +2455,8 @@ again:
+@@ -2453,6 +2456,8 @@ again:
  restat:
        fstat(file, &buf2);
        close(file);
@@ -19,7 +19,7 @@
        if(read_size != buf2.st_size) {
                memcpy(buf, &buf2, sizeof(struct stat));
                file_buffer->error = 2;
-@@ -3612,7 +3617,7 @@ void dir_scan(squashfs_inode *inode, cha
+@@ -3613,7 +3618,7 @@ void dir_scan(squashfs_inode *inode, cha
                buf.st_mode = S_IRWXU | S_IRWXG | S_IRWXO | S_IFDIR;
                buf.st_uid = getuid();
                buf.st_gid = getgid();
@@ -28,7 +28,7 @@
                buf.st_dev = 0;
                buf.st_ino = 0;
                dir_ent->inode = lookup_inode(&buf);
-@@ -3623,6 +3628,8 @@ void dir_scan(squashfs_inode *inode, cha
+@@ -3624,6 +3629,8 @@ void dir_scan(squashfs_inode *inode, cha
                                pathname, strerror(errno));
                        return;
                }
@@ -37,7 +37,7 @@
                dir_ent->inode = lookup_inode(&buf);
        }
  
-@@ -3677,6 +3684,8 @@ struct dir_info *dir_scan1(char *pathnam
+@@ -3678,6 +3685,8 @@ struct dir_info *dir_scan1(char *pathnam
                                filename, strerror(errno));
                        continue;
                }
@@ -46,7 +46,7 @@
  
                if((buf.st_mode & S_IFMT) != S_IFREG &&
                        (buf.st_mode & S_IFMT) != S_IFDIR &&
-@@ -3795,7 +3804,7 @@ struct dir_info *dir_scan2(struct dir_in
+@@ -3796,7 +3805,7 @@ struct dir_info *dir_scan2(struct dir_in
                buf.st_gid = pseudo_ent->dev->gid;
                buf.st_rdev = makedev(pseudo_ent->dev->major,
                        pseudo_ent->dev->minor);
@@ -55,7 +55,7 @@
                buf.st_ino = pseudo_ino ++;
  
                if(pseudo_ent->dev->type == 'f') {
-@@ -4674,6 +4683,15 @@ int main(int argc, char *argv[])
+@@ -4675,6 +4684,15 @@ int main(int argc, char *argv[])
                        progress = FALSE;
                else if(strcmp(argv[i], "-no-exports") == 0)
                        exportable = FALSE;
@@ -71,7 +71,7 @@
                else if(strcmp(argv[i], "-processors") == 0) {
                        if((++i == argc) || (processors =
                                        strtol(argv[i], &b, 10), *b != '\0')) {
-@@ -5314,7 +5332,7 @@ printOptions:
+@@ -5315,7 +5333,7 @@ printOptions:
        sBlk.flags = SQUASHFS_MKFLAGS(noI, noD, noF, noX, no_fragments,
                always_use_fragments, duplicate_checking, exportable,
                no_xattrs, comp_opts);