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 \
$(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)
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)))
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)
$(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; \
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; \
}; \
$(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; \
$(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))
--- /dev/null
+ac_cv_func_futimens=no
+ac_cv_func_utimensat=no
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
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)
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
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
validate_system_section()
{
uci_validate_section system system "${1}" \
- 'hostname:string:librecmc' \
+ 'hostname:string:lede' \
'conloglevel:uinteger' \
'buffersize:uinteger' \
'timezone:string:UTC' \
[ -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
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"
+++ /dev/null
-#
-# 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))) \
-)
+++ /dev/null
-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
-
+++ /dev/null
-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
-
+++ /dev/null
-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
-
+++ /dev/null
-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
-
+++ /dev/null
-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
-
+++ /dev/null
-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
-
$(eval $(call KernelPackage,ne2k-pci))
+
define KernelPackage/e1000
SUBMENU:=$(NETWORK_DEVICES_MENU)
TITLE:=Intel(R) PRO/1000 PCI cards kernel support
# 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)
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)
(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)
include $(TOPDIR)/rules.mk
PKG_NAME:=om-watchdog
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_VERSION:=1
include $(INCLUDE_DIR)/package.mk
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
$(INSTALL_BIN) ./files/om-watchdog $(1)/sbin/om-watchdog
endef
-
$(eval $(call BuildPackage,om-watchdog))
-
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
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
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<buildpath>
- <buildpathentry kind="src" path="src"/>
- <buildpathentry kind="con" path="org.eclipse.dltk.launching.INTERPRETER_CONTAINER"/>
-</buildpath>
+++ /dev/null
-<?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>
+++ /dev/null
-<?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>
+++ /dev/null
-# 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.
-
+++ /dev/null
-# 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.
+++ /dev/null
-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
-
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
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
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
.. 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")
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")
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"))
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"),
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 (< 64 MB RAM)"))
+ translate("Enable memory intense overall sort / duplicate removal on low memory devices (< 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
font-size: 12px;
font-family: monospace;
resize: none;
+ white-space: pre;
+ overflow-wrap: normal;
+ overflow-x: scroll;
}
</style>
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 "
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 ""
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"
msgid ""
"Enable memory intense overall sort / duplicate removal on low memory devices "
-"(< 64 MB RAM)"
+"(< 64 MB free RAM)"
msgstr ""
-"Attiva l'ordinamento globale / rimozione duplicati stressante per la memoria "
-"su dispositivi con poca memoria (< 64 MB RAM)"
msgid "Enable verbose debug logging in case of any processing error."
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"
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."
"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 /"
msgid "Loading"
msgstr "Caricando"
-msgid "Manual / Backup mode"
-msgstr "Modalità Manuale / Backup"
-
msgid "No"
msgstr "No"
"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"
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"
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'."
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ì"
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 (< 64 MB RAM)"
+#~ msgstr ""
+#~ "Attiva l'ordinamento globale / rimozione duplicati stressante per la "
+#~ "memoria su dispositivi con poca memoria (< 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."
"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 "-------"
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 "
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 ディレクトリ)"
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 "ブラックリストの編集"
msgid ""
"Enable memory intense overall sort / duplicate removal on low memory devices "
-"(< 64 MB RAM)"
+"(< 64 MB free RAM)"
msgstr ""
-"メモリー容量の少ないデバイス(RAM 64MB 未満)において、一時ファイル内の全体的"
-"なソート及び重複の除去を有効にします。"
+"メモリー容量の少ないデバイス(RAM 空き領域 64MB 未満)において、一時ファイル"
+"内の全体的なソート及び重複の除去を有効にします。"
msgid "Enable verbose debug logging in case of any processing error."
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 の強制"
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 "入力ファイルが見つかりません。設定を確認してください。"
"で設定することができます。<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 /"
msgid "Loading"
msgstr "読込中"
-msgid "Manual / Backup mode"
-msgstr "手動 / バックアップ モード"
-
msgid "No"
msgstr "いいえ"
"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 "概要"
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 "検索"
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' の保存先ディレクトリです。"
msgid "Waiting for command to complete..."
msgstr "コマンド実行中です..."
+msgid "Whitelist File"
+msgstr "ホワイトリスト ファイル"
+
+msgid "Whitelist Mode"
+msgstr "ホワイトリスト モード"
+
msgid "Yes"
msgstr "はい"
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 ""
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 ""
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"
msgid ""
"Enable memory intense overall sort / duplicate removal on low memory devices "
-"(< 64 MB RAM)"
+"(< 64 MB free RAM)"
msgstr ""
-"Ativar tipo geral intenso de memória / duplicar remoção em dispositivos com "
-"pouca memória (< 64 MB RAM)"
msgid "Enable verbose debug logging in case of any processing error."
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"
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."
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 ""
msgid "Loading"
msgstr "Carregando"
-msgid "Manual / Backup mode"
-msgstr "Manual / Modo backup"
-
msgid "No"
msgstr "Não"
"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"
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"
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'."
msgid "Waiting for command to complete..."
msgstr "Aguardando por comando para completar..."
+msgid "Whitelist File"
+msgstr ""
+
+msgid "Whitelist Mode"
+msgstr ""
+
msgid "Yes"
msgstr "Sim"
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 (< 64 MB RAM)"
+#~ msgstr ""
+#~ "Ativar tipo geral intenso de memória / duplicar remoção em dispositivos "
+#~ "com pouca memória (< 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)"
msgstr "Content-Type: text/plain; charset=UTF-8\n"
msgid "-------"
-msgstr ""
+msgstr "-------"
msgid "Adblock"
msgstr "Adblock"
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 ""
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..."
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"
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"
msgid ""
"Enable memory intense overall sort / duplicate removal on low memory devices "
-"(< 64 MB RAM)"
+"(< 64 MB free RAM)"
msgstr ""
msgid "Enable verbose debug logging in case of any processing error."
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"
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."
msgstr "Ogiltig domän angiven!"
msgid "Last Run"
-msgstr ""
+msgstr "Kördes senast"
msgid ""
"List URLs and Shallalist category selections are configurable in the "
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 ""
msgid "Loading"
msgstr "Laddar"
-msgid "Manual / Backup mode"
-msgstr "Manuell / Säkerhetskopieringsläge"
-
msgid "No"
msgstr "Nej"
"Options for further tweaking in case the defaults are not suitable for you."
msgstr ""
-msgid "Overall Blocked Domains"
+msgid "Overall Domains"
msgstr ""
msgid "Overview"
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"
msgstr ""
msgid "Resume"
-msgstr ""
+msgstr "Återuppta"
msgid "Runtime Information"
msgstr "Information om körtid"
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'."
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)"
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 ""
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)"
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 ""
msgid ""
"Enable memory intense overall sort / duplicate removal on low memory devices "
-"(< 64 MB RAM)"
+"(< 64 MB free RAM)"
msgstr ""
msgid "Enable verbose debug logging in case of any processing error."
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 ""
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."
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 ""
msgid "Loading"
msgstr ""
-msgid "Manual / Backup mode"
-msgstr ""
-
msgid "No"
msgstr ""
"Options for further tweaking in case the defaults are not suitable for you."
msgstr ""
-msgid "Overall Blocked Domains"
+msgid "Overall Domains"
msgstr ""
msgid "Overview"
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"
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'."
msgid "Waiting for command to complete..."
msgstr ""
+msgid "Whitelist File"
+msgstr ""
+
+msgid "Whitelist Mode"
+msgstr ""
+
msgid "Yes"
msgstr ""
# 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"
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 "正在收集数据..."
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 "描述"
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"
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 "
-"(< 64 MB RAM)"
+"(< 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 "额外选项"
"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"
"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 (> 512 KB)."
-msgstr ""
+msgstr "文件大小太大,无法在 LuCI(> 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 "查看日志文件"
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 (< 64 MB RAM)"
+#~ msgstr "在低内存设备上启用耗用内存的整体排序/重复规则删除(<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 后端"
--- /dev/null
+# 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 "
+"(< 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 (> 512 KB)."
+msgstr "檔案大小太大,無法在 LuCI(> 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 (< 64 MB RAM)"
+#~ msgstr ""
+#~ "在低記憶體裝置上啟用耗用記憶體的整體排序/重複規則刪除(<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伺服器。"
msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
msgid "Action"
msgstr "Åtgärd"
"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 "
"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!"
-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 & 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 & 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 "基本设置"
--- /dev/null
+#
+# 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 & 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 "基本設定"
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
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>
--- /dev/null
+#!/bin/sh
+
+rm -rf /tmp/luci-indexcache /tmp/luci-modulecache/
+/etc/init.d/uhttpd restart
+
+return 0
--- /dev/null
+{
+ "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"
+ ]
+ }
+ }
+}
"correctly, you can add exceptions manually below."
msgstr ""
"自动检测上游 IP 是否会被当前配置所阻止,当检测到会被阻止时将会添加例外。如果"
-"自动检测无法正常工作,你可以在下面手动添加例外。"
+"自动检测无法正常工作,您可以在下面手动添加例外。"
msgid "Auto-detect upstream IP"
msgstr "自动检测上游 IP"
"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 "
--- /dev/null
+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 防火牆路由。"
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 "等待完整命令中..."
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://'"
+#
+# 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 "-- 自定义 --"
msgstr "高级设置"
msgid "Allow non-public IP's"
-msgstr "允许非公网IP"
+msgstr "允许非公网 IP"
msgid "Applying changes"
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 "使用的接口"
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 "检查时间周期"
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 "当前设置"
">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 "保存每一个运行中的设置的运行日志的目录"
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 "已启用"
"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 "请看这里获得关于参数设置的详细信息"
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 "信息"
"Install 'ca-certificates' package or needed certificates by hand into /etc/"
"ssl/certs default directory"
msgstr ""
+"手动将“ca-certificates”包或需要的证书安装到 /etc/ssl/certs 的默认目录中"
msgid "Interface"
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 "上次更新"
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 "从不"
msgstr "下次更新"
msgid "No certificates found"
-msgstr ""
+msgstr "找不到证书"
msgid "No data"
msgstr "无数据"
msgstr "无日志"
msgid "Non-public and by default blocked IP's"
-msgstr "非公网IP以及默认被锁定的IP"
+msgstr "非公网 IP 以及默认被锁定的 IP"
msgid "Notice"
msgstr "提示"
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 "总览"
msgstr "密码"
msgid "Path to CA-Certificate"
-msgstr "CA证书路径"
+msgstr "CA 证书路径"
msgid "Please [Save & Apply] your changes first"
msgstr "请先保存并应用您的设置"
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 "运行一次"
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 "状态目录"
msgstr "当前已安装的'ddns-scripts'软件包暂不支持所有可用设置项"
msgid "The default setting of '0' will retry infinite."
-msgstr ""
+msgstr "默认设置“0”将无限重试。"
msgid "There is no service configured."
msgstr "没有已经配置好的服务项"
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 "未知错误"
"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 "验证"
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 "配置错误"
msgstr "目录或者到文件的路径"
msgid "either url or script could be set"
-msgstr "接受URL或者脚本"
+msgstr "接受 URL 或者脚本"
msgid "enable here"
msgstr "在这里启用"
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 "分钟"
msgstr "必须以'http://'开头"
msgid "nc (netcat) can not connect"
-msgstr "nc(netcat)不可连接"
+msgstr "nc(netcat)不可连接"
msgid "never"
msgstr "从不"
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 "或者"
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 "请设置为\"默认\""
msgstr "秒"
msgid "to run HTTPS without verification of server certificates (insecure)"
-msgstr "使用HTTPS但不检查服务器证书(不安全)"
+msgstr "使用 HTTPS 但不检查服务器证书(不安全)"
msgid "unknown error"
msgstr "未知错误"
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 "
#~ 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."
+#
+# 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."
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的測試."
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"
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"
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-"
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"
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 ""
msgstr "Tid att vänta på svar i sekunder (standard 10)"
msgid "Timeout"
-msgstr ""
+msgstr "Avbrott"
msgid "Use Configuration"
msgstr "Använd konfiguration"
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()
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
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
--- /dev/null
+-- 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
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
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
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
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
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
"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 "ブラックリスト"
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"
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 "ファイル チェックサム"
"詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン Wiki</a> を確認して"
"ください。"
-msgid "General options"
-msgstr "全般設定"
+msgid "General Options"
+msgstr "全般オプション"
msgid "IP Address"
msgstr "IP アドレス"
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 "ローカル キャッシュ"
"受信した 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 "ポート"
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 "保存"
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 クエリを待ち受けるポートです。"
"このフォームでは、メインの 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 リゾルバ リストの内容が表示されます。"
"このオプションは、通常よりも 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 "ログファイルの確認"
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 ""
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."
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"
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"
"online</a>"
msgstr ""
-msgid "General options"
+msgid "General Options"
msgstr ""
msgid "IP Address"
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"
"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 ""
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"
msgid "Startup Trigger"
msgstr ""
+msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />"
+msgstr ""
+
msgid "The listening port for DNS queries."
msgstr ""
"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 ""
"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"
+#
+# 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"
"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"
"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>指定从属于这个区域的网络。"
msgid ""
"You may specify multiple by selecting \"-- custom --\" and then entering "
"protocols separated by space."
-msgstr "你也可以选择“--自定义--”来定义多个协议,在多个协议间需加空格。"
+msgstr "您也可以选择“--自定义--”来定义多个协议,在多个协议间需加空格。"
msgid "Zone %q"
msgstr "区域 %q"
+#
+# 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 "動作"
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 "外部埠"
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 "強制連線追蹤"
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"
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 "
"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 "
"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 "丟棄"
msgstr "拒絕"
msgid "traffic"
-msgstr ""
-
-#~ msgid "-- Please choose --"
-#~ msgstr "-- 請選擇 --"
-
-#~ msgid "-- custom --"
-#~ msgstr "-- 自訂 --"
+msgstr "通訊"
"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 "
"'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中另外的网关。"
#-- 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
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"
msgstr "频道"
msgid "Check this to protect your LAN from other nodes or clients"
-msgstr "选择此项,隔离其他节点或客户端的攻击来保护你的局域网"
+msgstr "选择此项,隔离其他节点或客户端的攻击来保护您的局域网"
msgid "Cleanup config"
msgstr "清空配置"
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. "
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
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:"),
msgid "Album art names:"
msgstr ""
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr ""
"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 ""
"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."
msgid "Album art names:"
msgstr ""
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr ""
"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 ""
"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."
msgid "Album art names:"
msgstr "Dateinamen für Cover-Bilder:"
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr "Angekündigte Modellnummer:"
"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 ""
"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 "
msgid "Album art names:"
msgstr ""
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr ""
"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 ""
"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."
msgid "Album art names:"
msgstr "Album art names:"
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr "Announced model number:"
"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 ""
"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."
msgid "Album art names:"
msgstr "Imágenes de álbumes:"
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr "Número de modelo declarado:"
"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."
"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."
msgid "Album art names:"
msgstr ""
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr ""
"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 ""
"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."
msgid "Album art names:"
msgstr ""
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr ""
"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 ""
"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."
msgid "Album art names:"
msgstr "Borító album nevek:"
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr "Közölt modellszám:"
"Á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 ""
"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."
msgid "Album art names:"
msgstr "Nome Copertina Album:"
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr "Numero modello annunciato:"
"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."
"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 ""
"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 "
"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."
"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."
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 "通知するモデル番号:"
"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 ""
"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 ソケットのパスを設定してください。"
"The miniDLNA service is active, serving %d audio, %d video and %d image "
"files."
msgstr ""
-"miniDLNA サービスは稼働中です。%d 個の音楽ファイル , %d 個のビデオファイル, %"
-"d 個の写真ファイルを認識しています。"
+"miniDLNA サービスは稼働中です。%d 個の音楽ファイル , %d 個のビデオファイル, "
+"%d 個の写真ファイルを認識しています。"
msgid "The miniDLNA service is not running."
msgstr "miniDLNA サービスは稼働していません。"
msgid "Album art names:"
msgstr ""
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr ""
"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 ""
"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."
msgid "Album art names:"
msgstr "Albumbilder navn:"
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr "Annonsert modellnummer:"
"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 "
"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 ""
"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."
msgid "Album art names:"
msgstr "Nazwy okładek albumów:"
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr "Rozgłaszany model:"
"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 ""
"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."
msgid "Album art names:"
msgstr "Nomes do Álbum artistico: "
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr "numero de modelo anunciado:"
"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 ""
"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."
msgid "Album art names:"
msgstr ""
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr "Número modelo anunciado:"
"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 ""
"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."
msgid "Album art names:"
msgstr ""
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr ""
"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 ""
"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."
msgid "Album art names:"
msgstr "Имена обложек альбома:"
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr "Номер модели:"
"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 ""
"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."
msgid "Album art names:"
msgstr ""
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr ""
"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 ""
"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."
msgid "Album art names:"
msgstr ""
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr ""
"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 ""
"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."
msgid "Album art names:"
msgstr ""
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr ""
"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 ""
"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."
msgid "Album art names:"
msgstr ""
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr ""
"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 ""
"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."
msgid "Album art names:"
msgstr ""
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr ""
"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 ""
"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."
msgid "Album art names:"
msgstr ""
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr ""
"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 ""
"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."
msgid "Album art names:"
msgstr "专辑封面名称:"
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr "通告型号:"
"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监控,自动发现新的文件。"
"设定严格遵守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的路径。"
msgid "Album art names:"
msgstr "專輯名稱"
+msgid "Allow wide links:"
+msgstr ""
+
msgid "Announced model number:"
msgstr "已宣告型號數量"
"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 ""
"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."
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
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
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
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
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
"警告: %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 ""
"警告: このルールは不適切なプロトコルが指定されているか、または何も指定されて"
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 ""
+#
+# 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 小时"
"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 "高级"
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 "收集故障排除信息时出错"
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 "刷新连接跟踪表"
msgstr "在接口事件触发时刷新全局防火墙连接跟踪表"
msgid "Globals"
-msgstr ""
+msgstr "全局"
msgid "Globals mwan3 options"
-msgstr ""
+msgstr "全局 mwan3 选项"
msgid "Hotplug Script"
msgstr "Hotplug 脚本"
msgstr "IPv6"
msgid "Initial state"
-msgstr ""
+msgstr "初始状态"
msgid "Interface"
msgstr "接口"
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 "接口"
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 "备用成员"
msgstr "载入中"
msgid "Local source interface"
-msgstr ""
+msgstr "本地源接口"
msgid "MWAN Config"
msgstr "MWAN 配置文件"
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 "成员"
"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 "网络配置文件"
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 "概况"
"的任意一个设置项使用相同的名称"
msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
-msgstr "单位为秒。接受的值: 1-1000000。留空则使用默认值 600 秒"
+msgstr "单位为秒。接受的值:1-1000000。留空则使用默认值 600 秒"
msgid "Source address"
msgstr "源地址"
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 个"
"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 />脚本的第一行必"
+"须是"#!/bin/sh",不带引号。<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 "流量规则"
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..."
msgstr "从不"
msgid "restart"
-msgstr ""
+msgstr "重启"
msgid "start"
-msgstr ""
+msgstr "启动"
msgid "stop"
-msgstr ""
+msgstr "停止"
msgid "unreachable (reject)"
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 />"
#~ "脚本的第一行必须是 "#!/bin/sh" 不含引号<br />以#开头的行是注释,"
#~ "不会执行<br /><br />可用变量:<br />$ACTION 是 Hotplug 事件(ifup, ifdown)"
--- /dev/null
+#
+# 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 "#!/bin/sh" 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 />指令碼的第一"
+"行必須是"#!/bin/sh",不帶引號。<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 "#!/bin/sh" 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 /"
+#~ ">指令碼的第一行必須是 "#!/bin/sh" 不含引號<br />以#開頭的行是註"
+#~ "釋,不會執行<br /><br />可用變數:<br />$ACTION 是 Hotplug 事件(ifup, "
+#~ "ifdown)<br />$INTERFACE 是介面名稱(wan1、wan2 等)<br />$DEVICE 是連線到"
+#~ "介面的設備名稱 (eth0.1、eth1 等)"
--- /dev/null
+# 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
--- /dev/null
+#!/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, "%&", "&")
+ value = string.gsub(value, "%<", "<")
+ value = string.gsub(value, '%"', """)
+ 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)
--- /dev/null
+-- 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
+
--- /dev/null
+-- 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
+
--- /dev/null
+<%#
+ 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%>
+
--- /dev/null
+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 ""
+"デバイスの識別や、ハックされたデバイスとボットネットの発見の改善に役立てるた"
+"め、統計をアップロードします。"
--- /dev/null
+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 ""
--- /dev/null
+#!/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
"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]",
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"
msgid "Enabled"
msgstr "Povoleno"
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
msgid "Encryption cipher for packets"
msgstr ""
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"
msgid "Enabled"
msgstr "Ενεργοποιημένο"
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
msgid "Encryption cipher for packets"
msgstr ""
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"
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"
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"
msgid "Enabled"
msgstr ""
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
msgid "Encryption cipher for packets"
msgstr ""
msgid "Enabled"
msgstr "Engedélyezve"
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
msgid "Encryption cipher for packets"
msgstr ""
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"
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"
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"
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 ""
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"
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"
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"
msgstr ""
msgid "HMAC authentication for packets"
-msgstr ""
+msgstr "Autenticazione HMAC per i pacchetti"
msgid "Handling of authentication failures"
msgstr ""
msgid "Enabled"
msgstr "有効"
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
msgid "Encryption cipher for packets"
msgstr ""
msgid "Enabled"
msgstr ""
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
msgid "Encryption cipher for packets"
msgstr ""
msgid "Enabled"
msgstr ""
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
msgid "Encryption cipher for packets"
msgstr ""
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"
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"
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"
msgid "Enabled"
msgstr ""
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
msgid "Encryption cipher for packets"
msgstr ""
msgid "Enabled"
msgstr "Включено"
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr "Шифровать и аутентифициоровать ключом все пакеты канала управления"
+
msgid "Encryption cipher for packets"
msgstr "Шифрование для пакетов"
msgid "Enabled"
msgstr ""
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
msgid "Encryption cipher for packets"
msgstr ""
msgid "Enabled"
msgstr ""
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
msgid "Encryption cipher for packets"
msgstr ""
msgid "Enabled"
msgstr ""
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
msgid "Encryption cipher for packets"
msgstr ""
msgid "Enabled"
msgstr ""
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
msgid "Encryption cipher for packets"
msgstr ""
msgid "Enabled"
msgstr ""
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
msgid "Encryption cipher for packets"
msgstr ""
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"
+#
+# 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 "接受从服务器发送过来的选项"
msgstr "建立连接后添加路由"
msgid "Additional authentication over TLS"
-msgstr "TLS以外的验证"
+msgstr "TLS 以外的验证"
msgid "Allow client-to-client traffic"
msgstr "允许客户端到客户端的通信"
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 "允许最大已连接客户端数"
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 "认证授权"
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 "连接重试时间间隔"
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 "自定义客户端配置文件的目录"
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 "不继承全局主动发送选项"
msgstr "不记录时间戳"
msgid "Don't pull routes automatically"
-msgstr ""
+msgstr "不自动拉取路由"
msgid "Don't re-read key on restart"
msgstr "服务重启时不重读密钥值"
msgstr "不需要客户的证书"
msgid "Don't use adaptive lzo compression"
-msgstr "不用自适应的lzo压缩"
+msgstr "不用自适应 lzo 压缩"
msgid "Don't warn on ifconfig inconsistencies"
-msgstr "ifconfig不一致时不警告"
+msgstr "ifconfig 不一致时不警告"
msgid "Echo parameters to log"
msgstr "把参数写入日志"
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 "
"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 "处理验证失败"
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 "如果主机名解析错误,重试"
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 设备"
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队列中输出包的最大数量"
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"
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 "传递环境变量至脚本"
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 "外部程序和脚本超出了策略允许的使用范围"
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 "随机选择远程服务器"
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 "传输若干字节后重新验证数据通道密钥"
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 "当客户端连接时在命令行下允许脚本"
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 "设置输出冗余级别"
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 "以静音的方式发出重播警告"
msgstr "指定路由默认网关"
msgid "Start OpenVPN in a hibernating state"
-msgstr "以休眠的状态打开OpenVPN"
+msgstr "以休眠的状态打开 OpenVPN"
msgid "Start/Stop"
msgstr "启动/停止"
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 "客户端连接返回文件的临时目录"
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 版本"
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 "采用协议"
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 "否"
msgstr "tun/tap 休眠超时"
msgid "yes (%i)"
-msgstr "是 (%i)"
+msgstr "是(%i)"
msgid "« Switch to basic configuration"
msgstr "« 基本配置"
+#
+# 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"
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+
msgid "Block Time"
msgstr "Tempo de bloqueio"
"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 ""
+#
+# 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 "接收语音邮箱的电子邮箱地址"
"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 "
"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 "本地存储目录"
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 "语音邮箱设置"
"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 "是"
"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 密码将不会显示。只有当您改变框中的数值时它才会变更。"
+#
+# 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 "
"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 "
"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 "
"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 密碼將不會顯示。只有當您改變框中的數值時它才會變更。"
"experiment to make sure you are blocking numbers from your desired area "
"successfully."
msgstr ""
-"输入你想自动屏蔽的电话号码。你应该忽略国家代码和任何前导零,但请测试来确保你成"
+"输入您想自动屏蔽的电话号码。您应该忽略国家代码和任何前导零,但请测试来确保您成"
"功屏蔽了想要屏蔽的号码。"
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 ""
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 "
"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 ""
"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 "
+#
+# 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 "高级设置"
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 "清除缓存文件周期"
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 "监听地址"
"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 "
"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 "启用"
+#
+# 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 "
"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 "狀態"
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 "啟用"
"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"
"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 "邮箱地址无效"
+#
+# 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 "计算开销"
msgstr "目的主机"
msgid "Download speed (kbit/s)"
-msgstr "下载速度 (kbit/s)"
+msgstr "下载速度(kbit/s)"
msgid "Enable"
msgstr "开启"
msgstr "QoS"
msgid "Quality of Service"
-msgstr "QOS服务"
+msgstr "服务质量(QoS)"
msgid "Source host"
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 "根据网络地址、端口或服务,给流量数据包排序。"
+msgstr ""
+"使用 <abbr title=\"Quality of Service\">QoS</abbr>,根据网络地址、端口或服"
+"务,为流量数据包排序。"
msgid "all"
msgstr "全部"
+#
+# 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連線位元組數"
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"
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"
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"
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"
"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"
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"
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"
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"
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"
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!"
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."
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."
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"
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"
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"
msgid "salted SHA-1"
msgstr "SHA-1 com salto"
-
+#
+# 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 "地址"
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\820 代表结点没有默认路由"
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 "DNSSL"
-msgstr "DNS搜索列表"
+msgstr "DNSSL"
msgid "DNSSL Configuration"
-msgstr "DNS搜索列表设置"
+msgstr "DNSSL 设置"
msgid "Default lifetime"
msgstr "默认生存时限"
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 "
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 "路由器公告报文中包含出接口的链路层地址"
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 "
msgid ""
"Indicates that this prefix can be used for on-link determination (RFC4861)"
-msgstr "表明此前缀能够用于on-link决定(RFC481)"
+msgstr "表明此前缀能够用于 on-link 决定(RFC481)"
msgid "Interface"
msgstr "接口"
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 "组播传输"
msgstr "已连接的目标"
msgid "Preference"
-msgstr "优先权"
+msgstr "首选项"
msgid "Preferred lifetime"
msgstr "期望的生存时间"
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 "可达延时"
msgstr "路由设置"
msgid "Routes"
-msgstr ""
+msgstr "路由"
msgid "Source link-layer address"
msgstr "源链路层地址"
"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 "说明这个物理接口连接到哪个网络"
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 "设定关联的默认路由的配置"
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 "单播"
msgstr "低"
msgid "medium"
-msgstr "中等"
+msgstr "中"
msgid "no"
msgstr "否"
+#
+# 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則為無限長"
+#
+# 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 "基本设置"
msgstr "主机名"
msgid "Mask for new directories"
-msgstr "新目录权限"
+msgstr "新目录权限掩码"
msgid "Mask for new files"
-msgstr "新文件权限"
+msgstr "新文件权限掩码"
msgid "Name"
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 "共享目录"
"('|') 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 "工作组"
+#
+# 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 "
"('|') 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 "物理路徑"
--- /dev/null
+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"
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"
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"
# Something wwrong?
msgid ""
"Become an active member of this community and help by operating your own node"
-msgstr "成为这个社区的一个活跃成员并且运营你自己的节点以帮助别人。"
+msgstr "成为这个社区的一个活跃成员并且运营您自己的节点以帮助别人。"
msgid "Blacklist"
msgstr "黑名单"
msgid ""
"If you operate your own wifi equipment use channels different from ours."
-msgstr "如果你操作你自有的wifi设备,使用与我们不同的频道"
+msgstr "如果您操作您自有的wifi设备,使用与我们不同的频道"
msgid "If you use this network on a regular basis we ask for your support:"
-msgstr "如果你经常使用这个网络,我们需要你的支持"
+msgstr "如果您经常使用这个网络,我们需要您的支持"
msgid "Include your own text in the default splash"
msgstr ""
msgstr ""
msgid "Your bandwidth is limited to"
-msgstr "你的带宽限制为"
+msgstr "您的带宽限制为"
msgid "blacklisted"
msgstr "黑名单"
# 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
#. %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
#. %H: ICMP Roundtrip Times
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8
msgid "stat_dg_title_ping"
-msgstr "%H: ICMP 往返时间"
+msgstr "%H:ICMP 往返时间"
#. ms
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9
#. %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 "%H: Netlink - %pi 上的数据传输"
+msgstr "%H:Netlink - %pi 上的数据传输"
#. Bytes/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15
#. %H: Netlink - Packets on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17
msgid "stat_dg_title_netlink__if_packets"
-msgstr "%H: Netlink - %pi 的数据包"
+msgstr "%H:Netlink - %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
#. %H: Netlink - Multicast on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22
msgid "stat_dg_title_netlink__if_multicast"
-msgstr "%H: Netlink - %pi 上的多播"
+msgstr "%H:Netlink - %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
#. %H: Netlink - Collisions on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25
msgid "stat_dg_title_netlink__if_collisions"
-msgstr "%H: Netlink - %pi 上的 Collisions"
+msgstr "%H:Netlink - %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 "%H: Netlink - %pi 上发生的错误"
+msgstr "%H:Netlink - %pi 上发生的错误"
#. Errors/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29
#. %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
#. %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
#. %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
#. %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
#. %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
#. %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
#. %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
#. %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
#. %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
#. %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
#. %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
+#
+# 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 "动作(目标)"
msgstr "新增通知命令"
msgid "Aggregate number of connected users"
-msgstr ""
+msgstr "连接用户总数"
msgid "Base Directory"
msgstr "基本目录"
msgstr "基本监控"
msgid "CPU Context Switches Plugin Configuration"
-msgstr ""
+msgstr "CPU Context Switches 插件配置"
msgid "CPU Frequency"
msgstr "CPU 频率"
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 "收集缓存数据"
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 "数据收集间隙"
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 "磁盘空间使用情况"
msgstr "显示时间段"
msgid "E-Mail Plugin Configuration"
-msgstr "E-Mail插件配置"
+msgstr "E-Mail 插件配置"
msgid "Email"
msgstr "电子邮件"
msgstr "Exec"
msgid "Exec Plugin Configuration"
-msgstr "Exec插件配置"
+msgstr "Exec 插件配置"
msgid "Filter class monitoring"
-msgstr "Filter类监测"
+msgstr "Filter 类监测"
msgid "Firewall"
msgstr "防火墙"
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 "图表"
"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 ""
"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 键来选择或取消选择多个项目。"
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 "忽略源地址"
msgstr "入接口"
msgid "Interface Plugin Configuration"
-msgstr "Interface插件配置"
+msgstr "Interface 插件配置"
msgid "Interfaces"
msgstr "Interfaces"
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 "自动保留对未选中接口的监控。"
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 "最大允许连接数"
msgstr "监测文件系统类型"
msgid "Monitor host"
-msgstr ""
+msgstr "监测主机"
msgid "Monitor hosts"
msgstr "监测主机"
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 "
msgstr "OLSRd"
msgid "OLSRd Plugin Configuration"
-msgstr "OLSRd插件配置"
+msgstr "OLSRd 插件配置"
msgid "Only create average RRAs"
-msgstr "仅创建平均RRAs"
+msgstr "仅创建平均 RRAs"
msgid "OpenVPN"
msgstr "OpenVPN"
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 "进程"
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"
msgstr "传感器"
msgid "Sensors Plugin Configuration"
-msgstr "传感器插件配置"
+msgstr "Sensors 插件配置"
msgid "Server host"
msgstr "服务器主机"
msgstr "整形类监控"
msgid "Show max values instead of averages"
-msgstr ""
+msgstr "显示最大值而不是平均值"
msgid "Socket file"
msgstr "套接字文件"
msgstr "套接字权限"
msgid "Source ip range"
-msgstr "源IP区间"
+msgstr "源 IP 区间"
msgid "Specifies what information to collect about links."
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 for the csv files"
-msgstr "csv存储目录"
+msgstr "csv 存储目录"
msgid "Store data values as rates instead of absolute values"
msgstr "存储数据值变化量而不是绝对值"
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 "ping包TTL"
+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 "
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 "
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-"
"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 "
"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 "
"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> "
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 "温感"
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 "尝试解析主机全域名"
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 "运行时间"
msgstr "使用更高级的命名规则"
msgid "Used PID file"
-msgstr "正在使用的PID文件"
+msgstr "正在使用的 PID 文件"
msgid "User"
msgstr "用户"
msgstr "无线"
msgid "Wireless iwinfo Plugin Configuration"
-msgstr "无线iwinfo插件配置"
+msgstr "无线 iwinfo 插件配置"
msgid ""
"You can install additional collectd-mod-* plugins to enable more statistics."
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 "秒数;多个使用空格分隔"
# 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 分鐘"
+#
+# 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-"
"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 "
"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 "
"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 "群名稱"
+#
+# 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 "计划限速始于"
msgstr "计划限速止于"
msgid "Alternative speed timing enabled"
-msgstr "启用计划限速"
+msgstr "计划限速已启用"
msgid "Alternative upload speed"
msgstr "临时上传速度"
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阻止清单"
msgstr "配置文件的目录"
msgid "DHT enabled"
-msgstr "启用DHT"
+msgstr "启用 DHT"
msgid "Debug"
msgstr "调试"
msgstr "下载目录"
msgid "Download queue enabled"
-msgstr "启用下载队列"
+msgstr "下载队列已启用"
msgid "Download queue size"
msgstr "下载队列大小"
msgstr "启用种子轮询目录"
msgid "Enabled"
-msgstr "启用"
+msgstr "å·²å\90¯ç\94¨"
msgid "Encryption"
msgstr "加密"
msgstr "全分配"
msgid "Global peer limit"
-msgstr "全局Peer限制"
+msgstr "全局 Peer 限制"
msgid "Global settings"
msgstr "全局设置"
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 "消息级别"
"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 "队列暂停分钟"
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 "重命名未完成文件"
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 "做种队列大小"
msgstr "下载限速"
msgid "Speed limit down enabled"
-msgstr "启用下载限速"
+msgstr "下载限速已启用"
msgid "Speed limit up"
msgstr "上传限速"
msgid "Speed limit up enabled"
-msgstr "启用上传限速"
+msgstr "上传限速已启用"
msgid "Transmission"
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 "删除种子源文件"
msgstr "轮询种子目录"
msgid "in minutes from midnight"
-msgstr "从晚上00:00起的分钟数,限速到临时速度"
+msgstr "从晚上 00:00 起的分钟数,限速到临时速度"
msgid "preallocation"
msgstr "磁盘预分配策略"
msgid "uTP enabled"
-msgstr "启用uTP"
+msgstr "uTP 已启用"
+#
+# 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 "加密"
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 已啟用"
<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>
<%
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%>"/>
<%=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)%>"/>
</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>
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")
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")
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
);
}
<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"> </th>
</tr>
<tr class="cbi-section-table-row">
msgid "Comment"
msgstr "Comentari"
-msgid "Delete Redirect"
-msgstr "Suprimeix la redirecció"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
msgid "Device UUID"
msgstr "UUID de dispositiu"
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."
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í"
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"
msgid "Comment"
msgstr "Kommentar"
-msgid "Delete Redirect"
-msgstr "Weiterleitung löschen"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
msgid "Device UUID"
msgstr "Geräte-UUID"
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"
msgid "Comment"
msgstr ""
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
msgstr ""
msgid "Device UUID"
msgid "Comment"
msgstr ""
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
msgstr ""
msgid "Device UUID"
msgid "Comment"
msgstr "Comentario"
-msgid "Delete Redirect"
-msgstr "Borrar redirección"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
msgid "Device UUID"
msgstr "UUID del dispositivo"
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"
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"
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"
msgid "Comment"
msgstr ""
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
msgstr ""
msgid "Device UUID"
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"
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"
msgid "Comment"
msgstr "Descrizione"
-msgid "Delete Redirect"
-msgstr "Cancella Mappatura"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
msgid "Device UUID"
msgstr "UUID del dispositivo"
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."
"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 "動作"
msgid "Comment"
msgstr "コメント"
-msgid "Delete Redirect"
-msgstr "リダイレクトを削除"
+msgid "Delete"
+msgstr "削除"
+
+msgid "Description"
+msgstr "説明"
msgid "Device UUID"
msgstr "デバイス UUID"
"UPnP allows clients in the local network to automatically configure the "
"router."
msgstr ""
-"UPnPを使用することで、ローカルネットワーク内のクライアントが自動的にルータを"
-"構成することができます。"
+"UPnPを使用することで、ローカルネットワーク内のクライアントが自動的にルータ"
+"を構成することができます。"
msgid "UPnP lease file"
msgstr "UPnP リースファイル"
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はあなたの使用するネットワークに対して、セキュリティリスクが生じる可能"
-#~ "性があるため、必要な場合のみ有効にしてください。"
msgid "Comment"
msgstr ""
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
msgstr ""
msgid "Device UUID"
msgid "Comment"
msgstr "Kommentar"
-msgid "Delete Redirect"
-msgstr "Fjern Viderekobling"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
msgid "Device UUID"
msgstr "Enhet UUID"
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."
msgid "Comment"
msgstr "Komentarz"
-msgid "Delete Redirect"
-msgstr "Usuń przekierowanie"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
msgid "Device UUID"
msgstr "UUID urządzenia"
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."
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"
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."
msgid "Comment"
msgstr ""
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
msgstr ""
msgid "Device UUID"
msgid "Comment"
msgstr "Comentariu"
-msgid "Delete Redirect"
-msgstr "Sterge redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
msgid "Device UUID"
msgstr "UUID al dispozitivului"
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"
msgid "Comment"
msgstr "Комментарий"
-msgid "Delete Redirect"
-msgstr "Удалить переадресацию"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
msgid "Device UUID"
msgstr "UUID устройства"
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 "
msgid "Comment"
msgstr ""
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
msgstr ""
msgid "Device UUID"
msgid "Comment"
msgstr "Kommentar"
-msgid "Delete Redirect"
-msgstr "Ta bort omdirigering"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
msgid "Device UUID"
msgstr "Enhetens UUID"
msgid "Value in KByte/s, informational only"
msgstr "Värde i KByte/s, endast informell"
+
+#~ msgid "Delete Redirect"
+#~ msgstr "Ta bort omdirigering"
msgid "Comment"
msgstr ""
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
msgstr ""
msgid "Device UUID"
msgid "Comment"
msgstr ""
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
msgstr ""
msgid "Device UUID"
msgid "Comment"
msgstr "Коментар"
-msgid "Delete Redirect"
-msgstr "Видалити переспрямування"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
msgid "Device UUID"
msgstr "UUID пристрою"
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."
msgid "Comment"
msgstr ""
-msgid "Delete Redirect"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
msgstr ""
msgid "Device UUID"
msgid "Comment"
msgstr "备注"
-msgid "Delete Redirect"
-msgstr "删除转发规则"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
msgid "Device UUID"
msgstr "设备UUID"
msgstr "外部端口"
msgid "General Settings"
-msgstr "ä¸\80è\88¬è®¾ç½®"
+msgstr "å\9fºæ\9c¬è®¾ç½®"
msgid "Internal addresses"
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."
msgid "Comment"
msgstr "評論"
-msgid "Delete Redirect"
-msgstr "刪除從導"
+msgid "Delete"
+msgstr ""
+
+msgid "Description"
+msgstr ""
msgid "Device UUID"
msgstr "設備UUID獨立識別碼"
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."
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 "選單下有選項讓您能夠設定並執行測試您系統上的語音操作. 這些都是已知的診斷方法"
--- /dev/null
+#
+# 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 "对于语法"
--- /dev/null
+#
+# 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 "對於語法"
"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 ""
"for hours or 'd' for days"
msgstr ""
"在周期模式,此处定义了重启的周期。在联网模式,这个表示没有网络连接情况下到执"
-"行重启的最长时间间隔。默认单位为秒,你可以使用'm'作为后缀表示分钟,‘h’表示小"
+"行重启的最长时间间隔。默认单位为秒,您可以使用'm'作为后缀表示分钟,‘h’表示小"
"时‘d’表示天。"
msgid "Operating mode"
+#
+# 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 "选择要唤醒的主机"
msgstr "选择使用的网络接口"
msgid "Send to broadcast address"
-msgstr ""
+msgstr "发送到广播地址"
#, fuzzy
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 "唤醒主机"
+#
+# 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 "網路喚醒程式"
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"
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'
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'
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)
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
{
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()
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
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 )
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
{ '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' },
{ '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' },
{ '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' },
{ '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' },
{ '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' },
{ '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' },
}
 ⇒ 
<% 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> 
- <% end %>
+ <% end end %>
<% if empty then %>
<label class="zonebadge zonebadge-empty">
<strong><%=zone:forward():upper()%></strong>
"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 ""
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"
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"
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"
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ó"
msgid "Download backup"
msgstr "Descarrega còpia de seguretat"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Instància de Dropbear"
"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 ""
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"
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"
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
msgstr "Genera l'arxiu"
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"
msgid "Identity"
msgstr "Identitat"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
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 ""
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"
"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 ""
"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 "
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..."
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 ""
"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 ""
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"
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í"
msgid "Download backup"
msgstr "Stáhnout zálohu"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Instance Dropbear"
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í"
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"
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
msgstr "Vytvorǐt archív"
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 ""
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 ""
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"
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"
msgid "Download backup"
msgstr "Backup herunterladen"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Dropbear Instanz"
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"
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"
msgid "Generate Config"
msgstr "Konfiguration generieren"
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
msgstr "Sicherung erstellen"
"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"
"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 ""
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"
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 "Παραμετροποίηση"
msgid "Download backup"
msgstr "Κατέβασμα αντιγράφου ασφαλείας"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr ""
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"
msgid "Extra SSH command options"
msgstr ""
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
msgid "File"
msgstr "Αρχείο"
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
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 ""
"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 ""
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"
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"
msgid "Download backup"
msgstr ""
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr ""
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
msgstr ""
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
msgid "Enable learning and aging"
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 ""
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
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 ""
"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 ""
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"
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"
msgid "Download backup"
msgstr "Descargar copia de seguridad"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Instancia Dropbear"
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"
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"
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
msgstr "Generar archivo"
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 ""
"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 ""
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"
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"
msgid "Download backup"
msgstr "Télécharger la sauvegarde"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Session Dropbear"
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"
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"
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
msgstr "Construire l'archive"
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 ""
"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 ""
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"
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 "הגדרות"
msgid "Download backup"
msgstr "הורד גיבוי"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr ""
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
msgstr ""
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
msgid "Enable learning and aging"
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 ""
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
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 ""
"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 ""
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"
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"
msgid "Download backup"
msgstr "Biztonsági mentés letöltése"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Dropbear példány"
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"
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"
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
msgstr "Archívum készítése"
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 ""
"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 ""
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"
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"
msgid "Download backup"
msgstr "Download backup"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Instanza di Dropbear"
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"
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"
msgid "Generate Config"
msgstr "Genera Configurazione"
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
msgstr "Genera Archivio"
"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"
"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"
"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 ""
"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"
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 ..."
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 ""
"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しています!"
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"
"を行う必要があります。"
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"
msgid "Allow remote hosts to connect to local SSH forwarded ports"
msgstr ""
-"リモートホストがSSH転送されたローカルのポートに接続することを許可します"
+"リモートホストがSSH転送されたローカルのポートに接続することを許可します。"
msgid "Allow root logins with password"
msgstr "パスワードでの root ログインを許可"
msgstr ""
msgid "Assign interfaces..."
-msgstr ""
+msgstr "インターフェースの割当て..."
msgid ""
"Assign prefix parts using this hexadecimal subprefix ID for this interface."
"Build/distribution specific feed definitions. This file will NOT be "
"preserved in any sysupgrade."
msgstr ""
-"ビルド/ディストリビューション固有のフィード定義です。このファイルはsysupgrade"
-"の際に引き継がれません。"
+"ビルド / ディストリビューション固有のフィード定義です。このファイルは"
+"sysupgradeの際に引き継がれません。"
msgid "Buttons"
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 "設定"
msgid "Download backup"
msgstr "バックアップ アーカイブのダウンロード"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Dropbear設定"
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 ""
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 "ファイル"
msgid "Generate Config"
msgstr "コンフィグ生成"
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
msgstr "バックアップ アーカイブの作成"
msgstr "最短保持時間"
msgid "Mirror monitor port"
-msgstr ""
+msgstr "ミラー監視ポート"
msgid "Mirror source port"
-msgstr ""
+msgstr "ミラー元ポート"
msgid "Missing protocol extension for proto %q"
msgstr "プロトコル %qのプロトコル拡張が見つかりません"
msgstr "ネットワークブート用イメージ"
msgid "Network without interfaces."
-msgstr ""
+msgstr "インターフェースの無いネットワークです。"
msgid "Next »"
msgstr "次 »"
msgstr "標準"
msgid "Not Found"
-msgstr ""
+msgstr "見つかりません"
msgid "Not associated"
msgstr "アソシエーションされていません"
"ネットから計算されます。"
msgid "Override the table used for internal routes"
-msgstr ""
+msgstr "内部ルートに使用されるテーブルを上書きします。"
msgid "Overview"
msgstr "概要"
msgstr "秘密鍵のパスワード"
msgid "Password of inner Private Key"
-msgstr ""
+msgstr "秘密鍵のパスワード"
msgid "Password successfully changed!"
msgstr "パスワードを変更しました"
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 "ピーク:"
"<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."
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 ""
"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 "
msgstr "UUID"
msgid "Unable to dispatch"
-msgstr ""
+msgstr "ディスパッチできません"
msgid "Unavailable Seconds (UAS)"
msgstr ""
msgstr "ゲートウェイ メトリックを使用する"
msgid "Use routing table"
-msgstr ""
+msgstr "ルーティング テーブルの使用"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
msgstr ""
msgid "User certificate (PEM encoded)"
-msgstr ""
+msgstr "ユーザー証明書(PEM エンコード)"
msgid "User key (PEM encoded)"
-msgstr ""
+msgstr "ユーザー秘密鍵(PEM エンコード)"
msgid "Username"
msgstr "ユーザー名"
msgstr "VDSL"
msgid "VLANs on %q"
-msgstr "%q上のVLANs"
+msgstr "%q上のVLAN"
msgid "VLANs on %q (%s)"
msgstr "%q上のVLAN (%s)"
msgstr "DHCPリクエスト送信時のベンダークラスを設定"
msgid "Verbose"
-msgstr ""
+msgstr "詳細"
msgid "Verbose logging by aiccu daemon"
msgstr ""
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 "警告"
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 ""
msgstr "最小値 1280、最大値 1480"
msgid "minutes"
-msgstr ""
+msgstr "分"
msgid "no"
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インターフェース"
"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 ""
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"
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 "설정"
msgid "Download backup"
msgstr "백업 다운로드"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr ""
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
msgstr ""
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
msgid "Enable learning and aging"
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 ""
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
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 ""
"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 ""
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"
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"
msgid "Download backup"
msgstr ""
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr ""
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
msgstr ""
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
msgid "Enable learning and aging"
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 ""
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
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 ""
"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 ""
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"
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"
msgid "Download backup"
msgstr "Last ned sikkerhetskopi"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Dropbear Instans"
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'"
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"
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
msgstr "Opprett arkiv"
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 ""
"|| 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 ""
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"
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"
msgid "Download backup"
msgstr "Pobierz kopię zapasową"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Usługa Dropbear"
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"
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"
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
msgstr "Twórz archiwum"
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 ""
"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!"
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"
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"
msgid "Download backup"
msgstr "Baixar a cópia de segurança"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Dropbear"
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"
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"
msgid "Generate Config"
msgstr "Gerar Configuração"
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
msgstr "Gerar arquivo"
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"
"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 ""
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"
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"
msgid "Download backup"
msgstr "Descarregar backup"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Instância do Dropbear"
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"
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"
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
msgstr "Gerar arquivo"
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 ""
"20)) ? 1 : 2);;\n"
"X-Generator: Pootle 2.0.6\n"
+msgid "%.1f dB"
+msgstr ""
+
msgid "%s is untagged in multiple VLANs!"
msgstr ""
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"
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"
msgid "Download backup"
msgstr "Descarca backup"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Instanta dropbear"
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
msgstr ""
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
msgid "Enable learning and aging"
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"
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
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 ""
"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 ""
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"
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 "Конфигурация"
msgid "Download backup"
msgstr "Загрузить резервную копию"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Dropbear"
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
msgstr ""
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
msgid "Enable learning and aging"
msgstr "Включить изучение и устаревание (learning/aging)"
msgid "Extra SSH command options"
msgstr ""
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
msgid "File"
msgstr "Файл"
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
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 ""
"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 ""
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"
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 ""
msgid "Download backup"
msgstr ""
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr ""
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
msgstr ""
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
msgid "Enable learning and aging"
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 ""
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
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 ""
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"
"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)"
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:"
msgstr ""
msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r Snabb förvandling"
msgid "802.11w Association SA Query maximum timeout"
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"
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 ""
msgstr ""
msgid "ATM Bridges"
-msgstr ""
+msgstr "ATM-bryggor"
msgid "ATM Virtual Channel Identifier (VCI)"
msgstr ""
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"
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 ""
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 "
msgstr ""
msgid "Bind interface"
-msgstr ""
+msgstr "Bind gränssnitt"
msgid "Bind only to specific interfaces rather than wildcard address."
msgstr ""
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 ""
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 "
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 "
msgstr ""
msgid "Cipher"
-msgstr ""
+msgstr "Chiffer"
msgid "Cisco UDP encapsulation"
msgstr ""
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 "
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 ""
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 ""
msgstr ""
msgid "Custom feeds"
-msgstr ""
+msgstr "Anpassade flöden"
msgid ""
"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
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 ""
msgstr ""
msgid "DSL"
-msgstr ""
+msgstr "DSL"
msgid "DSL Status"
-msgstr ""
+msgstr "DSL-status"
msgid "DSL line mode"
msgstr ""
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 "
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 ""
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"
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 "
msgstr ""
msgid "Dynamic tunnel"
-msgstr ""
+msgstr "Dynamisk tunnel"
msgid ""
"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
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 "
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 ""
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 ""
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 "
msgstr ""
msgid "Encryption"
-msgstr ""
+msgstr "Kryptering"
msgid "Endpoint Host"
msgstr ""
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 ""
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 "
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 ""
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 ""
msgstr ""
msgid "Forwarding mode"
-msgstr ""
+msgstr "Vidarebefordringsläge"
msgid "Fragmentation Threshold"
msgstr ""
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://"
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 "
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 ""
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 ""
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 ""
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 ""
msgstr ""
msgid "IPv6 address"
-msgstr ""
+msgstr "IPv6-adress"
msgid "IPv6 address delegated to the local tunnel endpoint (optional)"
msgstr ""
msgstr ""
msgid "IPv6 gateway"
-msgstr ""
+msgstr "IPv6-gateway"
msgid "IPv6 only"
-msgstr ""
+msgstr "Endast IPv6"
msgid "IPv6 prefix"
msgstr ""
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 ""
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 "
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 ""
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 "
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 ""
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 ""
msgstr ""
msgid "Link On"
-msgstr ""
+msgstr "Länk På"
msgid ""
"List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
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 ""
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 "
msgstr ""
msgid "Local server"
-msgstr ""
+msgstr "Lokal server"
msgid ""
"Localise hostname depending on the requesting subnet if multiple IPs are "
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 ""
msgstr ""
msgid "Login"
-msgstr ""
+msgstr "Logga in"
msgid "Logout"
-msgstr ""
+msgstr "Logga ut"
msgid "Loss of Signal Seconds (LOSS)"
msgstr ""
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 "
msgstr ""
msgid "Manual"
-msgstr ""
+msgstr "Manuell"
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
msgstr ""
msgid "Perform reboot"
-msgstr ""
+msgstr "Utför omstart"
msgid "Perform reset"
-msgstr ""
+msgstr "Utför återställning"
msgid "Persistent Keep Alive"
msgstr ""
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 ""
msgstr ""
msgid "Prefer LTE"
-msgstr ""
+msgstr "Föredra LTE"
msgid "Prefer UMTS"
-msgstr ""
+msgstr "Föredra UMTS"
msgid "Prefix Delegated"
msgstr ""
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 ""
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 ""
msgstr ""
msgid "RX"
-msgstr ""
+msgstr "RT"
msgid "RX Rate"
-msgstr ""
+msgstr "RX-hastighet"
msgid "RaLink 802.11%s Wireless Controller"
msgstr ""
"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 "
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 "
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 ""
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 ""
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 ""
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 ""
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 ""
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 "
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) "
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 & Apply"
-msgstr ""
+msgstr "Spara & 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 ""
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 "
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 "
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 ""
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 "
msgstr ""
msgid "Sort"
-msgstr ""
+msgstr "Sortera"
msgid "Source"
-msgstr ""
+msgstr "Källa"
msgid "Source routing"
msgstr ""
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 "
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 "
msgstr ""
msgid "Specify the secret encryption key here."
-msgstr ""
+msgstr "Ange den hemliga krypteringsnyckeln här."
msgid "Start"
msgstr ""
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 "
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 ""
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 ""
msgstr ""
msgid "The following changes have been committed"
-msgstr ""
+msgstr "Följande ändringar har skickats in"
msgid "The following changes have been reverted"
msgstr ""
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 "
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 "
"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 ""
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 ""
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 ""
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. "
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 ""
msgstr ""
msgid "Use as root filesystem (/)"
-msgstr ""
+msgstr "Använd som root-filsystem (/)"
msgid "Use broadcast flag"
msgstr ""
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 ""
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 ""
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 ""
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 "
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 ""
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 "
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 ""
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 "på"
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 ""
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"
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
+msgid "%.1f dB"
+msgstr ""
+
msgid "%s is untagged in multiple VLANs!"
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"
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 ""
msgid "Download backup"
msgstr ""
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr ""
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
msgstr ""
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
msgid "Enable learning and aging"
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 ""
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
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 ""
"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 ""
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"
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 ""
msgid "Download backup"
msgstr ""
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr ""
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
msgstr ""
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
msgid "Enable learning and aging"
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 ""
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
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 ""
"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 ""
"<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"
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 "Конфігурація"
msgid "Download backup"
msgstr "Завантажити резервну копію"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Реалізація Dropbear"
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
msgstr ""
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
msgid "Enable learning and aging"
msgstr "Увімкнути learning та aging"
msgid "Extra SSH command options"
msgstr ""
+msgid "FT over DS"
+msgstr ""
+
+msgid "FT over the Air"
+msgstr ""
+
+msgid "FT protocol"
+msgstr ""
+
msgid "File"
msgstr "Файл"
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
msgstr "Cтворити архів"
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 ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Pootle 1.1.0\n"
+msgid "%.1f dB"
+msgstr ""
+
msgid "%s is untagged in multiple VLANs!"
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"
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"
msgid "Download backup"
msgstr ""
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr ""
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
msgstr ""
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
msgid "Enable learning and aging"
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 ""
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
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 ""
"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 中均未关联!"
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"
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 "配置"
msgid "Download backup"
msgstr "下载备份"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Dropbear 实例"
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 "启用智能交换学习"
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 "文件"
msgid "Generate Config"
msgstr "生成配置"
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
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!"
"<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>)。"
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, "
"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?"
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 中的计划任务。"
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 默认路由"
"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"
"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 ""
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"
"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"
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 "設定"
msgid "Download backup"
msgstr "下載備份檔"
+msgid "Downstream SNR offset"
+msgstr ""
+
msgid "Dropbear Instance"
msgstr "Dropbear SSH例子"
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
msgstr ""
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
msgid "Enable learning and aging"
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 "檔案"
msgid "Generate Config"
msgstr ""
+msgid "Generate PMK locally"
+msgstr ""
+
msgid "Generate archive"
msgstr "製作壓縮檔"
"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</縮寫>"
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腳本"
"<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>)."
msgstr "封包數."
msgid "Please enter your username and password."
-msgstr "請輸入你的用戶名稱和密碼"
+msgstr "請輸入您的用戶名稱和密碼"
msgid "Policy"
msgstr "策略"
"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 "確定要重置回復原廠?"
"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 "確定要更換協定?"
msgstr "重開中..."
msgid "Reboots the operating system of your device"
-msgstr "重啟你設備的作業系統"
+msgstr "重啟您設備的作業系統"
msgid "Receive"
msgstr "接收"
msgstr "有些欄位失效, 無法儲存數值!"
msgid "Sorry, the object you requested was not found."
-msgstr "抱歉, 你請求的這物件尚無發現."
+msgstr "抱歉, 您請求的這物件尚無發現."
msgid "Sorry, the server encountered an unexpected error."
msgstr "抱歉, 伺服器遭遇非預期的錯誤."
"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 ""
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 "
"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 "
"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 "租賃尚未啟動."
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 ""
"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 "
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)
-- 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"))
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"))
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"})
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
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
"<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"),
"<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
-- 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
<%+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%>
<%+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%>
msgstr "如果选中,那么默认内容元素将不显示。"
msgid "If you are interested in our project then contact the local community"
-msgstr "如果你对我们的项目感兴趣,请联系当地的社区"
+msgstr "如果您对我们的项目感兴趣,请联系当地的社区"
msgid "Index Page"
msgstr "索引页"
"Internet access depends on technical and organisational conditions and may "
"or may not work for you."
msgstr ""
-"访问因特网取决于技术和机构的前提,可能会、也可能不会像你设想的那样运作。"
+"访问因特网取决于技术和机构的前提,可能会、也可能不会像您设想的那样运作。"
msgid "It is operated by"
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"
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 "您可以在这里手动编辑所选社区配置文件。"
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 "填写所有必填字段。"
return (netmod:ifnameof(ifc) == self:ifname())
end
-netmod:register_pattern_virtual("^ipip-%w")
+netmod:register_pattern_virtual("^ipip%-%w")
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
return (netmod:ifnameof(ifc) == self:ifname())
end
- netmod:register_pattern_virtual("^%s-%%w" % p)
+ netmod:register_pattern_virtual("^%s%%-%%w" % p)
end
end
end
-netmod:register_pattern_virtual("^aiccu-%%w")
+netmod:register_pattern_virtual("^aiccu%-%w")
return (netmod:ifnameof(ifc) == self:ifname())
end
-netmod:register_pattern_virtual("^ncm-%%w")
+netmod:register_pattern_virtual("^ncm%-%w")
end
-netmod:register_pattern_virtual("^vpn-%w")
+netmod:register_pattern_virtual("^vpn%-%w")
end
end
- netmod:register_pattern_virtual("^%s-%%w" % p)
+ netmod:register_pattern_virtual("^%s%%-%%w" % p)
end
return (netmod:ifnameof(ifc) == self:ifname())
end
-netmod:register_pattern_virtual("^qmi-%w")
+netmod:register_pattern_virtual("^qmi%-%w")
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")
end
-netmod:register_pattern_virtual("^vpn-%w")
+netmod:register_pattern_virtual("^vpn%-%w")
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/
}
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"
}
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
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
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
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
--- /dev/null
+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)
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
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>
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
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
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:=
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
+++ /dev/null
---- 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++;
}
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);
}
}
+++ /dev/null
-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);
+++ /dev/null
-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 */
+++ /dev/null
-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,
+++ /dev/null
---- 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
+++ /dev/null
-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");
+++ /dev/null
-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>
/* 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;
--- 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)
--- 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) \
#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;
/*
* 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;
/*
* 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.
*/
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;
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);
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;
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;
}
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;
--- 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;
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);
}
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;
}
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);
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;
* @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);
--- 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);
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);
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;
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);
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;
}
--- 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)
{
# 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
# 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
# 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"
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
# 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
# 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
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
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
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
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
# 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
# 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
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
# 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
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
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
# 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
# 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
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
# 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_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
--- 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);
+++ /dev/null
-#
-# 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))
+++ /dev/null
-#!/bin/sh
-
-. /lib/functions/uci-defaults.sh
-
-board_config_update
-
-ucidef_set_hostname "BenNanoNote"
-ucidef_set_ntpserver
-
-board_config_flush
-
-exit 0
+++ /dev/null
-config mount
- option target /card
- option device /dev/mmcblk0p1
- option fstype auto
- option options rw,sync
- option enabled 1
+++ /dev/null
-# 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
+++ /dev/null
-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
+++ /dev/null
-#
-# 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))
+++ /dev/null
-[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
-
+++ /dev/null
-
-
-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))
+++ /dev/null
-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;
-
+++ /dev/null
-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,
+++ /dev/null
-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? */
+++ /dev/null
-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 */
+++ /dev/null
-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;
- }
-
+++ /dev/null
-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");
+++ /dev/null
-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,
- },
- };
-
+++ /dev/null
-# 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
+++ /dev/null
-BOARDNAME:=QI Ben Nanonote (qi_lb60)
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
-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
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.
-This is the libreCMC SDK. It contains just the toolchain created
+This is the LEDE SDK. It contains just the toolchain created
by buildroot.
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
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
--- /dev/null
+--- 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
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
--- a/gdb/configure
+++ b/gdb/configure
-@@ -874,8 +874,7 @@ MAKEINFOFLAGS
+@@ -869,8 +869,7 @@ MAKEINFOFLAGS
YACC
YFLAGS
XMKMF'
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
--- 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=: ;;
,);;
*)
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
--- 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)
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})
+++ /dev/null
---- 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) \
--- /dev/null
+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)
--- /dev/null
+--- 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) \
+++ /dev/null
---- 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)
+++ /dev/null
-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})
--- /dev/null
+--- 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)
+++ /dev/null
---- 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
--- /dev/null
+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)
--- /dev/null
+--- 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
--- /dev/null
+--- 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>
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)
+++ /dev/null
-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>
--- /dev/null
+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
--- /dev/null
+--- 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>
--- /dev/null
+--- 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;
#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);
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
*/
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;
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.
*/
+#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 @@
--- 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)))
{
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()
}
{
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
}
--- 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;
/* 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);
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();
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;
}
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;
}
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);
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;
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);