luci-0.11: merge outstanding trunk changes
authorJo-Philipp Wich <jow@openwrt.org>
Tue, 18 Dec 2012 13:58:22 +0000 (13:58 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Tue, 18 Dec 2012 13:58:22 +0000 (13:58 +0000)
390 files changed:
Makefile
applications/luci-ahcp/luasrc/controller/ahcp.lua
applications/luci-asterisk/luasrc/controller/asterisk.lua
applications/luci-commands/Makefile [new file with mode: 0644]
applications/luci-commands/luasrc/controller/commands.lua [new file with mode: 0644]
applications/luci-commands/luasrc/model/cbi/commands.lua [new file with mode: 0644]
applications/luci-commands/luasrc/view/commands.htm [new file with mode: 0644]
applications/luci-coovachilli/luasrc/controller/coovachilli.lua
applications/luci-ddns/luasrc/controller/ddns.lua
applications/luci-ddns/luasrc/model/cbi/ddns/ddns.lua
applications/luci-diag-core/luasrc/controller/luci_diag.lua
applications/luci-diag-devinfo/luasrc/controller/luci_diag/devinfo_common.lua
applications/luci-diag-devinfo/luasrc/controller/luci_diag/luci_diag_devinfo.lua
applications/luci-diag-devinfo/luasrc/controller/luci_diag/netdiscover_common.lua
applications/luci-diag-devinfo/luasrc/controller/luci_diag/smap_common.lua
applications/luci-firewall/luasrc/controller/firewall.lua
applications/luci-freifunk-policyrouting/luasrc/controller/freifunk/policy-routing.lua
applications/luci-freifunk-policyrouting/luasrc/model/cbi/freifunk/policyrouting.lua
applications/luci-hd-idle/luasrc/controller/hd_idle.lua
applications/luci-ltqtapi/luasrc/controller/ltqtapi.lua
applications/luci-minidlna/luasrc/controller/minidlna.lua
applications/luci-minidlna/luasrc/view/minidlna_status.htm
applications/luci-mmc-over-gpio/luasrc/controller/mmc_over_gpio.lua
applications/luci-multiwan/luasrc/controller/multiwan.lua
applications/luci-ntpc/luasrc/controller/ntpc.lua
applications/luci-ntpc/luasrc/model/cbi/ntpc/ntpc.lua
applications/luci-ntpc/luasrc/model/cbi/ntpc/ntpcmini.lua
applications/luci-olsr/luasrc/controller/olsr.lua
applications/luci-olsr/luasrc/tools/olsr.lua
applications/luci-olsr/luasrc/view/status-olsr/neighbors.htm
applications/luci-openvpn/luasrc/controller/openvpn.lua
applications/luci-p2pblock/luasrc/controller/ff_p2pblock.lua
applications/luci-p910nd/luasrc/controller/p910nd.lua
applications/luci-p910nd/luasrc/model/cbi/p910nd.lua
applications/luci-polipo/luasrc/controller/polipo.lua
applications/luci-qos/luasrc/controller/qos.lua
applications/luci-qos/luasrc/model/cbi/qos/qos.lua
applications/luci-qos/luasrc/model/cbi/qos/qosmini.lua
applications/luci-radvd/luasrc/controller/radvd.lua
applications/luci-samba/luasrc/controller/samba.lua
applications/luci-splash/luasrc/controller/splash/splash.lua
applications/luci-splash/luasrc/model/cbi/splash/splash.lua
applications/luci-splash/luasrc/model/cbi/splash/splashtext.lua
applications/luci-splash/luasrc/view/admin_status/splash.htm
applications/luci-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
applications/luci-statistics/luasrc/model/cbi/luci_statistics/collectd.lua
applications/luci-statistics/luasrc/model/cbi/luci_statistics/nut.lua [new file with mode: 0644]
applications/luci-statistics/luasrc/statistics/i18n.lua
applications/luci-statistics/luasrc/statistics/rrdtool.lua
applications/luci-statistics/luasrc/statistics/rrdtool/definitions/cpu.lua
applications/luci-statistics/luasrc/statistics/rrdtool/definitions/load.lua
applications/luci-statistics/luasrc/statistics/rrdtool/definitions/nut.lua [new file with mode: 0644]
applications/luci-statistics/root/etc/config/luci_statistics
applications/luci-statistics/root/usr/bin/stat-genconfig
applications/luci-tinyproxy/luasrc/controller/tinyproxy.lua
applications/luci-transmission/luasrc/controller/transmission.lua
applications/luci-upnp/luasrc/controller/upnp.lua
applications/luci-upnp/luasrc/view/upnp_status.htm
applications/luci-ushare/luasrc/controller/ushare.lua
applications/luci-vnstat/luasrc/controller/vnstat.lua
applications/luci-voice-core/luasrc/controller/luci_voice.lua
applications/luci-voice-diag/luasrc/controller/luci_voice/luci_voice_diag.lua
applications/luci-wol/luasrc/controller/wol.lua
build/i18n-init.sh
contrib/package/community-profiles/files/etc/config/profile_hamburg [deleted file]
contrib/package/freifunk-p2pblock/Makefile
contrib/package/freifunk-p2pblock/files/freifunk-p2pblock.init
contrib/package/luci/Makefile
i18n/polish/root/etc/uci-defaults/luci-i18n-polish
libs/core/luasrc/model/firewall.lua
libs/core/luasrc/model/network.lua
libs/core/luasrc/util.lua
libs/ipkg/luasrc/model/ipkg.lua
libs/lmo/Makefile [deleted file]
libs/lmo/src/lmo.h [deleted file]
libs/lmo/src/lmo_core.c [deleted file]
libs/lmo/src/lmo_hash.c [deleted file]
libs/lmo/src/lmo_lookup.c [deleted file]
libs/lmo/src/lmo_lualib.c [deleted file]
libs/lmo/src/lmo_lualib.h [deleted file]
libs/lmo/src/lmo_po2lmo.c [deleted file]
libs/lmo/standalone.mk [deleted file]
libs/web/Makefile
libs/web/htdocs/luci-static/resources/cbi.js
libs/web/luasrc/cbi.lua
libs/web/luasrc/http.lua
libs/web/luasrc/i18n.lua
libs/web/luasrc/template.lua
libs/web/luasrc/view/cbi/apply_xhr.htm
libs/web/luasrc/view/cbi/footer.htm
libs/web/src/po2lmo.c [new file with mode: 0644]
libs/web/src/template_lmo.c [new file with mode: 0644]
libs/web/src/template_lmo.h [new file with mode: 0644]
libs/web/src/template_lualib.c
libs/web/src/template_lualib.h
libs/web/src/template_parser.c
libs/web/src/template_parser.h
libs/web/src/template_utils.c
libs/web/src/template_utils.h
libs/web/standalone.mk [new file with mode: 0644]
modules/admin-core/luasrc/controller/admin/servicectl.lua
modules/admin-core/luasrc/tools/status.lua
modules/admin-full/luasrc/controller/admin/network.lua
modules/admin-full/luasrc/controller/admin/status.lua
modules/admin-full/luasrc/model/cbi/admin_network/hosts.lua
modules/admin-full/luasrc/model/cbi/admin_network/vlan.lua
modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua
modules/admin-full/luasrc/view/admin_network/diagnostics.htm
modules/admin-full/luasrc/view/admin_network/switch_status.htm
modules/admin-full/luasrc/view/admin_network/wifi_overview.htm
modules/admin-full/luasrc/view/admin_status/connections.htm
modules/admin-full/luasrc/view/admin_status/index.htm
modules/admin-full/luasrc/view/admin_status/load.htm
modules/admin-full/luasrc/view/admin_status/wireless.htm
modules/admin-full/luasrc/view/admin_system/packages.htm
modules/admin-full/src/luci-bwc.c
modules/freifunk/luasrc/controller/freifunk/freifunk.lua
modules/freifunk/luasrc/model/cbi/freifunk/basics.lua
modules/freifunk/luasrc/model/cbi/freifunk/contact.lua
modules/freifunk/luasrc/model/cbi/freifunk/profile.lua
modules/freifunk/luasrc/model/cbi/freifunk/profile_expert.lua
modules/freifunk/luasrc/model/cbi/freifunk/user_index.lua
modules/freifunk/luasrc/view/freifunk-map/frame.htm
modules/freifunk/luasrc/view/freifunk-map/map.htm
modules/freifunk/luasrc/view/freifunk/adminindex.htm
po/ca/base.po
po/ca/commands.po [new file with mode: 0644]
po/ca/ddns.po
po/ca/diag_devinfo.po
po/ca/freifunk.po
po/ca/meshwizard.po
po/ca/statistics.po
po/cs/base.po
po/cs/commands.po [new file with mode: 0644]
po/cs/ddns.po
po/cs/diag_devinfo.po
po/cs/freifunk.po
po/cs/meshwizard.po
po/cs/statistics.po
po/de/base.po
po/de/commands.po [new file with mode: 0644]
po/de/ddns.po
po/de/diag_devinfo.po
po/de/freifunk-policyrouting.po
po/de/freifunk.po
po/de/meshwizard.po
po/de/mmc_over_gpio.po
po/de/olsr.po
po/de/openvpn.po
po/de/splash.po
po/de/statistics.po
po/de/tinyproxy.po
po/de/upnp.po
po/el/base.po
po/el/commands.po [new file with mode: 0644]
po/el/ddns.po
po/el/diag_devinfo.po
po/el/freifunk.po
po/el/meshwizard.po
po/el/statistics.po
po/en/base.po
po/en/commands.po [new file with mode: 0644]
po/en/ddns.po
po/en/diag_devinfo.po
po/en/freifunk.po
po/en/meshwizard.po
po/en/statistics.po
po/es/ahcp.po
po/es/base.po
po/es/commands.po [new file with mode: 0644]
po/es/ddns.po
po/es/diag_devinfo.po
po/es/freifunk.po
po/es/meshwizard.po
po/es/minidlna.po
po/es/ntpc.po
po/es/olsr.po
po/es/p2pblock.po
po/es/pbx.po
po/es/polipo.po
po/es/radvd.po
po/es/statistics.po
po/es/tinyproxy.po
po/fr/ahcp.po
po/fr/base.po
po/fr/commands.po [new file with mode: 0644]
po/fr/coovachilli.po
po/fr/ddns.po
po/fr/diag_core.po
po/fr/diag_devinfo.po
po/fr/freifunk.po
po/fr/hd_idle.po
po/fr/meshwizard.po
po/fr/mmc_over_gpio.po
po/fr/multiwan.po
po/fr/ntpc.po
po/fr/qos.po
po/fr/statistics.po
po/fr/tinyproxy.po
po/fr/upnp.po
po/fr/voice_core.po
po/he/base.po
po/he/commands.po [new file with mode: 0644]
po/he/ddns.po
po/he/diag_devinfo.po
po/he/freifunk.po
po/he/meshwizard.po
po/he/statistics.po
po/hu/base.po
po/hu/commands.po [new file with mode: 0644]
po/hu/ddns.po
po/hu/diag_devinfo.po
po/hu/freifunk.po
po/hu/meshwizard.po
po/hu/qos.po
po/hu/statistics.po
po/it/base.po
po/it/commands.po [new file with mode: 0644]
po/it/ddns.po
po/it/diag_devinfo.po
po/it/freifunk.po
po/it/meshwizard.po
po/it/minidlna.po
po/it/pbx.po
po/it/statistics.po
po/it/tinyproxy.po
po/ja/base.po
po/ja/commands.po [new file with mode: 0644]
po/ja/ddns.po
po/ja/diag_devinfo.po
po/ja/firewall.po
po/ja/freifunk.po
po/ja/hd_idle.po
po/ja/meshwizard.po
po/ja/ntpc.po
po/ja/olsr.po
po/ja/statistics.po
po/ja/watchcat.po
po/ms/base.po
po/ms/commands.po [new file with mode: 0644]
po/ms/ddns.po
po/ms/diag_devinfo.po
po/ms/freifunk.po
po/ms/meshwizard.po
po/ms/statistics.po
po/no/base.po
po/no/commands.po [new file with mode: 0644]
po/no/ddns.po
po/no/diag_devinfo.po
po/no/freifunk.po
po/no/meshwizard.po
po/no/statistics.po
po/pl/base.po
po/pl/commands.po [new file with mode: 0644]
po/pl/ddns.po
po/pl/diag_devinfo.po
po/pl/ffwizard.po
po/pl/freifunk.po
po/pl/meshwizard.po
po/pl/minidlna.po
po/pl/multiwan.po
po/pl/olsr.po
po/pl/pbx.po
po/pl/splash.po
po/pl/statistics.po
po/pl/tinyproxy.po
po/pl/transmission.po
po/pt/base.po
po/pt/commands.po [new file with mode: 0644]
po/pt/ddns.po
po/pt/diag_devinfo.po
po/pt/freifunk.po
po/pt/meshwizard.po
po/pt/statistics.po
po/pt_BR/base.po
po/pt_BR/commands.po [new file with mode: 0644]
po/pt_BR/ddns.po
po/pt_BR/diag_devinfo.po
po/pt_BR/freifunk.po
po/pt_BR/meshwizard.po
po/pt_BR/multiwan.po
po/pt_BR/olsr.po
po/pt_BR/pbx.po
po/pt_BR/statistics.po
po/pt_BR/transmission.po
po/ro/base.po
po/ro/commands.po [new file with mode: 0644]
po/ro/coovachilli.po
po/ro/ddns.po
po/ro/diag_devinfo.po
po/ro/freifunk.po
po/ro/meshwizard.po
po/ro/ntpc.po
po/ro/statistics.po
po/ru/ahcp.po
po/ru/base.po
po/ru/commands.po [new file with mode: 0644]
po/ru/coovachilli.po
po/ru/ddns.po
po/ru/diag_core.po
po/ru/diag_devinfo.po
po/ru/ffwizard.po
po/ru/freifunk-policyrouting.po
po/ru/freifunk.po
po/ru/hd_idle.po
po/ru/meshwizard.po
po/ru/minidlna.po
po/ru/mmc_over_gpio.po
po/ru/multiwan.po
po/ru/ntpc.po
po/ru/olsr.po
po/ru/openvpn.po
po/ru/p2pblock.po
po/ru/p910nd.po
po/ru/pbx-voicemail.po
po/ru/polipo.po
po/ru/qos.po
po/ru/radvd.po
po/ru/samba.po
po/ru/splash.po
po/ru/statistics.po
po/ru/tinyproxy.po
po/ru/transmission.po
po/ru/upnp.po
po/ru/ushare.po
po/ru/uvc_streamer.po
po/ru/vnstat.po
po/ru/voice_core.po
po/ru/voice_diag.po
po/ru/watchcat.po
po/ru/wol.po
po/ru/wshaper.po
po/templates/base.pot
po/templates/commands.pot [new file with mode: 0644]
po/templates/ddns.pot
po/templates/diag_devinfo.pot
po/templates/freifunk.pot
po/templates/meshwizard.pot
po/templates/olsr.pot
po/templates/statistics.pot
po/tr/base.po
po/tr/commands.po [new file with mode: 0644]
po/tr/ddns.po
po/tr/diag_devinfo.po
po/tr/freifunk.po
po/tr/meshwizard.po
po/tr/statistics.po
po/uk/base.po
po/uk/commands.po [new file with mode: 0644]
po/uk/ddns.po
po/uk/diag_devinfo.po
po/uk/freifunk.po
po/uk/meshwizard.po
po/uk/statistics.po
po/vi/base.po
po/vi/commands.po [new file with mode: 0644]
po/vi/ddns.po
po/vi/diag_devinfo.po
po/vi/freifunk.po
po/vi/meshwizard.po
po/vi/statistics.po
po/zh_CN/base.po
po/zh_CN/commands.po [new file with mode: 0644]
po/zh_CN/ddns.po
po/zh_CN/diag_devinfo.po
po/zh_CN/firewall.po
po/zh_CN/freifunk.po
po/zh_CN/meshwizard.po
po/zh_CN/minidlna.po
po/zh_CN/ntpc.po
po/zh_CN/p910nd.po
po/zh_CN/splash.po
po/zh_CN/statistics.po
po/zh_CN/tinyproxy.po
po/zh_CN/ushare.po
po/zh_CN/uvc_streamer.po
po/zh_CN/watchcat.po
po/zh_CN/wol.po
protocols/ppp/luasrc/model/network/proto_ppp.lua
themes/base/htdocs/luci-static/resources/Dropdowns.js [deleted file]
themes/base/htdocs/luci-static/resources/VarType.js [deleted file]
themes/base/htdocs/luci-static/resources/XHTML1.js [deleted file]
themes/bootstrap/htdocs/luci-static/bootstrap/cascade.css
themes/bootstrap/luasrc/view/themes/bootstrap/header.htm
themes/freifunk-bno/htdocs/luci-static/freifunk-bno/cascade.css
themes/freifunk-bno/luasrc/view/themes/freifunk-bno/header.htm
themes/freifunk-generic/htdocs/luci-static/freifunk-generic/cascade.css
themes/freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm
themes/openwrt/htdocs/luci-static/openwrt.org/cascade.css
themes/openwrt/luasrc/view/themes/openwrt.org/header.htm

index efccd79..7dc9fa1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -14,7 +14,7 @@ all: build
 build: gccbuild luabuild
 
 gccbuild:
-       make -C libs/lmo CC="cc" CFLAGS="" LDFLAGS="" SDK="$(shell test -f .running-sdk && echo 1)" host-install
+       make -C libs/web CC="cc" CFLAGS="" LDFLAGS="" SDK="$(shell test -f .running-sdk && echo 1)" host-install
        for i in $(MODULES); do \
                make -C$$i SDK="$(shell test -f .running-sdk && echo 1)" compile || { \
                        echo "*** Compilation of $$i failed!"; \
index 5667bb5..704ec4f 100644 (file)
@@ -19,7 +19,7 @@ function index()
                return
        end
 
-       entry({"admin", "network", "ahcpd"}, cbi("ahcp"), _("AHCP Server"), 90).i18n = "ahcp"
+       entry({"admin", "network", "ahcpd"}, cbi("ahcp"), _("AHCP Server"), 90)
        entry({"admin", "network", "ahcpd", "status"}, call("ahcp_status"))
 end
 
index ab05339..54b9525 100644 (file)
@@ -17,7 +17,7 @@ module("luci.controller.asterisk", package.seeall)
 
 function index()
 
-       entry({"admin", "services", "asterisk"},                                  cbi("asterisk"),                        "Asterisk",                           80).i18n = "asterisk"
+       entry({"admin", "services", "asterisk"},                                  cbi("asterisk"),                        "Asterisk",                           80)
 
        entry({"admin", "services", "asterisk", "voice"},         cbi("asterisk-voice"),      "Voice Functions",        1)
        entry({"admin", "services", "asterisk", "meetme"},        cbi("asterisk-meetme"),     "Meetme Conferences",     2)
diff --git a/applications/luci-commands/Makefile b/applications/luci-commands/Makefile
new file mode 100644 (file)
index 0000000..64801c2
--- /dev/null
@@ -0,0 +1,4 @@
+PO = commands
+
+include ../../build/config.mk
+include ../../build/module.mk
diff --git a/applications/luci-commands/luasrc/controller/commands.lua b/applications/luci-commands/luasrc/controller/commands.lua
new file mode 100644 (file)
index 0000000..b9f0ce8
--- /dev/null
@@ -0,0 +1,237 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2012 Jo-Philipp Wich <jow@openwrt.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+]]--
+
+module("luci.controller.commands", package.seeall)
+
+function index()
+       entry({"admin", "system", "commands"}, firstchild(), _("Custom Commands"), 80)
+       entry({"admin", "system", "commands", "dashboard"}, template("commands"), _("Dashboard"), 1)
+       entry({"admin", "system", "commands", "config"}, cbi("commands"), _("Configure"), 2)
+       entry({"admin", "system", "commands", "run"}, call("action_run"), nil, 3).leaf = true
+       entry({"admin", "system", "commands", "download"}, call("action_download"), nil, 3).leaf = true
+
+       entry({"command"}, call("action_public"), nil, 1).leaf = true
+end
+
+--- Decode a given string into arguments following shell quoting rules
+--- [[abc \def "foo\"bar" abc'def']] -> [[abc def]] [[foo"bar]] [[abcdef]]
+local function parse_args(str)
+       local args = { }
+
+       local function isspace(c)
+               if c == 9 or c == 10 or c == 11 or c == 12 or c == 13 or c == 32 then
+                       return c
+               end
+       end
+
+       local function isquote(c)
+               if c == 34 or c == 39 or c == 96 then
+                       return c
+               end
+       end
+
+       local function isescape(c)
+               if c == 92 then
+                       return c
+               end
+       end
+
+       local function ismeta(c)
+               if c == 36 or c == 92 or c == 96 then
+                       return c
+               end
+       end
+
+       --- Convert given table of byte values into a Lua string and append it to
+       --- the "args" table. Segment byte value sequence into chunks of 256 values
+       --- to not trip over the parameter limit for string.char()
+       local function putstr(bytes)
+               local chunks = { }
+               local csz = 256
+               local upk = unpack
+               local chr = string.char
+               local min = math.min
+               local len = #bytes
+               local off
+
+               for off = 1, len, csz do
+                       chunks[#chunks+1] = chr(upk(bytes, off, min(off + csz - 1, len)))
+               end
+
+               args[#args+1] = table.concat(chunks)
+       end
+
+       --- Scan substring defined by the indexes [s, e] of the string "str",
+       --- perform unquoting and de-escaping on the fly and store the result in
+       --- a table of byte values which is passed to putstr()
+       local function unquote(s, e)
+               local off, esc, quote
+               local res = { }
+
+               for off = s, e do
+                       local byte = str:byte(off)
+                       local q = isquote(byte)
+                       local e = isescape(byte)
+                       local m = ismeta(byte)
+
+                       if e then
+                               esc = true
+                       elseif esc then
+                               if m then res[#res+1] = 92 end
+                               res[#res+1] = byte
+                               esc = false
+                       elseif q and quote and q == quote then
+                               quote = nil
+                       elseif q and not quote then
+                               quote = q
+                       else
+                               if m then res[#res+1] = 92 end
+                               res[#res+1] = byte
+                       end
+               end
+
+               putstr(res)
+       end
+
+       --- Find substring boundaries in "str". Ignore escaped or quoted
+       --- whitespace, pass found start- and end-index for each substring
+       --- to unquote()
+       local off, esc, start, quote
+       for off = 1, #str + 1 do
+               local byte = str:byte(off)
+               local q = isquote(byte)
+               local s = isspace(byte) or (off > #str)
+               local e = isescape(byte)
+
+               if esc then
+                       esc = false
+               elseif e then
+                       esc = true
+               elseif q and quote and q == quote then
+                       quote = nil
+               elseif q and not quote then
+                       start = start or off
+                       quote = q
+               elseif s and not quote then
+                       if start then
+                               unquote(start, off - 1)
+                               start = nil
+                       end
+               else
+                       start = start or off
+               end
+       end
+
+       --- If the "quote" is still set we encountered an unfinished string
+       if quote then
+               unquote(start, #str)
+       end
+
+       return args
+end
+
+local function parse_cmdline(cmdid, args)
+       local uci = require "luci.model.uci".cursor()
+       if uci:get("luci", cmdid) == "command" then
+               local cmd = uci:get_all("luci", cmdid)
+               local argv = parse_args(cmd.command)
+               local i, v
+
+               if cmd.param == "1" and args then
+                       for i, v in ipairs(parse_args(luci.http.urldecode(args))) do
+                               argv[#argv+1] = v
+                       end
+               end
+
+               for i, v in ipairs(argv) do
+                       if v:match("[^%w%.%-i/]") then
+                               argv[i] = '"%s"' % v:gsub('"', '\\"')
+                       end
+               end
+
+               return argv
+       end
+end
+
+function action_run(...)
+       local fs   = require "nixio.fs"
+       local argv = parse_cmdline(...)
+       if argv then
+               local outfile = os.tmpname()
+               local errfile = os.tmpname()
+
+               local rv = os.execute(table.concat(argv, " ") .. " >%s 2>%s" %{ outfile, errfile })
+               local stdout = fs.readfile(outfile, 1024 * 512) or ""
+               local stderr = fs.readfile(errfile, 1024 * 512) or ""
+
+               fs.unlink(outfile)
+               fs.unlink(errfile)
+
+               local binary = not not (stdout:match("[%z\1-\8\14-\31]"))
+
+               luci.http.prepare_content("application/json")
+               luci.http.write_json({
+                       command  = table.concat(argv, " "),
+                       stdout   = not binary and stdout,
+                       stderr   = stderr,
+                       exitcode = rv,
+                       binary   = binary
+               })
+       else
+               luci.http.status(404, "No such command")
+       end
+end
+
+function action_download(...)
+       local fs   = require "nixio.fs"
+       local argv = parse_cmdline(...)
+       if argv then
+               local fd = io.popen(table.concat(argv, " ") .. " 2>/dev/null")
+               if fd then
+                       local chunk = fd:read(4096) or ""
+                       local name
+                       if chunk:match("[%z\1-\8\14-\31]") then
+                               luci.http.header("Content-Disposition", "attachment; filename=%s"
+                                                % fs.basename(argv[1]):gsub("%W+", ".") .. ".bin")
+                               luci.http.prepare_content("application/octet-stream")
+                       else
+                               luci.http.header("Content-Disposition", "attachment; filename=%s"
+                                                % fs.basename(argv[1]):gsub("%W+", ".") .. ".txt")
+                               luci.http.prepare_content("text/plain")
+                       end
+
+                       while chunk do
+                               luci.http.write(chunk)
+                               chunk = fd:read(4096)
+                       end
+
+                       fd:close()
+               else
+                       luci.http.status(500, "Failed to execute command")
+               end
+       else
+               luci.http.status(404, "No such command")
+       end
+end
+
+function action_public(cmdid, args)
+       local uci = require "luci.model.uci".cursor()
+       if cmdid and
+          uci:get("luci", cmdid) == "command" and
+          uci:get("luci", cmdid, "public") == "1"
+       then
+               action_download(cmdid, args)
+       else
+               luci.http.status(403, "Access to command denied")
+       end
+end
diff --git a/applications/luci-commands/luasrc/model/cbi/commands.lua b/applications/luci-commands/luasrc/model/cbi/commands.lua
new file mode 100644 (file)
index 0000000..1359eb2
--- /dev/null
@@ -0,0 +1,37 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2012 Jo-Philipp Wich <jow@openwrt.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+]]--
+
+local m, s
+
+m = Map("luci", translate("Custom Commands"),
+       translate("This page allows you to configure custom shell commands which can be easily invoked from the web interface."))
+
+s = m:section(TypedSection, "command", "")
+s.template = "cbi/tblsection"
+s.anonymous = true
+s.addremove = true
+
+
+s:option(Value, "name", translate("Description"),
+         translate("A short textual description of the configured command"))
+
+s:option(Value, "command", translate("Command"),
+         translate("Command line to execute"))
+
+s:option(Flag, "param", translate("Custom arguments"),
+         translate("Allow the user to provide additional command line arguments"))
+
+s:option(Flag, "public", translate("Public access"),
+         translate("Allow executing the command and downloading its output without prior authentication"))
+
+return m
diff --git a/applications/luci-commands/luasrc/view/commands.htm b/applications/luci-commands/luasrc/view/commands.htm
new file mode 100644 (file)
index 0000000..83792a9
--- /dev/null
@@ -0,0 +1,176 @@
+<%#
+LuCI - Lua Configuration Interface
+Copyright 2012 Jo-Philipp Wich <jow@openwrt.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+-%>
+
+<% css = [[
+
+.commandbox {
+       height: 12em;
+       width: 30%;
+       float: left;
+       height: 12em;
+       margin: 5px;
+       position: relative;
+}
+
+.commandbox h3 {
+       font-size: 1.5em !important;
+       line-height: 2em !important;
+       margin: 0 !important;
+}
+
+.commandbox input[type="text"] {
+       width: 50% !important;
+}
+
+.commandbox div {
+       position: absolute;
+       left: 0;
+       bottom: 1.5em;
+}
+
+]] -%>
+
+<%+header%>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+       var stxhr = new XHR();
+
+       function command_run(id)
+       {
+               var args;
+               var field = document.getElementById(id);
+               if (field)
+                       args = encodeURIComponent(field.value);
+
+               var legend = document.getElementById('command-rc-legend');
+               var output = document.getElementById('command-rc-output');
+
+               if (legend && output)
+               {
+                       output.innerHTML =
+                               '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' +
+                               '<%:Waiting for command to complete...%>'
+                       ;
+
+                       legend.parentNode.style.display = 'block';
+                       legend.style.display = 'inline';
+
+                       stxhr.get('<%=luci.dispatcher.build_url("admin", "system", "commands", "run")%>/' + id + (args ? '/' + args : ''), null,
+                               function(x, st)
+                               {
+                                       if (st)
+                                       {
+                                               if (st.binary)
+                                                       st.stdout = '[<%:Binary data not displayed, download instead.%>]';
+
+                                               legend.style.display = 'none';
+                                               output.innerHTML = String.format(
+                                                       '<pre><strong># %h\n</strong>%h<span style="color:red">%h</span></pre>' +
+                                                       '<div class="alert-message warning">%s (<%:Code:%> %d)</div>',
+                                                       st.command, st.stdout, st.stderr,
+                                                       (st.exitcode == 0) ? '<%:Command successful%>' : '<%:Command failed%>',
+                                                       st.exitcode);
+                                       }
+                                       else
+                                       {
+                                               legend.style.display = 'none';
+                                               output.innerHTML = '<span class="error"><%:Failed to execute command!%></span>';
+                                       }
+
+                                       location.hash = '#output';
+                               }
+                       );
+               }
+       }
+
+       function command_download(id)
+       {
+               var args;
+               var field = document.getElementById(id);
+               if (field)
+                       args = encodeURIComponent(field.value);
+
+               location.href = '<%=luci.dispatcher.build_url("admin", "system", "commands", "download")%>/' + id + (args ? '/' + args : '');
+       }
+
+       function command_link(id)
+       {
+               var legend = document.getElementById('command-rc-legend');
+               var output = document.getElementById('command-rc-output');
+
+               var args;
+               var field = document.getElementById(id);
+               if (field)
+                       args = encodeURIComponent(field.value);
+
+               if (legend && output)
+               {
+                       var link = location.protocol + '//' + location.hostname +
+                                  (location.port ? ':' + location.port : '') +
+                                          location.pathname.split(';')[0] + 'command/' +
+                                          id + (args ? '/' + args : '');
+
+                       legend.style.display = 'none';
+                       output.parentNode.style.display = 'block';
+                       output.innerHTML = String.format(
+                               '<div class="alert-message"><%:Access command with%> <a href="%s">%s</a></div>',
+                               link, link
+                       );
+
+                       location.hash = '#output';
+               }
+       }
+
+//]]></script>
+
+<%
+       local uci = require "luci.model.uci".cursor()
+       local commands = { }
+
+       uci:foreach("luci", "command", function(s) commands[#commands+1] = s end)
+%>
+
+<form method="get" action="<%=pcdata(luci.http.getenv("REQUEST_URI"))%>">
+       <div class="cbi-map">
+               <h2><a id="content" name="content"><%:Custom Commands%></a></h2>
+
+               <fieldset class="cbi-section">
+                       <% local _, command; for _, command in ipairs(commands) do %>
+                       <div class="commandbox">
+                               <h3><%=pcdata(command.name)%></h3>
+                               <p><%:Command:%> <code><%=pcdata(command.command)%></code></p>
+                               <% if command.param == "1" then %>
+                                       <p><%:Arguments:%> <input type="text" id="<%=command['.name']%>" /></p>
+                               <% end %>
+                               <div>
+                                       <input type="button" value="<%:Run%>" class="cbi-button cbi-button-apply" onclick="command_run('<%=command['.name']%>')" />
+                                       <input type="button" value="<%:Download%>" class="cbi-button cbi-button-download" onclick="command_download('<%=command['.name']%>')" />
+                                       <% if command.public == "1" then %>
+                                               <input type="button" value="<%:Link%>" class="cbi-button cbi-button-link" onclick="command_link('<%=command['.name']%>')" />
+                                       <% end %>
+                               </div>
+                       </div>
+                       <% end %>
+
+                       <br style="clear:both" /><br />
+                       <a name="output"></a>
+               </fieldset>
+       </div>
+
+       <fieldset class="cbi-section" style="display:none">
+               <legend id="command-rc-legend"><%:Collecting data...%></legend>
+               <span id="command-rc-output"></span>
+       </fieldset>
+</form>
+
+<%+footer%>
index 73a2c51..aa0a5cc 100644 (file)
@@ -18,7 +18,6 @@ function index()
        local cc
 
        cc = entry( { "admin", "services", "coovachilli" },       cbi("coovachilli"),         _("CoovaChilli"),                90)
-       cc.i18n = "coovachilli"
        cc.subindex = true
 
        entry( { "admin", "services", "coovachilli", "network" }, cbi("coovachilli_network"), _("Network Configuration"),      10)
index e2f786b..0c7293d 100644 (file)
@@ -23,10 +23,8 @@ function index()
        local page
 
        page = entry({"admin", "services", "ddns"}, cbi("ddns/ddns"), _("Dynamic DNS"), 60)
-       page.i18n = "ddns"
        page.dependent = true
 
        page = entry({"mini", "network", "ddns"}, cbi("ddns/ddns", {autoapply=true}), _("Dynamic DNS"), 60)
-       page.i18n = "ddns"
        page.dependent = true
 end
index 42fb4a6..e477a24 100644 (file)
@@ -112,14 +112,19 @@ else
 end
 
 
-s:option(Value, "check_interval",
-       translate("Check for changed IP every")).default = 10
+ci = s:option(Value, "check_interval", translate("Check for changed IP every"))
+ci.datatype = "and(uinteger,min(1))"
+ci.default = 10
+
 unit = s:option(ListValue, "check_unit", translate("Check-time unit"))
 unit.default = "minutes"
 unit:value("minutes", translate("min"))
 unit:value("hours", translate("h"))
 
-s:option(Value, "force_interval", translate("Force update every")).default = 72
+fi = s:option(Value, "force_interval", translate("Force update every"))
+fi.datatype = "and(uinteger,min(1))"
+fi.default = 72
+
 unit = s:option(ListValue, "force_unit", translate("Force-time unit"))
 unit.default = "hours"
 unit:value("minutes", translate("min"))
index c123994..4a8a020 100644 (file)
@@ -11,8 +11,6 @@ You may obtain a copy of the License at
 
 ]]--
 
-require("luci.i18n")
-
 module("luci.controller.luci_diag", package.seeall)
 
 function index()
@@ -20,11 +18,9 @@ function index()
 
        e = entry({"admin", "network", "diag_config"}, template("diag/network_config_index") , _("Configure Diagnostics"), 120)
        e.index = true
-       e.i18n = "diag_core"
        e.dependent = true
 
        e = entry({"mini", "diag"}, template("diag/index"), _("Diagnostics"), 120)
        e.index = true
-       e.i18n = "diag_core"
        e.dependent = true
 end
index 009054a..c124cd3 100644 (file)
@@ -38,8 +38,6 @@ end
 function parse_output(devmap, outnets, haslink, type, mini, debug)
    local curnet = next(outnets, nil)
 
-   luci.i18n.loadc("diag_devinfo")
-
    while (curnet) do
       local output = outnets[curnet]["output"]
       local subnet = outnets[curnet]["subnet"]
index e8a2f50..7a2fbd9 100644 (file)
@@ -19,49 +19,38 @@ function index()
    e = entry({"admin", "voice", "diag", "phones"}, arcombine(cbi("luci_diag/smap_devinfo"), cbi("luci_diag/smap_devinfo_config")), _("Phones"), 10)
    e.leaf = true
    e.subindex = true
-   e.i18n = "diag_devinfo"
    e.dependent = true
 
    e = entry({"admin", "voice", "diag", "phones", "config"}, cbi("luci_diag/smap_devinfo_config"), _("Configure"), 10)
-   e.i18n = "diag_devinfo"
 
    e = entry({"admin", "status", "smap_devinfo"}, cbi("luci_diag/smap_devinfo"), _("SIP Devices on Network"), 120)
    e.leaf = true
-   e.i18n = "diag_devinfo"
    e.dependent = true
 
    e = entry({"admin", "network", "diag_config", "netdiscover_devinfo_config"}, cbi("luci_diag/netdiscover_devinfo_config"), _("Network Device Scan"), 100)
    e.leaf = true
-   e.i18n = "diag_devinfo"
    e.dependent = true
 
    e = entry({"admin", "network", "diag_config", "smap_devinfo_config"}, cbi("luci_diag/smap_devinfo_config"), _("SIP Device Scan"))
    e.leaf = true
-   e.i18n = "diag_devinfo"
    e.dependent = true
 
    e = entry({"admin", "status", "netdiscover_devinfo"}, cbi("luci_diag/netdiscover_devinfo"), _("Devices on Network"), 90)
-   e.i18n = "diag_devinfo"
    e.dependent = true
 
    e = entry({"admin", "network", "mactodevinfo"}, cbi("luci_diag/mactodevinfo"), _("MAC Device Info Overrides"), 190)
-   e.i18n = "diag_devinfo"
    e.dependent = true
 
    e = entry({"mini", "diag", "phone_scan"}, cbi("luci_diag/smap_devinfo_mini"), _("Phone Scan"), 100)
-   e.i18n = "diag_devinfo"
    e.dependent = true
 
    e = entry({"mini", "voice", "phones", "phone_scan_config"}, cbi("luci_diag/smap_devinfo_config_mini"), _("Config Phone Scan"), 90)
-   e.i18n = "diag_devinfo"
    e.dependent = true
 
    e = entry({"mini", "diag", "netdiscover_devinfo"}, cbi("luci_diag/netdiscover_devinfo_mini"), _("Network Device Scan"), 10)
-   e.i18n = "diag_devinfo"
    e.dependent = true
 
    e = entry({"mini", "network", "netdiscover_devinfo_config"}, cbi("luci_diag/netdiscover_devinfo_config_mini"), _("Device Scan Config"))
-   e.i18n = "diag_devinfo"
    e.dependent = true
 
 end
index 95859ae..592ca1e 100644 (file)
@@ -83,7 +83,6 @@ function command_function(outnets, i)
 end
 
 function action_links(netdiscovermap, mini) 
-   luci.i18n.loadc("diag_devinfo")
    s = netdiscovermap:section(SimpleSection, "", translate("Actions")) 
    b = s:option(DummyValue, "_config", translate("Configure Scans"))
    b.value = ""
index 13ac91f..e9aeaa6 100644 (file)
@@ -94,7 +94,6 @@ function command_function(outnets, i)
 end
 
 function action_links(smapmap, mini) 
-   luci.i18n.loadc("diag_devinfo")
    s = smapmap:section(SimpleSection, "", translate("Actions")) 
    b = s:option(DummyValue, "_config", translate("Configure Scans"))
    b.value = ""
index c0149f8..5a6ab0a 100644 (file)
@@ -3,7 +3,7 @@ module("luci.controller.firewall", package.seeall)
 function index()
        entry({"admin", "network", "firewall"},
                alias("admin", "network", "firewall", "zones"),
-               _("Firewall"), 60).i18n = "firewall"
+               _("Firewall"), 60)
 
        entry({"admin", "network", "firewall", "zones"},
                arcombine(cbi("firewall/zones"), cbi("firewall/zone-details")),
index e8aca9c..ec087d9 100644 (file)
@@ -14,5 +14,5 @@ module "luci.controller.freifunk.policy-routing"
 
 function index()
        entry({"admin", "freifunk", "policyrouting"}, cbi("freifunk/policyrouting"),
-               _("Policy Routing"), 60).i18n = "freifunk-policyrouting"
+               _("Policy Routing"), 60)
 end
index 4361eb7..f7f0467 100644 (file)
@@ -10,7 +10,6 @@ You may obtain a copy of the License at
        http://www.apache.org/licenses/LICENSE-2.0
 ]]--
 
-luci.i18n.loadc("freifunk")
 local uci = require "luci.model.uci".cursor()
 
 m = Map("freifunk-policyrouting", translate("Policy Routing"), translate("These pages can be used to setup policy routing for certain firewall zones. "..
index e28983f..a6f4adc 100644 (file)
@@ -23,6 +23,5 @@ function index()
        local page
 
        page = entry({"admin", "services", "hd_idle"}, cbi("hd_idle"), _("hd-idle"), 60)
-       page.i18n = "hd_idle"
        page.dependent = true
 end
index 81baf39..abce09c 100644 (file)
@@ -22,7 +22,6 @@ function index()
        page.target = firstchild()
        page.title  = _("VoIP")
        page.order  = 90
-       page.i18n = "telephony"
 
        entry({"admin", "telephony", "account"}, cbi("luci_ltqtapi/account") , _("Account"), 10)
        entry({"admin", "telephony", "contact"}, cbi("luci_ltqtapi/contact") , _("Contacts"), 20)
index 1bd5617..500c90a 100644 (file)
@@ -22,7 +22,6 @@ function index()
        local page
 
        page = entry({"admin", "services", "minidlna"}, cbi("minidlna"), _("miniDLNA"))
-       page.i18n = "minidlna"
        page.dependent = true
 
        entry({"admin", "services", "minidlna_status"}, call("minidlna_status"))
index a2336f7..098a72a 100644 (file)
@@ -1,5 +1,3 @@
-<%- luci.i18n.loadc("minidlna") -%>
-
 <script type="text/javascript">//<![CDATA[
        XHR.poll(5, '<%=luci.dispatcher.build_url("admin/services/minidlna_status")%>', null,
                function(x, st)
index 5abceab..b9984cb 100644 (file)
@@ -23,6 +23,5 @@ function index()
        local page
 
        page = entry({"admin", "system", "mmc_over_gpio"}, cbi("mmc_over_gpio"), _("MMC/SD driver configuration"), 60)
-       page.i18n = "mmc_over_gpio"
        page.dependent = true
 end
index 6aa4cf4..b596ef7 100644 (file)
@@ -9,13 +9,11 @@ function index()
        local page
 
        page = entry({"admin", "network", "multiwan"}, cbi("multiwan/multiwan"), _("Multi-WAN"))
-       page.i18n = "multiwan"
        page.dependent = true
        
        entry({"admin", "network", "multiwan", "status"}, call("multiwan_status"))
 
        page = entry({"mini", "network", "multiwan"}, cbi("multiwan/multiwanmini", {autoapply=true}), _("Multi-WAN"))
-       page.i18n = "multiwan"
        page.dependent = true
 end
 function multiwan_status()
index 782e216..b7f4cdf 100644 (file)
@@ -23,10 +23,8 @@ function index()
        local page
 
        page = entry({"admin", "system", "ntpc"}, cbi("ntpc/ntpc"), _("Time Synchronisation"), 50)
-       page.i18n = "ntpc"
        page.dependent = true
 
        page = entry({"mini", "system", "ntpc"}, cbi("ntpc/ntpcmini", {autoapply=true}), _("Time Synchronisation"), 50)
-       page.i18n = "ntpc"
        page.dependent = true
 end
index ab7f73e..5265359 100644 (file)
@@ -20,14 +20,21 @@ s.addremove = false
 
 s:option(DummyValue, "_time", translate("Current system time")).value = os.date("%c")
 
-s:option(Value, "interval", translate("Update interval (in seconds)")).rmempty = true
-s:option(Value, "count", translate("Count of time measurements"), translate("empty = infinite")).rmempty = true
+interval = s:option(Value, "interval", translate("Update interval (in seconds)"))
+interval.datatype = "and(uinteger,min(1))"
+interval.rmempty = true
 
+count = s:option(Value, "count", translate("Count of time measurements"), translate("empty = infinite"))
+count.datatype = "and(uinteger,min(1))"
+count.rmempty = true
 
 s2 = m:section(TypedSection, "ntpdrift", translate("Clock Adjustment"))
 s2.anonymous = true
 s2.addremove = false
-s2:option(Value, "freq", translate("Offset frequency")).rmempty = true
+
+freq = s2:option(Value, "freq", translate("Offset frequency"))
+freq.datatype = "integer"
+freq.rmempty = true
 
 s3 = m:section(TypedSection, "ntpserver", translate("Time Servers"))
 s3.anonymous = true
@@ -35,6 +42,8 @@ s3.addremove = true
 s3.template = "cbi/tblsection"
 
 s3:option(Value, "hostname", translate("Hostname"))
-s3:option(Value, "port", translate("Port")).rmempty = true
+port = s3:option(Value, "port", translate("Port"))
+port.datatype = "port"
+port.rmempty = true
 
 return m
index 9b56337..2a6c415 100644 (file)
@@ -21,8 +21,9 @@ s.addremove = false
 
 s:option(DummyValue, "_time", translate("Current system time")).value = os.date("%c")
 
-s:option(Value, "interval", translate("Update interval (in seconds)")).rmempty = true
-
+interval = s:option(Value, "interval", translate("Update interval (in seconds)"))
+interval.datatype = "and(uinteger,min(1))"
+interval.rmempty = true
 
 s3 = m:section(TypedSection, "ntpserver", translate("Time Server"))
 s3.anonymous = true
@@ -30,6 +31,8 @@ s3.addremove = true
 s3.template = "cbi/tblsection"
 
 s3:option(Value, "hostname", translate("Hostname"))
-s3:option(Value, "port", translate("Port")).rmempty = true
+port = s3:option(Value, "port", translate("Port"))
+port.datatype = "port"
+port.rmempty = true
 
 return m
index 371bad8..0342bde 100644 (file)
@@ -8,7 +8,6 @@ function index()
        local page  = node("admin", "status", "olsr")
        page.target = template("status-olsr/overview")
        page.title  = _("OLSR")
-       page.i18n   = "olsr"
        page.subindex = true
 
        local page  = node("admin", "status", "olsr", "neighbors")
@@ -51,7 +50,6 @@ function index()
                {"admin", "services", "olsrd"},
                cbi("olsr/olsrd"), "OLSR"
        )
-       ol.i18n = "olsr"
        ol.subindex = true
 
        entry(
@@ -74,7 +72,6 @@ function index()
                cbi("olsr/olsrddisplay"), _("Display")
                )
 
-       oplg.i18n = "olsr"
        oplg.leaf = true
        oplg.subindex = true
 
index 4550102..425d09a 100644 (file)
@@ -16,11 +16,11 @@ function etx_color(etx)
        local color = "#bb3333"
        if etx == 0 then
                color = "#bb3333"
-       elseif etx < 4 then
+       elseif etx < 2 then
                color = "#00cc00"
-       elseif etx < 10 then
+       elseif etx < 4 then
                color = "#ffcb05"
-       elseif etx < 100 then
+       elseif etx < 10 then
                color = "#ff6600"
        end
        return color
index 029f585..669ddc2 100644 (file)
@@ -147,6 +147,10 @@ end
        <li><strong>LQ: </strong><%:Success rate of packages received from the neighbour%></li>
        <li><strong>NLQ: </strong><%:Success rate of packages sent to the neighbour%></li>
        <li><strong>ETX: </strong><%:Expected retransmission count%></li>
+       <li><strong><span style="color:#00cc00"><%:Green%></span></strong>:<%:Very good (ETX < 2)%></li> 
+       <li><strong><span style="color:#ffcb05"><%:Yellow%></span></strong>:<%:Good (2 < ETX < 4)%></li> 
+       <li><strong><span style="color:#ff6600"><%:Orange%></span></strong>:<%:Still usable (4 < ETX < 10)%></li> 
+       <li><strong><span style="color:#bb3333"><%:Red%></span></strong>:<%:Bad (ETX > 10)%></li> 
 </ul>
 </fieldset>
 <%+footer%>
index 691ce17..8695dae 100644 (file)
@@ -16,7 +16,7 @@ $Id$
 module("luci.controller.openvpn", package.seeall)
 
 function index()
-       entry( {"admin", "services", "openvpn"}, cbi("openvpn"), _("OpenVPN") ).i18n = "openvpn"
+       entry( {"admin", "services", "openvpn"}, cbi("openvpn"), _("OpenVPN") )
        entry( {"admin", "services", "openvpn", "basic"},    cbi("openvpn-basic"),    nil ).leaf = true
        entry( {"admin", "services", "openvpn", "advanced"}, cbi("openvpn-advanced"), nil ).leaf = true
 end
index 50c9e7a..887f187 100644 (file)
@@ -16,5 +16,5 @@ module("luci.controller.ff_p2pblock", package.seeall)
 
 function index()
        entry({"admin", "network", "firewall", "p2pblock"}, cbi("luci_fw/p2pblock"),
-               _("P2P-Block"), 40).i18n = "p2pblock"
+               _("P2P-Block"), 40)
 end
index bc38c2b..4efaef8 100644 (file)
@@ -23,6 +23,5 @@ function index()
        local page
 
        page = entry({"admin", "services", "p910nd"}, cbi("p910nd"), _("p910nd - Printer server"), 60)
-       page.i18n = "p910nd"
        page.dependent = true
 end
index e450a62..7580a3e 100644 (file)
@@ -2,6 +2,7 @@
 
 LuCI p910nd
 (c) 2008 Yanira <forum-2008@email.de>
+(c) 2012 Jo-Philipp Wich <jow@openwrt.org>
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
@@ -9,15 +10,17 @@ You may obtain a copy of the License at
 
         http://www.apache.org/licenses/LICENSE-2.0
 
-$Id$
-
 ]]--
 
 local uci = luci.model.uci.cursor_state()
+local net = require "luci.model.network"
+local m, s, p, b
 
 m = Map("p910nd", translate("p910nd - Printer server"),
         translatef("First you have to install the packages to get support for USB (kmod-usb-printer) or parallel port (kmod-lp)."))
 
+net = net.init(m.uci)
+
 s = m:section(TypedSection, "p910nd", translate("Settings"))
 s.addremove = true
 s.anonymous = true
@@ -26,6 +29,25 @@ s:option(Flag, "enabled", translate("enable"))
 
 s:option(Value, "device", translate("Device")).rmempty = true
 
+b = s:option(Value, "bind", translate("Interface"), translate("Specifies the interface to listen on."))
+b.template = "cbi/network_netlist"
+b.nocreate = true
+b.unspecified = true
+
+function b.cfgvalue(...)
+       local v = Value.cfgvalue(...)
+       if v then
+               return (net:get_status_by_address(v))
+       end
+end
+
+function b.write(self, section, value)
+       local n = net:get_network(value)
+       if n and n:ipaddr() then
+               Value.write(self, section, n:ipaddr())
+       end
+end
+
 p = s:option(ListValue, "port", translate("Port"), translate("TCP listener port."))
 p.rmempty = true
 for i=0,9 do
index d07eaeb..1113f8f 100644 (file)
@@ -19,7 +19,7 @@ function index()
                return
        end
 
-       entry({"admin", "services", "polipo"}, alias("admin", "services", "polipo", "config"), _("Polipo")).i18n = "polipo"
+       entry({"admin", "services", "polipo"}, alias("admin", "services", "polipo", "config"), _("Polipo"))
        entry({"admin", "services", "polipo", "status"}, template("polipo_status"), _("Status"))
        entry({"admin", "services", "polipo", "config"}, cbi("polipo"), _("Configuration"))
 end
index c9eb9e5..e356599 100644 (file)
@@ -22,10 +22,8 @@ function index()
        local page
 
        page = entry({"admin", "network", "qos"}, cbi("qos/qos"), _("QoS"))
-       page.i18n = "qos"
        page.dependent = true
 
        page = entry({"mini", "network", "qos"}, cbi("qos/qosmini", {autoapply=true}), _("QoS"))
-       page.i18n = "qos"
        page.dependent = true
 end
index 98e9a25..1af3bdb 100644 (file)
@@ -35,9 +35,11 @@ s:option(Flag, "overhead", translate("Calculate overhead"))
 
 s:option(Flag, "halfduplex", translate("Half-duplex"))
 
-s:option(Value, "download", translate("Download speed (kbit/s)"))
+dl = s:option(Value, "download", translate("Download speed (kbit/s)"))
+dl.datatype = "and(uinteger,min(1))"
 
-s:option(Value, "upload", translate("Upload speed (kbit/s)"))
+ul = s:option(Value, "upload", translate("Upload speed (kbit/s)"))
+ul.datatype = "and(uinteger,min(1))"
 
 s = m:section(TypedSection, "classify", translate("Classification Rules"))
 s.template = "cbi/tblsection"
index 9ffefec..0c5766f 100644 (file)
@@ -21,8 +21,12 @@ m = Map("qos")
 s = m:section(NamedSection, "wan", "interface", translate("Internet Connection"))
 
 s:option(Flag, "enabled", translate("Quality of Service"))
-s:option(Value, "download", translate("Downlink"), "kbit/s")
-s:option(Value, "upload", translate("Uplink"), "kbit/s")
+
+dl = s:option(Value, "download", translate("Downlink"), "kbit/s")
+dl.datatype = "and(uinteger,min(1))"
+
+ul = s:option(Value, "upload", translate("Uplink"), "kbit/s")
+ul.datatype = "and(uinteger,min(1))"
 
 s = m:section(TypedSection, "classify")
 s.template = "cbi/tblsection"
index 09e7646..58dcbb2 100644 (file)
@@ -19,7 +19,7 @@ function index()
                return
        end
 
-       entry({"admin", "network", "radvd"}, cbi("radvd"), _("Radvd"), 61).i18n = "radvd"
+       entry({"admin", "network", "radvd"}, cbi("radvd"), _("Radvd"), 61)
        entry({"admin", "network", "radvd", "interface"}, cbi("radvd/interface"), nil).leaf = true
        entry({"admin", "network", "radvd", "prefix"}, cbi("radvd/prefix"), nil).leaf = true
        entry({"admin", "network", "radvd", "route"}, cbi("radvd/route"), nil).leaf = true
index 7d53133..ee7d44a 100644 (file)
@@ -23,6 +23,5 @@ function index()
        local page
 
        page = entry({"admin", "services", "samba"}, cbi("samba"), _("Network Shares"))
-       page.i18n = "samba"
        page.dependent = true
 end
index aceeb4a..7358458 100644 (file)
@@ -1,28 +1,25 @@
 module("luci.controller.splash.splash", package.seeall)
-luci.i18n.loadc("splash")
 
 local uci = luci.model.uci.cursor()
 local util = require "luci.util"
 
 function index()
-       entry({"admin", "services", "splash"}, cbi("splash/splash"), _("Client-Splash"), 90).i18n = "freifunk"
+       entry({"admin", "services", "splash"}, cbi("splash/splash"), _("Client-Splash"), 90)
        entry({"admin", "services", "splash", "splashtext" }, form("splash/splashtext"), _("Splashtext"), 10)
 
        local e
        
        e = node("splash")
        e.target = call("action_dispatch")
-       e.i18n = "freifunk"
 
        node("splash", "activate").target = call("action_activate")
        node("splash", "splash").target   = template("splash_splash/splash")
        node("splash", "blocked").target  = template("splash/blocked")
 
-       entry({"admin", "status", "splash"}, call("action_status_admin"), _("Client-Splash")).i18n = "freifunk"
+       entry({"admin", "status", "splash"}, call("action_status_admin"), _("Client-Splash"))
 
        local page  = node("splash", "publicstatus")
        page.target = call("action_status_public")
-       page.i18n   = "freifunk"
        page.leaf   = true
 end
 
index c03cd45..47d7695 100644 (file)
@@ -9,7 +9,6 @@ You may obtain a copy of the License at
 ]]--
 
 require("luci.model.uci")
-luci.i18n.loadc("splash")
 
 m = Map("luci_splash", translate("Client-Splash"), translate("Client-Splash is a hotspot authentification system for wireless mesh networks."))
 
index 5b744e1..8748a93 100644 (file)
@@ -13,7 +13,6 @@ You may obtain a copy of the License at
 ]]--
 
 local fs = require "nixio.fs"
-luci.i18n.loadc("splash")
 
 local splashtextfile = "/usr/lib/luci-splash/splashtext.html" 
 
index d979219..56cbe01 100644 (file)
@@ -19,7 +19,6 @@ local ipt = require "luci.sys.iptparser".IptParser()
 local uci = require "luci.model.uci".cursor_state()
 local wat = require "luci.tools.webadmin"
 local fs  = require "nixio.fs"
-luci.i18n.loadc("splash")
 
 local clients = { }
 local leasetime = tonumber(uci:get("luci_splash", "general", "leasetime") or 1) * 60 * 60
index 2e25154..869384c 100644 (file)
@@ -50,6 +50,7 @@ function index()
                memory          = _("Memory"),
                netlink         = _("Netlink"),
                network         = _("Network"),
+               nut                     = _("UPS"),
                olsrd           = _("OLSRd"),
                ping            = _("Ping"),
                processes       = _("Processes"),
@@ -61,13 +62,12 @@ function index()
        -- our collectd menu
        local collectd_menu = {
                output  = { "csv", "network", "rrdtool", "unixsock" },
-               system  = { "cpu", "df", "disk", "email", "exec", "irq", "load", "memory", "processes" },
+               system  = { "cpu", "df", "disk", "email", "exec", "irq", "load", "memory", "nut", "processes" },
                network = { "conntrack", "dns", "interface", "iptables", "netlink", "olsrd", "ping", "tcpconns", "iwinfo" }
        }
 
        -- create toplevel menu nodes
        local st = entry({"admin", "statistics"}, template("admin_statistics/index"), _("Statistics"), 80)
-       st.i18n = "statistics"
        st.index = true
        
        entry({"admin", "statistics", "collectd"}, cbi("luci_statistics/collectd"), _("Collectd"), 10).subindex = true
@@ -82,7 +82,6 @@ function index()
                )
 
                e.index = true
-               e.i18n  = "rrdtool"
 
                for j, plugin in luci.util.vspairs( plugins ) do
                        _entry(
@@ -97,7 +96,6 @@ function index()
 
        -- output views
        local page = entry( { "admin", "statistics", "graph" }, template("admin_statistics/index"), _("Graphs"), 80)
-             page.i18n     = "statistics"
              page.setuser  = "nobody"
              page.setgroup = "nogroup"
 
index c1fd7a3..2343854 100644 (file)
@@ -19,7 +19,7 @@ require("luci.sys")
 m = Map("luci_statistics",
        translate("Collectd Settings"),
        translate(
-               "Collectd is a small daeomon for collecting data from " ..
+               "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."
        ))
diff --git a/applications/luci-statistics/luasrc/model/cbi/luci_statistics/nut.lua b/applications/luci-statistics/luasrc/model/cbi/luci_statistics/nut.lua
new file mode 100644 (file)
index 0000000..ad03071
--- /dev/null
@@ -0,0 +1,28 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright © 2011 Manuel Munz <freifunk at somakoma dot de>
+Copyright © 2012 David Woodhouse <dwmw2@infradead.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+]]--
+
+m = Map("luci_statistics",
+       translate("UPS Plugin Configuration"),
+       translate("The NUT plugin reads information about Uninterruptible Power Supplies."))
+
+s = m:section(NamedSection, "collectd_nut", "luci_statistics" )
+
+enable = s:option(Flag, "enable", translate("Enable this plugin"))
+enable.default = 0
+
+host = s:option(Value, "UPS", translate("UPS"), translate("UPS name in NUT ups@host format"))
+host.placeholder = "myupsname"
+host.datatype = "string"
+host.rmempty = true
+
+return m
index a279e91..a1a2fa9 100644 (file)
@@ -25,9 +25,6 @@ Instance = luci.util.class()
 function Instance.__init__( self, graph )
        self.i18n  = luci.i18n
        self.graph = graph
-
-       self.i18n.loadc("rrdtool")
-       self.i18n.loadc("statistics")
 end
 
 function Instance._subst( self, str, val )
index 844c157..dbcae9d 100644 (file)
@@ -156,11 +156,14 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index )
 
                if not ds or ds:len() == 0 then ds = "value" end
 
-               _tif( _args, "DEF:%s_avg=%s:%s:AVERAGE", inst, rrd, ds )
+               _tif( _args, "DEF:%s_avg_raw=%s:%s:AVERAGE", inst, rrd, ds )
+               _tif( _args, "CDEF:%s_avg=%s_avg_raw,%s", inst, inst, source.transform_rpn )
 
                if not self.opts.rrasingle then
-                       _tif( _args, "DEF:%s_min=%s:%s:MIN", inst, rrd, ds )
-                       _tif( _args, "DEF:%s_max=%s:%s:MAX", inst, rrd, ds )
+                       _tif( _args, "DEF:%s_min_raw=%s:%s:MIN", inst, rrd, ds )
+                       _tif( _args, "CDEF:%s_min=%s_min_raw,%s", inst, inst, source.transform_rpn )
+                       _tif( _args, "DEF:%s_max_raw=%s:%s:MAX", inst, rrd, ds )
+                       _tif( _args, "CDEF:%s_max=%s_max_raw,%s", inst, inst, source.transform_rpn )
                end
 
                _tif( _args, "CDEF:%s_nnl=%s_avg,UN,0,%s_avg,IF", inst, inst, inst )
@@ -180,20 +183,23 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index )
 
                -- is first source in stack or overlay source: source_stk = source_nnl
                if not prev or source.overlay then
-                       -- create cdef statement
+                       -- create cdef statement for cumulative stack (no NaNs) and also
+                        -- for display (preserving NaN where no points should be displayed)
                        _tif( _args, "CDEF:%s_stk=%s_nnl", source.sname, source.sname )
+                       _tif( _args, "CDEF:%s_plot=%s_avg", source.sname, source.sname )
 
                -- is subsequent source without overlay: source_stk = source_nnl + previous_stk
                else
                        -- create cdef statement
                        _tif( _args, "CDEF:%s_stk=%s_nnl,%s_stk,+", source.sname, source.sname, prev )
+                       _tif( _args, "CDEF:%s_plot=%s_avg,%s_stk,+", source.sname, source.sname, prev )
                end
 
                -- create multiply by minus one cdef if flip is enabled
                if source.flip then
 
                        -- create cdef statement: source_stk = source_stk * -1
-                       _tif( _args, "CDEF:%s_neg=%s_stk,-1,*", source.sname, source.sname )
+                       _tif( _args, "CDEF:%s_neg=%s_plot,-1,*", source.sname, source.sname )
 
                        -- push to negative stack if overlay is disabled
                        if not source.overlay then
@@ -253,11 +259,11 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index )
                -- derive area background color from line color
                area_color = self.colors:to_string( self.colors:faded( area_color ) )
 
-               -- choose source_stk or source_neg variable depending on flip state
+               -- choose source_plot or source_neg variable depending on flip state
                if source.flip then
                        var = "neg"
                else
-                       var = "stk"
+                       var = "plot"
                end
 
                -- create legend
@@ -400,6 +406,7 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index )
                                        flip     = dopts.flip    or false,
                                        total    = dopts.total   or false,
                                        overlay  = dopts.overlay or false,
+                                       transform_rpn = dopts.transform_rpn or "0,+",
                                        noarea   = dopts.noarea  or false,
                                        title    = dopts.title   or nil,
                                        ds       = dsource,
@@ -450,6 +457,18 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index )
                _ti( _args, self.i18n:title( plugin, plugin_instance, _sources[1].type, instance, opts.title ) )
                _ti( _args, "-v" )
                _ti( _args, self.i18n:label( plugin, plugin_instance, _sources[1].type, instance, opts.vlabel ) )
+               if opts.y_max then
+                       _ti ( _args, "-u" )
+                       _ti ( _args, opts.y_max )
+               end
+               if opts.y_min then
+                       _ti ( _args, "-l" )
+                       _ti ( _args, opts.y_min )
+               end
+               if opts.units_exponent then
+                       _ti ( _args, "-X" )
+                       _ti ( _args, opts.units_exponent )
+               end
 
                -- store additional rrd options
                if opts.rrdopts then
index adc3f28..c0e8624 100644 (file)
@@ -19,6 +19,7 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
 
        return {
                title = "%H: Processor usage on core #%pi",
+               y_min = "0",
                vlabel = "Percent",
                number_format = "%5.1lf%%",
                data = {
index 8052696..4cb4795 100644 (file)
@@ -19,6 +19,8 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
 
        return {
                title = "%H: Load", vlabel = "Load",
+               y_min = "0",
+               units_exponent = "0",
                number_format = "%5.2lf", data = {
                        sources = {
                                load = { "shortterm", "midterm", "longterm" }
diff --git a/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/nut.lua b/applications/luci-statistics/luasrc/statistics/rrdtool/definitions/nut.lua
new file mode 100644 (file)
index 0000000..69f1ae3
--- /dev/null
@@ -0,0 +1,106 @@
+--[[
+
+Luci statistics - ups plugin diagram definition
+Copyright © 2008 Freifunk Leipzig / Jo-Philipp Wich <xm@leipzig.freifunk.net>
+Copyright © 2012 David Woodhouse <dwmw2@infradead.org>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+]]--
+
+
+module("luci.statistics.rrdtool.definitions.nut",package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance, dtype )
+
+       local voltages = {
+               title = "%H: Voltages on UPS \"%pi\"",
+               vlabel = "V",
+               number_format = "%5.1lfV",
+               data = {
+                       instances = {
+                               voltage = { "battery", "input", "output" }
+                       },
+
+                       options = {
+                               voltage_output  = { color = "00e000", title = "Output voltage", noarea=true, overlay=true },
+                               voltage_battery = { color = "0000ff", title = "Battery voltage", noarea=true, overlay=true },
+                               voltage_input   = { color = "ffb000", title = "Input voltage", noarea=true, overlay=true }
+                       }
+               }
+       }
+
+       local currents = {
+               title = "%H: Current on UPS \"%pi\"",
+               vlabel = "A",
+               number_format = "%5.3lfA",
+               data = {
+                       instances = {
+                               current = { "battery", "output" }
+                       },
+
+                       options = {
+                               current_output  = { color = "00e000", title = "Output current", noarea=true, overlay=true },
+                               current_battery = { color = "0000ff", title = "Battery current", noarea=true, overlay=true },
+                       }
+               }
+       }
+
+       local percentage = {
+               title = "%H: Battery charge on UPS \"%pi\"",
+               vlabel = "Percent",
+               y_min = "0",
+               y_max = "100",
+               number_format = "%5.1lf%%",
+               data = {
+                       sources = {
+                               percent = { "percent" }
+                       },
+                       instances = {
+                               percent = "charge"
+                       },
+                       options = {
+                               percent_charge = { color = "00ff00", title = "Charge level"  }
+                       }
+               }
+       }
+
+       -- Note: This is in ISO8859-1 for rrdtool. Welcome to the 20th century.
+       local temperature = {
+               title = "%H: Battery temperature on UPS \"%pi\"",
+               vlabel = "\176C",
+               number_format = "%5.1lf\176C",
+               data = {
+                       instances = {
+                               temperature = "battery"
+                       },
+
+                       options = {
+                               temperature_battery = { color = "ffb000", title = "Battery temperature" }
+                       }
+               }
+       }
+
+       local timeleft = {
+               title = "%H: Time left on UPS \"%pi\"",
+               vlabel = "Minutes",
+               number_format = "%.1lfm",
+               data = {
+                       sources = {
+                               timeleft = { "timeleft" }
+                       },
+                       instances = {
+                               timeleft = { "battery" }
+                       },
+                       options = {
+                               timeleft_battery = { color = "0000ff", title = "Time left", transform_rpn = "60,/" }
+                       }
+               }
+       }
+
+       return { voltages, currents, percentage, temperature, timeleft }
+end
index a1e6a6b..5267a02 100644 (file)
@@ -131,3 +131,7 @@ config 'statistics' 'collectd_olsrd'
 
 config 'statistics' 'collectd_iwinfo'
        option 'enable' '1'
+
+config 'statistics' 'collectd_nut'
+       option 'enable' '0'
+       option 'UPS' 'myupsname'
index 4cf3946..0a9fa1a 100755 (executable)
@@ -357,6 +357,12 @@ plugins = {
 
        network = config_network,
 
+       nut = {
+               { "UPS" },
+               { },
+               { }
+       },
+
        olsrd = {
                { "Host", "Port", "CollectLinks","CollectRoutes","CollectTopology"},
                { },
index 1dcb20c..0b81b90 100644 (file)
@@ -20,7 +20,7 @@ function index()
                return
        end
 
-       entry({"admin", "services", "tinyproxy"}, alias("admin", "services", "tinyproxy", "config"), _("Tinyproxy")).i18n = "tinyproxy"
+       entry({"admin", "services", "tinyproxy"}, alias("admin", "services", "tinyproxy", "config"), _("Tinyproxy"))
        entry({"admin", "services", "tinyproxy", "status"}, template("tinyproxy_status"), _("Status"))
        entry({"admin", "services", "tinyproxy", "config"}, cbi("tinyproxy"), _("Configuration"))
 end
index a5bcd64..2c4df46 100644 (file)
@@ -15,14 +15,11 @@ $Id$
 module("luci.controller.transmission", package.seeall)
 
 function index()
-       require("luci.i18n")
-       luci.i18n.loadc("transmission")
        if not nixio.fs.access("/etc/config/transmission") then
                return
        end
 
        local page = entry({"admin", "services", "transmission"}, cbi("transmission"), _("Transmission"))
-       page.i18n = "transmission"
        page.dependent = true
 
 end
index c40493d..7acd029 100644 (file)
@@ -23,11 +23,9 @@ function index()
        local page
 
        page = entry({"admin", "services", "upnp"}, cbi("upnp/upnp"), _("UPNP"))
-       page.i18n = "upnp"
        page.dependent = true
 
        page = entry({"mini", "network", "upnp"}, cbi("upnp/upnpmini", {autoapply=true}), _("UPNP"))
-       page.i18n = "upnp"
        page.dependent = true
 
        entry({"admin", "services", "upnp", "status"}, call("act_status")).leaf = true
@@ -69,10 +67,8 @@ function act_status()
        end
 end
 
-function act_delete()
-       local path = luci.dispatcher.context.requestpath
-       local idx = tonumber(path[#path])
-
+function act_delete(idx)
+       idx = tonumber(idx)
        if idx and idx > 0 then
                luci.sys.call("iptables -t filter -D MINIUPNPD %d 2>/dev/null" % idx)
                luci.sys.call("iptables -t nat -D MINIUPNPD %d 2>/dev/null" % idx)
index 11c72a5..d50ed0c 100644 (file)
@@ -1,5 +1,3 @@
-<%- luci.i18n.loadc("upnp") -%>
-
 <script type="text/javascript">//<![CDATA[
        function upnp_delete_fwd(idx) {
                XHR.get('<%=luci.dispatcher.build_url("admin", "services", "upnp", "delete")%>/' + idx, null,
index 7bbd2dd..eed8532 100644 (file)
@@ -23,6 +23,5 @@ function index()
        local page
 
        page = entry({"admin", "services", "ushare"}, cbi("ushare"), _("uShare"), 60)
-       page.i18n = "ushare"
        page.dependent = true
 end
index 4c10e2a..3871fa2 100644 (file)
@@ -1,11 +1,11 @@
 module("luci.controller.vnstat", package.seeall)
 
 function index()
-       entry({"admin", "status", "vnstat"}, alias("admin", "status", "vnstat", "graphs"), _("VnStat Traffic Monitor"), 90).i18n = "vnstat"
+       entry({"admin", "status", "vnstat"}, alias("admin", "status", "vnstat", "graphs"), _("VnStat Traffic Monitor"), 90)
        entry({"admin", "status", "vnstat", "graphs"}, template("vnstat"), _("Graphs"), 1)
        entry({"admin", "status", "vnstat", "config"}, cbi("vnstat"), _("Configuration"), 2)
 
-       entry({"mini", "network", "vnstat"}, alias("mini", "network", "vnstat", "graphs"), _("VnStat Traffic Monitor"), 90).i18n = "vnstat"
+       entry({"mini", "network", "vnstat"}, alias("mini", "network", "vnstat", "graphs"), _("VnStat Traffic Monitor"), 90)
        entry({"mini", "network", "vnstat", "graphs"}, template("vnstat"), _("Graphs"), 1)
        entry({"mini", "network", "vnstat", "config"}, cbi("vnstat"), _("Configuration"), 2)
 end
index dc1482e..728afb6 100644 (file)
@@ -18,18 +18,14 @@ function index()
 
    e = entry({"admin", "voice"}, template("luci_voice/index") , _("Voice"), 90)
    e.index = true
-   e.i18n = "voice_core"
 
    e = entry({"mini", "voice"}, template("luci_voice/index"), _("Voice"), 90)
    e.index = true
-   e.i18n = "voice_core"
 
    e = entry({"mini", "voice", "phones"}, template("luci_voice/phone_index"), _("Phones"), 90)
    e.index = true
-   e.i18n = "voice_core"
 
    e = entry({"admin", "voice", "phones"}, template("luci_voice/phone_index"), _("Phones"), 90)
    e.index = true
-   e.i18n = "voice_core"
 
 end
index 8fba53b..7c3f341 100644 (file)
@@ -18,6 +18,5 @@ function index()
 
        e = entry({"admin", "voice", "diag"}, template("luci_voice/diag_index"), _("Diagnostics"), 90)
        e.index = true
-       e.i18n = "voice_diag"
        e.dependent = true
 end
index bb98b6d..73a9594 100644 (file)
@@ -1,6 +1,6 @@
 module("luci.controller.wol", package.seeall)
 
 function index()
-       entry({"admin", "network", "wol"}, cbi("wol"), _("Wake on LAN"), 90).i18n = "wol"
-       entry({"mini", "network", "wol"}, cbi("wol"), _("Wake on LAN"), 90).i18n = "wol"
+       entry({"admin", "network", "wol"}, cbi("wol"), _("Wake on LAN"), 90)
+       entry({"mini", "network", "wol"}, cbi("wol"), _("Wake on LAN"), 90)
 end
index 9a206bb..b20fbc3 100755 (executable)
@@ -4,7 +4,8 @@ PATTERN=$1
 SCM=
 
 [ -d .svn ] && SCM="svn"
-[ -d .git ] && SCM="git"
+git=$( which git 2>/dev/null )
+[ "$git" ] && "$git" status >/dev/null && SCM="git"
 
 [ -z "$SCM" ] && {
        echo "Unsupported SCM tool" >&2
diff --git a/contrib/package/community-profiles/files/etc/config/profile_hamburg b/contrib/package/community-profiles/files/etc/config/profile_hamburg
deleted file mode 100644 (file)
index ba1dd21..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-config 'community' 'profile'
-       option 'name' 'Freifunk Hamburg'
-       option 'homepage' 'http://hamburg.piratenpartei.de'
-       option 'ssid' 'hamburg.freifunk.net'
-       option 'mesh_network' '10.112.0.0/12'
-       option 'splash_network' '10.104.0.0/16'
-       option 'splash_prefix' '27'
-       option 'latitude' '53.56262'
-       option 'longitude' '10.01069'
-
-config 'defaults' 'interface'
-       option 'netmask' '255.240.0.0'
-
-config 'defaults' 'wifi_device'
-       option 'channel' '1'
index 2dbe1fa..6bf3a96 100644 (file)
@@ -1,5 +1,6 @@
 #
 # Copyright (C) 2009 Andreas Seidler <tetzlav@subsignal.org>
+# Copyright (C) 2012 Jo-Philipp Wich <xm@subsignal.org>
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,7 +9,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=freifunk-p2pblock
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
 
index aa8b1c8..5ca60c8 100644 (file)
@@ -26,6 +26,7 @@ start() {
                        config_get ipp2p p2pblock ipp2p
                        config_get portrange p2pblock portrange
                        config_get blocktime p2pblock blocktime
+                       config_get whitelist p2pblock whitelist
 
                        # load modules
                        insmod ipt_ipp2p 2>&-
index 2b8bbfe..33267b6 100644 (file)
@@ -177,14 +177,13 @@ $(eval $(call library,fastindex,Fastindex indexing module,+PACKAGE_luci-lib-fast
 $(eval $(call library,httpclient,HTTP(S) client library,+luci-lib-web +luci-lib-nixio))
 $(eval $(call library,ipkg,LuCI IPKG/OPKG call abstraction library))
 $(eval $(call library,json,LuCI JSON library))
-$(eval $(call library,lmo,LuCI LMO I18N library))
 $(eval $(call library,lucid,LuCId Full-Stack Webserver,+luci-lib-nixio +luci-lib-web +luci-lib-px5g))
 $(eval $(call library,lucid-http,LuCId HTTP Backend,+luci-lib-lucid))
 $(eval $(call library,lucid-rpc,LuCId RPC Backend,+luci-lib-lucid))
 $(eval $(call library,nixio,NIXIO POSIX library,+PACKAGE_luci-lib-nixio_openssl:libopenssl +PACKAGE_luci-lib-nixio_cyassl:libcyassl))
 $(eval $(call library,px5g,RSA/X.509 Key Generator (required for LuCId SSL support),+luci-lib-nixio))
 $(eval $(call library,sys,LuCI Linux/POSIX system library))
-$(eval $(call library,web,MVC Webframework,+luci-lib-sys +luci-lib-nixio +luci-lib-core +luci-sgi-cgi +luci-lib-lmo))
+$(eval $(call library,web,MVC Webframework,+luci-lib-sys +luci-lib-nixio +luci-lib-core +luci-sgi-cgi))
 
 
 ### Protocols ###
@@ -327,7 +326,7 @@ endef
 $(eval $(call application,siitwizard,SIIT IPv4-over-IPv6 configuration wizard,\
        +PACKAGE_luci-app-siitwizard:kmod-siit))
 
-$(eval $(call application,firewall,Firmware and Portforwarding application,\
+$(eval $(call application,firewall,Firewall and Portforwarding application,\
        +PACKAGE_luci-app-firewall:firewall))
 
 $(eval $(call application,freifunk-policyrouting,Policy routing for mesh traffic,\
@@ -380,6 +379,8 @@ $(eval $(call application,voice-core,LuCI Voice Software (Core)))
 $(eval $(call application,voice-diag,LuCI Voice Software (Diagnostics),\
        luci-app-diag-devinfo))
 
+$(eval $(call application,commands,LuCI Shell Command Module))
+
 $(eval $(call application,upnp,Universal Plug & Play configuration module,\
        +PACKAGE_luci-app-upnp:miniupnpd))
 
index 785a166..0183c9e 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/sh
 uci batch <<-EOF
-       set luci.languages.pl='Język polski'
+       set luci.languages.pl='Polski'
        commit luci
 EOF
index 0c574e0..a9f6fdb 100644 (file)
@@ -20,7 +20,7 @@ limitations under the License.
 local type, pairs, ipairs, table, luci, math
        = type, pairs, ipairs, table, luci, math
 
-local lmo = require "lmo"
+local tpl = require "luci.template.parser"
 local utl = require "luci.util"
 local uci = require "luci.model.uci"
 
@@ -478,7 +478,7 @@ function zone.get_color(self)
        elseif self and self:name() == "wan" then
                return "#f09090"
        elseif self then
-               math.randomseed(lmo.hash(self:name()))
+               math.randomseed(tpl.hash(self:name()))
 
                local r   = math.random(128)
                local g   = math.random(128)
index cc57229..56f1751 100644 (file)
@@ -623,6 +623,32 @@ function get_status_by_route(self, addr, mask)
        end
 end
 
+function get_status_by_address(self, addr)
+       local _, object
+       for _, object in ipairs(_ubus:objects()) do
+               local net = object:match("^network%.interface%.(.+)")
+               if net then
+                       local s = _ubus:call(object, "status", {})
+                       if s and s['ipv4-address'] then
+                               local a
+                               for _, a in ipairs(s['ipv4-address']) do
+                                       if a.address == addr then
+                                               return net, s
+                                       end
+                               end
+                       end
+                       if s and s['ipv6-address'] then
+                               local a
+                               for _, a in ipairs(s['ipv6-address']) do
+                                       if a.address == addr then
+                                               return net, s
+                                       end
+                               end
+                       end
+               end
+       end
+end
+
 function get_wannet(self)
        local net = self:get_status_by_route("0.0.0.0", 0)
        return net and network(net)
index bde803f..e285777 100644 (file)
@@ -182,27 +182,18 @@ end
 -- String and data manipulation routines
 --
 
---- Escapes all occurrences of the given character in given string.
--- @param s    String value containing unescaped characters
--- @param c    String value with character to escape (optional, defaults to "\")
--- @return     String value with each occurrence of character escaped with "\"
-function escape(s, c)
-       c = c or "\\"
-       return s:gsub(c, "\\" .. c)
-end
-
 --- Create valid XML PCDATA from given string.
 -- @param value        String value containing the data to escape
 -- @return             String value containing the escaped data
 function pcdata(value)
-       return value and tparser.sanitize_pcdata(tostring(value))
+       return value and tparser.pcdata(tostring(value))
 end
 
 --- Strip HTML tags from given string.
 -- @param value        String containing the HTML text
 -- @return     String with HTML tags stripped of
-function striptags(s)
-       return pcdata(tostring(s):gsub("</?[A-Za-z][A-Za-z0-9:_%-]*[^>]*>", " "):gsub("%s+", " "))
+function striptags(value)
+       return value and tparser.striptags(tostring(value))
 end
 
 --- Splits given string on a defined separator sequence and return a table
@@ -356,7 +347,6 @@ function parse_units(ustr)
 end
 
 -- also register functions above in the central string class for convenience
-string.escape      = escape
 string.pcdata      = pcdata
 string.striptags   = striptags
 string.split       = split
index d0d9788..c927e71 100644 (file)
@@ -10,7 +10,6 @@ You may obtain a copy of the License at
 
 http://www.apache.org/licenses/LICENSE-2.0
 
-$Id$
 ]]--
 
 local os   = require "os"
@@ -23,7 +22,7 @@ local pairs = pairs
 local error = error
 local table = table
 
-local ipkg = "opkg --force-removal-of-dependent-packages --force-overwrite"
+local ipkg = "opkg --force-removal-of-dependent-packages --force-overwrite --nocase"
 local icfg = "/etc/opkg.conf"
 
 --- LuCI OPKG call abstraction library
@@ -159,7 +158,7 @@ end
 -- List helper
 function _list(action, pat, cb)
        local fd = io.popen(ipkg .. " " .. action ..
-               (pat and (" '%s'" % pat:gsub("'", "")) or "")) -- .. " | grep -vE '^ '")
+               (pat and (" '%s'" % pat:gsub("'", "")) or ""))
 
        if fd then
                local name, version, desc
@@ -167,20 +166,18 @@ function _list(action, pat, cb)
                        local line = fd:read("*l")
                        if not line then break end
 
-                       if line:sub(1,1) ~= " " then
-                               name, version, desc = line:match("^(.-) %- (.-) %- (.+)")
+                       name, version, desc = line:match("^(.-) %- (.-) %- (.+)")
 
-                               if not name then
-                                       name, version = line:match("^(.-) %- (.+)")
-                                       desc = ""
-                               end
+                       if not name then
+                               name, version = line:match("^(.-) %- (.+)")
+                               desc = ""
+                       end
 
-                               cb(name, version, desc)
+                       cb(name, version, desc)
 
-                               name    = nil
-                               version = nil
-                               desc    = nil
-                       end
+                       name    = nil
+                       version = nil
+                       desc    = nil
                end
 
                fd:close()
@@ -203,6 +200,15 @@ function list_installed(pat, cb)
        _list("list_installed", pat, cb)
 end
 
+--- Find packages that match the given pattern.
+-- @param pat  Find packages whose names or descriptions match this pattern, nil results in zero results
+-- @param cb   Callback function invoked for each patckage, receives name, version and description as arguments
+-- @return     nothing
+function find(pat, cb)
+       _list("find", pat, cb)
+end
+
+
 --- Determines the overlay root used by opkg.
 -- @return             String containing the directory path of the overlay root.
 function overlay_root()
diff --git a/libs/lmo/Makefile b/libs/lmo/Makefile
deleted file mode 100644 (file)
index a15390c..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-ifneq (,$(wildcard ../../build/config.mk))
-include ../../build/config.mk
-include ../../build/module.mk
-include ../../build/gccconfig.mk
-else
-include standalone.mk
-endif
-
-LMO_LDFLAGS    =
-LMO_CFLAGS     =
-LMO_SO         = lmo.so
-LMO_PO2LMO     = po2lmo
-LMO_LOOKUP     = lookup
-LMO_COMMON_OBJ = src/lmo_core.o src/lmo_hash.o
-LMO_PO2LMO_OBJ = src/lmo_po2lmo.o
-LMO_LOOKUP_OBJ = src/lmo_lookup.o
-LMO_LUALIB_OBJ = src/lmo_lualib.o
-
-%.o: %.c
-       $(COMPILE) $(LMO_CFLAGS) $(LUA_CFLAGS) $(FPIC) -c -o $@ $< 
-
-compile: build-clean $(LMO_COMMON_OBJ) $(LMO_PO2LMO_OBJ) $(LMO_LOOKUP_OBJ) $(LMO_LUALIB_OBJ)
-       $(LINK) $(SHLIB_FLAGS) $(LMO_LDFLAGS) -o src/$(LMO_SO) \
-               $(LMO_COMMON_OBJ) $(LMO_LUALIB_OBJ)
-       $(LINK) $(LMO_LDFLAGS) -o src/$(LMO_PO2LMO) $(LMO_COMMON_OBJ) $(LMO_PO2LMO_OBJ)
-       $(LINK) $(LMO_LDFLAGS) -o src/$(LMO_LOOKUP) $(LMO_COMMON_OBJ) $(LMO_LOOKUP_OBJ)
-       mkdir -p dist$(LUA_LIBRARYDIR)
-       cp src/$(LMO_SO) dist$(LUA_LIBRARYDIR)/$(LMO_SO)
-
-install: build
-       cp -pR dist$(LUA_LIBRARYDIR)/* $(LUA_LIBRARYDIR)
-
-clean: build-clean
-
-build-clean:
-       rm -f src/*.o src/lookup src/po2lmo src/lmo.so
-
-host-compile: build-clean host-clean $(LMO_COMMON_OBJ) $(LMO_PO2LMO_OBJ)
-       $(LINK) $(LMO_LDFLAGS) -o src/$(LMO_PO2LMO) $(LMO_COMMON_OBJ) $(LMO_PO2LMO_OBJ)
-
-host-install: host-compile
-       cp src/$(LMO_PO2LMO) ../../build/$(LMO_PO2LMO)
-
-host-clean:
-       rm -f ../../build/$(LMO_PO2LMO)
-
diff --git a/libs/lmo/src/lmo.h b/libs/lmo/src/lmo.h
deleted file mode 100644 (file)
index ab17e87..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * lmo - Lua Machine Objects - General header
- *
- *   Copyright (C) 2009 Jo-Philipp Wich <xm@subsignal.org>
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-#ifndef _LMO_H_
-#define _LMO_H_
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/mman.h>
-#include <arpa/inet.h>
-#include <unistd.h>
-#include <errno.h>
-
-
-#if (defined(__GNUC__) && defined(__i386__))
-#define sfh_get16(d) (*((const uint16_t *) (d)))
-#else
-#define sfh_get16(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\
-                                          +(uint32_t)(((const uint8_t *)(d))[0]) )
-#endif
-
-
-struct lmo_entry {
-       uint32_t key_id;
-       uint32_t val_id;
-       uint32_t offset;
-       uint32_t length;
-       struct lmo_entry *next;
-} __attribute__((packed));
-
-typedef struct lmo_entry lmo_entry_t;
-
-
-struct lmo_archive {
-       int         fd;
-       uint32_t    length;
-       lmo_entry_t *index;
-       char        *mmap;
-};
-
-typedef struct lmo_archive lmo_archive_t;
-
-
-uint32_t sfh_hash(const char * data, int len);
-
-char _lmo_error[1024];
-const char * lmo_error(void);
-
-lmo_archive_t * lmo_open(const char *file);
-int lmo_lookup(lmo_archive_t *ar, const char *key, char *dest, int len);
-void lmo_close(lmo_archive_t *ar);
-
-#endif
diff --git a/libs/lmo/src/lmo_core.c b/libs/lmo/src/lmo_core.c
deleted file mode 100644 (file)
index 0814138..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * lmo - Lua Machine Objects - Base functions
- *
- *   Copyright (C) 2009-2010 Jo-Philipp Wich <xm@subsignal.org>
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-#include "lmo.h"
-
-extern char _lmo_error[1024];
-
-static int lmo_read32( int fd, uint32_t *val )
-{
-       if( read(fd, val, 4) < 4 )
-               return -1;
-
-       *val = ntohl(*val);
-
-       return 4;
-}
-
-static char * error(const char *message, int add_errno)
-{
-       memset(_lmo_error, 0, sizeof(_lmo_error));
-
-       if( add_errno )
-               snprintf(_lmo_error, sizeof(_lmo_error),
-                       "%s: %s", message, strerror(errno));
-       else
-               snprintf(_lmo_error, sizeof(_lmo_error), "%s", message);
-
-       return NULL;
-}
-
-const char * lmo_error(void)
-{
-       return _lmo_error;
-}
-
-lmo_archive_t * lmo_open(const char *file)
-{
-       int in = -1;
-       uint32_t idx_offset = 0;
-       uint32_t i;
-       struct stat s;
-
-       lmo_archive_t *ar    = NULL;
-       lmo_entry_t   *head  = NULL;
-       lmo_entry_t   *entry = NULL;
-
-       if( stat(file, &s) == -1 )
-       {
-               error("Can not stat file", 1);
-               goto cleanup;
-       }
-
-       if( (in = open(file, O_RDONLY)) == -1 )
-       {
-               error("Can not open file", 1);
-               goto cleanup;
-       }
-
-       if( lseek(in, -sizeof(uint32_t), SEEK_END) == -1 )
-       {
-               error("Can not seek to eof", 1);
-               goto cleanup;
-       }
-
-       if( lmo_read32(in, &idx_offset) != 4 )
-       {
-               error("Unexpected EOF while reading index offset", 0);
-               goto cleanup;
-       }
-
-       if( lseek(in, (off_t)idx_offset, SEEK_SET) == -1 )
-       {
-               error("Can not seek to index offset", 1);
-               goto cleanup;
-       }
-
-       if( (ar = (lmo_archive_t *) malloc(sizeof(lmo_archive_t))) != NULL )
-       {
-               ar->fd     = in;
-               ar->length = idx_offset;
-
-               fcntl(ar->fd, F_SETFD, fcntl(ar->fd, F_GETFD) | FD_CLOEXEC);
-
-               for( i = idx_offset;
-                    i < (s.st_size - sizeof(uint32_t));
-                    i += (4 * sizeof(uint32_t))
-               ) {
-                       if( (entry = (lmo_entry_t *) malloc(sizeof(lmo_entry_t))) != NULL )
-                       {
-                               if( (lmo_read32(ar->fd, &entry->key_id) == 4) &&
-                                   (lmo_read32(ar->fd, &entry->val_id) == 4) &&
-                                   (lmo_read32(ar->fd, &entry->offset) == 4) &&
-                                   (lmo_read32(ar->fd, &entry->length) == 4)
-                               ) {
-                                       entry->next = head;
-                                       head = entry;
-                               }
-                               else
-                               {
-                                       error("Unexpected EOF while reading index entry", 0);
-                                       goto cleanup;
-                               }
-                       }
-                       else
-                       {
-                               error("Out of memory", 0);
-                               goto cleanup;
-                       }
-               }
-
-               ar->index = head;
-
-               if( lseek(ar->fd, 0, SEEK_SET) == -1 )
-               {
-                       error("Can not seek to start", 1);
-                       goto cleanup;
-               }
-
-               if( (ar->mmap = mmap(NULL, ar->length, PROT_READ, MAP_PRIVATE, ar->fd, 0)) == MAP_FAILED )
-               {
-                       error("Failed to memory map archive contents", 1);
-                       goto cleanup;
-               }
-
-               return ar;
-       }
-       else
-       {
-               error("Out of memory", 0);
-               goto cleanup;
-       }
-
-
-       cleanup:
-
-       if( in > -1 )
-               close(in);
-
-       if( head != NULL )
-       {
-               entry = head;
-
-               while( entry != NULL )
-               {
-                       head = entry->next;
-                       free(entry);
-                       entry = head;
-               }
-
-               head = entry = NULL;
-       }
-
-       if( ar != NULL )
-       {
-               if( (ar->mmap != NULL) && (ar->mmap != MAP_FAILED) )
-                       munmap(ar->mmap, ar->length);
-
-               free(ar);
-               ar = NULL;
-       }
-
-       return NULL;
-}
-
-void lmo_close(lmo_archive_t *ar)
-{
-       lmo_entry_t *head  = NULL;
-       lmo_entry_t *entry = NULL;
-
-       if( ar != NULL )
-       {
-               entry = ar->index;
-
-               while( entry != NULL )
-               {
-                       head = entry->next;
-                       free(entry);
-                       entry = head;
-               }
-
-               head = entry = NULL;
-
-               if( (ar->mmap != NULL) && (ar->mmap != MAP_FAILED) )
-                       munmap(ar->mmap, ar->length);
-
-               close(ar->fd);
-               free(ar);
-
-               ar = NULL;
-       }
-}
-
-int lmo_lookup(lmo_archive_t *ar, const char *key, char *dest, int len)
-{
-       uint32_t look_key = sfh_hash(key, strlen(key));
-       int copy_len = -1;
-       lmo_entry_t *entry;
-
-       if( !ar )
-               return copy_len;
-
-       entry = ar->index;
-
-       while( entry != NULL )
-       {
-               if( entry->key_id == look_key )
-               {
-                       copy_len = ((len - 1) > entry->length) ? entry->length : (len - 1);
-                       memcpy(dest, &ar->mmap[entry->offset], copy_len);
-                       dest[copy_len] = '\0';
-
-                       break;
-               }
-
-               entry = entry->next;
-       }
-
-       return copy_len;
-}
diff --git a/libs/lmo/src/lmo_hash.c b/libs/lmo/src/lmo_hash.c
deleted file mode 100644 (file)
index bc8e6fe..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Hash function from http://www.azillionmonkeys.com/qed/hash.html
- * Copyright (C) 2004-2008 by Paul Hsieh
- */
-
-#include "lmo.h"
-
-uint32_t sfh_hash(const char * data, int len)
-{
-       uint32_t hash = len, tmp;
-       int rem;
-
-       if (len <= 0 || data == NULL) return 0;
-
-       rem = len & 3;
-       len >>= 2;
-
-       /* Main loop */
-       for (;len > 0; len--) {
-               hash  += sfh_get16(data);
-               tmp    = (sfh_get16(data+2) << 11) ^ hash;
-               hash   = (hash << 16) ^ tmp;
-               data  += 2*sizeof(uint16_t);
-               hash  += hash >> 11;
-       }
-
-       /* Handle end cases */
-       switch (rem) {
-               case 3: hash += sfh_get16(data);
-                       hash ^= hash << 16;
-                       hash ^= data[sizeof(uint16_t)] << 18;
-                       hash += hash >> 11;
-                       break;
-               case 2: hash += sfh_get16(data);
-                       hash ^= hash << 11;
-                       hash += hash >> 17;
-                       break;
-               case 1: hash += *data;
-                       hash ^= hash << 10;
-                       hash += hash >> 1;
-       }
-
-       /* Force "avalanching" of final 127 bits */
-       hash ^= hash << 3;
-       hash += hash >> 5;
-       hash ^= hash << 4;
-       hash += hash >> 17;
-       hash ^= hash << 25;
-       hash += hash >> 6;
-
-       return hash;
-}
-
diff --git a/libs/lmo/src/lmo_lookup.c b/libs/lmo/src/lmo_lookup.c
deleted file mode 100644 (file)
index 8b48f7f..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * lmo - Lua Machine Objects - Lookup utility
- *
- *   Copyright (C) 2009 Jo-Philipp Wich <xm@subsignal.org>
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-#include "lmo.h"
-
-extern char _lmo_error[1024];
-
-static void die(const char *msg)
-{
-       printf("Error: %s\n", msg);
-       exit(1);
-}
-
-static void usage(const char *name)
-{
-       printf("Usage: %s input.lmo key\n", name);
-       exit(1);
-}
-
-int main(int argc, char *argv[])
-{
-       char val[4096];
-       lmo_archive_t *ar = NULL;
-
-       if( argc != 3 )
-               usage(argv[0]);
-
-       if( (ar = (lmo_archive_t *) lmo_open(argv[1])) != NULL )
-       {
-               if( lmo_lookup(ar, argv[2], val, sizeof(val)) > -1 )
-               {
-                       printf("%s\n", val);
-               }
-
-               lmo_close(ar);
-       }
-       else
-       {
-               die(lmo_error());
-       }
-
-       return 0;
-}
diff --git a/libs/lmo/src/lmo_lualib.c b/libs/lmo/src/lmo_lualib.c
deleted file mode 100644 (file)
index 59d88a1..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * lmo - Lua Machine Objects - Lua binding
- *
- *   Copyright (C) 2009 Jo-Philipp Wich <xm@subsignal.org>
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-#include "lmo_lualib.h"
-
-extern char _lmo_error[1024];
-
-
-static int lmo_L_open(lua_State *L) {
-       const char *filename = luaL_checklstring(L, 1, NULL);
-       lmo_archive_t *ar, **udata;
-
-       if( (ar = lmo_open(filename)) != NULL )
-       {
-               if( (udata = lua_newuserdata(L, sizeof(lmo_archive_t *))) != NULL )
-               {
-                       *udata = ar;
-                       luaL_getmetatable(L, LMO_ARCHIVE_META);
-                       lua_setmetatable(L, -2);
-                       return 1;
-               }
-
-               lmo_close(ar);
-               lua_pushnil(L);
-               lua_pushstring(L, "out of memory");
-               return 2;
-       }
-
-       lua_pushnil(L);
-       lua_pushstring(L, lmo_error());
-       return 2;
-}
-
-static int lmo_L_hash(lua_State *L) {
-       const char *data = luaL_checkstring(L, 1);
-       uint32_t hash = sfh_hash(data, strlen(data));
-       lua_pushinteger(L, (lua_Integer)hash);
-       return 1;
-}
-
-static lmo_luaentry_t *_lmo_push_entry(lua_State *L) {
-       lmo_luaentry_t *le;
-
-       if( (le = lua_newuserdata(L, sizeof(lmo_luaentry_t))) != NULL )
-       {
-               luaL_getmetatable(L, LMO_ENTRY_META);
-               lua_setmetatable(L, -2);
-
-               return le;
-       }
-
-       return NULL;
-}
-
-static int _lmo_lookup(lua_State *L, lmo_archive_t *ar, uint32_t hash) {
-       lmo_entry_t *e = ar->index;
-       lmo_luaentry_t *le = NULL;
-
-       while( e != NULL )
-       {
-               if( e->key_id == hash )
-               {
-                       if( (le = _lmo_push_entry(L)) != NULL )
-                       {
-                               le->archive = ar;
-                               le->entry   = e;
-                               return 1;
-                       }
-                       else
-                       {
-                               lua_pushnil(L);
-                               lua_pushstring(L, "out of memory");
-                               return 2;
-                       }
-               }
-
-               e = e->next;
-       }
-
-       lua_pushnil(L);
-       return 1;
-}
-
-static int lmo_L_get(lua_State *L) {
-       lmo_archive_t **ar = luaL_checkudata(L, 1, LMO_ARCHIVE_META);
-       uint32_t hash = (uint32_t) luaL_checkinteger(L, 2);
-       return _lmo_lookup(L, *ar, hash);
-}
-
-static int lmo_L_lookup(lua_State *L) {
-       lmo_archive_t **ar = luaL_checkudata(L, 1, LMO_ARCHIVE_META);
-       const char *key = luaL_checkstring(L, 2);
-       uint32_t hash = sfh_hash(key, strlen(key));
-       return _lmo_lookup(L, *ar, hash);
-}
-
-static int lmo_L_foreach(lua_State *L) {
-       lmo_archive_t **ar = luaL_checkudata(L, 1, LMO_ARCHIVE_META);
-       lmo_entry_t *e = (*ar)->index;
-
-       if( lua_isfunction(L, 2) )
-       {
-               while( e != NULL )
-               {
-                       lua_pushvalue(L, 2);
-                       lua_pushinteger(L, e->key_id);
-                       lua_pushlstring(L, &(*ar)->mmap[e->offset], e->length);
-                       lua_pcall(L, 2, 0, 0);
-                       e = e->next;
-               }
-       }
-
-       return 0;
-}
-
-static int lmo_L__gc(lua_State *L) {
-       lmo_archive_t **ar = luaL_checkudata(L, 1, LMO_ARCHIVE_META);
-
-       if( (*ar) != NULL )
-               lmo_close(*ar);
-
-       *ar = NULL;
-
-       return 0;
-}
-
-static int lmo_L__tostring(lua_State *L) {
-       lmo_archive_t **ar = luaL_checkudata(L, 1, LMO_ARCHIVE_META);
-       lua_pushfstring(L, "LMO Archive (%d bytes)", (*ar)->length);
-       return 1;
-}
-
-
-static int _lmo_convert_entry(lua_State *L, int idx) {
-       lmo_luaentry_t *le = luaL_checkudata(L, idx, LMO_ENTRY_META);
-
-       lua_pushlstring(L,
-               &le->archive->mmap[le->entry->offset],
-               le->entry->length
-       );
-
-       return 1;
-}
-
-static int lmo_L_entry__tostring(lua_State *L) {
-       return _lmo_convert_entry(L, 1);
-}
-
-static int lmo_L_entry__concat(lua_State *L) {
-       if( lua_isuserdata(L, 1) )
-               _lmo_convert_entry(L, 1);
-       else
-               lua_pushstring(L, lua_tostring(L, 1));
-
-       if( lua_isuserdata(L, 2) )
-               _lmo_convert_entry(L, 2);
-       else
-               lua_pushstring(L, lua_tostring(L, 2));
-
-       lua_concat(L, 2);
-
-       return 1;
-}
-
-static int lmo_L_entry__len(lua_State *L) {
-       lmo_luaentry_t *le = luaL_checkudata(L, 1, LMO_ENTRY_META);
-       lua_pushinteger(L, le->entry->length);
-       return 1;
-}
-
-static int lmo_L_entry__gc(lua_State *L) {
-       lmo_luaentry_t *le = luaL_checkudata(L, 1, LMO_ENTRY_META);
-       le->archive = NULL;
-       le->entry   = NULL;
-       return 0;
-}
-
-
-/* lmo method table */
-static const luaL_reg M[] = {
-       {"close",               lmo_L__gc},
-       {"get",                 lmo_L_get},
-       {"lookup",              lmo_L_lookup},
-       {"foreach",             lmo_L_foreach},
-       {"__tostring",  lmo_L__tostring},
-       {"__gc",                lmo_L__gc},
-       {NULL,                  NULL}
-};
-
-/* lmo.entry method table */
-static const luaL_reg E[] = {
-       {"__tostring",  lmo_L_entry__tostring},
-       {"__concat",    lmo_L_entry__concat},
-       {"__len",               lmo_L_entry__len},
-       {"__gc",                lmo_L_entry__gc},
-       {NULL,                  NULL}
-};
-
-/* module table */
-static const luaL_reg R[] = {
-       {"open",        lmo_L_open},
-       {"hash",        lmo_L_hash},
-       {NULL,          NULL}
-};
-
-LUALIB_API int luaopen_lmo(lua_State *L) {
-       luaL_newmetatable(L, LMO_ARCHIVE_META);
-       luaL_register(L, NULL, M);
-       lua_pushvalue(L, -1);
-       lua_setfield(L, -2, "__index");
-       lua_setglobal(L, LMO_ARCHIVE_META);
-
-       luaL_newmetatable(L, LMO_ENTRY_META);
-       luaL_register(L, NULL, E);
-       lua_pushvalue(L, -1);
-       lua_setfield(L, -2, "__index");
-       lua_setglobal(L, LMO_ENTRY_META);       
-
-       luaL_register(L, LMO_LUALIB_META, R);
-
-       return 1;
-}
diff --git a/libs/lmo/src/lmo_lualib.h b/libs/lmo/src/lmo_lualib.h
deleted file mode 100644 (file)
index 6435117..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * lmo - Lua Machine Objects - Lua library header
- *
- *   Copyright (C) 2009 Jo-Philipp Wich <xm@subsignal.org>
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-#ifndef _LMO_LUALIB_H_
-#define _LMO_LUALIB_H_
-
-#include <lua.h>
-#include <lualib.h>
-#include <lauxlib.h>
-
-#include "lmo.h"
-
-#define LMO_LUALIB_META  "lmo"
-#define LMO_ARCHIVE_META "lmo.archive"
-#define LMO_ENTRY_META   "lmo.entry"
-
-struct lmo_luaentry {
-       lmo_archive_t *archive;  
-       lmo_entry_t   *entry;
-};
-
-typedef struct lmo_luaentry lmo_luaentry_t;
-
-
-LUALIB_API int luaopen_lmo(lua_State *L);
-
-#endif
diff --git a/libs/lmo/src/lmo_po2lmo.c b/libs/lmo/src/lmo_po2lmo.c
deleted file mode 100644 (file)
index 380f18d..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * lmo - Lua Machine Objects - PO to LMO conversion tool
- *
- *   Copyright (C) 2009-2011 Jo-Philipp Wich <xm@subsignal.org>
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-#include "lmo.h"
-
-static void die(const char *msg)
-{
-       fprintf(stderr, "Error: %s\n", msg);
-       exit(1);
-}
-
-static void usage(const char *name)
-{
-       fprintf(stderr, "Usage: %s input.po output.lmo\n", name);
-       exit(1);
-}
-
-static void print(const void *ptr, size_t size, size_t nmemb, FILE *stream)
-{
-       if( fwrite(ptr, size, nmemb, stream) == 0 )
-               die("Failed to write stdout");
-}
-
-static int extract_string(const char *src, char *dest, int len)
-{
-       int pos = 0;
-       int esc = 0;
-       int off = -1;
-
-       for( pos = 0; (pos < strlen(src)) && (pos < len); pos++ )
-       {
-               if( (off == -1) && (src[pos] == '"') )
-               {
-                       off = pos + 1;
-               }
-               else if( off >= 0 )
-               {
-                       if( esc == 1 )
-                       {
-                               dest[pos-off] = src[pos];
-                               esc = 0;
-                       }
-                       else if( src[pos] == '\\' )
-                       {
-                               off++;
-                               esc = 1;
-                       }
-                       else if( src[pos] != '"' )
-                       {
-                               dest[pos-off] = src[pos];
-                       }
-                       else
-                       {
-                               dest[pos-off] = '\0';
-                               break;
-                       }
-               }
-       }
-
-       return (off > -1) ? strlen(dest) : -1;
-}
-
-int main(int argc, char *argv[])
-{
-       char line[4096];
-       char key[4096];
-       char val[4096];
-       char tmp[4096];
-       int state  = 0;
-       int offset = 0;
-       int length = 0;
-       uint32_t key_id, val_id;
-
-       FILE *in;
-       FILE *out;
-
-       lmo_entry_t *head  = NULL;
-       lmo_entry_t *entry = NULL;
-
-       if( (argc != 3) || ((in = fopen(argv[1], "r")) == NULL) || ((out = fopen(argv[2], "w")) == NULL) )
-               usage(argv[0]);
-
-       memset(line, 0, sizeof(key));
-       memset(key, 0, sizeof(val));
-       memset(val, 0, sizeof(val));
-
-       while( (NULL != fgets(line, sizeof(line), in)) || (state >= 2 && feof(in)) )
-       {
-               if( state == 0 && strstr(line, "msgid \"") == line )
-               {
-                       switch(extract_string(line, key, sizeof(key)))
-                       {
-                               case -1:
-                                       die("Syntax error in msgid");
-                               case 0:
-                                       state = 1;
-                                       break;
-                               default:
-                                       state = 2;
-                       }
-               }
-               else if( state == 1 || state == 2 )
-               {
-                       if( strstr(line, "msgstr \"") == line || state == 2 )
-                       {
-                               switch(extract_string(line, val, sizeof(val)))
-                               {
-                                       case -1:
-                                               state = 4;
-                                               break;
-                                       default:
-                                               state = 3;
-                               }
-                       }
-                       else
-                       {
-                               switch(extract_string(line, tmp, sizeof(tmp)))
-                               {
-                                       case -1:
-                                               state = 2;
-                                               break;
-                                       default:
-                                               strcat(key, tmp);
-                               }
-                       }
-               }
-               else if( state == 3 )
-               {
-                       switch(extract_string(line, tmp, sizeof(tmp)))
-                       {
-                               case -1:
-                                       state = 4;
-                                       break;
-                               default:
-                                       strcat(val, tmp);
-                       }
-               }
-
-               if( state == 4 )
-               {
-                       if( strlen(key) > 0 && strlen(val) > 0 )
-                       {
-                               key_id = sfh_hash(key, strlen(key));
-                               val_id = sfh_hash(val, strlen(val));
-
-                               if( key_id != val_id )
-                               {
-                                       if( (entry = (lmo_entry_t *) malloc(sizeof(lmo_entry_t))) != NULL )
-                                       {
-                                               memset(entry, 0, sizeof(entry));
-                                               length = strlen(val) + ((4 - (strlen(val) % 4)) % 4);
-
-                                               entry->key_id = htonl(key_id);
-                                               entry->val_id = htonl(val_id);
-                                               entry->offset = htonl(offset);
-                                               entry->length = htonl(strlen(val));
-
-                                               print(val, length, 1, out);
-                                               offset += length;
-
-                                               entry->next = head;
-                                               head = entry;
-                                       }
-                                       else
-                                       {
-                                               die("Out of memory");
-                                       }
-                               }
-                       }
-
-                       state = 0;
-                       memset(key, 0, sizeof(key));
-                       memset(val, 0, sizeof(val));
-               }
-
-               memset(line, 0, sizeof(line));
-       }
-
-       entry = head;
-       while( entry != NULL )
-       {
-               print(&entry->key_id, sizeof(uint32_t), 1, out);
-               print(&entry->val_id, sizeof(uint32_t), 1, out);
-               print(&entry->offset, sizeof(uint32_t), 1, out);
-               print(&entry->length, sizeof(uint32_t), 1, out);
-               entry = entry->next;
-       }
-
-       if( offset > 0 )
-       {
-               offset = htonl(offset);
-               print(&offset, sizeof(uint32_t), 1, out);
-               fsync(fileno(out));
-               fclose(out);
-       }
-       else
-       {
-               fclose(out);
-               unlink(argv[2]);
-       }
-
-       fclose(in);
-       return(0);
-}
diff --git a/libs/lmo/standalone.mk b/libs/lmo/standalone.mk
deleted file mode 100644 (file)
index 66a0e5a..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-LUAC = luac
-LUAC_OPTIONS = -s
-LUA_TARGET ?= source
-
-LUA_MODULEDIR = /usr/local/share/lua/5.1
-LUA_LIBRARYDIR = /usr/local/lib/lua/5.1
-
-OS ?= $(shell uname)
-
-LUA_SHLIBS = $(shell pkg-config --silence-errors --libs lua5.1 || pkg-config --silence-errors --libs lua-5.1 || pkg-config --silence-errors --libs lua)
-LUA_LIBS = $(if $(LUA_SHLIBS),$(LUA_SHLIBS),$(firstword $(wildcard /usr/lib/liblua.a /usr/local/lib/liblua.a /opt/local/lib/liblua.a)))
-LUA_CFLAGS = $(shell pkg-config --silence-errors --cflags lua5.1 || pkg-config --silence-errors --cflags lua-5.1 || pkg-config --silence-errors --cflags lua)
-
-CC = gcc
-AR = ar
-RANLIB = ranlib
-CFLAGS = -O2
-FPIC = -fPIC
-EXTRA_CFLAGS = --std=gnu99
-WFLAGS = -Wall -Werror -pedantic
-CPPFLAGS =
-COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) $(WFLAGS)
-ifeq ($(OS),Darwin)
-  SHLIB_FLAGS = -bundle -undefined dynamic_lookup
-else
-  SHLIB_FLAGS = -shared
-endif
-LINK = $(CC) $(LDFLAGS)
-
-.PHONY: all build compile luacompile luasource clean luaclean
-
-all: build
-
-build: luabuild gccbuild
-
-luabuild: lua$(LUA_TARGET)
-
-gccbuild: compile
-compile:
-
-clean: luaclean
-
-luasource:
-       mkdir -p dist$(LUA_MODULEDIR)
-       cp -pR root/* dist 2>/dev/null || true
-       cp -pR lua/* dist$(LUA_MODULEDIR) 2>/dev/null || true
-       for i in $$(find dist -name .svn); do rm -rf $$i || true; done
-
-luastrip: luasource
-       for i in $$(find dist -type f -name '*.lua'); do perl -e 'undef $$/; open( F, "< $$ARGV[0]" ) || die $$!; $$src = <F>; close F; $$src =~ s/--\[\[.*?\]\](--)?//gs; $$src =~ s/^\s*--.*?\n//gm; open( F, "> $$ARGV[0]" ) || die $$!; print F $$src; close F' $$i; done
-
-luacompile: luasource
-       for i in $$(find dist -name *.lua -not -name debug.lua); do $(LUAC) $(LUAC_OPTIONS) -o $$i $$i; done
-
-luaclean:
-       rm -rf dist
index d9f9700..1d28a3a 100644 (file)
@@ -1,19 +1,28 @@
+ifneq (,$(wildcard ../../build/config.mk))
 include ../../build/config.mk
 include ../../build/module.mk
 include ../../build/gccconfig.mk
+else
+include standalone.mk
+endif
 
 TPL_LDFLAGS    =
 TPL_CFLAGS     =
 TPL_SO         = parser.so
+TPL_PO2LMO     = po2lmo
+TPL_PO2LMO_OBJ = src/po2lmo.o
+TPL_LMO_OBJ    = src/template_lmo.o
 TPL_COMMON_OBJ = src/template_parser.o src/template_utils.o
 TPL_LUALIB_OBJ = src/template_lualib.o
 
 %.o: %.c
        $(COMPILE) $(TPL_CFLAGS) $(LUA_CFLAGS) $(FPIC) -c -o $@ $<
 
-compile: build-clean $(TPL_COMMON_OBJ) $(TPL_LUALIB_OBJ)
+compile: build-clean $(TPL_COMMON_OBJ) $(TPL_LUALIB_OBJ) $(TPL_LMO_OBJ) $(TPL_PO2LMO_OBJ)
        $(LINK) $(SHLIB_FLAGS) $(TPL_LDFLAGS) -o src/$(TPL_SO) \
-               $(TPL_COMMON_OBJ) $(TPL_LUALIB_OBJ)
+               $(TPL_COMMON_OBJ) $(TPL_LMO_OBJ) $(TPL_LUALIB_OBJ)
+       $(LINK) -o src/$(TPL_PO2LMO) \
+               $(TPL_LMO_OBJ) $(TPL_PO2LMO_OBJ)
        mkdir -p dist$(LUCI_LIBRARYDIR)/template
        cp src/$(TPL_SO) dist$(LUCI_LIBRARYDIR)/template/$(TPL_SO)
 
@@ -24,3 +33,12 @@ clean: build-clean
 
 build-clean:
        rm -f src/*.o src/$(TPL_SO)
+
+host-compile: build-clean host-clean $(TPL_LMO_OBJ) $(TPL_PO2LMO_OBJ)
+       $(LINK) -o src/$(TPL_PO2LMO) $(TPL_LMO_OBJ) $(TPL_PO2LMO_OBJ)
+
+host-install: host-compile
+       cp src/$(TPL_PO2LMO) ../../build/$(TPL_PO2LMO)
+
+host-clean:
+       rm -f ../../build/$(TPL_PO2LMO)
index d8719c4..a30533b 100644 (file)
@@ -1097,216 +1097,243 @@ function cbi_tag_last(container)
        }
 }
 
-if( ! String.serialize )
-       String.serialize = function(o)
+String.prototype.serialize = function()
+{
+       var o = this;
+       switch(typeof(o))
        {
-               switch(typeof(o))
-               {
-                       case 'object':
-                               // null
-                               if( o == null )
-                               {
-                                       return 'null';
-                               }
+               case 'object':
+                       // null
+                       if( o == null )
+                       {
+                               return 'null';
+                       }
 
-                               // array
-                               else if( o.length )
-                               {
-                                       var i, s = '';
+                       // array
+                       else if( o.length )
+                       {
+                               var i, s = '';
 
-                                       for( var i = 0; i < o.length; i++ )
-                                               s += (s ? ', ' : '') + String.serialize(o[i]);
+                               for( var i = 0; i < o.length; i++ )
+                                       s += (s ? ', ' : '') + String.serialize(o[i]);
 
-                                       return '[ ' + s + ' ]';
-                               }
+                               return '[ ' + s + ' ]';
+                       }
 
-                               // object
-                               else
-                               {
-                                       var k, s = '';
+                       // object
+                       else
+                       {
+                               var k, s = '';
 
-                                       for( k in o )
-                                               s += (s ? ', ' : '') + k + ': ' + String.serialize(o[k]);
+                               for( k in o )
+                                       s += (s ? ', ' : '') + k + ': ' + String.serialize(o[k]);
 
-                                       return '{ ' + s + ' }';
-                               }
+                               return '{ ' + s + ' }';
+                       }
 
-                               break;
+                       break;
 
-                       case 'string':
-                               // complex string
-                               if( o.match(/[^a-zA-Z0-9_,.: -]/) )
-                                       return 'decodeURIComponent("' + encodeURIComponent(o) + '")';
+               case 'string':
+                       // complex string
+                       if( o.match(/[^a-zA-Z0-9_,.: -]/) )
+                               return 'decodeURIComponent("' + encodeURIComponent(o) + '")';
 
-                               // simple string
-                               else
-                                       return '"' + o + '"';
+                       // simple string
+                       else
+                               return '"' + o + '"';
 
-                               break;
+                       break;
 
-                       default:
-                               return o.toString();
-               }
+               default:
+                       return o.toString();
        }
+}
 
+String.prototype.format = function()
+{
+       if (!RegExp)
+               return;
 
-if( ! String.format )
-       String.format = function()
-       {
-               if (!arguments || arguments.length < 1 || !RegExp)
-                       return;
-
-               var html_esc = [/&/g, '&#38;', /"/g, '&#34;', /'/g, '&#39;', /</g, '&#60;', />/g, '&#62;'];
-               var quot_esc = [/"/g, '&#34;', /'/g, '&#39;'];
+       var html_esc = [/&/g, '&#38;', /"/g, '&#34;', /'/g, '&#39;', /</g, '&#60;', />/g, '&#62;'];
+       var quot_esc = [/"/g, '&#34;', /'/g, '&#39;'];
 
-               function esc(s, r) {
-                       for( var i = 0; i < r.length; i += 2 )
-                               s = s.replace(r[i], r[i+1]);
-                       return s;
-               }
+       function esc(s, r) {
+               for( var i = 0; i < r.length; i += 2 )
+                       s = s.replace(r[i], r[i+1]);
+               return s;
+       }
 
-               var str = arguments[0];
-               var out = '';
-               var re = /^(([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X|q|h|j|t|m))/;
-               var a = b = [], numSubstitutions = 0, numMatches = 0;
+       var str = this;
+       var out = '';
+       var re = /^(([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X|q|h|j|t|m))/;
+       var a = b = [], numSubstitutions = 0, numMatches = 0;
 
-               while( a = re.exec(str) )
-               {
-                       var m = a[1];
-                       var leftpart = a[2], pPad = a[3], pJustify = a[4], pMinLength = a[5];
-                       var pPrecision = a[6], pType = a[7];
+       while( a = re.exec(str) )
+       {
+               var m = a[1];
+               var leftpart = a[2], pPad = a[3], pJustify = a[4], pMinLength = a[5];
+               var pPrecision = a[6], pType = a[7];
 
-                       numMatches++;
+               numMatches++;
 
-                       if (pType == '%')
-                       {
-                               subst = '%';
-                       }
-                       else
+               if (pType == '%')
+               {
+                       subst = '%';
+               }
+               else
+               {
+                       if (numSubstitutions < arguments.length)
                        {
-                               if (numSubstitutions++ < arguments.length)
-                               {
-                                       var param = arguments[numSubstitutions];
+                               var param = arguments[numSubstitutions++];
 
-                                       var pad = '';
-                                       if (pPad && pPad.substr(0,1) == "'")
-                                               pad = leftpart.substr(1,1);
-                                       else if (pPad)
-                                               pad = pPad;
+                               var pad = '';
+                               if (pPad && pPad.substr(0,1) == "'")
+                                       pad = leftpart.substr(1,1);
+                               else if (pPad)
+                                       pad = pPad;
 
-                                       var justifyRight = true;
-                                       if (pJustify && pJustify === "-")
-                                               justifyRight = false;
+                               var justifyRight = true;
+                               if (pJustify && pJustify === "-")
+                                       justifyRight = false;
 
-                                       var minLength = -1;
-                                       if (pMinLength)
-                                               minLength = parseInt(pMinLength);
+                               var minLength = -1;
+                               if (pMinLength)
+                                       minLength = parseInt(pMinLength);
 
-                                       var precision = -1;
-                                       if (pPrecision && pType == 'f')
-                                               precision = parseInt(pPrecision.substring(1));
+                               var precision = -1;
+                               if (pPrecision && pType == 'f')
+                                       precision = parseInt(pPrecision.substring(1));
 
-                                       var subst = param;
+                               var subst = param;
 
-                                       switch(pType)
-                                       {
-                                               case 'b':
-                                                       subst = (parseInt(param) || 0).toString(2);
-                                                       break;
-
-                                               case 'c':
-                                                       subst = String.fromCharCode(parseInt(param) || 0);
-                                                       break;
-
-                                               case 'd':
-                                                       subst = (parseInt(param) || 0);
-                                                       break;
-
-                                               case 'u':
-                                                       subst = Math.abs(parseInt(param) || 0);
-                                                       break;
-
-                                               case 'f':
-                                                       subst = (precision > -1)
-                                                               ? ((parseFloat(param) || 0.0)).toFixed(precision)
-                                                               : (parseFloat(param) || 0.0);
-                                                       break;
-
-                                               case 'o':
-                                                       subst = (parseInt(param) || 0).toString(8);
-                                                       break;
-
-                                               case 's':
-                                                       subst = param;
-                                                       break;
-
-                                               case 'x':
-                                                       subst = ('' + (parseInt(param) || 0).toString(16)).toLowerCase();
-                                                       break;
-
-                                               case 'X':
-                                                       subst = ('' + (parseInt(param) || 0).toString(16)).toUpperCase();
-                                                       break;
-
-                                               case 'h':
-                                                       subst = esc(param, html_esc);
-                                                       break;
-
-                                               case 'q':
-                                                       subst = esc(param, quot_esc);
-                                                       break;
-
-                                               case 'j':
-                                                       subst = String.serialize(param);
-                                                       break;
-
-                                               case 't':
-                                                       var td = 0;
-                                                       var th = 0;
-                                                       var tm = 0;
-                                                       var ts = (param || 0);
-
-                                                       if (ts > 60) {
-                                                               tm = Math.floor(ts / 60);
-                                                               ts = (ts % 60);
-                                                       }
-
-                                                       if (tm > 60) {
-                                                               th = Math.floor(tm / 60);
-                                                               tm = (tm % 60);
-                                                       }
-
-                                                       if (th > 24) {
-                                                               td = Math.floor(th / 24);
-                                                               th = (th % 24);
-                                                       }
-
-                                                       subst = (td > 0)
-                                                               ? String.format('%dd %dh %dm %ds', td, th, tm, ts)
-                                                               : String.format('%dh %dm %ds', th, tm, ts);
-
-                                                       break;
-
-                                               case 'm':
-                                                       var mf = pMinLength ? parseInt(pMinLength) : 1000;
-                                                       var pr = pPrecision ? Math.floor(10*parseFloat('0'+pPrecision)) : 2;
-
-                                                       var i = 0;
-                                                       var val = parseFloat(param || 0);
-                                                       var units = [ '', 'K', 'M', 'G', 'T', 'P', 'E' ];
-
-                                                       for (i = 0; (i < units.length) && (val > mf); i++)
-                                                               val /= mf;
-
-                                                       subst = val.toFixed(pr) + ' ' + units[i];
-                                                       break;
-                                       }
+                               switch(pType)
+                               {
+                                       case 'b':
+                                               subst = (parseInt(param) || 0).toString(2);
+                                               break;
+
+                                       case 'c':
+                                               subst = String.fromCharCode(parseInt(param) || 0);
+                                               break;
+
+                                       case 'd':
+                                               subst = (parseInt(param) || 0);
+                                               break;
+
+                                       case 'u':
+                                               subst = Math.abs(parseInt(param) || 0);
+                                               break;
+
+                                       case 'f':
+                                               subst = (precision > -1)
+                                                       ? ((parseFloat(param) || 0.0)).toFixed(precision)
+                                                       : (parseFloat(param) || 0.0);
+                                               break;
+
+                                       case 'o':
+                                               subst = (parseInt(param) || 0).toString(8);
+                                               break;
+
+                                       case 's':
+                                               subst = param;
+                                               break;
+
+                                       case 'x':
+                                               subst = ('' + (parseInt(param) || 0).toString(16)).toLowerCase();
+                                               break;
+
+                                       case 'X':
+                                               subst = ('' + (parseInt(param) || 0).toString(16)).toUpperCase();
+                                               break;
+
+                                       case 'h':
+                                               subst = esc(param, html_esc);
+                                               break;
+
+                                       case 'q':
+                                               subst = esc(param, quot_esc);
+                                               break;
+
+                                       case 'j':
+                                               subst = String.serialize(param);
+                                               break;
+
+                                       case 't':
+                                               var td = 0;
+                                               var th = 0;
+                                               var tm = 0;
+                                               var ts = (param || 0);
+
+                                               if (ts > 60) {
+                                                       tm = Math.floor(ts / 60);
+                                                       ts = (ts % 60);
+                                               }
+
+                                               if (tm > 60) {
+                                                       th = Math.floor(tm / 60);
+                                                       tm = (tm % 60);
+                                               }
+
+                                               if (th > 24) {
+                                                       td = Math.floor(th / 24);
+                                                       th = (th % 24);
+                                               }
+
+                                               subst = (td > 0)
+                                                       ? String.format('%dd %dh %dm %ds', td, th, tm, ts)
+                                                       : String.format('%dh %dm %ds', th, tm, ts);
+
+                                               break;
+
+                                       case 'm':
+                                               var mf = pMinLength ? parseInt(pMinLength) : 1000;
+                                               var pr = pPrecision ? Math.floor(10*parseFloat('0'+pPrecision)) : 2;
+
+                                               var i = 0;
+                                               var val = parseFloat(param || 0);
+                                               var units = [ '', 'K', 'M', 'G', 'T', 'P', 'E' ];
+
+                                               for (i = 0; (i < units.length) && (val > mf); i++)
+                                                       val /= mf;
+
+                                               subst = val.toFixed(pr) + ' ' + units[i];
+                                               break;
                                }
                        }
-
-                       out += leftpart + subst;
-                       str = str.substr(m.length);
                }
 
-               return out + str;
+               out += leftpart + subst;
+               str = str.substr(m.length);
        }
+
+       return out + str;
+}
+
+String.prototype.nobr = function()
+{
+       return this.replace(/[\s\n]+/g, '&#160;');
+}
+
+String.serialize = function()
+{
+       var a = [ ];
+       for (var i = 1; i < arguments.length; i++)
+               a.push(arguments[i]);
+       return ''.serialize.apply(arguments[0], a);
+}
+
+String.format = function()
+{
+       var a = [ ];
+       for (var i = 1; i < arguments.length; i++)
+               a.push(arguments[i]);
+       return ''.format.apply(arguments[0], a);
+}
+
+String.nobr = function()
+{
+       var a = [ ];
+       for (var i = 1; i < arguments.length; i++)
+               a.push(arguments[i]);
+       return ''.nobr.apply(arguments[0], a);
+}
index ef45a89..ae570b1 100644 (file)
@@ -74,8 +74,6 @@ function load(cbimap, ...)
 
        assert(func, err)
 
-       luci.i18n.loadc("base")
-
        local env = {
                translate=i18n.translate,
                translatef=i18n.translatef,
index 1811250..c53307a 100644 (file)
@@ -4,9 +4,6 @@ LuCI - HTTP-Interaction
 Description:
 HTTP-Header manipulator and form variable preprocessor
 
-FileId:
-$Id$
-
 License:
 Copyright 2008 Steven Barth <steven@midlink.org>
 
@@ -334,12 +331,14 @@ function write_json(x)
                end
        elseif type(x) == "number" or type(x) == "boolean" then
                if (x ~= x) then
-                       -- NaN is the only value that doesn't equal to itself.   
+                       -- NaN is the only value that doesn't equal to itself.
                        write("Number.NaN")
                else
                        write(tostring(x))
                end
        else
-               write("%q" % tostring(x))
+               write('"%s"' % tostring(x):gsub('["%z\1-\31]', function(c)
+                       return '\\u%04x' % c:byte(1)
+               end))
        end
 end
index 816d903..545a8ae 100644 (file)
@@ -27,7 +27,8 @@ limitations under the License.
 --- LuCI translation library.
 module("luci.i18n", package.seeall)
 require("luci.util")
-require("lmo")
+
+local tparser = require "luci.template.parser"
 
 table   = {}
 i18ndir = luci.util.libpath() .. "/i18n/"
@@ -37,7 +38,6 @@ default = "en"
 
 --- Clear the translation table.
 function clear()
-       table = {}
 end
 
 --- Load a translation and copy its data into the translation table.
@@ -46,33 +46,6 @@ end
 -- @param force        Force reload even if already loaded (optional)
 -- @return             Success status
 function load(file, lang, force)
-       lang = lang and lang:gsub("_", "-") or ""
-       if force or not loaded[lang] or not loaded[lang][file] then
-               local f = lmo.open(i18ndir .. file .. "." .. lang .. ".lmo")
-               if f then
-                       if not table[lang] then
-                               table[lang] = { f }
-                               setmetatable(table[lang], {
-                                       __index = function(tbl, key)
-                                               for i = 1, #tbl do
-                                                       local s = rawget(tbl, i):lookup(key)
-                                                       if s then return s end
-                                               end
-                                       end
-                               })
-                       else
-                               table[lang][#table[lang]+1] = f
-                       end
-
-                       loaded[lang] = loaded[lang] or {}
-                       loaded[lang][file] = true
-                       return true
-               else
-                       return false
-               end
-       else
-               return true
-       end
 end
 
 --- Load a translation file using the default translation language.
@@ -80,9 +53,6 @@ end
 -- @param file Language file
 -- @param force        Force reload even if already loaded (optional)
 function loadc(file, force)
-       load(file, default, force)
-       if context.parent then load(file, context.parent, force) end
-       return load(file, context.lang, force)
 end
 
 --- Set the context default translation language.
@@ -90,16 +60,20 @@ end
 function setlanguage(lang)
        context.lang   = lang:gsub("_", "-")
        context.parent = (context.lang:match("^([a-z][a-z])_"))
+       if not tparser.load_catalog(context.lang, i18ndir) then
+               if context.parent then
+                       tparser.load_catalog(context.parent, i18ndir)
+                       return context.parent
+               end
+       end
+       return context.lang
 end
 
 --- Return the translated value for a specific translation key.
 -- @param key  Default translation text
 -- @return             Translated string
 function translate(key)
-       return (table[context.lang] and table[context.lang][key])
-               or (table[context.parent] and table[context.parent][key])
-               or (table[default] and table[default][key])
-               or key
+       return tparser.translate(key) or key
 end
 
 --- Return the translated value for a specific translation key and use it as sprintf pattern.
index 962c2ea..72127d1 100644 (file)
@@ -79,9 +79,8 @@ function Template.__init__(self, name)
                -- If we have no valid template throw error, otherwise cache the template
                if not self.template then
                        error("Failed to load template '" .. name .. "'.\n" ..
-                             "Error while parsing template '" .. sourcefile .. "'.\n" ..
-                             "A syntax error occured near '" ..
-                             (err or "(nil)"):gsub("\t", "\\t"):gsub("\n", "\\n") .. "'.")
+                             "Error while parsing template '" .. sourcefile .. "':\n" ..
+                             (err or "Unknown syntax error"))
                else
                        self.cache[name] = self.template
                end
index 78df97e..1814c93 100644 (file)
@@ -38,6 +38,6 @@
        //]]></script>
 
        <img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
-       <span id="cbi-apply-<%=id%>-status"><%:Waiting for router...%></span>
+       <span id="cbi-apply-<%=id%>-status"><%:Waiting for changes to be applied...%></span>
 </fieldset>
 <%-    end) %>
index ef67761..2c34028 100644 (file)
@@ -9,11 +9,15 @@
                <% if flow.skip then %>
                        <input class="cbi-button cbi-button-skip" type="submit" name="cbi.skip" value="<%:Skip%>" />
                <% end %>
-               <% if not autoapply then %>
+               <% if not autoapply and not flow.hideapplybtn then %>
                        <input class="cbi-button cbi-button-apply" type="submit" name="cbi.apply" value="<%:Save & Apply%>" />
                <% end %>
-               <input class="cbi-button cbi-button-save" type="submit" value="<%:Save%>" />
-               <input class="cbi-button cbi-button-reset" type="reset" value="<%:Reset%>" />
+               <% if not flow.hidesavebtn then %>
+                       <input class="cbi-button cbi-button-save" type="submit" value="<%:Save%>" />
+               <% end %>
+               <% if not flow.hideresetbtn then %>
+                       <input class="cbi-button cbi-button-reset" type="reset" value="<%:Reset%>" />
+               <% end %>
 
                <script type="text/javascript">cbi_d_update();</script>
        </div>
diff --git a/libs/web/src/po2lmo.c b/libs/web/src/po2lmo.c
new file mode 100644 (file)
index 0000000..fb607a4
--- /dev/null
@@ -0,0 +1,242 @@
+/*
+ * lmo - Lua Machine Objects - PO to LMO conversion tool
+ *
+ *   Copyright (C) 2009-2012 Jo-Philipp Wich <xm@subsignal.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+#include "template_lmo.h"
+
+static void die(const char *msg)
+{
+       fprintf(stderr, "Error: %s\n", msg);
+       exit(1);
+}
+
+static void usage(const char *name)
+{
+       fprintf(stderr, "Usage: %s input.po output.lmo\n", name);
+       exit(1);
+}
+
+static void print(const void *ptr, size_t size, size_t nmemb, FILE *stream)
+{
+       if( fwrite(ptr, size, nmemb, stream) == 0 )
+               die("Failed to write stdout");
+}
+
+static int extract_string(const char *src, char *dest, int len)
+{
+       int pos = 0;
+       int esc = 0;
+       int off = -1;
+
+       for( pos = 0; (pos < strlen(src)) && (pos < len); pos++ )
+       {
+               if( (off == -1) && (src[pos] == '"') )
+               {
+                       off = pos + 1;
+               }
+               else if( off >= 0 )
+               {
+                       if( esc == 1 )
+                       {
+                               switch (src[pos])
+                               {
+                               case '"':
+                               case '\\':
+                                       off++;
+                                       break;
+                               }
+                               dest[pos-off] = src[pos];
+                               esc = 0;
+                       }
+                       else if( src[pos] == '\\' )
+                       {
+                               dest[pos-off] = src[pos];
+                               esc = 1;
+                       }
+                       else if( src[pos] != '"' )
+                       {
+                               dest[pos-off] = src[pos];
+                       }
+                       else
+                       {
+                               dest[pos-off] = '\0';
+                               break;
+                       }
+               }
+       }
+
+       return (off > -1) ? strlen(dest) : -1;
+}
+
+static int cmp_index(const void *a, const void *b)
+{
+       uint32_t x = ntohl(((const lmo_entry_t *)a)->key_id);
+       uint32_t y = ntohl(((const lmo_entry_t *)b)->key_id);
+
+       if (x < y)
+               return -1;
+       else if (x > y)
+               return 1;
+
+       return 0;
+}
+
+static void print_index(void *array, int n, FILE *out)
+{
+       lmo_entry_t *e;
+
+       qsort(array, n, sizeof(*e), cmp_index);
+
+       for (e = array; n > 0; n--, e++)
+       {
+               print(&e->key_id, sizeof(uint32_t), 1, out);
+               print(&e->val_id, sizeof(uint32_t), 1, out);
+               print(&e->offset, sizeof(uint32_t), 1, out);
+               print(&e->length, sizeof(uint32_t), 1, out);
+       }
+}
+
+int main(int argc, char *argv[])
+{
+       char line[4096];
+       char key[4096];
+       char val[4096];
+       char tmp[4096];
+       int state  = 0;
+       int offset = 0;
+       int length = 0;
+       int n_entries = 0;
+       void *array = NULL;
+       lmo_entry_t *entry = NULL;
+       uint32_t key_id, val_id;
+
+       FILE *in;
+       FILE *out;
+
+       if( (argc != 3) || ((in = fopen(argv[1], "r")) == NULL) || ((out = fopen(argv[2], "w")) == NULL) )
+               usage(argv[0]);
+
+       memset(line, 0, sizeof(key));
+       memset(key, 0, sizeof(val));
+       memset(val, 0, sizeof(val));
+
+       while( (NULL != fgets(line, sizeof(line), in)) || (state >= 2 && feof(in)) )
+       {
+               if( state == 0 && strstr(line, "msgid \"") == line )
+               {
+                       switch(extract_string(line, key, sizeof(key)))
+                       {
+                               case -1:
+                                       die("Syntax error in msgid");
+                               case 0:
+                                       state = 1;
+                                       break;
+                               default:
+                                       state = 2;
+                       }
+               }
+               else if( state == 1 || state == 2 )
+               {
+                       if( strstr(line, "msgstr \"") == line || state == 2 )
+                       {
+                               switch(extract_string(line, val, sizeof(val)))
+                               {
+                                       case -1:
+                                               state = 4;
+                                               break;
+                                       default:
+                                               state = 3;
+                               }
+                       }
+                       else
+                       {
+                               switch(extract_string(line, tmp, sizeof(tmp)))
+                               {
+                                       case -1:
+                                               state = 2;
+                                               break;
+                                       default:
+                                               strcat(key, tmp);
+                               }
+                       }
+               }
+               else if( state == 3 )
+               {
+                       switch(extract_string(line, tmp, sizeof(tmp)))
+                       {
+                               case -1:
+                                       state = 4;
+                                       break;
+                               default:
+                                       strcat(val, tmp);
+                       }
+               }
+
+               if( state == 4 )
+               {
+                       if( strlen(key) > 0 && strlen(val) > 0 )
+                       {
+                               key_id = sfh_hash(key, strlen(key));
+                               val_id = sfh_hash(val, strlen(val));
+
+                               if( key_id != val_id )
+                               {
+                                       n_entries++;
+                                       array = realloc(array, n_entries * sizeof(lmo_entry_t));
+                                       entry = (lmo_entry_t *)array + n_entries - 1;
+
+                                       if (!array)
+                                               die("Out of memory");
+
+                                       entry->key_id = htonl(key_id);
+                                       entry->val_id = htonl(val_id);
+                                       entry->offset = htonl(offset);
+                                       entry->length = htonl(strlen(val));
+
+                                       length = strlen(val) + ((4 - (strlen(val) % 4)) % 4);
+
+                                       print(val, length, 1, out);
+                                       offset += length;
+                               }
+                       }
+
+                       state = 0;
+                       memset(key, 0, sizeof(key));
+                       memset(val, 0, sizeof(val));
+               }
+
+               memset(line, 0, sizeof(line));
+       }
+
+       print_index(array, n_entries, out);
+
+       if( offset > 0 )
+       {
+               offset = htonl(offset);
+               print(&offset, sizeof(uint32_t), 1, out);
+               fsync(fileno(out));
+               fclose(out);
+       }
+       else
+       {
+               fclose(out);
+               unlink(argv[2]);
+       }
+
+       fclose(in);
+       return(0);
+}
diff --git a/libs/web/src/template_lmo.c b/libs/web/src/template_lmo.c
new file mode 100644 (file)
index 0000000..7fcd2cd
--- /dev/null
@@ -0,0 +1,325 @@
+/*
+ * lmo - Lua Machine Objects - Base functions
+ *
+ *   Copyright (C) 2009-2010 Jo-Philipp Wich <xm@subsignal.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+#include "template_lmo.h"
+
+/*
+ * Hash function from http://www.azillionmonkeys.com/qed/hash.html
+ * Copyright (C) 2004-2008 by Paul Hsieh
+ */
+
+uint32_t sfh_hash(const char *data, int len)
+{
+       uint32_t hash = len, tmp;
+       int rem;
+
+       if (len <= 0 || data == NULL) return 0;
+
+       rem = len & 3;
+       len >>= 2;
+
+       /* Main loop */
+       for (;len > 0; len--) {
+               hash  += sfh_get16(data);
+               tmp    = (sfh_get16(data+2) << 11) ^ hash;
+               hash   = (hash << 16) ^ tmp;
+               data  += 2*sizeof(uint16_t);
+               hash  += hash >> 11;
+       }
+
+       /* Handle end cases */
+       switch (rem) {
+               case 3: hash += sfh_get16(data);
+                       hash ^= hash << 16;
+                       hash ^= data[sizeof(uint16_t)] << 18;
+                       hash += hash >> 11;
+                       break;
+               case 2: hash += sfh_get16(data);
+                       hash ^= hash << 11;
+                       hash += hash >> 17;
+                       break;
+               case 1: hash += *data;
+                       hash ^= hash << 10;
+                       hash += hash >> 1;
+       }
+
+       /* Force "avalanching" of final 127 bits */
+       hash ^= hash << 3;
+       hash += hash >> 5;
+       hash ^= hash << 4;
+       hash += hash >> 17;
+       hash ^= hash << 25;
+       hash += hash >> 6;
+
+       return hash;
+}
+
+uint32_t lmo_canon_hash(const char *str, int len)
+{
+       char res[4096];
+       char *ptr, prev;
+       int off;
+
+       if (!str || len >= sizeof(res))
+               return 0;
+
+       for (prev = ' ', ptr = res, off = 0; off < len; prev = *str, off++, str++)
+       {
+               if (isspace(*str))
+               {
+                       if (!isspace(prev))
+                               *ptr++ = ' ';
+               }
+               else
+               {
+                       *ptr++ = *str;
+               }
+       }
+
+       if ((ptr > res) && isspace(*(ptr-1)))
+               ptr--;
+
+       return sfh_hash(res, ptr - res);
+}
+
+lmo_archive_t * lmo_open(const char *file)
+{
+       int in = -1;
+       uint32_t idx_offset = 0;
+       struct stat s;
+
+       lmo_archive_t *ar = NULL;
+
+       if (stat(file, &s) == -1)
+               goto err;
+
+       if ((in = open(file, O_RDONLY)) == -1)
+               goto err;
+
+       if ((ar = (lmo_archive_t *)malloc(sizeof(*ar))) != NULL)
+       {
+               memset(ar, 0, sizeof(*ar));
+
+               ar->fd     = in;
+               ar->size = s.st_size;
+
+               fcntl(ar->fd, F_SETFD, fcntl(ar->fd, F_GETFD) | FD_CLOEXEC);
+
+               if ((ar->mmap = mmap(NULL, ar->size, PROT_READ, MAP_SHARED, ar->fd, 0)) == MAP_FAILED)
+                       goto err;
+
+               idx_offset = *((const uint32_t *)
+                                          (ar->mmap + ar->size - sizeof(uint32_t)));
+
+               if (idx_offset >= ar->size)
+                       goto err;
+
+               ar->index  = (lmo_entry_t *)(ar->mmap + idx_offset);
+               ar->length = (ar->size - idx_offset - sizeof(uint32_t)) / sizeof(lmo_entry_t);
+               ar->end    = ar->mmap + ar->size;
+
+               return ar;
+       }
+
+err:
+       if (in > -1)
+               close(in);
+
+       if (ar != NULL)
+       {
+               if ((ar->mmap != NULL) && (ar->mmap != MAP_FAILED))
+                       munmap(ar->mmap, ar->size);
+
+               free(ar);
+       }
+
+       return NULL;
+}
+
+void lmo_close(lmo_archive_t *ar)
+{
+       if (ar != NULL)
+       {
+               if ((ar->mmap != NULL) && (ar->mmap != MAP_FAILED))
+                       munmap(ar->mmap, ar->size);
+
+               close(ar->fd);
+               free(ar);
+
+               ar = NULL;
+       }
+}
+
+
+lmo_catalog_t *_lmo_catalogs = NULL;
+lmo_catalog_t *_lmo_active_catalog = NULL;
+
+int lmo_load_catalog(const char *lang, const char *dir)
+{
+       DIR *dh = NULL;
+       char pattern[16];
+       char path[PATH_MAX];
+       struct dirent *de = NULL;
+
+       lmo_archive_t *ar = NULL;
+       lmo_catalog_t *cat = NULL;
+
+       if (!lmo_change_catalog(lang))
+               return 0;
+
+       if (!dir || !(dh = opendir(dir)))
+               goto err;
+
+       if (!(cat = malloc(sizeof(*cat))))
+               goto err;
+
+       memset(cat, 0, sizeof(*cat));
+
+       snprintf(cat->lang, sizeof(cat->lang), "%s", lang);
+       snprintf(pattern, sizeof(pattern), "*.%s.lmo", lang);
+
+       while ((de = readdir(dh)) != NULL)
+       {
+               if (!fnmatch(pattern, de->d_name, 0))
+               {
+                       snprintf(path, sizeof(path), "%s/%s", dir, de->d_name);
+                       ar = lmo_open(path);
+
+                       if (ar)
+                       {
+                               ar->next = cat->archives;
+                               cat->archives = ar;
+                       }
+               }
+       }
+
+       closedir(dh);
+
+       cat->next = _lmo_catalogs;
+       _lmo_catalogs = cat;
+
+       if (!_lmo_active_catalog)
+               _lmo_active_catalog = cat;
+
+       return 0;
+
+err:
+       if (dh) closedir(dh);
+       if (cat) free(cat);
+
+       return -1;
+}
+
+int lmo_change_catalog(const char *lang)
+{
+       lmo_catalog_t *cat;
+
+       for (cat = _lmo_catalogs; cat; cat = cat->next)
+       {
+               if (!strncmp(cat->lang, lang, sizeof(cat->lang)))
+               {
+                       _lmo_active_catalog = cat;
+                       return 0;
+               }
+       }
+
+       return -1;
+}
+
+static lmo_entry_t * lmo_find_entry(lmo_archive_t *ar, uint32_t hash)
+{
+       unsigned int m, l, r;
+
+       l = 0;
+       r = ar->length - 1;
+
+       while (1)
+       {
+               m = l + ((r - l) / 2);
+
+               if (r < l)
+                       break;
+
+               if (ar->index[m].key_id == hash)
+                       return &ar->index[m];
+
+               if (ar->index[m].key_id > hash)
+               {
+                       if (!m)
+                               break;
+
+                       r = m - 1;
+               }
+               else
+               {
+                       l = m + 1;
+               }
+       }
+
+       return NULL;
+}
+
+int lmo_translate(const char *key, int keylen, char **out, int *outlen)
+{
+       uint32_t hash;
+       lmo_entry_t *e;
+       lmo_archive_t *ar;
+
+       if (!key || !_lmo_active_catalog)
+               return -2;
+
+       hash = htonl(lmo_canon_hash(key, keylen));
+
+       for (ar = _lmo_active_catalog->archives; ar; ar = ar->next)
+       {
+               if ((e = lmo_find_entry(ar, hash)) != NULL)
+               {
+                       *out = ar->mmap + e->offset;
+                       *outlen = e->length;
+                       return 0;
+               }
+       }
+
+       return -1;
+}
+
+void lmo_close_catalog(const char *lang)
+{
+       lmo_archive_t *ar, *next;
+       lmo_catalog_t *cat, *prev;
+
+       for (prev = NULL, cat = _lmo_catalogs; cat; prev = cat, cat = cat->next)
+       {
+               if (!strncmp(cat->lang, lang, sizeof(cat->lang)))
+               {
+                       if (prev)
+                               prev->next = cat->next;
+                       else
+                               _lmo_catalogs = cat->next;
+
+                       for (ar = cat->archives; ar; ar = next)
+                       {
+                               next = ar->next;
+                               lmo_close(ar);
+                       }
+
+                       free(cat);
+                       break;
+               }
+       }
+}
diff --git a/libs/web/src/template_lmo.h b/libs/web/src/template_lmo.h
new file mode 100644 (file)
index 0000000..a40d758
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * lmo - Lua Machine Objects - General header
+ *
+ *   Copyright (C) 2009-2012 Jo-Philipp Wich <xm@subsignal.org>
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+#ifndef _TEMPLATE_LMO_H_
+#define _TEMPLATE_LMO_H_
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
+#include <arpa/inet.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fnmatch.h>
+#include <dirent.h>
+#include <ctype.h>
+
+#if (defined(__GNUC__) && defined(__i386__))
+#define sfh_get16(d) (*((const uint16_t *) (d)))
+#else
+#define sfh_get16(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\
+                                          +(uint32_t)(((const uint8_t *)(d))[0]) )
+#endif
+
+
+struct lmo_entry {
+       uint32_t key_id;
+       uint32_t val_id;
+       uint32_t offset;
+       uint32_t length;
+} __attribute__((packed));
+
+typedef struct lmo_entry lmo_entry_t;
+
+
+struct lmo_archive {
+       int         fd;
+       int             length;
+       uint32_t    size;
+       lmo_entry_t *index;
+       char        *mmap;
+       char            *end;
+       struct lmo_archive *next;
+};
+
+typedef struct lmo_archive lmo_archive_t;
+
+
+struct lmo_catalog {
+       char lang[6];
+       struct lmo_archive *archives;
+       struct lmo_catalog *next;
+};
+
+typedef struct lmo_catalog lmo_catalog_t;
+
+
+uint32_t sfh_hash(const char *data, int len);
+uint32_t lmo_canon_hash(const char *data, int len);
+
+lmo_archive_t * lmo_open(const char *file);
+void lmo_close(lmo_archive_t *ar);
+
+
+extern lmo_catalog_t *_lmo_catalogs;
+extern lmo_catalog_t *_lmo_active_catalog;
+
+int lmo_load_catalog(const char *lang, const char *dir);
+int lmo_change_catalog(const char *lang);
+int lmo_translate(const char *key, int keylen, char **out, int *outlen);
+void lmo_close_catalog(const char *lang);
+
+#endif
index d3a5f89..0d43641 100644 (file)
 int template_L_parse(lua_State *L)
 {
        const char *file = luaL_checkstring(L, 1);
-       struct template_parser parser;
-       int lua_status;
+       struct template_parser *parser = template_open(file);
+       int lua_status, rv;
 
-       if( (parser.fd = open(file, O_RDONLY)) > 0 )
+       if (!parser)
        {
-               parser.flags   = 0;
-               parser.bufsize = 0;
-               parser.state   = T_STATE_TEXT_NEXT;
+               lua_pushnil(L);
+               lua_pushinteger(L, errno);
+               lua_pushstring(L, strerror(errno));
+               return 3;
+       }
 
-               lua_status = lua_load(L, template_reader, &parser, file);
+       lua_status = lua_load(L, template_reader, parser, file);
 
-               (void) close(parser.fd);
+       if (lua_status == 0)
+               rv = 1;
+       else
+               rv = template_error(L, parser);
 
+       template_close(parser);
 
-               if( lua_status == 0 )
-               {
-                       return 1;
-               }
-               else
-               {
-                       lua_pushnil(L);
-                       lua_pushinteger(L, lua_status);
-                       lua_pushlstring(L, parser.out, parser.outsize);
-                       return 3;
-               }
+       return rv;
+}
+
+int template_L_utf8(lua_State *L)
+{
+       size_t len = 0;
+       const char *str = luaL_checklstring(L, 1, &len);
+       char *res = utf8(str, len);
+
+       if (res != NULL)
+       {
+               lua_pushstring(L, res);
+               free(res);
+
+               return 1;
        }
 
-       lua_pushnil(L);
-       lua_pushinteger(L, 255);
-       lua_pushstring(L, "No such file or directory");
-       return 3;
+       return 0;
 }
 
-int template_L_sanitize_utf8(lua_State *L)
+int template_L_pcdata(lua_State *L)
 {
        size_t len = 0;
        const char *str = luaL_checklstring(L, 1, &len);
-       char *res = sanitize_utf8(str, len);
+       char *res = pcdata(str, len);
 
        if (res != NULL)
        {
@@ -71,11 +78,11 @@ int template_L_sanitize_utf8(lua_State *L)
        return 0;
 }
 
-int template_L_sanitize_pcdata(lua_State *L)
+int template_L_striptags(lua_State *L)
 {
        size_t len = 0;
        const char *str = luaL_checklstring(L, 1, &len);
-       char *res = sanitize_pcdata(str, len);
+       char *res = striptags(str, len);
 
        if (res != NULL)
        {
@@ -88,12 +95,65 @@ int template_L_sanitize_pcdata(lua_State *L)
        return 0;
 }
 
+static int template_L_load_catalog(lua_State *L) {
+       const char *lang = luaL_optstring(L, 1, "en");
+       const char *dir  = luaL_optstring(L, 2, NULL);
+       lua_pushboolean(L, !lmo_load_catalog(lang, dir));
+       return 1;
+}
+
+static int template_L_close_catalog(lua_State *L) {
+       const char *lang = luaL_optstring(L, 1, "en");
+       lmo_close_catalog(lang);
+       return 0;
+}
+
+static int template_L_change_catalog(lua_State *L) {
+       const char *lang = luaL_optstring(L, 1, "en");
+       lua_pushboolean(L, !lmo_change_catalog(lang));
+       return 1;
+}
+
+static int template_L_translate(lua_State *L) {
+       size_t len;
+       char *tr;
+       int trlen;
+       const char *key = luaL_checklstring(L, 1, &len);
+
+       switch (lmo_translate(key, len, &tr, &trlen))
+       {
+               case 0:
+                       lua_pushlstring(L, tr, trlen);
+                       return 1;
+
+               case -1:
+                       return 0;
+       }
+
+       lua_pushnil(L);
+       lua_pushstring(L, "no catalog loaded");
+       return 2;
+}
+
+static int template_L_hash(lua_State *L) {
+       size_t len;
+       const char *key = luaL_checklstring(L, 1, &len);
+       lua_pushinteger(L, sfh_hash(key, len));
+       return 1;
+}
+
 
 /* module table */
 static const luaL_reg R[] = {
        { "parse",                              template_L_parse },
-       { "sanitize_utf8",              template_L_sanitize_utf8 },
-       { "sanitize_pcdata",    template_L_sanitize_pcdata },
+       { "utf8",                               template_L_utf8 },
+       { "pcdata",                             template_L_pcdata },
+       { "striptags",                  template_L_striptags },
+       { "load_catalog",               template_L_load_catalog },
+       { "close_catalog",              template_L_close_catalog },
+       { "change_catalog",             template_L_change_catalog },
+       { "translate",                  template_L_translate },
+       { "hash",                               template_L_hash },
        { NULL,                                 NULL }
 };
 
index d628b9d..1b659be 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "template_parser.h"
 #include "template_utils.h"
+#include "template_lmo.h"
 
 #define TEMPLATE_LUALIB_META  "template.parser"
 
index a0a400b..6054451 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * LuCI Template - Parser implementation
  *
- *   Copyright (C) 2009 Jo-Philipp Wich <xm@subsignal.org>
+ *   Copyright (C) 2009-2012 Jo-Philipp Wich <xm@subsignal.org>
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
  */
 
 #include "template_parser.h"
+#include "template_utils.h"
+#include "template_lmo.h"
 
 
 /* leading and trailing code for different types */
-const char * gen_code[7][2] = {
+const char *gen_code[9][2] = {
+       { NULL,                                 NULL                    },
        { "write(\"",                   "\")"                   },
        { NULL,                                 NULL                    },
        { "write(tostring(",    " or \"\"))"    },
        { "include(\"",                 "\")"                   },
-       { "write(pcdata(translate(\"",  "\")))" },
-       { "write(translate(\"", "\"))"                  },
-       { NULL,                                 " "                             }
+       { "write(\"",                   "\")"                   },
+       { "write(\"",                   "\")"                   },
+       { NULL,                                 " "                             },
+       { NULL,                                 NULL                    },
 };
 
 /* Simple strstr() like function that takes len arguments for both haystack and needle. */
@@ -59,407 +63,324 @@ static char *strfind(char *haystack, int hslen, const char *needle, int ndlen)
        return NULL;
 }
 
-/*
- * Inspect current read buffer and find the number of "vague" characters at the end
- * which could indicate an opening token. Returns the number of "vague" chars.
- * The last continuous sequence of whitespace, optionally followed by a "<" is
- * treated as "vague" because whitespace may be discarded if the upcoming opening
- * token indicates pre-whitespace-removal ("<%-"). A single remaining "<" char
- * can't be differentiated from an opening token ("<%"), so it's kept to be processed
- * in the next cycle.
- */
-static int stokscan(struct template_parser *data, int off, int no_whitespace)
+struct template_parser * template_open(const char *file)
 {
-       int i;
-       int skip = 0;
-       int tokoff = data->bufsize - 1;
+       struct stat s;
+       static struct template_parser *parser;
 
-       for( i = tokoff; i >= off; i-- )
-       {
-               if( data->buf[i] == T_TOK_START[0] )
-               {
-                       skip = tokoff - i + 1;
-                       tokoff = i - 1;
-                       break;
-               }
-       }
+       if (!(parser = malloc(sizeof(*parser))))
+               goto err;
+
+       memset(parser, 0, sizeof(*parser));
+       parser->fd = -1;
+       parser->file = file;
+
+       if (stat(file, &s))
+               goto err;
+
+       if ((parser->fd = open(file, O_RDONLY)) < 0)
+               goto err;
 
-       if( !no_whitespace )
+       parser->size = s.st_size;
+       parser->mmap = mmap(NULL, parser->size, PROT_READ, MAP_PRIVATE,
+                                               parser->fd, 0);
+
+       if (parser->mmap != MAP_FAILED)
        {
-               for( i = tokoff; i >= off; i-- )
-               {
-                       if( isspace(data->buf[i]) )
-                               skip++;
-                       else
-                               break;
-               }
+               parser->off = parser->mmap;
+               parser->cur_chunk.type = T_TYPE_INIT;
+               parser->cur_chunk.s    = parser->mmap;
+               parser->cur_chunk.e    = parser->mmap;
+
+               return parser;
        }
 
-       return skip;
+err:
+       template_close(parser);
+       return NULL;
 }
 
-/*
- * Similar to stokscan() but looking for closing token indicators.
- * Matches "-", optionally followed by a "%" char.
- */
-static int etokscan(struct template_parser *data)
+void template_close(struct template_parser *parser)
 {
-       int skip = 0;
+       if (!parser)
+               return;
+
+       if (parser->gc != NULL)
+               free(parser->gc);
 
-       if( (data->bufsize > 0) && (data->buf[data->bufsize-1] == T_TOK_END[0]) )
-               skip++;
+       if ((parser->mmap != NULL) && (parser->mmap != MAP_FAILED))
+               munmap(parser->mmap, parser->size);
 
-       if( (data->bufsize > skip) && (data->buf[data->bufsize-skip-1] == T_TOK_SKIPWS[0]) )
-               skip++;
+       if (parser->fd >= 0)
+               close(parser->fd);
 
-       return skip;
+       free(parser);
 }
 
-/*
- * Generate Lua expressions from the given raw code, write it into the
- * output buffer and set the lua_Reader specific size pointer.
- * Takes parser-state, lua_Reader's size pointer and generator flags
- * as parameter. The given flags indicate whether leading or trailing
- * code should be added. Returns a pointer to the output buffer.
- */
-static const char * generate_expression(struct template_parser *data, size_t *sz, int what)
+void template_text(struct template_parser *parser, const char *e)
 {
-       char tmp[T_OUTBUFSZ];
-       int i;
-       int size = 0;
-       int start = 0;
-       int whitespace = 0;
+       const char *s = parser->off;
 
-       memset(tmp, 0, T_OUTBUFSZ);
-
-       /* Inject leading expression code (if any) */
-       if( (what & T_GEN_START) && (gen_code[data->type][0] != NULL) )
+       if (s < (parser->mmap + parser->size))
        {
-               memcpy(tmp, gen_code[data->type][0], strlen(gen_code[data->type][0]));
-               size += strlen(gen_code[data->type][0]);
-       }
-
-       /* Parse source buffer */
-       for( i = 0; i < data->outsize; i++ )
-       {
-               /* Skip leading whitespace for non-raw and non-expr chunks */
-               if( !start && isspace(data->out[i]) && (data->type == T_TYPE_I18N ||
-           data->type == T_TYPE_I18N_RAW || data->type == T_TYPE_INCLUDE) )
-                       continue;
-               else if( !start )
-                       start = 1;
-
-               /* Found whitespace after i18n key */
-               if( data->type == T_TYPE_I18N || data->type == T_TYPE_I18N_RAW )
+               if (parser->strip_after)
                {
-                       /* Is initial whitespace, insert space */
-                       if( !whitespace && isspace(data->out[i]) )
-                       {
-                               tmp[size++] = ' ';
-                               whitespace = 1;
-                       }
-
-                       /* Suppress subsequent whitespace, escape special chars */
-                       else if( !isspace(data->out[i]) )
-                       {
-                               if( data->out[i] == '\\' || data->out[i] == '"' )
-                                       tmp[size++] = '\\';
-
-                               tmp[size++] = data->out[i];
-                               whitespace = 0;
-                       }
+                       while ((s <= e) && isspace(*s))
+                               s++;
                }
 
-               /* Escape quotes, backslashes and newlines for plain and include expressions */
-               else if( (data->type == T_TYPE_TEXT || data->type == T_TYPE_INCLUDE) &&
-                   (data->out[i] == '\\' || data->out[i] == '"' || data->out[i] == '\n' || data->out[i] == '\t') )
-               {
-                       tmp[size++] = '\\';
+               parser->cur_chunk.type = T_TYPE_TEXT;
+       }
+       else
+       {
+               parser->cur_chunk.type = T_TYPE_EOF;
+       }
 
-                       switch(data->out[i])
-                       {
-                               case '\n':
-                                       tmp[size++] = 'n';
-                                       break;
+       parser->cur_chunk.line = parser->line;
+       parser->cur_chunk.s = s;
+       parser->cur_chunk.e = e;
+}
 
-                               case '\t':
-                                       tmp[size++] = 't';
-                                       break;
+void template_code(struct template_parser *parser, const char *e)
+{
+       const char *s = parser->off;
 
-                               default:
-                                       tmp[size++] = data->out[i];
-                       }
-               }
+       parser->strip_before = 0;
+       parser->strip_after = 0;
 
-               /* Normal char */
-               else
-               {
-                       tmp[size++] = data->out[i];
-               }
+       if (*s == '-')
+       {
+               parser->strip_before = 1;
+               for (s++; (s <= e) && (*s == ' ' || *s == '\t'); s++);
        }
 
-       /* Inject trailing expression code (if any) */
-       if( (what & T_GEN_END) && (gen_code[data->type][1] != NULL) )
+       if (*(e-1) == '-')
        {
-               /* Strip trailing space for i18n expressions */
-               if( data->type == T_TYPE_I18N || data->type == T_TYPE_I18N_RAW )
-                       if( (size > 0) && (tmp[size-1] == ' ') )
-                               size--;
-
-               memcpy(&tmp[size], gen_code[data->type][1], strlen(gen_code[data->type][1]));
-               size += strlen(gen_code[data->type][1]);
+               parser->strip_after = 1;
+               for (e--; (e >= s) && (*e == ' ' || *e == '\t'); e--);
        }
 
-       *sz = data->outsize = size;
-       memset(data->out, 0, T_OUTBUFSZ);
-       memcpy(data->out, tmp, size);
+       switch (*s)
+       {
+               /* comment */
+               case '#':
+                       s++;
+                       parser->cur_chunk.type = T_TYPE_COMMENT;
+                       break;
 
-       //printf("<<<%i|%i|%i|%s>>>\n", what, data->type, *sz, data->out);
+               /* include */
+               case '+':
+                       s++;
+                       parser->cur_chunk.type = T_TYPE_INCLUDE;
+                       break;
 
-       return data->out;
-}
+               /* translate */
+               case ':':
+                       s++;
+                       parser->cur_chunk.type = T_TYPE_I18N;
+                       break;
 
-/*
- * Move the number of bytes specified in data->bufsize from the
- * given source pointer to the beginning of the read buffer.
- */
-static void bufmove(struct template_parser *data, const char *src)
-{
-       if( data->bufsize > 0 )
-               memmove(data->buf, src, data->bufsize);
-       else if( data->bufsize < 0 )
-               data->bufsize = 0;
+               /* translate raw */
+               case '_':
+                       s++;
+                       parser->cur_chunk.type = T_TYPE_I18N_RAW;
+                       break;
 
-       data->buf[data->bufsize] = 0;
+               /* expr */
+               case '=':
+                       s++;
+                       parser->cur_chunk.type = T_TYPE_EXPR;
+                       break;
+
+               /* code */
+               default:
+                       parser->cur_chunk.type = T_TYPE_CODE;
+                       break;
+       }
+
+       parser->cur_chunk.line = parser->line;
+       parser->cur_chunk.s = s;
+       parser->cur_chunk.e = e;
 }
 
-/*
- * Move the given amount of bytes from the given source pointer
- * to the output buffer and set data->outputsize.
- */
-static void bufout(struct template_parser *data, const char *src, int len)
+static const char *
+template_format_chunk(struct template_parser *parser, size_t *sz)
 {
-       if( len >= 0 )
-       {
-               memset(data->out, 0, T_OUTBUFSZ);
-               memcpy(data->out, src, len);
-               data->outsize = len;
-       }
-       else
+       const char *s, *p;
+       const char *head, *tail;
+       struct template_chunk *c = &parser->prv_chunk;
+       struct template_buffer *buf;
+
+       *sz = 0;
+       s = parser->gc = NULL;
+
+       if (parser->strip_before && c->type == T_TYPE_TEXT)
        {
-               data->outsize = 0;
+               while ((c->e > c->s) && isspace(*(c->e - 1)))
+                       c->e--;
        }
-}
 
-/*
- * lua_Reader compatible function that parses template code on demand from
- * the given file handle.
- */
-const char *template_reader(lua_State *L, void *ud, size_t *sz)
-{
-       struct template_parser *data = ud;
-       char *match = NULL;
-       int off = 0;
-       int ignore = 0;
-       int genflags = 0;
-       int readlen = 0;
-       int vague = 0;
-
-       while( !(data->flags & T_FLAG_EOF) || (data->bufsize > 0) )
+       /* empty chunk */
+       if (c->s == c->e)
        {
-               /* Fill buffer */
-               if( !(data->flags & T_FLAG_EOF) && (data->bufsize < T_READBUFSZ) )
+               if (c->type == T_TYPE_EOF)
                {
-                       if( (readlen = read(data->fd, &data->buf[data->bufsize], T_READBUFSZ - data->bufsize)) > 0 )
-                               data->bufsize += readlen;
-                       else if( readlen == 0 )
-                               data->flags |= T_FLAG_EOF;
-                       else
-                               return NULL;
+                       *sz = 0;
+                       s = NULL;
                }
+               else
+               {
+                       *sz = 1;
+                       s = " ";
+               }
+       }
 
-               /* Evaluate state */
-               switch(data->state)
+       /* format chunk */
+       else if ((buf = buf_init(c->e - c->s)) != NULL)
+       {
+               if ((head = gen_code[c->type][0]) != NULL)
+                       buf_append(buf, head, strlen(head));
+
+               switch (c->type)
                {
-                       /* Plain text chunk (before "<%") */
-                       case T_STATE_TEXT_INIT:
-                       case T_STATE_TEXT_NEXT:
-                               off = 0; ignore = 0; *sz = 0;
-                               data->type = T_TYPE_TEXT;
-
-                               /* Skip leading whitespace if requested */
-                               if( data->flags & T_FLAG_SKIPWS )
-                               {
-                                       data->flags &= ~T_FLAG_SKIPWS;
-                                       while( (off < data->bufsize) && isspace(data->buf[off]) )
-                                               off++;
-                               }
+                       case T_TYPE_TEXT:
+                               luastr_escape(buf, c->s, c->e - c->s, 0);
+                               break;
 
-                               /* Found "<%" */
-                               if( (match = strfind(&data->buf[off], data->bufsize - off - 1, T_TOK_START, strlen(T_TOK_START))) != NULL )
-                               {
-                                       readlen = (int)(match - &data->buf[off]);
-                                       data->bufsize -= (readlen + strlen(T_TOK_START) + off);
-                                       match += strlen(T_TOK_START);
-
-                                       /* Check for leading '-' */
-                                       if( match[0] == T_TOK_SKIPWS[0] )
-                                       {
-                                               data->bufsize--;
-                                               match++;
-
-                                               while( (readlen > 1) && isspace(data->buf[off+readlen-1]) )
-                                               {
-                                                       readlen--;
-                                               }
-                                       }
-
-                                       bufout(data, &data->buf[off], readlen);
-                                       bufmove(data, match);
-                                       data->state = T_STATE_CODE_INIT;
-                               }
+                       case T_TYPE_EXPR:
+                               buf_append(buf, c->s, c->e - c->s);
+                               for (p = c->s; p < c->e; p++)
+                                       parser->line += (*p == '\n');
+                               break;
 
-                               /* Maybe plain chunk */
-                               else
-                               {
-                                       /* Preserve trailing "<" or white space, maybe a start token */
-                                       vague = stokscan(data, off, 0);
-
-                                       /* We can process some bytes ... */
-                                       if( vague < data->bufsize )
-                                       {
-                                               readlen = data->bufsize - vague - off;
-                                       }
-
-                                       /* No bytes to process, so try to remove at least whitespace ... */
-                                       else
-                                       {
-                                               /* ... but try to preserve trailing "<" ... */
-                                               vague = stokscan(data, off, 1);
-
-                                               if( vague < data->bufsize )
-                                               {
-                                                       readlen = data->bufsize - vague - off;
-                                               }
-
-                                               /* ... no chance, push out buffer */
-                                               else
-                                               {
-                                                       readlen = vague - off;
-                                                       vague   = 0;
-                                               }
-                                       }
-
-                                       bufout(data, &data->buf[off], readlen);
-
-                                       data->state   = T_STATE_TEXT_NEXT;
-                                       data->bufsize = vague;
-                                       bufmove(data, &data->buf[off+readlen]);
-                               }
+                       case T_TYPE_INCLUDE:
+                               luastr_escape(buf, c->s, c->e - c->s, 0);
+                               break;
 
-                               if( ignore || data->outsize == 0 )
-                                       continue;
-                               else
-                                       return generate_expression(data, sz, T_GEN_START | T_GEN_END);
+                       case T_TYPE_I18N:
+                               luastr_translate(buf, c->s, c->e - c->s, 1);
+                               break;
 
+                       case T_TYPE_I18N_RAW:
+                               luastr_translate(buf, c->s, c->e - c->s, 0);
                                break;
 
-                       /* Ignored chunk (inside "<%# ... %>") */
-                       case T_STATE_SKIP:
-                               ignore = 1;
+                       case T_TYPE_CODE:
+                               buf_append(buf, c->s, c->e - c->s);
+                               for (p = c->s; p < c->e; p++)
+                                       parser->line += (*p == '\n');
+                               break;
+               }
 
-                       /* Initial code chunk ("<% ...") */
-                       case T_STATE_CODE_INIT:
-                               off = 0;
+               if ((tail = gen_code[c->type][1]) != NULL)
+                       buf_append(buf, tail, strlen(tail));
 
-                               /* Check for leading '-' */
-                               if( data->buf[off] == T_TOK_SKIPWS[0] )
-                                       off++;
+               *sz = buf_length(buf);
+               s = parser->gc = buf_destroy(buf);
 
-                               /* Determine code type */
-                               switch(data->buf[off])
-                               {
-                                       case '#':
-                                               ignore = 1;
-                                               off++;
-                                               data->type = T_TYPE_COMMENT;
-                                               break;
-
-                                       case '=':
-                                               off++;
-                                               data->type = T_TYPE_EXPR;
-                                               break;
-
-                                       case '+':
-                                               off++;
-                                               data->type = T_TYPE_INCLUDE;
-                                               break;
-
-                                       case ':':
-                                               off++;
-                                               data->type = T_TYPE_I18N;
-                                               break;
-
-                                       case '_':
-                                               off++;
-                                               data->type = T_TYPE_I18N_RAW;
-                                               break;
-
-                                       default:
-                                               data->type = T_TYPE_CODE;
-                                               break;
-                               }
+               if (!*sz)
+               {
+                       *sz = 1;
+                       s = " ";
+               }
+       }
 
-                       /* Subsequent code chunk ("..." or "... %>") */ 
-                       case T_STATE_CODE_NEXT:
-                               /* Found "%>" */
-                               if( (match = strfind(&data->buf[off], data->bufsize - off, T_TOK_END, strlen(T_TOK_END))) != NULL )
-                               {
-                                       genflags = ( data->state == T_STATE_CODE_INIT )
-                                               ? (T_GEN_START | T_GEN_END) : T_GEN_END;
+       return s;
+}
 
-                                       readlen = (int)(match - &data->buf[off]);
+const char *template_reader(lua_State *L, void *ud, size_t *sz)
+{
+       struct template_parser *parser = ud;
+       int rem = parser->size - (parser->off - parser->mmap);
+       char *tag;
 
-                                       /* Check for trailing '-' */
-                                       if( (match > data->buf) && (*(match-1) == T_TOK_SKIPWS[0]) )
-                                       {
-                                               readlen--;
-                                               data->flags |= T_FLAG_SKIPWS;
-                                       }
+       parser->prv_chunk = parser->cur_chunk;
 
-                                       bufout(data, &data->buf[off], readlen);
+       /* free previous string */
+       if (parser->gc)
+       {
+               free(parser->gc);
+               parser->gc = NULL;
+       }
 
-                                       data->state = T_STATE_TEXT_INIT;
-                                       data->bufsize -= ((int)(match - &data->buf[off]) + strlen(T_TOK_END) + off);
-                                       bufmove(data, &match[strlen(T_TOK_END)]);
-                               }
+       /* before tag */
+       if (!parser->in_expr)
+       {
+               if ((tag = strfind(parser->off, rem, "<%", 2)) != NULL)
+               {
+                       template_text(parser, tag);
+                       parser->off = tag + 2;
+                       parser->in_expr = 1;
+               }
+               else
+               {
+                       template_text(parser, parser->mmap + parser->size);
+                       parser->off = parser->mmap + parser->size;
+               }
+       }
 
-                               /* Code chunk */
-                               else
-                               {
-                                       genflags = ( data->state == T_STATE_CODE_INIT ) ? T_GEN_START : 0;
+       /* inside tag */
+       else
+       {
+               if ((tag = strfind(parser->off, rem, "%>", 2)) != NULL)
+               {
+                       template_code(parser, tag);
+                       parser->off = tag + 2;
+                       parser->in_expr = 0;
+               }
+               else
+               {
+                       /* unexpected EOF */
+                       template_code(parser, parser->mmap + parser->size);
 
-                                       /* Preserve trailing "%" and "-", maybe an end token */
-                                       vague   = etokscan(data);
-                                       readlen = data->bufsize - off - vague;
-                                       bufout(data, &data->buf[off], readlen);
+                       *sz = 1;
+                       return "\033";
+               }
+       }
 
-                                       data->state   = T_STATE_CODE_NEXT;
-                                       data->bufsize = vague;
-                                       bufmove(data, &data->buf[readlen+off]);
-                               }
+       return template_format_chunk(parser, sz);
+}
 
-                               if( ignore || (data->outsize == 0 && !genflags) )
-                                       continue;
-                               else
-                                       return generate_expression(data, sz, genflags);
+int template_error(lua_State *L, struct template_parser *parser)
+{
+       const char *err = luaL_checkstring(L, -1);
+       const char *off = parser->prv_chunk.s;
+       const char *ptr;
+       char msg[1024];
+       int line = 0;
+       int chunkline = 0;
+
+       if ((ptr = strfind((char *)err, strlen(err), "]:", 2)) != NULL)
+       {
+               chunkline = atoi(ptr + 2) - parser->prv_chunk.line;
 
+               while (*ptr)
+               {
+                       if (*ptr++ == ' ')
+                       {
+                               err = ptr;
                                break;
+                       }
                }
        }
 
-       *sz = 0;
-       return NULL;
-}
+       if (strfind((char *)err, strlen(err), "'char(27)'", 10) != NULL)
+       {
+               off = parser->mmap + parser->size;
+               err = "'%>' expected before end of file";
+               chunkline = 0;
+       }
+
+       for (ptr = parser->mmap; ptr < off; ptr++)
+               if (*ptr == '\n')
+                       line++;
 
+       snprintf(msg, sizeof(msg), "Syntax error in %s:%d: %s",
+                        parser->file, line + chunkline, err ? err : "(unknown error)");
 
+       lua_pushnil(L);
+       lua_pushinteger(L, line + chunkline);
+       lua_pushstring(L, msg);
+
+       return 3;
+}
index 24933f0..d1c6062 100644 (file)
 
 #include <stdlib.h>
 #include <stdio.h>
+#include <stdint.h>
 #include <unistd.h>
 #include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/mman.h>
 #include <string.h>
 #include <ctype.h>
+#include <errno.h>
 
 #include <lua.h>
 #include <lualib.h>
 #include <lauxlib.h>
 
 
-#define T_READBUFSZ                    1024
-#define T_OUTBUFSZ                     T_READBUFSZ * 3
-
-/* parser states */
-#define T_STATE_TEXT_INIT      0
-#define T_STATE_TEXT_NEXT      1
-#define T_STATE_CODE_INIT      2
-#define T_STATE_CODE_NEXT      3
-#define T_STATE_SKIP           4
-
-/* parser flags */
-#define T_FLAG_EOF                     0x01
-#define T_FLAG_SKIPWS          0x02
-
-/* tokens used in matching and expression generation */
-#define T_TOK_START                    "<%"
-#define T_TOK_END                      "%>"
-#define T_TOK_SKIPWS           "-"
+/* code types */
+#define T_TYPE_INIT                    0
+#define T_TYPE_TEXT                    1
+#define T_TYPE_COMMENT         2
+#define T_TYPE_EXPR                    3
+#define T_TYPE_INCLUDE                 4
+#define T_TYPE_I18N                    5
+#define T_TYPE_I18N_RAW                6
+#define T_TYPE_CODE                    7
+#define T_TYPE_EOF                     8
 
-/* generator flags */
-#define T_GEN_START                    0x01
-#define T_GEN_END                      0x02
 
-/* code types */
-#define T_TYPE_TEXT                    0
-#define T_TYPE_COMMENT         1
-#define T_TYPE_EXPR                    2
-#define T_TYPE_INCLUDE                 3
-#define T_TYPE_I18N                    4
-#define T_TYPE_I18N_RAW                5
-#define T_TYPE_CODE                    6
+struct template_chunk {
+       const char *s;
+       const char *e;
+       int type;
+       int line;
+};
 
 /* parser state */
 struct template_parser {
        int fd;
-       int bufsize;
-       int outsize;
-       int state;
-       int flags;
-       int type;
-       char buf[T_READBUFSZ];
-       char out[T_OUTBUFSZ];
+       uint32_t size;
+       char *mmap;
+       char *off;
+       char *gc;
+       int line;
+       int in_expr;
+       int strip_before;
+       int strip_after;
+       struct template_chunk prv_chunk;
+       struct template_chunk cur_chunk;
+       const char *file;
 };
 
+struct template_parser * template_open(const char *file);
+void template_close(struct template_parser *parser);
 
 const char *template_reader(lua_State *L, void *ud, size_t *sz);
+int template_error(lua_State *L, struct template_parser *parser);
 
 #endif
index 36f08aa..80542bd 100644 (file)
  */
 
 #include "template_utils.h"
+#include "template_lmo.h"
 
 /* initialize a buffer object */
-static struct template_buffer * buf_init(void)
+struct template_buffer * buf_init(int size)
 {
        struct template_buffer *buf;
 
+       if (size <= 0)
+               size = 1024;
+
        buf = (struct template_buffer *)malloc(sizeof(struct template_buffer));
 
        if (buf != NULL)
        {
                buf->fill = 0;
-               buf->size = 1024;
-               buf->data = (unsigned char *)malloc(buf->size);
+               buf->size = size;
+               buf->data = malloc(buf->size);
 
                if (buf->data != NULL)
                {
@@ -46,17 +50,21 @@ static struct template_buffer * buf_init(void)
 }
 
 /* grow buffer */
-static int buf_grow(struct template_buffer *buf)
+int buf_grow(struct template_buffer *buf, int size)
 {
        unsigned int off = (buf->dptr - buf->data);
-       unsigned char *data =
-               (unsigned char *)realloc(buf->data, buf->size + 1024);
+       char *data;
+
+       if (size <= 0)
+               size = 1024;
+
+       data = realloc(buf->data, buf->size + size);
 
        if (data != NULL)
        {
                buf->data  = data;
                buf->dptr  = data + off;
-               buf->size += 1024;
+               buf->size += size;
 
                return buf->size;
        }
@@ -65,9 +73,9 @@ static int buf_grow(struct template_buffer *buf)
 }
 
 /* put one char into buffer object */
-static int buf_putchar(struct template_buffer *buf, unsigned char c)
+int buf_putchar(struct template_buffer *buf, char c)
 {
-       if( ((buf->fill + 1) >= buf->size) && !buf_grow(buf) )
+       if( ((buf->fill + 1) >= buf->size) && !buf_grow(buf, 0) )
                return 0;
 
        *(buf->dptr++) = c;
@@ -78,11 +86,11 @@ static int buf_putchar(struct template_buffer *buf, unsigned char c)
 }
 
 /* append data to buffer */
-static int buf_append(struct template_buffer *buf, unsigned char *s, int len)
+int buf_append(struct template_buffer *buf, const char *s, int len)
 {
-       while ((buf->fill + len + 1) >= buf->size)
+       if ((buf->fill + len + 1) >= buf->size)
        {
-               if (!buf_grow(buf))
+               if (!buf_grow(buf, len + 1))
                        return 0;
        }
 
@@ -95,13 +103,19 @@ static int buf_append(struct template_buffer *buf, unsigned char *s, int len)
        return len;
 }
 
+/* read buffer length */
+int buf_length(struct template_buffer *buf)
+{
+       return buf->fill;
+}
+
 /* destroy buffer object and return pointer to data */
-static char * buf_destroy(struct template_buffer *buf)
+char * buf_destroy(struct template_buffer *buf)
 {
-       unsigned char *data = buf->data;
+       char *data = buf->data;
 
        free(buf);
-       return (char *)data;
+       return data;
 }
 
 
@@ -229,7 +243,7 @@ static int _validate_utf8(unsigned char **s, int l, struct template_buffer *buf)
                                        !mb_is_surrogate(ptr, n) && !mb_is_illegal(ptr, n))
                                {
                                        /* copy sequence */
-                                       if (!buf_append(buf, ptr, n))
+                                       if (!buf_append(buf, (char *)ptr, n))
                                                return 0;
                                }
 
@@ -264,9 +278,9 @@ static int _validate_utf8(unsigned char **s, int l, struct template_buffer *buf)
 }
 
 /* sanitize given string and replace all invalid UTF-8 sequences with "?" */
-char * sanitize_utf8(const char *s, unsigned int l)
+char * utf8(const char *s, unsigned int l)
 {
-       struct template_buffer *buf = buf_init();
+       struct template_buffer *buf = buf_init(l);
        unsigned char *ptr = (unsigned char *)s;
        unsigned int v, o;
 
@@ -278,7 +292,7 @@ char * sanitize_utf8(const char *s, unsigned int l)
                /* ascii char */
                if ((*ptr >= 0x01) && (*ptr <= 0x7F))
                {
-                       if (!buf_putchar(buf, *ptr++))
+                       if (!buf_putchar(buf, (char)*ptr++))
                                break;
                }
 
@@ -298,9 +312,9 @@ char * sanitize_utf8(const char *s, unsigned int l)
 /* Sanitize given string and strip all invalid XML bytes
  * Validate UTF-8 sequences
  * Escape XML control chars */
-char * sanitize_pcdata(const char *s, unsigned int l)
+char * pcdata(const char *s, unsigned int l)
 {
-       struct template_buffer *buf = buf_init();
+       struct template_buffer *buf = buf_init(l);
        unsigned char *ptr = (unsigned char *)s;
        unsigned int o, v;
        char esq[8];
@@ -329,7 +343,7 @@ char * sanitize_pcdata(const char *s, unsigned int l)
                {
                        esl = snprintf(esq, sizeof(esq), "&#%i;", *ptr);
 
-                       if (!buf_append(buf, (unsigned char *)esq, esl))
+                       if (!buf_append(buf, esq, esl))
                                break;
 
                        ptr++;
@@ -338,7 +352,7 @@ char * sanitize_pcdata(const char *s, unsigned int l)
                /* ascii char */
                else if (*ptr <= 0x7F)
                {
-                       buf_putchar(buf, *ptr++);
+                       buf_putchar(buf, (char)*ptr++);
                }
 
                /* multi byte sequence */
@@ -353,3 +367,128 @@ char * sanitize_pcdata(const char *s, unsigned int l)
 
        return buf_destroy(buf);
 }
+
+char * striptags(const char *s, unsigned int l)
+{
+       struct template_buffer *buf = buf_init(l);
+       unsigned char *ptr = (unsigned char *)s;
+       unsigned char *end = ptr + l;
+       unsigned char *tag;
+       unsigned char prev;
+       char esq[8];
+       int esl;
+
+       for (prev = ' '; ptr < end; ptr++)
+       {
+               if ((*ptr == '<') && ((ptr + 2) < end) &&
+                       ((*(ptr + 1) == '/') || isalpha(*(ptr + 1))))
+               {
+                       for (tag = ptr; tag < end; tag++)
+                       {
+                               if (*tag == '>')
+                               {
+                                       if (!isspace(prev))
+                                               buf_putchar(buf, ' ');
+
+                                       ptr = tag;
+                                       prev = ' ';
+                                       break;
+                               }
+                       }
+               }
+               else if (isspace(*ptr))
+               {
+                       if (!isspace(prev))
+                               buf_putchar(buf, *ptr);
+
+                       prev = *ptr;
+               }
+               else
+               {
+                       switch(*ptr)
+                       {
+                               case '"':
+                               case '\'':
+                               case '<':
+                               case '>':
+                               case '&':
+                                       esl = snprintf(esq, sizeof(esq), "&#%i;", *ptr);
+                                       buf_append(buf, esq, esl);
+                                       break;
+
+                               default:
+                                       buf_putchar(buf, *ptr);
+                                       break;
+                       }
+
+                       prev = *ptr;
+               }
+       }
+
+       return buf_destroy(buf);
+}
+
+void luastr_escape(struct template_buffer *out, const char *s, unsigned int l,
+                                  int escape_xml)
+{
+       int esl;
+       char esq[8];
+       char *ptr;
+
+       for (ptr = (char *)s; ptr < (s + l); ptr++)
+       {
+               switch (*ptr)
+               {
+               case '\\':
+                       buf_append(out, "\\\\", 2);
+                       break;
+
+               case '"':
+                       if (escape_xml)
+                               buf_append(out, "&#34;", 5);
+                       else
+                               buf_append(out, "\\\"", 2);
+                       break;
+
+               case '\n':
+                       buf_append(out, "\\n", 2);
+                       break;
+
+               case '\'':
+               case '&':
+               case '<':
+               case '>':
+                       if (escape_xml)
+                       {
+                               esl = snprintf(esq, sizeof(esq), "&#%i;", *ptr);
+                               buf_append(out, esq, esl);
+                               break;
+                       }
+
+               default:
+                       buf_putchar(out, *ptr);
+               }
+       }
+}
+
+void luastr_translate(struct template_buffer *out, const char *s, unsigned int l,
+                                         int escape_xml)
+{
+       char *tr;
+       int trlen;
+
+       switch (lmo_translate(s, l, &tr, &trlen))
+       {
+               case 0:
+                       luastr_escape(out, tr, trlen, escape_xml);
+                       break;
+
+               case -1:
+                       luastr_escape(out, s, l, escape_xml);
+                       break;
+
+               default:
+                       /* no catalog loaded */
+                       break;
+       }
+}
index 1f7d438..c54af75 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * LuCI Template - Utility header
  *
- *   Copyright (C) 2010 Jo-Philipp Wich <xm@subsignal.org>
+ *   Copyright (C) 2010-2012 Jo-Philipp Wich <xm@subsignal.org>
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
 
 /* buffer object */
 struct template_buffer {
-       unsigned char *data;
-       unsigned char *dptr;
+       char *data;
+       char *dptr;
        unsigned int size;
        unsigned int fill;
 };
 
-char * sanitize_utf8(const char *s, unsigned int l);
-char * sanitize_pcdata(const char *s, unsigned int l);
+struct template_buffer * buf_init(int size);
+int buf_grow(struct template_buffer *buf, int size);
+int buf_putchar(struct template_buffer *buf, char c);
+int buf_append(struct template_buffer *buf, const char *s, int len);
+int buf_length(struct template_buffer *buf);
+char * buf_destroy(struct template_buffer *buf);
+
+char * utf8(const char *s, unsigned int l);
+char * pcdata(const char *s, unsigned int l);
+char * striptags(const char *s, unsigned int l);
+
+void luastr_escape(struct template_buffer *out, const char *s, unsigned int l, int escape_xml);
+void luastr_translate(struct template_buffer *out, const char *s, unsigned int l, int escape_xml);
 
 #endif
diff --git a/libs/web/standalone.mk b/libs/web/standalone.mk
new file mode 100644 (file)
index 0000000..66a0e5a
--- /dev/null
@@ -0,0 +1,56 @@
+LUAC = luac
+LUAC_OPTIONS = -s
+LUA_TARGET ?= source
+
+LUA_MODULEDIR = /usr/local/share/lua/5.1
+LUA_LIBRARYDIR = /usr/local/lib/lua/5.1
+
+OS ?= $(shell uname)
+
+LUA_SHLIBS = $(shell pkg-config --silence-errors --libs lua5.1 || pkg-config --silence-errors --libs lua-5.1 || pkg-config --silence-errors --libs lua)
+LUA_LIBS = $(if $(LUA_SHLIBS),$(LUA_SHLIBS),$(firstword $(wildcard /usr/lib/liblua.a /usr/local/lib/liblua.a /opt/local/lib/liblua.a)))
+LUA_CFLAGS = $(shell pkg-config --silence-errors --cflags lua5.1 || pkg-config --silence-errors --cflags lua-5.1 || pkg-config --silence-errors --cflags lua)
+
+CC = gcc
+AR = ar
+RANLIB = ranlib
+CFLAGS = -O2
+FPIC = -fPIC
+EXTRA_CFLAGS = --std=gnu99
+WFLAGS = -Wall -Werror -pedantic
+CPPFLAGS =
+COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) $(WFLAGS)
+ifeq ($(OS),Darwin)
+  SHLIB_FLAGS = -bundle -undefined dynamic_lookup
+else
+  SHLIB_FLAGS = -shared
+endif
+LINK = $(CC) $(LDFLAGS)
+
+.PHONY: all build compile luacompile luasource clean luaclean
+
+all: build
+
+build: luabuild gccbuild
+
+luabuild: lua$(LUA_TARGET)
+
+gccbuild: compile
+compile:
+
+clean: luaclean
+
+luasource:
+       mkdir -p dist$(LUA_MODULEDIR)
+       cp -pR root/* dist 2>/dev/null || true
+       cp -pR lua/* dist$(LUA_MODULEDIR) 2>/dev/null || true
+       for i in $$(find dist -name .svn); do rm -rf $$i || true; done
+
+luastrip: luasource
+       for i in $$(find dist -type f -name '*.lua'); do perl -e 'undef $$/; open( F, "< $$ARGV[0]" ) || die $$!; $$src = <F>; close F; $$src =~ s/--\[\[.*?\]\](--)?//gs; $$src =~ s/^\s*--.*?\n//gm; open( F, "> $$ARGV[0]" ) || die $$!; print F $$src; close F' $$i; done
+
+luacompile: luasource
+       for i in $$(find dist -name *.lua -not -name debug.lua); do $(LUAC) $(LUAC_OPTIONS) -o $$i $$i; done
+
+luaclean:
+       rm -rf dist
index 68a5936..753d2c7 100644 (file)
@@ -30,15 +30,13 @@ function action_status()
        end
 end
 
-function action_restart()
+function action_restart(args)
        local uci = require "luci.model.uci".cursor()
-       local rqp = luci.dispatcher.context.requestpath
-
-       if rqp[3] then
+       if args then
                local service
                local services = { }
 
-               for service in rqp[3]:gmatch("[%w_-]+") do
+               for service in args:gmatch("[%w_-]+") do
                        services[#services+1] = service
                end
 
index e5c517f..3ececa8 100644 (file)
@@ -153,35 +153,40 @@ function wifi_network(id)
        return { }
 end
 
-function switch_status(dev)
-       local ports = { }
-       local swc = io.popen("swconfig dev %q show" % dev, "r")
-       if swc then
-               local l
-               repeat
-                       l = swc:read("*l")
-                       if l then
-                               local port, up = l:match("port:(%d+) link:(%w+)")
-                               if port then
-                                       local speed  = l:match(" speed:(%d+)")
-                                       local duplex = l:match(" (%w+)-duplex")
-                                       local txflow = l:match(" (txflow)")
-                                       local rxflow = l:match(" (rxflow)")
-                                       local auto   = l:match(" (auto)")
-
-                                       ports[#ports+1] = {
-                                               port   = tonumber(port) or 0,
-                                               speed  = tonumber(speed) or 0,
-                                               link   = (up == "up"),
-                                               duplex = (duplex == "full"),
-                                               rxflow = (not not rxflow),
-                                               txflow = (not not txflow),
-                                               auto   = (not not auto)
-                                       }
+function switch_status(devs)
+       local dev
+       local switches = { }
+       for dev in devs:gmatch("[^%s,]+") do
+               local ports = { }
+               local swc = io.popen("swconfig dev %q show" % dev, "r")
+               if swc then
+                       local l
+                       repeat
+                               l = swc:read("*l")
+                               if l then
+                                       local port, up = l:match("port:(%d+) link:(%w+)")
+                                       if port then
+                                               local speed  = l:match(" speed:(%d+)")
+                                               local duplex = l:match(" (%w+)-duplex")
+                                               local txflow = l:match(" (txflow)")
+                                               local rxflow = l:match(" (rxflow)")
+                                               local auto   = l:match(" (auto)")
+
+                                               ports[#ports+1] = {
+                                                       port   = tonumber(port) or 0,
+                                                       speed  = tonumber(speed) or 0,
+                                                       link   = (up == "up"),
+                                                       duplex = (duplex == "full"),
+                                                       rxflow = (not not rxflow),
+                                                       txflow = (not not txflow),
+                                                       auto   = (not not auto)
+                                               }
+                                       end
                                end
-                       end
-               until not l
-               swc:close()
+                       until not l
+                       swc:close()
+               end
+               switches[dev] = ports
        end
-       return ports
+       return switches
 end
index 85dc68f..f401ecd 100644 (file)
@@ -68,7 +68,7 @@ function index()
                        page = entry({"admin", "network", "wireless_reconnect"}, call("wifi_reconnect"), nil)
                        page.leaf = true
 
-                       page = entry({"admin", "network", "wireless_shutdown"}, call("wifi_reconnect"), nil)
+                       page = entry({"admin", "network", "wireless_shutdown"}, call("wifi_shutdown"), nil)
                        page.leaf = true
 
                        page = entry({"admin", "network", "wireless"}, arcombine(template("admin_network/wifi_overview"), cbi("admin_network/wifi")), _("Wifi"), 15)
@@ -156,6 +156,12 @@ function index()
 
                page = entry({"admin", "network", "diag_traceroute"}, call("diag_traceroute"), nil)
                page.leaf = true
+
+               page = entry({"admin", "network", "diag_ping6"}, call("diag_ping6"), nil)
+               page.leaf = true
+
+               page = entry({"admin", "network", "diag_traceroute6"}, call("diag_traceroute6"), nil)
+               page.leaf = true
 --     end
 end
 
@@ -235,13 +241,12 @@ function wifi_delete(network)
        luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless"))
 end
 
-function iface_status()
-       local path = luci.dispatcher.context.requestpath
+function iface_status(ifaces)
        local netm = require "luci.model.network".init()
        local rv   = { }
 
        local iface
-       for iface in path[#path]:gmatch("[%w%.%-_]+") do
+       for iface in ifaces:gmatch("[%w%.%-_]+") do
                local net = netm:get_network(iface)
                local device = net and net:get_interface()
                if device then
@@ -318,11 +323,8 @@ function iface_status()
        luci.http.status(404, "No such device")
 end
 
-function iface_reconnect()
-       local path  = luci.dispatcher.context.requestpath
-       local iface = path[#path]
+function iface_reconnect(iface)
        local netmd = require "luci.model.network".init()
-
        local net = netmd:get_network(iface)
        if net then
                luci.sys.call("env -i /sbin/ifup %q >/dev/null 2>/dev/null" % iface)
@@ -333,11 +335,8 @@ function iface_reconnect()
        luci.http.status(404, "No such interface")
 end
 
-function iface_shutdown()
-       local path  = luci.dispatcher.context.requestpath
-       local iface = path[#path]
+function iface_shutdown(iface)
        local netmd = require "luci.model.network".init()
-
        local net = netmd:get_network(iface)
        if net then
                luci.sys.call("env -i /sbin/ifdown %q >/dev/null 2>/dev/null" % iface)
@@ -348,11 +347,8 @@ function iface_shutdown()
        luci.http.status(404, "No such interface")
 end
 
-function iface_delete()
-       local path  = luci.dispatcher.context.requestpath
-       local iface = path[#path]
+function iface_delete(iface)
        local netmd = require "luci.model.network".init()
-
        local net = netmd:del_network(iface)
        if net then
                luci.sys.call("env -i /sbin/ifdown %q >/dev/null 2>/dev/null" % iface)
@@ -365,13 +361,12 @@ function iface_delete()
        luci.http.status(404, "No such interface")
 end
 
-function wifi_status()
-       local path = luci.dispatcher.context.requestpath
+function wifi_status(devs)
        local s    = require "luci.tools.status"
        local rv   = { }
 
        local dev
-       for dev in path[#path]:gmatch("[%w%.%-]+") do
+       for dev in devs:gmatch("[%w%.%-]+") do
                rv[#rv+1] = s.wifi_network(dev)
        end
 
@@ -384,23 +379,19 @@ function wifi_status()
        luci.http.status(404, "No such device")
 end
 
-function wifi_reconnect()
-       local path  = luci.dispatcher.context.requestpath
-       local mode  = path[#path-1]
-       local wnet  = path[#path]
+local function wifi_reconnect_shutdown(shutdown, wnet)
        local netmd = require "luci.model.network".init()
-
        local net = netmd:get_wifinet(wnet)
        local dev = net:get_device()
        if dev and net then
                luci.sys.call("env -i /sbin/wifi down >/dev/null 2>/dev/null")
 
                dev:set("disabled", nil)
-               net:set("disabled", (mode == "wireless_shutdown") and 1 or nil)
+               net:set("disabled", shutdown and 1 or nil)
                netmd:commit("wireless")
 
                luci.sys.call("env -i /sbin/wifi up >/dev/null 2>/dev/null")
-               luci.http.status(200, (mode == "wireless_shutdown") and "Shutdown" or "Reconnected")
+               luci.http.status(200, shutdown and "Shutdown" or "Reconnected")
 
                return
        end
@@ -408,6 +399,14 @@ function wifi_reconnect()
        luci.http.status(404, "No such radio")
 end
 
+function wifi_reconnect(wnet)
+       wifi_reconnect_shutdown(false, wnet)
+end
+
+function wifi_shutdown(wnet)
+       wifi_reconnect_shutdown(true, wnet)
+end
+
 function lease_status()
        local s = require "luci.tools.status"
 
@@ -419,18 +418,14 @@ function lease_status()
        luci.http.write(']')
 end
 
-function switch_status()
-       local path = luci.dispatcher.context.requestpath
+function switch_status(switches)
        local s = require "luci.tools.status"
 
        luci.http.prepare_content("application/json")
-       luci.http.write_json(s.switch_status(path[#path]))
+       luci.http.write_json(s.switch_status(switches))
 end
 
-function diag_command(cmd)
-       local path = luci.dispatcher.context.requestpath
-       local addr = path[#path]
-
+function diag_command(cmd, addr)
        if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then
                luci.http.prepare_content("text/plain")
 
@@ -452,14 +447,22 @@ function diag_command(cmd)
        luci.http.status(500, "Bad address")
 end
 
-function diag_ping()
-       diag_command("ping -c 5 -W 1 %q 2>&1")
+function diag_ping(addr)
+       diag_command("ping -c 5 -W 1 %q 2>&1", addr)
+end
+
+function diag_traceroute(addr)
+       diag_command("traceroute -q 1 -w 1 -n %q 2>&1", addr)
+end
+
+function diag_nslookup(addr)
+       diag_command("nslookup %q 2>&1", addr)
 end
 
-function diag_traceroute()
-       diag_command("traceroute -q 1 -w 1 -n %q 2>&1")
+function diag_ping6(addr)
+       diag_command("ping6 -c 5 %q 2>&1", addr)
 end
 
-function diag_nslookup()
-       diag_command("nslookup %q 2>&1")
+function diag_traceroute6(addr)
+       diag_command("traceroute6 -q 1 -w 2 -n %q 2>&1", addr)
 end
index d7d301c..a9e37c7 100644 (file)
@@ -71,10 +71,7 @@ function action_iptables()
        end
 end
 
-function action_bandwidth()
-       local path  = luci.dispatcher.context.requestpath
-       local iface = path[#path]
-
+function action_bandwidth(iface)
        luci.http.prepare_content("application/json")
 
        local bwc = io.popen("luci-bwc -i %q 2>/dev/null" % iface)
@@ -92,10 +89,7 @@ function action_bandwidth()
        end
 end
 
-function action_wireless()
-       local path  = luci.dispatcher.context.requestpath
-       local iface = path[#path]
-
+function action_wireless(iface)
        luci.http.prepare_content("application/json")
 
        local bwc = io.popen("luci-bwc -r %q 2>/dev/null" % iface)
index c791a57..b4fee8c 100644 (file)
@@ -30,7 +30,8 @@ ip = s:option(Value, "ip", translate("IP address"))
 ip.datatype = "ipaddr"
 ip.rmempty  = true
 
-for i, dataset in ipairs(luci.sys.net.arptable()) do
+local arptable = luci.sys.net.arptable() or {}
+for i, dataset in ipairs(arptable) do
        ip:value(
                dataset["IP address"],
                "%s (%s)" %{ dataset["IP address"], dataset["HW address"] }
index 9dc3f2f..0fa2696 100644 (file)
@@ -14,6 +14,8 @@ You may obtain a copy of the License at
 
 m = Map("network", translate("Switch"), translate("The network ports on this device can be combined to several <abbr title=\"Virtual Local Area Network\">VLAN</abbr>s in which computers can communicate directly with each other. <abbr title=\"Virtual Local Area Network\">VLAN</abbr>s are often used to separate different network segments. Often there is by default one Uplink port for a connection to the next greater network like the internet and other ports for a local network."))
 
+local switches = { }
+
 m.uci:foreach("network", "switch",
        function(x)
                local sid         = x['.name']
@@ -199,11 +201,13 @@ m.uci:foreach("network", "switch",
                end
 
 
-               local vid = s:option(Value, has_vlan4k or "vlan", "VLAN ID")
+               local vid = s:option(Value, has_vlan4k or "vlan", "VLAN ID", "<div id='portstatus-%s'></div>" % switch_name)
+               local mx_vid = has_vlan4k and 4094 or (num_vlans - 1) 
 
                vid.rmempty = false
                vid.forcewrite = true
                vid.vlan_used = { }
+               vid.datatype = "and(uinteger,range("..min_vid..","..mx_vid.."))"
 
                -- Validate user provided VLAN ID, make sure its within the bounds
                -- allowed by the switch.
@@ -276,12 +280,13 @@ m.uci:foreach("network", "switch",
                        port_opts[#port_opts+1] = po
                end
 
-
-        -- Switch status template
-        s = m:section(SimpleSection)
-        s.template = "admin_network/switch_status"
-        s.switch = switch_name
+               switches[#switches+1] = switch_name
        end
 )
 
+-- Switch status template
+s = m:section(SimpleSection)
+s.template = "admin_network/switch_status"
+s.switches = switches
+
 return m
index f645493..6c06b21 100644 (file)
@@ -208,6 +208,12 @@ if hwtype == "mac80211" then
                htmode:value("HT40-", translate("40MHz 2nd channel below"))
                htmode:value("HT40+", translate("40MHz 2nd channel above"))
 
+               noscan = s:taboption("advanced", Flag, "noscan", translate("Force 40MHz mode"),
+                       translate("Always use 40MHz channels even if the secondary channel overlaps. Using this option does not comply with IEEE 802.11n-2009!"))
+               noscan:depends("htmode", "HT40+")
+               noscan:depends("htmode", "HT40-")
+               noscan.default = noscan.disabled
+
                --htcapab = s:taboption("advanced", DynamicList, "ht_capab", translate("HT capabilities"))
                --htcapab:depends("hwmode", "11na")
                --htcapab:depends("hwmode", "11ng")
index a991f9a..6466688 100644 (file)
@@ -14,18 +14,33 @@ $Id$
 
 <%+header%>
 
+<%
+local fs   = require "nixio.fs"
+local has_ping6 = fs.access("/bin/ping6") or fs.access("/usr/bin/ping6")
+local has_traceroute6 = fs.access("/usr/bin/traceroute6")
+%>
+
 <script type="text/javascript" src="<%=resource%>/cbi.js"></script>
 <script type="text/javascript">//<![CDATA[
        var stxhr = new XHR();
 
-       function update_status(field)
+       function update_status(field,proto)
        {
                var tool = field.name;
                var addr = field.value;
+               var protocol = ""
 
                var legend = document.getElementById('diag-rc-legend');
                var output = document.getElementById('diag-rc-output');
 
+               if (typeof proto != 'undefined') {
+                       for(var i = 0; i < proto.length; i++) {
+                               if(proto[i].checked) {
+                                       protocol = proto[i].value;
+                               }
+                       }
+               }
+
                if (legend && output)
                {
                        output.innerHTML =
@@ -36,7 +51,7 @@ $Id$
                        legend.parentNode.style.display = 'block';
                        legend.style.display = 'inline';
 
-                       stxhr.get('<%=luci.dispatcher.build_url("admin", "network")%>/diag_' + tool + '/' + addr, null,
+                       stxhr.get('<%=luci.dispatcher.build_url("admin", "network")%>/diag_' + tool + protocol + '/' + addr, null,
                                function(x)
                                {
                                        if (x.responseText)
@@ -64,17 +79,29 @@ $Id$
 
                        <br />
 
-                       <div style="width:30%; float:left; text-align:center">
+                       <div style="width:30%; float:left">
                                <input style="width: 50%" type="text" value="openwrt.org" name="ping" />
-                               <input type="button" value="<%:Ping%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.ping)" />
+                               <input type="button" value="<%:Ping%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.ping,this.form.proto)" />
+                               <% if has_ping6 then %>
+                               <div style="width:100%; margin-top: 10px;">
+                                       <input type="radio" name="proto" value="" checked="checked" /> <%:IPv4%>
+                                       <input type="radio" name="proto" value="6" /> <%:IPv6%>
+                               </div>
+                               <%end%>
                        </div>
 
-                       <div style="width:30%; float:left; text-align:center">
+                       <div style="width:33%; float:left">
                                <input style="width: 50%" type="text" value="openwrt.org" name="traceroute" />
-                               <input type="button" value="<%:Traceroute%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.traceroute)" />
+                               <input type="button" value="<%:Traceroute%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.traceroute,this.form.trproto)" />
+                               <% if has_traceroute6 then %>
+                               <div style="width:100%; margin-top: 10px;">
+                                       <input type="radio" name="trproto" value="" checked="checked" /> <%:IPv4%>
+                                       <input type="radio" name="trproto" value="6" /> <%:IPv6%>
+                               </div>
+                               <%end%>
                        </div>
 
-                       <div style="width:30%; float:left; text-align:center">
+                       <div style="width:33%; float:left;">
                                <input style="width: 50%" type="text" value="openwrt.org" name="nslookup" />
                                <input type="button" value="<%:Nslookup%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.nslookup)" />
                        </div>
index 0b28483..b299575 100644 (file)
@@ -1,31 +1,28 @@
 <script type="text/javascript">//<![CDATA[
-       var tb;
-       var ths = document.getElementsByTagName('th');
-       for (var i = 0; i < ths.length; i++)
-               if (ths[i].className = 'cbi-section-table-cell' && !ths[i].innerHTML)
+       var switches = [ '<%=table.concat(self.switches, "', '")%>' ];
+       XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "switch_status")%>/' + switches.join(','), null,
+               function(x, st)
                {
-                       ths[i].innerHTML = '<%:Port status:%>';
-                       tb = ths[i].parentNode;
-                       break;
-               }
-
-       if (tb)
-       {
-               XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "switch_status", self.switch)%>', null,
-                       function(x, st)
+                       for (var i = 0; i < switches.length; i++)
                        {
-                               if (st && st.length)
+                               var ports = st[switches[i]];
+                               var th0 = document.getElementById('portstatus-' + switches[i]);
+
+                               if (th0 && ports && ports.length)
                                {
-                                       for (var i = 0; i < st.length; i++)
+                                       if (!th0.innerHTML)
+                                               th0.innerHTML = '<%:Port status:%>';
+
+                                       for (var j = 0; j < ports.length; j++)
                                        {
-                                               var th = tb.childNodes[i+1];
+                                               var th = th0.parentNode.parentNode.childNodes[j+1];
 
-                                               if (st[i].link)
+                                               if (ports[j].link)
                                                {
                                                        th.innerHTML = String.format(
                                                                '<small><img src="<%=resource%>/icons/port_up.png" />' +
                                                                '<br />%d<%:baseT%><br />%s</small>',
-                                                               st[i].speed, st[i].duplex
+                                                               ports[j].speed, ports[j].duplex
                                                                        ? '<%:full-duplex%>' : '<%:half-duplex%>'
                                                        );
                                                }
@@ -39,6 +36,6 @@
                                        }
                                }
                        }
-               );
-       }
+               }
+       );
 //]]></script>
index 1f59a18..ab5d7a2 100644 (file)
@@ -9,8 +9,6 @@ You may obtain a copy of the License at
 
        http://www.apache.org/licenses/LICENSE-2.0
 
-$Id$
-
 -%>
 
 <%-
@@ -124,6 +122,10 @@ $Id$
 
        var is_reconnecting = false;
 
+       function nowrap(s) {
+               return s.replace(/ /g, '&#160;');
+       }
+
        function wifi_shutdown(id, toggle) {
                var reconnect = (toggle.getAttribute('active') == 'false');
 
@@ -300,24 +302,24 @@ $Id$
                                                                icon, assoclist[j].signal, assoclist[j].noise
                                                        );
 
-                                                       tr.insertCell(-1).innerHTML = String.format('%h', iw.ssid ? iw.ssid : '?');
+                                                       tr.insertCell(-1).innerHTML = nowrap(String.format('%h', iw.ssid ? iw.ssid : '?'));
                                                        tr.insertCell(-1).innerHTML = assoclist[j].bssid;
 
                                                        tr.insertCell(-1).innerHTML = arptable[assoclist[j].bssid]
                                                                ? arptable[assoclist[j].bssid] : '?';
 
-                                                       tr.insertCell(-1).innerHTML = String.format('%d <%:dBm%>', assoclist[j].signal);
-                                                       tr.insertCell(-1).innerHTML = String.format('%d <%:dBm%>', assoclist[j].noise);
+                                                       tr.insertCell(-1).innerHTML = nowrap(String.format('%d <%:dBm%>', assoclist[j].signal));
+                                                       tr.insertCell(-1).innerHTML = nowrap(String.format('%d <%:dBm%>', assoclist[j].noise));
 
-                                                       tr.insertCell(-1).innerHTML = (assoclist[j].rx_mcs > -1)
+                                                       tr.insertCell(-1).innerHTML = nowrap((assoclist[j].rx_mcs > -1)
                                                                ? String.format('%.1f <%:Mbit/s%>, MCS %d, %d<%:MHz%>', assoclist[j].rx_rate / 1000, assoclist[j].rx_mcs, assoclist[j].rx_40mhz ? 40 : 20)
                                                                : String.format('%.1f <%:Mbit/s%>', assoclist[j].rx_rate / 1000)
-                                                       ;
+                                                       );
 
-                                                       tr.insertCell(-1).innerHTML = (assoclist[j].tx_mcs > -1)
+                                                       tr.insertCell(-1).innerHTML = nowrap((assoclist[j].tx_mcs > -1)
                                                                ? String.format('%.1f <%:Mbit/s%>, MCS %d, %d<%:MHz%>', assoclist[j].tx_rate / 1000, assoclist[j].tx_mcs, assoclist[j].tx_40mhz ? 40 : 20)
                                                                : String.format('%.1f <%:Mbit/s%>', assoclist[j].tx_rate / 1000)
-                                                       ;
+                                                       );
 
                                                        rowstyle = (rowstyle == 1) ? 2 : 1;
                                                }
index 9c9eb01..6525391 100644 (file)
@@ -8,8 +8,6 @@ You may obtain a copy of the License at
 
        http://www.apache.org/licenses/LICENSE-2.0
 
-$Id$
-
 -%>
 
 <%+header%>
@@ -161,6 +159,10 @@ $Id$
                                                for (var i = 0; i < conn.length; i++)
                                                {
                                                        var c  = conn[i];
+
+                                                       if (c.src == '127.0.0.1' && c.dst == '127.0.0.1')
+                                                               continue;
+
                                                        var tr = conn_table.rows[0].parentNode.insertRow(-1);
                                                            tr.className = 'cbi-section-table-row cbi-rowstyle-' + (1 + (i % 2));
 
index 003ec31..f8707c0 100644 (file)
@@ -9,8 +9,6 @@ You may obtain a copy of the License at
 
        http://www.apache.org/licenses/LICENSE-2.0
 
-$Id$
-
 -%>
 
 <%
@@ -432,22 +430,22 @@ $Id$
                                        tr.insertCell(-1).innerHTML = assoclist[i].bssid;
 
                                        tr.insertCell(-1).innerHTML = String.format(
-                                               '<a href="%s">%h</a>',
+                                               '<a href="%s">%s</a>',
                                                        assoclist[i].link,
-                                                       assoclist[i].name
+                                                       '%h'.format(assoclist[i].name).nobr()
                                        );
 
-                                       tr.insertCell(-1).innerHTML = String.format('%d <%:dBm%>', assoclist[i].signal);
-                                       tr.insertCell(-1).innerHTML = String.format('%d <%:dBm%>', assoclist[i].noise);
+                                       tr.insertCell(-1).innerHTML = String.format('%d <%:dBm%>', assoclist[i].signal).nobr();
+                                       tr.insertCell(-1).innerHTML = String.format('%d <%:dBm%>', assoclist[i].noise).nobr();
 
                                        tr.insertCell(-1).innerHTML = (assoclist[i].rx_mcs > -1)
-                                               ? String.format('%.1f <%:Mbit/s%>, MCS %d, %d<%:MHz%>', assoclist[i].rx_rate / 1000, assoclist[i].rx_mcs, assoclist[i].rx_40mhz ? 40 : 20)
-                                               : String.format('%.1f <%:Mbit/s%>', assoclist[i].rx_rate / 1000)
+                                               ? String.format('%.1f <%:Mbit/s%>, MCS %d, %d<%:MHz%>', assoclist[i].rx_rate / 1000, assoclist[i].rx_mcs, assoclist[i].rx_40mhz ? 40 : 20).nobr()
+                                               : String.format('%.1f <%:Mbit/s%>', assoclist[i].rx_rate / 1000).nobr()
                                        ;
 
                                        tr.insertCell(-1).innerHTML = (assoclist[i].tx_mcs > -1)
-                                               ? String.format('%.1f <%:Mbit/s%>, MCS %d, %d<%:MHz%>', assoclist[i].tx_rate / 1000, assoclist[i].tx_mcs, assoclist[i].tx_40mhz ? 40 : 20)
-                                               : String.format('%.1f <%:Mbit/s%>', assoclist[i].tx_rate / 1000)
+                                               ? String.format('%.1f <%:Mbit/s%>, MCS %d, %d<%:MHz%>', assoclist[i].tx_rate / 1000, assoclist[i].tx_mcs, assoclist[i].tx_40mhz ? 40 : 20).nobr()
+                                               : String.format('%.1f <%:Mbit/s%>', assoclist[i].tx_rate / 1000).nobr()
                                        ;
                                }
 
index 64d2f3f..a002715 100644 (file)
@@ -8,8 +8,6 @@ You may obtain a copy of the License at
 
        http://www.apache.org/licenses/LICENSE-2.0
 
-$Id$
-
 -%>
 
 <%+header%>
@@ -235,7 +233,7 @@ $Id$
 
                                                label_01_cur.innerHTML = (data_01[data_01.length-1] / 100).toFixed(2);
                                                label_05_cur.innerHTML = (data_05[data_05.length-1] / 100).toFixed(2);
-                                               label_15_cur.innerHTML = (data_01[data_15.length-1] / 100).toFixed(2);
+                                               label_15_cur.innerHTML = (data_15[data_15.length-1] / 100).toFixed(2);
 
                                                label_01_avg.innerHTML = (data_01_avg / 100).toFixed(2);
                                                label_05_avg.innerHTML = (data_05_avg / 100).toFixed(2);
@@ -244,9 +242,6 @@ $Id$
                                                label_01_peak.innerHTML = (data_01_peak / 100).toFixed(2);
                                                label_05_peak.innerHTML = (data_05_peak / 100).toFixed(2);
                                                label_15_peak.innerHTML = (data_15_peak / 100).toFixed(2);
-
-                                               /* reset timer */
-                                               window.setTimeout(update_graph, 1000);
                                        }
                                );
                        }
@@ -262,7 +257,7 @@ $Id$
 
 <table style="width:100%; table-layout:fixed" cellspacing="5">
        <tr>
-               <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ff0000"><%:1 Minute Load:%></strong></td>
+               <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ff0000; white-space:nowrap"><%:1 Minute Load:%></strong></td>
                <td id="lb_load01_cur">0</td>
 
                <td style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></td>
@@ -272,7 +267,7 @@ $Id$
                <td id="lb_load01_peak">0</td>
        </tr>
        <tr>
-               <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ff6600"><%:5 Minute Load:%></strong></td>
+               <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ff6600; white-space:nowrap"><%:5 Minute Load:%></strong></td>
                <td id="lb_load05_cur">0</td>
 
                <td style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></td>
@@ -282,7 +277,7 @@ $Id$
                <td id="lb_load05_peak">0</td>
        </tr>
        <tr>
-               <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ffaa00"><%:15 Minute Load:%></strong></td>
+               <td style="text-align:right; vertical-align:top"><strong style="border-bottom:2px solid #ffaa00; white-space:nowrap"><%:15 Minute Load:%></strong></td>
                <td id="lb_load15_cur">0</td>
 
                <td style="text-align:right; vertical-align:top"><strong><%:Average:%></strong></td>
index ff8382b..465143e 100644 (file)
@@ -8,8 +8,6 @@ You may obtain a copy of the License at
 
        http://www.apache.org/licenses/LICENSE-2.0
 
-$Id$
-
 -%>
 
 <%-
@@ -304,14 +302,14 @@ $Id$
                                                label_50_2.firstChild.data = rate_label(1.1 * 0.50 * data_max_2);
                                                label_75_2.firstChild.data = rate_label(1.1 * 0.75 * data_max_2);
 
-                                               label_rssi_cur.innerHTML = wireless_label(data_rssi[data_rssi.length-1], data_noise[data_noise.length-1]);
-                                               label_noise_cur.innerHTML = wireless_label(data_noise[data_noise.length-1]);
+                                               label_rssi_cur.innerHTML = wireless_label(data_rssi[data_rssi.length-1], data_noise[data_noise.length-1]).nobr();
+                                               label_noise_cur.innerHTML = wireless_label(data_noise[data_noise.length-1]).nobr();
 
-                                               label_rssi_avg.innerHTML = wireless_label(data_rssi_avg, data_noise_avg);
-                                               label_noise_avg.innerHTML = wireless_label(data_noise_avg);
+                                               label_rssi_avg.innerHTML = wireless_label(data_rssi_avg, data_noise_avg).nobr();
+                                               label_noise_avg.innerHTML = wireless_label(data_noise_avg).nobr();
 
-                                               label_rssi_peak.innerHTML = wireless_label(data_rssi_peak, data_noise_peak);
-                                               label_noise_peak.innerHTML = wireless_label(data_noise_peak);
+                                               label_rssi_peak.innerHTML = wireless_label(data_rssi_peak, data_noise_peak).nobr();
+                                               label_noise_peak.innerHTML = wireless_label(data_noise_peak).nobr();
 
                                                label_rate_cur.innerHTML = rate_label(data_rate[data_rate.length-1]);
                                                label_rate_avg.innerHTML = rate_label(data_rate_avg);
index 73a35be..00b4be4 100644 (file)
@@ -9,8 +9,6 @@ You may obtain a copy of the License at
 
        http://www.apache.org/licenses/LICENSE-2.0
 
-$Id$
-
 -%>
 <%-
 local bit = require "bit"
@@ -35,16 +33,18 @@ local free_byte = space_free * fstat.frsize
 local filter = { }
 
 
+local opkg_list = luci.model.ipkg.list_all
 local querypat
 if query and #query > 0 then
-       querypat = "*%s*" % query
+       querypat = '*%s*' % query
+       opkg_list = luci.model.ipkg.find
 end
 
 local letterpat
 if letter == 35 then
-       letterpat = "[^a-zA-Z]*"
+       letterpat = "[^a-z]*"
 else
-       letterpat = string.char(91, letter, letter + 32, 93, 42) -- '[' 'A' 'a' ']' '*'
+       letterpat = string.char(letter, 42) -- 'A' '*'
 end
 
 -%>
@@ -173,7 +173,7 @@ end
                                                <th class="cbi-section-table-cell" style="text-align:left"><%:Version%></th>
                                                <th class="cbi-section-table-cell" style="text-align:left"><%:Description%></th>
                                        </tr>
-                                       <% local empty = true; luci.model.ipkg.list_all(querypat or letterpat, function(n, v, d) if filter[n] then return end; empty = false %>
+                                       <% local empty = true; opkg_list(querypat or letterpat, function(n, v, d) if filter[n] then return end; empty = false %>
                                        <tr class="cbi-section-table-row cbi-rowstyle-<%=rowstyle()%>">
                                                <td style="text-align:left; width:10%"><a onclick="return window.confirm('<%:Install%> &quot;<%=luci.util.pcdata(n)%>&quot; ?')" href="<%=REQUEST_URI%>?submit=1&amp;install=<%=luci.util.pcdata(n)%>"><%:Install%></a></td>
                                                <td style="text-align:left"><%=luci.util.pcdata(n)%></td>
index 52e25e6..1a4f510 100644 (file)
@@ -536,6 +536,10 @@ static int run_daemon(void)
                                if (strstr(line, "TIME_WAIT"))
                                        continue;
 
+                               if (strstr(line, "src=127.0.0.1 ") &&
+                                   strstr(line, "dst=127.0.0.1 "))
+                                       continue;
+
                                if (sscanf(line, "%*s %*d %s", ifname) || sscanf(line, "%s %*d", ifname))
                                {
                                        if (!strcmp(ifname, "tcp"))
index 666f086..e81e07c 100644 (file)
@@ -251,15 +251,14 @@ function jsonstatus()
        ltn12.pump.all(json.Encoder(root):source(), http.write)
 end
 
-function public_status_json()
+function public_status_json(devs)
        local twa       = require "luci.tools.webadmin"
        local sys       = require "luci.sys"
        local i18n      = require "luci.i18n"
-       local path      = luci.dispatcher.context.requestpath
        local rv        = { }
 
        local dev
-       for dev in path[#path]:gmatch("[%w%.%-]+") do
+       for dev in devs:gmatch("[%w%.%-]+") do
                local j = { id = dev }
                local iw = luci.sys.wifi.getiwinfo(dev)
                if iw then
index bbf7c56..8987b1c 100644 (file)
@@ -15,7 +15,6 @@ local fs = require "luci.fs"
 local util = require "luci.util"
 local uci = require "luci.model.uci".cursor()
 local profiles = "/etc/config/profile_"
-luci.i18n.loadc("freifunk")
 
 m = Map("freifunk", translate ("Community"))
 c = m:section(NamedSection, "community", "public", nil, translate("These are the basic settings for your local wireless community. These settings define the default values for the wizard and DO NOT affect the actual configuration of the router."))
index 6f99881..f6cdec7 100644 (file)
@@ -11,8 +11,6 @@ You may obtain a copy of the License at
        http://www.apache.org/licenses/LICENSE-2.0
 ]]--
 
-luci.i18n.loadc("freifunk")
-
 m = Map("freifunk", translate("Contact"), translate("Please fill in your contact details below."))
 
 c = m:section(NamedSection, "contact", "public", "")
index 933efb4..a8beef8 100644 (file)
@@ -13,7 +13,6 @@ You may obtain a copy of the License at
 local uci = require "luci.model.uci".cursor()
 local ipkg = require "luci.model.ipkg"
 local community = uci:get("freifunk", "community", "name")
-luci.i18n.loadc("freifunk")
 
 if community == nil then
        luci.http.redirect(luci.dispatcher.build_url("admin", "freifunk", "profile_error"))
index b08c0f0..a0b8f34 100644 (file)
@@ -13,7 +13,6 @@ You may obtain a copy of the License at
 local fs = require "nixio.fs"
 local uci = require "luci.model.uci".cursor()
 local community = uci:get("freifunk", "community", "name")
-luci.i18n.loadc("freifunk")
 
 if community == nil then
         luci.http.redirect(luci.dispatcher.build_url("admin", "freifunk", "profile_error"))
index e23ea90..fe1d8fe 100644 (file)
@@ -1,6 +1,5 @@
 local fs = require "nixio.fs"
 local file = "/www/luci-static/index_user.html"
-luci.i18n.loadc("freifunk")
 
 m = Map("freifunk", translate("Edit index page"), translate("You can display additional content on the public index page by inserting valid XHTML in the form below.<br />Headlines should be enclosed between &lt;h2&gt; and &lt;/h2&gt;."))
 
index 909b270..b2e1683 100644 (file)
 
 <% if has_latlon then %>
        <iframe style="width:100%; height:640px; border:none" src="<%=luci.dispatcher.build_url("freifunk/map/content")%>"></iframe>
+       <h3><%:Legend%>:</h3>
+       <ul>
+               <li><strong><span style="color:#00cc00"><%:Green%></span></strong>:<%:Very good (ETX < 2)%></li>
+               <li><strong><span style="color:#ffcb05"><%:Yellow%></span></strong>:<%:Good (2 < ETX < 4)%></li>
+               <li><strong><span style="color:#ff6600"><%:Orange%></span></strong>:<%:Still usable (4 < ETX < 10)%></li>
+               <li><strong><span style="color:#bb3333"><%:Red%></span></strong>:<%:Bad (ETX > 10)%></li>
+       </ul>
+
 <% else %>
        <h2><%:Map Error%></h2>
        <p><%_The OLSRd service is not configured to capture position data from the network.<br />
                Please make sure that the nameservice plugin is properly configured and that the <em>latlon_file</em> option is enabled.%></p>
 <% end %>
-
 <%+footer%>
+
index f373a7a..02b1afd 100644 (file)
                                if (null != alias[fromip]) fromip = alias[fromip];
                                if (null != points[fromip] && null != points[toip])
                                {
-                                       var w = 1;
-                                       if (etx < 4) w++;
-                                       if (etx < 2) w++;
+                                       var color;
+                                       var red = 240;
+                                       var green = 0;
+                                       var blue = 0;
+                                       var w = 1
+
+                                       if (etx < 100) {red=252;green=102;blue=0;w=2};
+                                       if (etx < 10) {red=255;green=203;blue=5;w=3};
+                                       if (etx < 4) {red=240;green=255;blue=0;w=4};
+                                       if (etx < 2) {red=0;green=204;blue=0;w=5};
+                                       if (etx < 1) {red=80;green=0;blue=0;w=1};
+
                                        map.AddPolyline(new VEPolyline('id'+lineid, [points[fromip], points[toip]],
-                                       new VEColor(102,Math.floor(lq*255.0),Math.floor(nlq*255.0),1.0), w));
+                                       new VEColor(red, green, blue, 0.5), w));
+
+
                                }
                                else
                                {
index 92169a8..e0252ba 100644 (file)
@@ -17,7 +17,6 @@ else
        mail = contact.mail
 end
 
-luci.i18n.loadc("freifunk")
 %>
 
 <h2><%:Freifunk Overview%></h2>
index 74c52ef..16d494d 100644 (file)
@@ -245,6 +245,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr "El rang permès és entre 1 i 65535"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "Es crearà una xarxa addicional si deixes això sense marcar."
 
@@ -841,6 +846,9 @@ msgstr ""
 msgid "Force"
 msgstr "Força"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr ""
 
@@ -2631,9 +2639,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr "Esperant un encaminador..."
-
 msgid "Warning"
 msgstr "Alerta"
 
@@ -2815,6 +2820,9 @@ msgstr "Sí"
 msgid "« Back"
 msgstr "« Endarrere"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "Esperant un encaminador..."
+
 #~ msgid "Active Leases"
 #~ msgstr "Leases Actius"
 
diff --git a/po/ca/commands.po b/po/ca/commands.po
new file mode 100644 (file)
index 0000000..6fbb983
--- /dev/null
@@ -0,0 +1,90 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index 4bc1788..72c0263 100644 (file)
@@ -39,6 +39,9 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr "Força actualització cada"
 
@@ -55,6 +58,9 @@ msgstr ""
 msgid "Network"
 msgstr ""
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr ""
 
@@ -87,9 +93,3 @@ msgstr ""
 
 msgid "network"
 msgstr ""
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index fb3216d..27d2b46 100644 (file)
@@ -177,6 +177,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr ""
+
 msgid "Sleep Between Requests"
 msgstr ""
 
@@ -200,6 +203,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
index de8657c..261c08a 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 msgid "BSSID"
 msgstr ""
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr ""
 
@@ -81,6 +84,9 @@ msgstr ""
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr ""
 
@@ -102,6 +108,12 @@ msgstr ""
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr "Hola i benvingut a la xarxa de"
 
@@ -114,6 +126,15 @@ msgstr ""
 msgid "Hostname"
 msgstr "Nom de màquina"
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -144,6 +165,9 @@ msgstr ""
 msgid "Latitude"
 msgstr ""
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -195,6 +219,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -225,6 +252,9 @@ msgstr ""
 msgid "Realname"
 msgstr "Nom real"
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -254,6 +284,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -303,6 +336,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -312,6 +348,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index f035cf4..180d771 100644 (file)
@@ -1,3 +1,6 @@
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr ""
 
@@ -19,9 +22,18 @@ msgstr ""
 msgid "Enable DHCP"
 msgstr ""
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr ""
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -32,9 +44,17 @@ msgstr ""
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr ""
 
@@ -42,6 +62,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -56,6 +79,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index a63deab..11cac08 100644 (file)
@@ -8,6 +8,7 @@ msgstr ""
 "PO-Revision-Date: 2009-05-27 11:15+0200\n"
 "Last-Translator: Eduard Duran <iopahopa@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -68,7 +69,7 @@ msgid "Collectd Settings"
 msgstr "Configuració Collectd"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -115,6 +116,9 @@ msgstr "Ús d'espai en disc"
 msgid "Disk Usage"
 msgstr "Ús de disc"
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr "Mostra l'hora"
 
@@ -192,12 +196,6 @@ msgstr "Ignora adreces origen"
 msgid "Incoming interface"
 msgstr "Interfície entrant"
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr "Configuració de connector d'interfície"
 
@@ -291,11 +289,6 @@ msgstr "Configuració del connector de xarxa"
 msgid "Network plugins"
 msgstr "Connectors de xarxa"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr "Protocol de xarxa"
 
@@ -320,13 +313,6 @@ msgstr "Interfície sortint"
 msgid "Output plugins"
 msgstr "Connectors de sortida"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -428,11 +414,6 @@ msgstr "Càrrega de sistema"
 msgid "System plugins"
 msgstr "Connectors de sistema"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr "Connexions TCP"
 
@@ -448,6 +429,9 @@ msgstr "TTL per paquets ping"
 msgid "Table"
 msgstr "Taula"
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -611,13 +595,6 @@ msgstr ""
 "dades recollides d'una instància collectd."
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-"El connector Wireless recull estadístiques sobre la potència del senyal "
-"sense fils, el soroll i la qualitat."
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -633,6 +610,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr "Intenta resoldre el nom de màquina (fqdn)"
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr "Sock Unix"
 
@@ -651,9 +637,6 @@ msgstr "Monitoreig detallat"
 msgid "Wireless"
 msgstr "Wireless"
 
-msgid "Wireless Plugin Configuration"
-msgstr "Configuració del connector Wireless"
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
@@ -677,3 +660,13 @@ msgstr "segons; múltiples separats per espais"
 
 msgid "server interfaces"
 msgstr "interfícies de servidor"
+
+#~ msgid ""
+#~ "The wireless plugin collects statistics about wireless signal strength, "
+#~ "noise and quality."
+#~ msgstr ""
+#~ "El connector Wireless recull estadístiques sobre la potència del senyal "
+#~ "sense fils, el soroll i la qualitat."
+
+#~ msgid "Wireless Plugin Configuration"
+#~ msgstr "Configuració del connector Wireless"
index 0743ad9..7544c90 100644 (file)
@@ -1,8 +1,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-08-26 23:10+0200\n"
-"Last-Translator: jhenner <jhenner@redhat.com>\n"
+"PO-Revision-Date: 2012-11-04 22:51+0200\n"
+"Last-Translator: luki555 <luki555@centrum.sk>\n"
 "Language-Team: none\n"
 "Language: cs\n"
 "MIME-Version: 1.0\n"
@@ -243,6 +243,11 @@ msgstr "Povolit upstream odpovědi na 127.0.0.0/8 rozsah, např. pro RBL služby
 msgid "Allowed range is 1 to 65535"
 msgstr "Hodnota musí ležet v intervalu 1 až 65535"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "Pokud není zaškrtnuto, bude vytvořena dodatečná síť"
 
@@ -855,6 +860,9 @@ msgstr "Nahrávám..."
 msgid "Force"
 msgstr "Vynutit"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr "Vynutit CCMP (AES)"
 
@@ -2290,8 +2298,8 @@ msgid ""
 "samp>)"
 msgstr ""
 "Souborový systém, který byl použit pro formátování paměti (<abbr title="
-"\"například\">napři.</abbr> <samp><abbr title=\"Souborový systém Ext3"
-"\">ext3</abbr></samp>)"
+"\"například\">napři.</abbr> <samp><abbr title=\"Souborový systém "
+"Ext3\">ext3</abbr></samp>)"
 
 msgid ""
 "The flash image was uploaded. Below is the checksum and file size listed, "
@@ -2674,9 +2682,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr "Čekám na router.."
-
 msgid "Warning"
 msgstr "Varování"
 
@@ -2854,6 +2859,9 @@ msgstr "ano"
 msgid "« Back"
 msgstr "« Zpět"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "Čekám na router.."
+
 #~ msgid "Enable builtin NTP server"
 #~ msgstr "Povolit zabudovaný NTP server"
 
diff --git a/po/cs/commands.po b/po/cs/commands.po
new file mode 100644 (file)
index 0000000..e40381b
--- /dev/null
@@ -0,0 +1,91 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index bc524ea..ba1c9ec 100644 (file)
@@ -33,6 +33,9 @@ msgstr ""
 msgid "Enable"
 msgstr "Povolit"
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr "Vynutit aktualizaci každých"
 
@@ -48,6 +51,9 @@ msgstr "Rozhraní"
 msgid "Network"
 msgstr "Síť"
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr "Heslo"
 
@@ -81,9 +87,3 @@ msgstr "min"
 
 msgid "network"
 msgstr ""
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index 15f9a85..8846061 100644 (file)
@@ -177,6 +177,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr ""
+
 msgid "Sleep Between Requests"
 msgstr "Uspat mezi jednotlivými požadavky"
 
@@ -200,6 +203,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr "zkontrolovat ostatní sítě"
-
-msgid "Scans for devices on specified networks."
-msgstr ""
index ad1f362..867d501 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "BSSID"
 msgstr "BSSID"
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr "Základní nastavení"
 
@@ -85,6 +88,9 @@ msgstr "ESSID"
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr "Chyba"
 
@@ -106,6 +112,12 @@ msgstr "Brána"
 msgid "Go to"
 msgstr "Jít na"
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr "Dobrý den, vítejte v síti"
 
@@ -118,6 +130,15 @@ msgstr "Domovská stránka"
 msgid "Hostname"
 msgstr ""
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -146,6 +167,9 @@ msgstr "Uchovat nastavení"
 msgid "Latitude"
 msgstr "Zeměpisná šířka"
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -197,6 +221,9 @@ msgstr "OLSR"
 msgid "Operator"
 msgstr "Operátor"
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr "Přehled"
 
@@ -227,6 +254,9 @@ msgstr "Profil (Expert)"
 msgid "Realname"
 msgstr "Skutečné jméno"
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr "SSID"
 
@@ -258,6 +288,9 @@ msgstr "Statistiky"
 msgid "Status"
 msgstr "Stav"
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr "Systém"
 
@@ -307,6 +340,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -315,6 +351,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index 16ed005..2c84cb4 100644 (file)
@@ -7,6 +7,9 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr ""
 
@@ -28,9 +31,18 @@ msgstr ""
 msgid "Enable DHCP"
 msgstr ""
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr ""
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -41,9 +53,17 @@ msgstr ""
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr ""
 
@@ -51,6 +71,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -65,6 +88,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index f5a8b3d..cb60879 100644 (file)
@@ -3,6 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -62,7 +63,7 @@ msgid "Collectd Settings"
 msgstr "Nastavení Collectd"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -109,6 +110,9 @@ msgstr "Využití místa na disku"
 msgid "Disk Usage"
 msgstr "Využití disku"
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr ""
 
@@ -184,12 +188,6 @@ msgstr "Ignorovat zdrojové adresy"
 msgid "Incoming interface"
 msgstr "Příchozí rozhraní"
 
-msgid "Installed network plugins:"
-msgstr "Instalované síťové pluginy:"
-
-msgid "Installed output plugins:"
-msgstr "Instalované výstupní pluginy:"
-
 msgid "Interface Plugin Configuration"
 msgstr "Nastavení Interface pluginu"
 
@@ -284,13 +282,6 @@ msgstr "Nastavení pluginu Síť"
 msgid "Network plugins"
 msgstr "Síťové pluginy"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-"Síťové pluginy jsou používány pro shromažďování informací o otevřených tcp "
-"spojeních, provozu na rozhraní, pravidel iptables atd."
-
 msgid "Network protocol"
 msgstr "Síťový protokol"
 
@@ -315,16 +306,6 @@ msgstr "Odchozí rozhraní"
 msgid "Output plugins"
 msgstr "Výstupní pluginy"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-"Výstupní pluginy poskytují různé možnosti ukládání sesbíraných dat. Plugin "
-"je možné v jeden okamžik povolit vícekrát , například pro ukládání dat do "
-"rrd databází a předávání dat po síti jiným instancím daemonu collectd."
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -424,13 +405,6 @@ msgstr "Zatížení systému"
 msgid "System plugins"
 msgstr "Systémové pluginy"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-"Systémové pluginy, shromažďující hodnoty o systémovém stavu a zdrojích, "
-"používaných zařízením:"
-
 msgid "TCP Connections"
 msgstr "TCP spojení"
 
@@ -446,6 +420,9 @@ msgstr "TTL pro pakety pingu"
 msgid "Table"
 msgstr ""
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -602,13 +579,6 @@ msgstr ""
 "z běžící instance collectd."
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-"Plugin Wireless shromažďuje statistiky o síle, šumu a kvalitě bezdrátového "
-"signálu."
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -622,6 +592,15 @@ msgstr "Tato sekce určuje, na které servery budou odeslána shromážděná da
 msgid "Try to lookup fully qualified hostname"
 msgstr ""
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr "UnixSock"
 
@@ -640,9 +619,6 @@ msgstr "Podrobný monitoring"
 msgid "Wireless"
 msgstr "Wireless"
 
-msgid "Wireless Plugin Configuration"
-msgstr "Nastavení pluginu Wireless"
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr "Nastavení pluginu Wireless Iwinfo"
 
@@ -666,3 +642,43 @@ msgstr "sekundy, více hodnot oddělených mezerou"
 
 msgid "server interfaces"
 msgstr "rozhraní serveru"
+
+#~ msgid "Installed network plugins:"
+#~ msgstr "Instalované síťové pluginy:"
+
+#~ msgid "Installed output plugins:"
+#~ msgstr "Instalované výstupní pluginy:"
+
+#~ msgid ""
+#~ "Network plugins are used to collect information about open tcp "
+#~ "connections, interface traffic, iptables rules etc."
+#~ msgstr ""
+#~ "Síťové pluginy jsou používány pro shromažďování informací o otevřených tcp "
+#~ "spojeních, provozu na rozhraní, pravidel iptables atd."
+
+#~ msgid ""
+#~ "Output plugins provide different possibilities to store collected data. "
+#~ "It is possible to enable multiple plugin at one, for example to store "
+#~ "collected data in rrd databases and to transmit the data over the network "
+#~ "to other collectd instances."
+#~ msgstr ""
+#~ "Výstupní pluginy poskytují různé možnosti ukládání sesbíraných dat. Plugin "
+#~ "je možné v jeden okamžik povolit vícekrát , například pro ukládání dat do "
+#~ "rrd databází a předávání dat po síti jiným instancím daemonu collectd."
+
+#~ msgid ""
+#~ "System plugins collecting values about system state and ressource usage "
+#~ "on the device.:"
+#~ msgstr ""
+#~ "Systémové pluginy, shromažďující hodnoty o systémovém stavu a zdrojích, "
+#~ "používaných zařízením:"
+
+#~ msgid ""
+#~ "The wireless plugin collects statistics about wireless signal strength, "
+#~ "noise and quality."
+#~ msgstr ""
+#~ "Plugin Wireless shromažďuje statistiky o síle, šumu a kvalitě bezdrátového "
+#~ "signálu."
+
+#~ msgid "Wireless Plugin Configuration"
+#~ msgstr "Nastavení pluginu Wireless"
index f7350cb..ad4590c 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-26 17:57+0200\n"
-"PO-Revision-Date: 2012-09-29 11:11+0200\n"
+"PO-Revision-Date: 2012-11-21 20:47+0200\n"
 "Last-Translator: Jo-Philipp <xm@subsignal.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: de\n"
@@ -245,6 +245,14 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr "Erlaubter Bereich 1 bis 65535"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"Immer 40MHz Kanalbreite nutzen, auch wenn der sekundäre Kanal andere "
+"Netzwerke überschneidet. Die Benutzung dieser Option verletzt den IEEE "
+"802.11n-2009 Standard!"
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr ""
 "Erzeugt ein zusätzliches Netzwerk wenn diese Option nicht ausgewählt ist"
@@ -863,6 +871,9 @@ msgstr "Firmware wird installiert..."
 msgid "Force"
 msgstr "Start erzwingen"
 
+msgid "Force 40MHz mode"
+msgstr "40MHz-Modus erzwingen"
+
 msgid "Force CCMP (AES)"
 msgstr "CCMP (AES) erzwingen"
 
@@ -2746,9 +2757,6 @@ msgstr "Änderungen werden angewandt..."
 msgid "Waiting for command to complete..."
 msgstr "Der Befehl wird ausgeführt..."
 
-msgid "Waiting for router..."
-msgstr "Warte auf den Router..."
-
 msgid "Warning"
 msgstr "Warnung"
 
@@ -2928,6 +2936,9 @@ msgstr "ja"
 msgid "« Back"
 msgstr "« Zurück"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "Warte auf den Router..."
+
 #~ msgid "Enable builtin NTP server"
 #~ msgstr "NTP Server aktivieren"
 
diff --git a/po/de/commands.po b/po/de/commands.po
new file mode 100644 (file)
index 0000000..09c56b3
--- /dev/null
@@ -0,0 +1,98 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2012-11-21 18:45+0200\n"
+"Last-Translator: Jo-Philipp <xm@subsignal.org>\n"
+"Language-Team: none\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.6\n"
+
+msgid "A short textual description of the configured command"
+msgstr "Kurze Beschreibung des abgespeicherten Kommandos"
+
+msgid "Access command with"
+msgstr "Kommando aufrufen mit"
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Ausführen des Kommandos und Herunterladen der Ausgabe ohne vorherige "
+"Authentifizierung ermöglichen"
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr "Erlaube dem Nutzer zusätzliche Kommandozeilenargumente zu übergeben"
+
+msgid "Arguments:"
+msgstr "Argumente:"
+
+msgid "Binary data not displayed, download instead."
+msgstr "Binärdaten ausgeblendet, laden Sie die Ausgaben stattdessen herunter"
+
+msgid "Code:"
+msgstr "Rückgabewert:"
+
+msgid "Collecting data..."
+msgstr "Sammle Daten..."
+
+msgid "Command"
+msgstr "Kommando"
+
+msgid "Command failed"
+msgstr "Kommando fehlgeschlagen"
+
+msgid "Command line to execute"
+msgstr "Auszuführende Kommandozeile"
+
+msgid "Command successful"
+msgstr "Kommando erfolgreich"
+
+msgid "Command:"
+msgstr "Kommando:"
+
+msgid "Configure"
+msgstr "Konfigurieren"
+
+msgid "Custom Commands"
+msgstr "Benutzerdefinierte Kommandos"
+
+msgid "Custom arguments"
+msgstr "Benutzerdefinierte Argumente"
+
+msgid "Dashboard"
+msgstr "Übersicht"
+
+msgid "Description"
+msgstr "Beschreibung"
+
+msgid "Download"
+msgstr "Herunterladen"
+
+msgid "Failed to execute command!"
+msgstr "Kommando konnte nicht ausgeführt werden!"
+
+msgid "Link"
+msgstr "Link"
+
+msgid "Loading"
+msgstr "Lade"
+
+msgid "Public access"
+msgstr "Öffentlicher Zugriff"
+
+msgid "Run"
+msgstr "Ausführen"
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Diese Seite ermöglicht die Konfiguration eigener Shell-Kommandos um diese "
+"einfach über das Webinterface ausführen zu können."
+
+msgid "Waiting for command to complete..."
+msgstr "Warte auf die Ausführung des Kommandos..."
index 3791e47..4fc4530 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-02 13:44+0100\n"
-"PO-Revision-Date: 2011-05-13 09:09+0200\n"
+"PO-Revision-Date: 2012-11-21 20:48+0200\n"
 "Last-Translator: Jo-Philipp <xm@subsignal.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: de\n"
@@ -11,7 +11,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Check for changed IP every"
 msgstr "Teste auf neue IP alle"
@@ -35,6 +35,9 @@ msgstr ""
 msgid "Enable"
 msgstr "Aktivieren"
 
+msgid "Event interface"
+msgstr "Ereignis-Schnittstelle"
+
 msgid "Force update every"
 msgstr "Erzwinge Aktualisierung alle"
 
@@ -50,6 +53,10 @@ msgstr "Schnittstelle"
 msgid "Network"
 msgstr "Netzwerk"
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+"Spezifiziert die durch den DDNS-Prozess überwachte Netzwerkschnittstelle"
+
 msgid "Password"
 msgstr "Passwort"
 
@@ -81,9 +88,3 @@ msgstr "Minuten"
 
 msgid "network"
 msgstr "Netzwerk"
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index 4f8e965..606358a 100644 (file)
@@ -139,8 +139,8 @@ msgid ""
 "Override the information returned by the MAC to Device Info Script (mac-to-"
 "devinfo) for a specified range of MAC Addresses"
 msgstr ""
-"Überschreibt die Informationen die durch das MAC-zu-Gerätename-Programm "
-"(mac-to-devinfo) für einen bestimmten MAC-Adressbereich zurückgegeben werden"
+"Überschreibt die Informationen die durch das MAC-zu-Gerätename-Programm (mac-"
+"to-devinfo) für einen bestimmten MAC-Adressbereich zurückgegeben werden"
 
 msgid "Perform Scans (this can take a few minutes)"
 msgstr "Führe Suche aus (Dies kann einige Minuten dauern)"
@@ -193,6 +193,9 @@ msgstr "Suche nach SIP-unterstützenden Geräten im spezifizierten Netzwerk"
 msgid "Scanning Configuration"
 msgstr "Such-Konfiguration"
 
+msgid "Scans for devices on specified networks."
+msgstr "Scans for devices on specified networks."
+
 msgid "Sleep Between Requests"
 msgstr "Wartezeit zwischen den Versuchen"
 
@@ -216,6 +219,3 @@ msgstr "Hersteller"
 
 msgid "check other networks"
 msgstr "Prüfe andere Netzwerke"
-
-msgid "Scans for devices on specified networks."
-msgstr "Scans for devices on specified networks."
index f62cb82..79c2295 100644 (file)
@@ -2,13 +2,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: Manuel Munz <freifunk@somakoma.de>\n"
+"PO-Revision-Date: 2012-11-21 20:53+0200\n"
+"Last-Translator: Jo-Philipp <xm@subsignal.org>\n"
 "Language-Team: \n"
-"Language: \n"
+"Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid ""
 "All traffic from interfaces belonging to these zones will be sent via a "
@@ -21,7 +23,7 @@ msgid "Enable Policy Routing"
 msgstr "Policy Routing aktivieren"
 
 msgid "Fallback to mesh"
-msgstr ""
+msgstr "Auf Mesh zurückfallen"
 
 msgid "Firewall zones"
 msgstr "Firewallzonen"
@@ -41,6 +43,8 @@ msgid ""
 "If your own gateway is not available then fallback to the mesh default "
 "gateway."
 msgstr ""
+"Wenn das eigene lokale Gateway nicht verfügbar ist, dann nutze das aktuelle "
+"Mesh-Default-Gateway."
 
 msgid "Policy Routing"
 msgstr "Policy Routing"
index 0fc5989..3c4dd15 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2011-05-12 17:58+0200\n"
-"PO-Revision-Date: 2012-08-10 01:55+0200\n"
+"PO-Revision-Date: 2012-11-21 20:52+0200\n"
 "Last-Translator: Jo-Philipp <xm@subsignal.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: de\n"
@@ -16,6 +16,9 @@ msgstr ""
 msgid "BSSID"
 msgstr "BSSID"
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr "Grundeinstellungen"
 
@@ -84,6 +87,9 @@ msgstr "ESSID"
 msgid "Edit index page"
 msgstr "Indexseite bearbeiten"
 
+msgid "Enable IPv6"
+msgstr "IPv6 aktivieren"
+
 msgid "Error"
 msgstr "Fehler"
 
@@ -105,6 +111,12 @@ msgstr "Gateway"
 msgid "Go to"
 msgstr "Gehe zu"
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr "Hallo und willkommen im Netz von"
 
@@ -117,6 +129,15 @@ msgstr "Homepage"
 msgid "Hostname"
 msgstr "Hostname"
 
+msgid "IPv6 Config"
+msgstr "IPv6 Konfiguration"
+
+msgid "IPv6 Prefix"
+msgstr "IPv6 Prefix"
+
+msgid "IPv6 network in CIDR notation."
+msgstr "IPv6 Subnetz in CIDR-Notation"
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 "Wird diese Option gewählt dann wird das standardmässige Inhaltselement nicht "
@@ -150,6 +171,9 @@ msgstr "Konfigurationsdateien wiederherstellen"
 msgid "Latitude"
 msgstr "Breite"
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr "Load"
 
@@ -201,6 +225,9 @@ msgstr "OLSR"
 msgid "Operator"
 msgstr "Betreiber"
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr "Übersicht"
 
@@ -231,6 +258,9 @@ msgstr "Profil (Expertenmodus)"
 msgid "Realname"
 msgstr "Name"
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr "SSID"
 
@@ -262,6 +292,9 @@ msgstr "Statistiken"
 msgid "Status"
 msgstr "Status"
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr "System"
 
@@ -321,6 +354,9 @@ msgstr "Uptime"
 msgid "Verify downloaded images"
 msgstr "Heruntergeladene Images verifizieren"
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -331,6 +367,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr "WLAN Übersicht"
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index 4d4df05..478a472 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2011-06-26 15:36+0200\n"
-"PO-Revision-Date: 2011-06-26 15:48+0200\n"
+"PO-Revision-Date: 2012-11-21 20:51+0200\n"
 "Last-Translator: Jo-Philipp <xm@subsignal.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: de\n"
@@ -11,7 +11,10 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
+
+msgid "Activate or deactivate IPv6 config globally."
+msgstr "IPv6 global aktivieren oder deaktivieren"
 
 msgid "Channel"
 msgstr "Kanal"
@@ -36,9 +39,18 @@ msgstr "DHCP vergibt automatisch IP-Adressen an Clients"
 msgid "Enable DHCP"
 msgstr "DHCP aktivieren"
 
+msgid "Enable RA"
+msgstr "RAs aktivieren"
+
+msgid "Enabled"
+msgstr "Aktiviert"
+
 msgid "General Settings"
 msgstr "Allgemeine Einstellungen"
 
+msgid "IPv6 Settings"
+msgstr "IPv6 Einstellungen"
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -51,9 +63,19 @@ msgstr "Schnittstellen"
 msgid "Mesh IP address"
 msgstr "Mesh-IP-Adresse"
 
+msgid "Mesh IPv6 address"
+msgstr "Mesh-IPv6-Adresse"
+
 msgid "Mesh Wizard"
 msgstr "Mesh-Assistent"
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+"Hinweis: Dies konfiguriert die Schnittstelle für den Mesh-Betrieb, d.h. sie "
+"wird zur Freifunk-Zone hinzugefügt und OLSR eingerichtet."
+
 msgid "Protect LAN"
 msgstr "LAN schützen"
 
@@ -63,6 +85,9 @@ msgstr ""
 "Diese Option aktivieren um anderen den Zugriff auf die lokale "
 "Internetverbindung zu gestatten"
 
+msgid "Send router advertisements on this device."
+msgstr "Router-Advertisements auf dieser Schnittstelle senden"
+
 msgid "Share your internet connection"
 msgstr "Internetverbindung freigeben"
 
@@ -81,6 +106,13 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr "Die angegebene IP-Adresse ist nicht Teil des Mesh-Adressbereiches"
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+"Diese ist eine eindeutige IPv6-Adresse in CIDR-Notation (z.B. "
+"2001:1:2:3::1/64) welche bei der lokalen Community registriert werden muss."
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 579ccee..3b21417 100644 (file)
@@ -1,40 +1,42 @@
-#, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-26 17:57+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2012-11-28 10:44+0200\n"
+"Last-Translator: dunkelschunkel <dunkelschunkel@googlemail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Translate Toolkit 1.1.1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.6\n"
 
+# Das wäre der Pin für Clock, also Takt, eventuell kann das auch rein. Halte obige Variante aber für hinreichend
 msgid "CLK_pin"
-msgstr ""
+msgstr "CLK-Pin"
 
 msgid "CS_pin"
-msgstr ""
+msgstr "CS-Pin"
 
 msgid "DI_pin"
-msgstr ""
+msgstr "DI-Pin"
 
 msgid "DO_pin"
-msgstr ""
+msgstr "DO-Pin"
 
 msgid "Enable"
-msgstr ""
+msgstr "Aktivieren"
 
 msgid "MMC/SD driver configuration"
-msgstr ""
+msgstr "MMC/SD Treibereinstellungen"
 
 msgid "Mode"
-msgstr ""
+msgstr "Modus"
 
 msgid "Name"
-msgstr ""
+msgstr "Name"
 
 msgid "Settings"
 msgstr "Einstellungen"
index d64a98a..70824bb 100644 (file)
@@ -3,15 +3,15 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2011-10-18 12:28+0200\n"
-"Last-Translator: Manuel <freifunk@somakoma.de>\n"
+"PO-Revision-Date: 2012-11-21 20:54+0200\n"
+"Last-Translator: Jo-Philipp <xm@subsignal.org>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Active MID announcements"
 msgstr "Aktive MID-Ankündigungen"
@@ -147,6 +147,13 @@ msgid "Hostname"
 msgstr "Hostname"
 
 msgid ""
+"Hosts in a OLSR routed network can announce connecitivity to external "
+"networks using HNA messages."
+msgstr ""
+"Rechner in einem OLSR-geroutetem Netzwerk können Konnektivität zu externen "
+"Netzwerken mittels HNA-Nachrichten ankündigen."
+
+msgid ""
 "Hysteresis for link sensing (only for hopcount metric). Hysteresis adds more "
 "robustness to the link sensing but delays neighbor registration. Defaults is "
 "\"yes\""
@@ -276,6 +283,9 @@ msgstr ""
 msgid "Known OLSR routes"
 msgstr "Bekannte OLSR-Routen"
 
+msgid "LQ"
+msgstr "LQ"
+
 msgid "LQ aging"
 msgstr "LQ-Alterung"
 
@@ -388,6 +398,9 @@ msgstr ""
 msgid "NAT threshold"
 msgstr "NAT-Schwellenwert"
 
+msgid "NLQ"
+msgstr "NLQ"
+
 msgid "Neighbors"
 msgstr "Nachbarn"
 
@@ -665,20 +678,3 @@ msgstr ""
 
 msgid "Willingness"
 msgstr "Bereitschaft"
-
-#~ msgid ""
-#~ "Link quality algorithm (only for lq level 2).<br /><b>etx_float</b>: "
-#~ "floating point ETX with exponential aging<br /><b>etx_fpm</b> : same as "
-#~ "etx_float, but with integer arithmetic<br /><b>etx_ff</b> : ETX freifunk, "
-#~ "an etx variant which use all OLSR traffic (instead of only hellos) for "
-#~ "ETX calculation<br /><b>etx_ffeth</b>: incompatible variant of etx_ff "
-#~ "that allows ethernet links with ETX 0.1.<br />Defaults to \"etx_ff\""
-#~ msgstr ""
-#~ "Algorithmus zur Bestimmung der Linkqualität, kann nur zusammen mit "
-#~ "Linkquality Level 2 verwendet werden.<br /><b>etx_float</b>: floating "
-#~ "point ETX mit exponentieller Alterung<br /><b>etx_fpm</b> : wie "
-#~ "etx_float, rechnet aber mit integeren Zahlen.<br /><b>etx_ff</b> : ETX "
-#~ "freifunk, eine ETX-Variante die den kompletten OLSR Traffic (statt nur "
-#~ "Hellos) zur ETX-Berechnung verwendet.<br /><b>etx_ffeth</b>: Inkompatible "
-#~ "Variante von etx_ff, die ETX 0.1 für kabelgebundene Links erlaubt.<br /"
-#~ ">Der Defaultwert ist \"etx_ff\"."
index 93b6fe8..1dc8f9a 100644 (file)
@@ -3,18 +3,18 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-26 17:57+0200\n"
-"PO-Revision-Date: 2012-03-22 14:44+0200\n"
-"Last-Translator: Anonymous Pootle User\n"
+"PO-Revision-Date: 2012-11-28 10:52+0200\n"
+"Last-Translator: dunkelschunkel <dunkelschunkel@googlemail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "%s"
-msgstr ""
+msgstr "%s"
 
 msgid "'net30', 'p2p', or 'subnet'"
 msgstr "Topologietyp"
index 05dbf7f..999bdc5 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2012-09-02 21:44+0200\n"
+"PO-Revision-Date: 2012-12-01 15:14+0200\n"
 "Last-Translator: Manuel <freifunk@somakoma.de>\n"
 "Language-Team: \n"
 "Language: de\n"
@@ -87,7 +87,7 @@ msgstr ""
 "Uploadgeschwindigkeit von Clients auf diesen Wert limitieren (kbyte/s) "
 
 msgid "Contact"
-msgstr "Kontaktiere"
+msgstr "Kontakt"
 
 msgid "Decline"
 msgstr "Ablehnen"
index 126a65e..75eb892 100644 (file)
@@ -68,7 +68,7 @@ msgid "Collectd Settings"
 msgstr "Collectd Einstellungen"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -115,6 +115,9 @@ msgstr "Plattenspeicher"
 msgid "Disk Usage"
 msgstr "Plattenauslastung"
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr "Zeitspanne zeigen »"
 
@@ -194,12 +197,6 @@ msgstr "Quelladressen ignorieren"
 msgid "Incoming interface"
 msgstr "eingehende Schnittstelle"
 
-msgid "Installed network plugins:"
-msgstr "Installierte Netzwerk-Plugins:"
-
-msgid "Installed output plugins:"
-msgstr "Installierte Ausgabe-Plugins:"
-
 msgid "Interface Plugin Configuration"
 msgstr "Interface Plugin Konfiguration"
 
@@ -295,13 +292,6 @@ msgstr "Network Plugin Konfiguration"
 msgid "Network plugins"
 msgstr "Netzwerkplugins"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-"Netzwerkplugins werden benutzt um Informationen über offene TCP-"
-"Verbindungen, Datenverkehr/Volumen, Iptables/Firewall Regeln etc. zu sammeln"
-
 msgid "Network protocol"
 msgstr "Netzwerkprotokoll"
 
@@ -326,17 +316,6 @@ msgstr "ausgehende Schnittstelle"
 msgid "Output plugins"
 msgstr "Ausgabeplugins"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-"Ausgabeplugins ermöglichen es gesammelte Daten zu speichern. Mehrere Plugins "
-"können gleichzeitig aktiviert werden, z.B. um Daten in RRD-Datenbanken zu "
-"speichern und gleichzeitig über das Netzwerk an andere Collectd-Instanzen zu "
-"versenden."
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -436,13 +415,6 @@ msgstr "Systemlast"
 msgid "System plugins"
 msgstr "Systemplugins"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-"Systemplugins sammeln Daten zum Systemzustand und den Ressoursenbedarf des "
-"Gerätes"
-
 msgid "TCP Connections"
 msgstr "TCP-Verbindungen"
 
@@ -458,6 +430,9 @@ msgstr "TTL für Ping Pakete"
 msgid "Table"
 msgstr "Tabelle"
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -626,13 +601,6 @@ msgstr ""
 "aus der laufenden Collectd-Instanz ausgelesen werden können."
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-"Das Wireless-Plugin sammelt Statistiken über die drahtlose Signalstärke, den "
-"Störpegel und die Signalqualität."
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -648,6 +616,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr "automatisch vollen Hostnamen herausfinden"
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr "UnixSock"
 
@@ -666,9 +643,6 @@ msgstr "Schnittstellen detailliert überwachen"
 msgid "Wireless"
 msgstr "Drahtlos"
 
-msgid "Wireless Plugin Configuration"
-msgstr "Wireless Plugin Konfiguration"
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr "Wireless-iwinfo Plugin Konfiguration"
 
@@ -692,3 +666,44 @@ msgstr "mehrere mit Leerzeichen trennen"
 
 msgid "server interfaces"
 msgstr "Server-Schnittstellen"
+
+#~ msgid "Installed network plugins:"
+#~ msgstr "Installierte Netzwerk-Plugins:"
+
+#~ msgid "Installed output plugins:"
+#~ msgstr "Installierte Ausgabe-Plugins:"
+
+#~ msgid ""
+#~ "Network plugins are used to collect information about open tcp "
+#~ "connections, interface traffic, iptables rules etc."
+#~ msgstr ""
+#~ "Netzwerkplugins werden benutzt um Informationen über offene TCP-"
+#~ "Verbindungen, Datenverkehr/Volumen, Iptables/Firewall Regeln etc. zu sammeln"
+
+#~ msgid ""
+#~ "Output plugins provide different possibilities to store collected data. "
+#~ "It is possible to enable multiple plugin at one, for example to store "
+#~ "collected data in rrd databases and to transmit the data over the network "
+#~ "to other collectd instances."
+#~ msgstr ""
+#~ "Ausgabeplugins ermöglichen es gesammelte Daten zu speichern. Mehrere Plugins "
+#~ "können gleichzeitig aktiviert werden, z.B. um Daten in RRD-Datenbanken zu "
+#~ "speichern und gleichzeitig über das Netzwerk an andere Collectd-Instanzen zu "
+#~ "versenden."
+
+#~ msgid ""
+#~ "System plugins collecting values about system state and ressource usage "
+#~ "on the device.:"
+#~ msgstr ""
+#~ "Systemplugins sammeln Daten zum Systemzustand und den Ressoursenbedarf des "
+#~ "Gerätes"
+
+#~ msgid ""
+#~ "The wireless plugin collects statistics about wireless signal strength, "
+#~ "noise and quality."
+#~ msgstr ""
+#~ "Das Wireless-Plugin sammelt Statistiken über die drahtlose Signalstärke, den "
+#~ "Störpegel und die Signalqualität."
+
+#~ msgid "Wireless Plugin Configuration"
+#~ msgstr "Wireless Plugin Konfiguration"
index f6f1793..d444872 100644 (file)
@@ -3,15 +3,15 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-26 17:57+0200\n"
-"PO-Revision-Date: 2011-05-13 09:41+0200\n"
-"Last-Translator: Jo-Philipp <xm@subsignal.org>\n"
+"PO-Revision-Date: 2012-11-28 10:52+0200\n"
+"Last-Translator: dunkelschunkel <dunkelschunkel@googlemail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid ""
 "<em>Via proxy</em> routes requests to the given target via the specifed "
@@ -75,7 +75,7 @@ msgstr ""
 "sein"
 
 msgid "Configuration"
-msgstr ""
+msgstr "Konfiguration"
 
 msgid "Connection timeout"
 msgstr "Verbindungstimeout"
@@ -90,7 +90,7 @@ msgid "Error page"
 msgstr "Fehlerseite"
 
 msgid "Failed to retrieve statistics from url:"
-msgstr ""
+msgstr "Empfangen der Statiken von URL fehlgeschlagen"
 
 msgid "Filter by RegExp"
 msgstr "Filtern nach RegExp"
@@ -255,7 +255,7 @@ msgid "Statistics page"
 msgstr "Statistikseite"
 
 msgid "Status"
-msgstr ""
+msgstr "Status"
 
 msgid "Target host"
 msgstr "Zielhost"
@@ -264,7 +264,7 @@ msgid "Tinyproxy"
 msgstr "Tinyproxy"
 
 msgid "Tinyproxy Status"
-msgstr ""
+msgstr "Status Tinyproxy"
 
 msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy"
 msgstr ""
index b2f70ef..acfdb65 100644 (file)
@@ -3,13 +3,15 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-26 17:57+0200\n"
-"PO-Revision-Date: 2011-05-10 02:06+0100\n"
-"Last-Translator: Jo-Philipp Wich <xm@subsignal.org>\n"
+"PO-Revision-Date: 2012-11-28 10:45+0200\n"
+"Last-Translator: dunkelschunkel <dunkelschunkel@googlemail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Translate Toolkit 1.1.1\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid ""
 "ACLs specify which external ports may be redirected to which internal "
@@ -121,13 +123,13 @@ msgid "There are no active redirects."
 msgstr "Es gibt keine aktiven Weiterleitungen."
 
 msgid "UPNP"
-msgstr ""
+msgstr "UPnP"
 
 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 "
+"UPnP ermöglicht die automatische Konfiguration des Routers durch Clients im "
 "lokalen Netzwerk."
 
 msgid ""
index 7dd5021..e23d440 100644 (file)
@@ -253,6 +253,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr "Το επιτρεπόμενο εύρος είναι από 1 έως 65535"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "Ένα επιπλέον δίκτυο θα δημιουργηθεί εάν αυτό αφεθεί κενό"
 
@@ -879,6 +884,9 @@ msgstr "Φλασάρεται..."
 msgid "Force"
 msgstr "Επιβολή"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr "Επιβολή CCMP (AES)"
 
@@ -2676,9 +2684,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr "Αναμονή για δρομολογητή..."
-
 msgid "Warning"
 msgstr "Προειδοποίηση"
 
@@ -2859,6 +2864,9 @@ msgstr "ναι"
 msgid "« Back"
 msgstr "« Πίσω"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "Αναμονή για δρομολογητή..."
+
 #~ msgid "Enable builtin NTP server"
 #~ msgstr "Ενεργοποίηση ενσωματωμένου εξυπηρετητή NTP"
 
diff --git a/po/el/commands.po b/po/el/commands.po
new file mode 100644 (file)
index 0000000..0e9e65d
--- /dev/null
@@ -0,0 +1,91 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index 2922747..9512ab9 100644 (file)
@@ -36,6 +36,9 @@ msgstr ""
 msgid "Enable"
 msgstr "Ενεργοποίηση"
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr "Εξαναγκασμός ενημέρωσης κάθε"
 
@@ -52,6 +55,9 @@ msgstr "Διεπαφή"
 msgid "Network"
 msgstr "Δίκτυο"
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr "Κωδικός πρόσβασης"
 
@@ -85,12 +91,6 @@ msgstr "λεπτά"
 msgid "network"
 msgstr "δίκτυο"
 
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
-
 #, fuzzy
 #~ msgid "ddns_service_updateurl"
 #~ msgstr "Προσαρμογή URL ενημέρωσης"
index aa8dc35..7a247cb 100644 (file)
@@ -181,6 +181,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr "Scans for devices on specified networks."
+
 msgid "Sleep Between Requests"
 msgstr ""
 
@@ -204,6 +207,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr "έλεγχος άλλων δικτύων"
-
-msgid "Scans for devices on specified networks."
-msgstr "Scans for devices on specified networks."
index ce969be..8bb4490 100644 (file)
@@ -16,6 +16,9 @@ msgstr ""
 msgid "BSSID"
 msgstr "BSSID"
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr "Βασικές Ρυθμίσεις"
 
@@ -82,6 +85,9 @@ msgstr "ESSID"
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr "Σφάλμα"
 
@@ -103,6 +109,12 @@ msgstr "Πύλη"
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr "Γεια σας και καλώς ήλθατε στο δίκτυο"
 
@@ -115,6 +127,15 @@ msgstr ""
 msgid "Hostname"
 msgstr ""
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -143,6 +164,9 @@ msgstr ""
 msgid "Latitude"
 msgstr "Γεωγραφικό πλάτος"
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -194,6 +218,9 @@ msgstr "OLSR"
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -224,6 +251,9 @@ msgstr ""
 msgid "Realname"
 msgstr "Ονοματεπώνυμο"
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr "SSID"
 
@@ -253,6 +283,9 @@ msgstr "Στατιστικά"
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr "Σύστημα"
 
@@ -304,6 +337,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -314,6 +350,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index 66297ca..b531eed 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Pootle 2.0.4\n"
 
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr "Κανάλι"
 
@@ -34,9 +37,18 @@ msgstr ""
 msgid "Enable DHCP"
 msgstr "Ενεργοποίηση DHCP"
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr "Γενικές Ρυθμίσεις"
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -47,9 +59,17 @@ msgstr "Διεπαφές"
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr ""
 
@@ -57,6 +77,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -71,6 +94,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 0b5d899..c55afdf 100644 (file)
@@ -69,7 +69,7 @@ msgid "Collectd Settings"
 msgstr "Ρυθμίσεις Collectd"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -117,6 +117,9 @@ msgstr "Χρήση Χώρου στον δίσκο"
 msgid "Disk Usage"
 msgstr "Χρήση Δίσκου"
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr "Εμφάνιση χρονικού εύρους »"
 
@@ -187,12 +190,6 @@ msgstr ""
 msgid "Incoming interface"
 msgstr ""
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr ""
 
@@ -286,11 +283,6 @@ msgstr ""
 msgid "Network plugins"
 msgstr "Πρόσθετα δικτύου"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr ""
 
@@ -315,13 +307,6 @@ msgstr ""
 msgid "Output plugins"
 msgstr "Πρόσθετα εξόδου"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -421,11 +406,6 @@ msgstr "Φόρτος Συστήματος"
 msgid "System plugins"
 msgstr "Πρόσθετα συστήματος"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr "Συνδέσεις TCP"
 
@@ -441,6 +421,9 @@ msgstr ""
 msgid "Table"
 msgstr "Πίνακας"
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -560,11 +543,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -576,6 +554,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr ""
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr "UnixSock"
 
@@ -594,9 +581,6 @@ msgstr ""
 msgid "Wireless"
 msgstr "Ασύρματο"
 
-msgid "Wireless Plugin Configuration"
-msgstr ""
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
index cb98799..5ce5b5d 100644 (file)
@@ -244,6 +244,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr "Allowed range is 1 to 65535"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "An additional network will be created if you leave this unchecked."
 
@@ -854,6 +859,9 @@ msgstr ""
 msgid "Force"
 msgstr "Force"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr ""
 
@@ -2634,9 +2642,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr ""
-
 msgid "Warning"
 msgstr ""
 
diff --git a/po/en/commands.po b/po/en/commands.po
new file mode 100644 (file)
index 0000000..754a229
--- /dev/null
@@ -0,0 +1,95 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "A short textual description of the configured command"
+msgstr "A short textual description of the configured command"
+
+msgid "Access command with"
+msgstr "Access command with"
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr "Allow the user to provide additional command line arguments"
+
+msgid "Arguments:"
+msgstr "Arguments:"
+
+msgid "Binary data not displayed, download instead."
+msgstr "Binary data not displayed, download instead."
+
+msgid "Code:"
+msgstr "Code:"
+
+msgid "Collecting data..."
+msgstr "Collecting data..."
+
+msgid "Command"
+msgstr "Command"
+
+msgid "Command failed"
+msgstr "Command failed"
+
+msgid "Command line to execute"
+msgstr "Command line to execute"
+
+msgid "Command successful"
+msgstr "Command successful"
+
+msgid "Command:"
+msgstr "Command:"
+
+msgid "Configure"
+msgstr "Configure"
+
+msgid "Custom Commands"
+msgstr "Custom Commands"
+
+msgid "Custom arguments"
+msgstr "Custom arguments"
+
+msgid "Dashboard"
+msgstr "Dashboard"
+
+msgid "Description"
+msgstr "Description"
+
+msgid "Download"
+msgstr "Download"
+
+msgid "Failed to execute command!"
+msgstr "Failed to execute command!"
+
+msgid "Link"
+msgstr "Link"
+
+msgid "Loading"
+msgstr "Loading"
+
+msgid "Public access"
+msgstr "Public access"
+
+msgid "Run"
+msgstr "Run"
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+
+msgid "Waiting for command to complete..."
+msgstr "Waiting for command to complete..."
index f451163..13d9560 100644 (file)
@@ -34,6 +34,9 @@ msgstr ""
 msgid "Enable"
 msgstr "Enable"
 
+msgid "Event interface"
+msgstr "Event interface"
+
 msgid "Force update every"
 msgstr "Force update every"
 
@@ -49,6 +52,9 @@ msgstr "Interface"
 msgid "Network"
 msgstr "Network"
 
+msgid "On which interface up should start the ddns script process."
+msgstr "On which interface up should start the ddns script process."
+
 msgid "Password"
 msgstr "Password"
 
@@ -80,9 +86,3 @@ msgstr "min"
 
 msgid "network"
 msgstr "network"
-
-msgid "Event interface"
-msgstr "Event interface"
-
-msgid "On which interface up should start the ddns script process."
-msgstr "On which interface up should start the ddns script process."
index fe42da6..7adbbea 100644 (file)
@@ -185,6 +185,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr "Scans for devices on specified networks."
+
 msgid "Sleep Between Requests"
 msgstr "Sleep Between Requests"
 
@@ -208,6 +211,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr "check other networks"
-
-msgid "Scans for devices on specified networks."
-msgstr "Scans for devices on specified networks."
index dfb2586..6532da1 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 msgid "BSSID"
 msgstr ""
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr ""
 
@@ -81,6 +84,9 @@ msgstr ""
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr ""
 
@@ -102,6 +108,12 @@ msgstr ""
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr "Hello and welcome in the network of"
 
@@ -114,6 +126,15 @@ msgstr ""
 msgid "Hostname"
 msgstr "Hostname"
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -142,6 +163,9 @@ msgstr "Keep configuration"
 msgid "Latitude"
 msgstr ""
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -193,6 +217,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -223,6 +250,9 @@ msgstr ""
 msgid "Realname"
 msgstr "Realname"
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -252,6 +282,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -301,6 +334,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr "Verify downloaded images"
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -311,6 +347,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index f035cf4..180d771 100644 (file)
@@ -1,3 +1,6 @@
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr ""
 
@@ -19,9 +22,18 @@ msgstr ""
 msgid "Enable DHCP"
 msgstr ""
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr ""
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -32,9 +44,17 @@ msgstr ""
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr ""
 
@@ -42,6 +62,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -56,6 +79,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 896c087..5de0764 100644 (file)
@@ -7,6 +7,7 @@ msgstr ""
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -67,11 +68,11 @@ msgid "Collectd Settings"
 msgstr "Collectd Settings"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 is a small daeomon for collecting data from various sources through "
+"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."
 
@@ -114,6 +115,9 @@ msgstr "Disk Space Usage"
 msgid "Disk Usage"
 msgstr "Disk Usage"
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr "Display timespan »"
 
@@ -191,12 +195,6 @@ msgstr "Ignore source addresses"
 msgid "Incoming interface"
 msgstr "Incoming interface"
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr "Interface Plugin Configuration"
 
@@ -290,11 +288,6 @@ msgstr "Network Plugin Configuration"
 msgid "Network plugins"
 msgstr "Network plugins"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr "Network protocol"
 
@@ -319,13 +312,6 @@ msgstr "Outgoing interface"
 msgid "Output plugins"
 msgstr "Output plugins"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -425,11 +411,6 @@ msgstr "System Load"
 msgid "System plugins"
 msgstr "System plugins"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr "TCP Connections"
 
@@ -445,6 +426,9 @@ msgstr "TTL for ping packets"
 msgid "Table"
 msgstr "Table"
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -601,13 +585,6 @@ msgstr ""
 "collected data from a running collectd instance."
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -622,6 +599,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr "Try to lookup fully qualified hostname"
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr "UnixSock"
 
@@ -640,9 +626,6 @@ msgstr "Verbose monitoring"
 msgid "Wireless"
 msgstr "Wireless"
 
-msgid "Wireless Plugin Configuration"
-msgstr "Wireless Plugin Configuration"
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
@@ -666,3 +649,13 @@ msgstr "seconds; multiple separated by space"
 
 msgid "server interfaces"
 msgstr "server interfaces"
+
+#~ msgid ""
+#~ "The wireless plugin collects statistics about wireless signal strength, "
+#~ "noise and quality."
+#~ msgstr ""
+#~ "The wireless plugin collects statistics about wireless signal strength, "
+#~ "noise and quality."
+
+#~ msgid "Wireless Plugin Configuration"
+#~ msgstr "Wireless Plugin Configuration"
index d466f85..b86d357 100644 (file)
@@ -20,10 +20,10 @@ msgid ""
 "networks where it is difficult or impossible to configure a server within "
 "every link-layer broadcast domain, for example mobile ad-hoc networks."
 msgstr ""
-"AHCP es un protocolo de autoconfiguración para redes con IPv6 o duales "
-"IPv6/IPv4 diseñado para ser usado en lugar de router discovery o DHCP en "
-"redes en las que es difícil o imposible configurar un servidor en cada capa "
-"de enlace del dominio de propagación como las redes móviles ad-hoc."
+"AHCP es un protocolo de autoconfiguración para redes con IPv6 o duales IPv6/"
+"IPv4 diseñado para ser usado en lugar de router discovery o DHCP en redes en "
+"las que es difícil o imposible configurar un servidor en cada capa de enlace "
+"del dominio de propagación como las redes móviles ad-hoc."
 
 # "Lease" en el sentido usado en DHCP no tiene una traducción clara en español y se puede usar la misma palabra en que en inglés.
 msgid "Active AHCP Leases"
index 59c5c77..2c134b6 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2012-10-11 16:09+0200\n"
+"PO-Revision-Date: 2012-12-13 20:55+0200\n"
 "Last-Translator: José Vicente <josevteg@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: es\n"
@@ -104,8 +104,8 @@ msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Dynamic Host Configuration "
 "Protocol\">DHCP</abbr> leases"
 msgstr ""
-"Máximo número de cesiones <abbr title=\"Dynamic Host Configuration Protocol"
-"\">DHCP</abbr>"
+"Máximas cesiones <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
+"abbr>"
 
 msgid ""
 "<abbr title=\"maximal\">Max.</abbr> <abbr title=\"Extension Mechanisms for "
@@ -250,6 +250,13 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr "El rango permitido es desde 1 hasta 65535"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"Usar canales de 40MHz aunque el canal secundario solape con otro. ¡El "
+"estándar IEEE 802.11n-2009 indica que no es correcto hacer esto!"
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "Se creará una red adicional si deja esto desmarcado."
 
@@ -873,6 +880,9 @@ msgstr "Grabando..."
 msgid "Force"
 msgstr "Forzar"
 
+msgid "Force 40MHz mode"
+msgstr "Forzar modo 40MHz"
+
 msgid "Force CCMP (AES)"
 msgstr "Forzar CCMP (AES)"
 
@@ -2247,13 +2257,13 @@ msgid "Swap Entry"
 msgstr "Entrada de intercambio"
 
 msgid "Switch"
-msgstr "Conmutador"
+msgstr "Switch"
 
 msgid "Switch %q"
-msgstr "Conmutador %q"
+msgstr "Switch %q"
 
 msgid "Switch %q (%s)"
-msgstr "Conmutador %q (%s)"
+msgstr "Switch %q (%s)"
 
 msgid "Switch protocol"
 msgstr "Intercambiar protocolo"
@@ -2296,7 +2306,7 @@ msgstr "Tabla"
 
 # Target = Meta --> Objetivo --> Destino?
 msgid "Target"
-msgstr "Destino"
+msgstr "Objetivo"
 
 msgid "Terminate"
 msgstr "Terminar"
@@ -2331,8 +2341,8 @@ msgid ""
 "The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
 "code> and <code>_</code>"
 msgstr ""
-"Los caracteres permitidos son: <code>A-Z</code>, <code>a-z</code>, <code>0-"
-"9</code> y <code>_</code>"
+"Los caracteres permitidos son: <code>A-Z</code>, <code>a-z</code>, "
+"<code>0-9</code> y <code>_</code>"
 
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
@@ -2619,8 +2629,8 @@ msgid ""
 "OpenWrt compatible firmware image)."
 msgstr ""
 "Suba una imagen compatible con sysupgrade para reemplazar el firmware "
-"actual. Puede marcar \"Conservar la configuración\" si lo desea (es necesario "
-"que la imagen de OpenWrt sea compatible)."
+"actual. Puede marcar \"Conservar la configuración\" si lo desea (es "
+"necesario que la imagen de OpenWrt sea compatible)."
 
 msgid "Upload archive..."
 msgstr "Subir archivo..."
@@ -2748,9 +2758,6 @@ msgstr "Esperando a que se realicen los cambios..."
 msgid "Waiting for command to complete..."
 msgstr "Esperando a que termine el comando..."
 
-msgid "Waiting for router..."
-msgstr "Esperando al router..."
-
 msgid "Warning"
 msgstr "Aviso"
 
@@ -2931,6 +2938,9 @@ msgstr "sí"
 msgid "« Back"
 msgstr "« Volver"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "Esperando al router..."
+
 #~ msgid "Enable builtin NTP server"
 #~ msgstr "Activar el servidor integrado NTP"
 
diff --git a/po/es/commands.po b/po/es/commands.po
new file mode 100644 (file)
index 0000000..8052452
--- /dev/null
@@ -0,0 +1,97 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2012-11-24 10:16+0200\n"
+"Last-Translator: José Vicente <josevteg@gmail.com>\n"
+"Language-Team: none\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.6\n"
+
+msgid "A short textual description of the configured command"
+msgstr "Descripción breve del comando a configurar"
+
+msgid "Access command with"
+msgstr "Acceder al comando con"
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Permitir ejecutar el comando y descargar su salida sin más autentificación"
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr "Permitir al usuario añadir parámetros de línea de comandos"
+
+msgid "Arguments:"
+msgstr "Parámetros:"
+
+msgid "Binary data not displayed, download instead."
+msgstr "No se pueden mostrar datos binarios, descárguelos."
+
+msgid "Code:"
+msgstr "Código:"
+
+msgid "Collecting data..."
+msgstr "Recuperando datos..."
+
+msgid "Command"
+msgstr "Comando"
+
+msgid "Command failed"
+msgstr "Falló"
+
+msgid "Command line to execute"
+msgstr "Comando a ejecutar"
+
+msgid "Command successful"
+msgstr "OK"
+
+msgid "Command:"
+msgstr "Comando:"
+
+msgid "Configure"
+msgstr "Configurar"
+
+msgid "Custom Commands"
+msgstr "Comandos propios"
+
+msgid "Custom arguments"
+msgstr "Parámetros propios"
+
+msgid "Dashboard"
+msgstr "Panel"
+
+msgid "Description"
+msgstr "Descripción"
+
+msgid "Download"
+msgstr "Descarga"
+
+msgid "Failed to execute command!"
+msgstr "¡Error al ejecutar el comando!"
+
+msgid "Link"
+msgstr "Enlace"
+
+msgid "Loading"
+msgstr "Cargando"
+
+msgid "Public access"
+msgstr "Acceso público"
+
+msgid "Run"
+msgstr "Ejecutar"
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Aquí puede configurar sus propios comandos shell para lanzarlos fácilmente "
+"desde el interfaz web."
+
+msgid "Waiting for command to complete..."
+msgstr "Esperando a que termine el comando..."
index 96f065c..c77f8b1 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-02 13:44+0100\n"
-"PO-Revision-Date: 2012-09-15 21:46+0200\n"
+"PO-Revision-Date: 2012-11-01 23:37+0200\n"
 "Last-Translator: José Vicente <josevteg@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: es\n"
@@ -14,7 +14,7 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid "Check for changed IP every"
-msgstr "Verificar cambios en dirección IP cada"
+msgstr "Verificar cambios de IP cada"
 
 msgid "Check-time unit"
 msgstr "Unidad de tiempo"
@@ -29,11 +29,14 @@ msgid ""
 "Dynamic DNS allows that your router can be reached with a fixed hostname "
 "while having a dynamically changing IP address."
 msgstr ""
-"DNS Dinámico le permite conectar a su router usando un nombre aunque su "
-"dirección IP cambie en forma dinámica."
+"DNS Dinámico le permite conectar a su router con un nombre concreto aunque "
+"su dirección IP cambie dinámicamente."
 
 msgid "Enable"
-msgstr "Activa"
+msgstr "Activar"
+
+msgid "Event interface"
+msgstr "Interfaz de eventos"
 
 msgid "Force update every"
 msgstr "Forzar actualización cada"
@@ -50,6 +53,9 @@ msgstr "Interfaz"
 msgid "Network"
 msgstr "Red"
 
+msgid "On which interface up should start the ddns script process."
+msgstr "Tras qué interfaz debe arrancar ddns."
+
 msgid "Password"
 msgstr "Contraseña"
 
@@ -77,13 +83,7 @@ msgstr "interfaz"
 
 # Minutes (not minimum)
 msgid "min"
-msgstr "mín"
+msgstr "min"
 
 msgid "network"
 msgstr "red"
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index eecba02..0b44ff3 100644 (file)
@@ -194,6 +194,9 @@ msgstr "Explorar dispositivos SIP soportados en las redes especificadas."
 msgid "Scanning Configuration"
 msgstr "Configuración de la exploración"
 
+msgid "Scans for devices on specified networks."
+msgstr "Explora dispositivos en las redes especificadas."
+
 msgid "Sleep Between Requests"
 msgstr "Detenerse entre peticiones"
 
@@ -217,6 +220,3 @@ msgstr "Vendedor"
 
 msgid "check other networks"
 msgstr "comprueba otras redes"
-
-msgid "Scans for devices on specified networks."
-msgstr "Explora dispositivos en las redes especificadas."
index cec4f6b..019b92b 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2012-09-15 21:34+0200\n"
+"PO-Revision-Date: 2012-12-02 20:36+0200\n"
 "Last-Translator: José Vicente <josevteg@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: es\n"
@@ -16,6 +16,9 @@ msgstr ""
 msgid "BSSID"
 msgstr "BSSID"
 
+msgid "Bad (ETX > 10)"
+msgstr "Malo (ETX > 10)"
+
 msgid "Basic Settings"
 msgstr "Configuración básica"
 
@@ -84,6 +87,9 @@ msgstr "ESSID"
 msgid "Edit index page"
 msgstr "Editar índice"
 
+msgid "Enable IPv6"
+msgstr "Activar IPv6"
+
 msgid "Error"
 msgstr "Error"
 
@@ -105,6 +111,12 @@ msgstr "Pasarela"
 msgid "Go to"
 msgstr "Ir a"
 
+msgid "Good (2 < ETX < 4)"
+msgstr "Bueno  (2 < ETX < 4)"
+
+msgid "Green"
+msgstr "Verde"
+
 msgid "Hello and welcome in the network of"
 msgstr "Hola y bienvenido a la red de"
 
@@ -117,6 +129,15 @@ msgstr "Página inicial"
 msgid "Hostname"
 msgstr "Nombre de máquina"
 
+msgid "IPv6 Config"
+msgstr "Configuración de IPv6"
+
+msgid "IPv6 Prefix"
+msgstr "Prefijo IPv6"
+
+msgid "IPv6 network in CIDR notation."
+msgstr "Red IPv6 en notación CIDR."
+
 msgid "If selected then the default content element is not shown."
 msgstr "No mostrar el contenido por defecto."
 
@@ -147,6 +168,9 @@ msgstr "Mantener configuración"
 msgid "Latitude"
 msgstr "Latitud"
 
+msgid "Legend"
+msgstr "Leyenda"
+
 msgid "Load"
 msgstr "Carga"
 
@@ -198,6 +222,9 @@ msgstr "OLSR"
 msgid "Operator"
 msgstr "Administrador"
 
+msgid "Orange"
+msgstr "Naranja"
+
 msgid "Overview"
 msgstr "Repaso"
 
@@ -228,6 +255,9 @@ msgstr "Perfil (experto)"
 msgid "Realname"
 msgstr "Nombre real"
 
+msgid "Red"
+msgstr "Rojo"
+
 msgid "SSID"
 msgstr "SSID"
 
@@ -259,6 +289,9 @@ msgstr "Estadísticas"
 msgid "Status"
 msgstr "Estado"
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr "Aún utilizable (4 < ETX < 10)"
+
 msgid "System"
 msgstr "Sistema"
 
@@ -278,8 +311,8 @@ msgid ""
 "configured and that the <em>latlon_file</em> option is enabled."
 msgstr ""
 "El servicio OLSRd no está configurado para tomar los datos de posición desde "
-"la red.<br />Asegúrese de que el plugin \"nameservice\" está bien configurado "
-"y que la opción <em>latlon_file</em> está marcada."
+"la red.<br />Asegúrese de que el plugin \"nameservice\" está bien "
+"configurado y que la opción <em>latlon_file</em> está marcada."
 
 msgid "The installed firmware is the most recent version."
 msgstr "El firmare instalado está en la versión más reciente."
@@ -317,6 +350,9 @@ msgstr "Tiempo activo"
 msgid "Verify downloaded images"
 msgstr "Verificar las descargas"
 
+msgid "Very good (ETX < 2)"
+msgstr "Muy bueno (ETX < 2)"
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -327,6 +363,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr "Resumen de red inalámbrica"
 
+msgid "Yellow"
+msgstr "Amarillo"
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index cb9d09f..ff2bc91 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2012-08-23 22:25+0200\n"
-"PO-Revision-Date: 2012-08-23 23:06+0200\n"
+"PO-Revision-Date: 2012-11-24 10:22+0200\n"
 "Last-Translator: José Vicente <josevteg@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: es\n"
@@ -13,6 +13,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "Activate or deactivate IPv6 config globally."
+msgstr "Activar o desactivar la configuración IPv6 globalmente."
+
 msgid "Channel"
 msgstr "Canal"
 
@@ -34,9 +37,18 @@ msgstr "DHCP asignará direcciones IP automáticamente a los clientes"
 msgid "Enable DHCP"
 msgstr "Activar DHCP"
 
+msgid "Enable RA"
+msgstr "Activar RA"
+
+msgid "Enabled"
+msgstr "Activado"
+
 msgid "General Settings"
 msgstr "Configuración general"
 
+msgid "IPv6 Settings"
+msgstr "Configuración IPv6"
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr "Borrar la configuración antes de establecer una nueva."
@@ -47,9 +59,19 @@ msgstr "Interfaces"
 msgid "Mesh IP address"
 msgstr "Dirección IP del mesh"
 
+msgid "Mesh IPv6 address"
+msgstr "Dirección IPv6 del mesh"
+
 msgid "Mesh Wizard"
 msgstr "Asistente del mesh"
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+"Nota: esto configurará esta interfaz para uso mesh, es decir: la añadirá a "
+"la zona \"freifunk\" y activará OSLR."
+
 msgid "Protect LAN"
 msgstr "Proteger LAN"
 
@@ -57,6 +79,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr "Permitir a otros usar su conexión para acceder a internet."
 
+msgid "Send router advertisements on this device."
+msgstr "Envía publicaciones de routers por este dispositivo."
+
 msgid "Share your internet connection"
 msgstr "Compartir su conexión a internet"
 
@@ -74,6 +99,13 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr "Este rango IP no está dentro del de la red mesh"
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+"Dirección única IPv6 en notación CIDR (p.e.: 2001:1:2:3::1/64) y que tiene "
+"que estar registrada en su comunidad local."
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index e6bd925..33ebb8f 100644 (file)
@@ -146,8 +146,8 @@ msgid ""
 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. media_dir=A,/"
+"mnt/media/Music). Se puede establecer varios directorios."
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "Camino al socket de MiniSSDPd."
index 8060533..40edf24 100644 (file)
@@ -3,8 +3,8 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-14 13:24+0200\n"
-"PO-Revision-Date: 2012-07-28 23:21+0200\n"
-"Last-Translator: Daniel <danips@gmail.com>\n"
+"PO-Revision-Date: 2012-11-25 11:14+0200\n"
+"Last-Translator: José Vicente <josevteg@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: es\n"
 "MIME-Version: 1.0\n"
@@ -44,7 +44,7 @@ msgid "Time Servers"
 msgstr "Servidores de hora"
 
 msgid "Time Synchronisation"
-msgstr "Sincronización Horaria"
+msgstr "Sincronización horaria"
 
 msgid "Update interval (in seconds)"
 msgstr "Intervalo de actualización (en segundos)"
index fe311ce..5cc285d 100644 (file)
@@ -93,8 +93,8 @@ msgid ""
 msgstr ""
 "FIBMetric controla el valor métrico de los conjuntos OLSRd. \"Plano\" "
 "significa que la métrica es siempre 2. Este es el valor preferido porque "
-"ayuda al enrutador del kernel de linux a limpiar valores antiguos. \"Correct\" "
-"usa como métrica el número de saltos. \"Approx\" usa la cuenta de saltos "
+"ayuda al enrutador del kernel de linux a limpiar valores antiguos. \"Correct"
+"\" usa como métrica el número de saltos. \"Approx\" usa la cuenta de saltos "
 "también, pero solo la actualiza si cambia el siguiente salto también. Por "
 "defecto \"flat\"."
 
@@ -181,8 +181,8 @@ msgid ""
 "interface broadcast IP."
 msgstr ""
 "Dirección de propagación IPv4 para paquetes salientes OLSR. Por ejemplo "
-"\"255.255.255.255\". Por defecto es \"0.0.0.0\" que hace que se use la interfaz "
-"de propagación IP."
+"\"255.255.255.255\". Por defecto es \"0.0.0.0\" que hace que se use la "
+"interfaz de propagación IP."
 
 msgid "IPv4 source"
 msgstr "IPv4 origen"
@@ -191,8 +191,8 @@ msgid ""
 "IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which "
 "triggers usage of the interface IP."
 msgstr ""
-"Dirección origen IPv4 para paquetes OLSR. Por defecto es \"0.0.0.0\" que hace "
-"que se use la interfaz de propagación IP."
+"Dirección origen IPv4 para paquetes OLSR. Por defecto es \"0.0.0.0\" que "
+"hace que se use la interfaz de propagación IP."
 
 msgid "IPv6"
 msgstr "IPv6"
@@ -204,8 +204,8 @@ msgid ""
 "IPv6 multicast address. Default is \"FF02::6D\", the manet-router linklocal "
 "multicast."
 msgstr ""
-"Dirección IPv6 de multidifusión. Por defecto es \"FF02::6D\", la dirección de "
-"multidifusión local en routers MANET."
+"Dirección IPv6 de multidifusión. Por defecto es \"FF02::6D\", la dirección "
+"de multidifusión local en routers MANET."
 
 msgid ""
 "IPv6 network must be given in full notation, prefix must be in CIDR notation."
@@ -222,8 +222,8 @@ msgid ""
 "of a not-linklocal interface IP."
 msgstr ""
 "Prefijo origen IPv6. OLSRd elegirá un interfaz IP que encaje con el prefijo "
-"de este parámetro. Por defecto es \"0::/0\" que provoca el uso de un interfaz "
-"IP no local."
+"de este parámetro. Por defecto es \"0::/0\" que provoca el uso de un "
+"interfaz IP no local."
 
 msgid "IPv6-Prefix of the uplink"
 msgstr "Prefijo IPv6 para el enlace de subida"
@@ -253,8 +253,8 @@ msgid ""
 "\"mesh\"."
 msgstr ""
 "El modo de interfaz se usar para evitar traspaso innecesario de paquetes en "
-"interfaces de red conmutados. Los modos válidos son \"mesh\" y \"ether\". Por "
-"defecto es \"mesh\"."
+"interfaces de red conmutados. Los modos válidos son \"mesh\" y \"ether\". "
+"Por defecto es \"mesh\"."
 
 msgid "Interfaces"
 msgstr "Interfaces"
@@ -320,13 +320,13 @@ msgid ""
 "calculation<br /><b>etx_ffeth</b>: incompatible variant of etx_ff that "
 "allows ethernet links with ETX 0.1.<br />Defaults to \"etx_ff\""
 msgstr ""
-"Algoritmo de calidad de enlace (solo para CE nivel 2).<br "
-"/><b>etx_float</b>: ETX en punto flotante con envejecimiento exponencial<br "
-"/><b>etx_fpm</b> : igual que etx_float, pero con aritmética entera<br "
-"/><b>etx_ff</b> : ETX freifunk, variante etx que usar todo el tráfico OLSR "
-"(en vez de sólo \"hellos\") para los cálculos ETX<br /><b>etx_ffeth</b>: "
-"variante incompatible de etx_ff que permite enlaces ethernet con ETX 0.1.<br "
-"/>Por defecto \"etx_ff\""
+"Algoritmo de calidad de enlace (solo para CE nivel 2).<br /><b>etx_float</"
+"b>: ETX en punto flotante con envejecimiento exponencial<br /><b>etx_fpm</"
+"b> : igual que etx_float, pero con aritmética entera<br /><b>etx_ff</b> : "
+"ETX freifunk, variante etx que usar todo el tráfico OLSR (en vez de sólo "
+"\"hellos\") para los cálculos ETX<br /><b>etx_ffeth</b>: variante "
+"incompatible de etx_ff que permite enlaces ethernet con ETX 0.1.<br />Por "
+"defecto \"etx_ff\""
 
 msgid ""
 "Link quality level switch between hopcount and cost-based (mostly ETX) "
@@ -513,8 +513,8 @@ msgid ""
 "IP of the first interface."
 msgstr ""
 "Configura la dirección IP principal (IP originadora) del router. NUNCA debe "
-"cambiar mientras OLSRd esté activa. Por defecto es \"0.0.0.0\" que provoca el "
-"uso de la IP del primer interfaz."
+"cambiar mientras OLSRd esté activa. Por defecto es \"0.0.0.0\" que provoca "
+"el uso de la IP del primer interfaz."
 
 msgid "SmartGW"
 msgstr "SmartGW"
@@ -638,8 +638,7 @@ msgid ""
 "Warning: kmod-ipip is not installed. Without kmod-ipip SmartGateway will not "
 "work, please install it."
 msgstr ""
-"Aviso: kmod-ipip no está instalado. Sin kmod-ipip SmartGateway no "
-"funcionará."
+"Aviso: kmod-ipip no está instalado. Sin kmod-ipip SmartGateway no funcionará."
 
 msgid "Weight"
 msgstr "Peso"
index ac5a8e3..1edc533 100644 (file)
@@ -29,8 +29,8 @@ msgid "P2P-Block"
 msgstr "Bloqueo de P2P"
 
 msgid ""
-"P2P-Block is a greylisting mechanism to block various peer-to-peer "
-"protocols for non-whitelisted clients."
+"P2P-Block is a greylisting mechanism to block various peer-to-peer protocols "
+"for non-whitelisted clients."
 msgstr ""
 "El bloqueo de P2P es un mecanismo de lista gris para bloquear varios "
 "protocolos punto a punto a clientes que no están en lista blanca."
index 4d93ff8..12ff378 100644 (file)
@@ -85,8 +85,7 @@ msgid ""
 "you will use ONLY locally and never from a remote location."
 msgstr ""
 "Ponga esta IP (o IP:puerto) en el parámetro Servidor/Registrador de los "
-"dispositivos SIP que usará SOLO localmente y nunca desde una posición "
-"remota."
+"dispositivos SIP que usará SOLO localmente y nunca desde una posición remota."
 
 msgid ""
 "Enter this hostname (or hostname:port) in the Server/Registrar setting of "
@@ -133,8 +132,8 @@ msgstr ""
 "proveedores usar. Por defecto todos los usuarios pueden usar a todos los "
 "proveedores. Para mostrarse en la lista el usuario debe poder hacer llamadas "
 "salientes (ver página \"Cuentas de usuario\"). Ponga los proveedores en "
-"formato username@some.host.name igual que se listan en \"Llamadas salientes\" "
-"arriba. Los nombres no válidos se rechazarán sin aviso.Puede separar los "
+"formato username@some.host.name igual que se listan en \"Llamadas salientes"
+"\" arriba. Los nombres no válidos se rechazarán sin aviso.Puede separar los "
 "nombres con espacios o poniéndolos en líneas diferentes."
 
 msgid "Full Name"
@@ -165,8 +164,8 @@ msgid ""
 msgstr ""
 "Configure una cuenta SIP que usará para conectar con este servicio. Úsela "
 "tanpo en un adaptador de telefonía analógico (ATA) o en un programa SIP como "
-"CSipSimple, Linphone, o Sipdroid para smartphones, o Ekiga, Linphone, o "
-"X-Lite para ordenadores. Por defecto, todas las cuentas SIP sonarán a la vez "
+"CSipSimple, Linphone, o Sipdroid para smartphones, o Ekiga, Linphone, o X-"
+"Lite para ordenadores. Por defecto, todas las cuentas SIP sonarán a la vez "
 "si se hace una llamada desde una de las cuentas de su proveedor de VoIP o "
 "números GV."
 
@@ -221,15 +220,15 @@ msgid ""
 msgstr ""
 "Si tiene más de una cuenta para hacer llamadas salientes, debe introducir "
 "una lista de números de teléfono y/o prefijos para cada proveedor. Los "
-"prefijos no válidos se rechazarán sin aviso y solo son caracteres válidos "
-"0-9, X, Z, N, #, *, y +. La letra X equivale a 0-9, Z a 1-9 y N a 2-9. Por "
+"prefijos no válidos se rechazarán sin aviso y solo son caracteres válidos 0-"
+"9, X, Z, N, #, *, y +. La letra X equivale a 0-9, Z a 1-9 y N a 2-9. Por "
 "ejemplo para hacer llamadas a Alemania con su proveedor debe introducir 49. "
 "Para hacer llamadas a Estados Unidos 1NXXNXXXXXX. Si uno de sus proveedores "
 "puede hacer llamadas locales a un código de área como el 646 de Nueva York "
 "debe introducir 646NXXXXXX para ese proveedor. Debería dehar una cuenta con "
 "una lista vacía para que haga las llamadas por defecto en caso de que ningún "
-"prefijo encaje. El sistema reemplazará automáticamente la lista vacía con "
-"el mensaje de que el proveedor marca todos los números que no estén en los "
+"prefijo encaje. El sistema reemplazará automáticamente la lista vacía con el "
+"mensaje de que el proveedor marca todos los números que no estén en los "
 "prefijos de otros proveedores. Sea todo lo específico que pueda (ej. "
 "1NXXNXXXXXX es mejor que 1). Todos los códigos internaciones de marcado se "
 "descartan (ej. 00, 011, 010, 0011). Las entradas pueden ser una lista "
@@ -301,9 +300,9 @@ msgid ""
 msgstr ""
 "Puerto aleatorio entre 6500 y 9500 en el que escuche el servicio. No elija "
 "el estándar 5060 porque es susceptible de ataques por fuerza bruta. Cuando "
-"termine (1) pulsa \"Salvar y aplicar\" y (2) pulse \"Rearrancar servicio VoIP\". "
-"Finalmente (3) busque en la sección \"Dispositivo SIP/Cuentas softphone\" la "
-"configuración del puerto."
+"termine (1) pulsa \"Salvar y aplicar\" y (2) pulse \"Rearrancar servicio VoIP"
+"\". Finalmente (3) busque en la sección \"Dispositivo SIP/Cuentas softphone"
+"\" la configuración del puerto."
 
 msgid "Port Setting for SIP Devices"
 msgstr "Configuración de puerto para dispositivos SIP"
@@ -416,8 +415,8 @@ msgstr ""
 "permitirá hacer llamadas gratuitas entre los usuarios y compartir las "
 "cuentas Google/SIP configuradas. Si tiene más de una cuenta Google/SIP "
 "configurada tendrá que configurar cómo se enrutan en la página \"Enrutado de "
-"llamadas\". Si está interesado en usar su PBX desde cualquier sitio del mundo "
-"puede visitar la sección \"Uso remoto\" en la página \"Configuración "
+"llamadas\". Si está interesado en usar su PBX desde cualquier sitio del "
+"mundo puede visitar la sección \"Uso remoto\" en la página \"Configuración "
 "avanzada\"."
 
 msgid ""
@@ -435,10 +434,10 @@ msgid ""
 "incoming calls are routed, what numbers can get into this PBX with a "
 "password, and what numbers are blacklisted."
 msgstr ""
-"Indique las cuentas Google/SIP que usará para llamar a qué códigos de "
-"país/zona, qué usuarios pueden usuarios pueden usar qué cuentas SIP/Google y "
-"cómo se enrutan las llamadas entrantes, qué números pueden entrar en esta "
-"PBX con una contraseña y qué números están en lista negra."
+"Indique las cuentas Google/SIP que usará para llamar a qué códigos de país/"
+"zona, qué usuarios pueden usuarios pueden usar qué cuentas SIP/Google y cómo "
+"se enrutan las llamadas entrantes, qué números pueden entrar en esta PBX con "
+"una contraseña y qué números están en lista negra."
 
 msgid ""
 "This is where you set up your Google (Talk and Voice) Accounts, in order to "
@@ -467,8 +466,8 @@ msgid ""
 "number) associated with this SIP account or want to receive SIP uri calls "
 "through this provider."
 msgstr ""
-"Debería ser \"Sí\" si tiene un DID (teléfono real) asociado a esta cuenta SIP "
-"o quiere recibir llamads uri SIP de este proveedor."
+"Debería ser \"Sí\" si tiene un DID (teléfono real) asociado a esta cuenta "
+"SIP o quiere recibir llamads uri SIP de este proveedor."
 
 msgid ""
 "This section contains settings that do not need to be changed under normal "
@@ -527,10 +526,10 @@ msgstr ""
 "softphone) y se le permitirá recibir la llamada. Si tiene Google Voice debe "
 "ir a la configuración de GVoice y traspasar las llamadas a Google chat para "
 "recibir las hechas a si número de GVoice. Si tiene problemas recibiendo "
-"llamadas de GVoice pruebe con la opción \"Call Screening\" en la configuración "
-"de GVoice. Asegúrese de que ningún otro cliente esté conectado con esta "
-"cuenta (navegador en gmail, o una aplicación para móvil o escritorio) ya que "
-"podría interferir."
+"llamadas de GVoice pruebe con la opción \"Call Screening\" en la "
+"configuración de GVoice. Asegúrese de que ningún otro cliente esté conectado "
+"con esta cuenta (navegador en gmail, o una aplicación para móvil o "
+"escritorio) ya que podría interferir."
 
 msgid ""
 "When your password is saved, it disappears from this field and is not "
@@ -578,8 +577,7 @@ msgstr ""
 "debe configurar en sus dispositivos SIP remotos. Tenga en cuenta que si este "
 "PBX no funciona en su router/pasarela, tendrá que configurar el traspaso de "
 "puertos (NAT) en su router/pasarela. Traspase los puertos indicados (Puerto "
-"SIP y rango RTP) hacia la dirección IP del dispositivo en que corre esta "
-"PBX."
+"SIP y rango RTP) hacia la dirección IP del dispositivo en que corre esta PBX."
 
 msgid ""
 "Your PIN disappears when saved for your protection. It will be changed only "
index bee9923..84ba24e 100644 (file)
@@ -75,8 +75,7 @@ msgid ""
 msgstr ""
 "Ubicación en la que Polipo creará archivos permanentemente. Se recomienda el "
 "uso de dispositivos de almacenamiento externo, ya que la caché puede "
-"aumentar considerablemente. Deje en blanco para desactivar la caché en "
-"disco."
+"aumentar considerablemente. Deje en blanco para desactivar la caché en disco."
 
 msgid "Log file location"
 msgstr "Ubicación del archivo de registro"
index 85152e0..8656192 100644 (file)
@@ -80,8 +80,7 @@ msgid ""
 "prefix via stateless address autoconfiguration remain preferred."
 msgstr ""
 "Publica el tiempo de vida en segundos que se prefieren las direcciones "
-"generadas desde el prefijo vía una dirección de autoconfiguración sin "
-"estado."
+"generadas desde el prefijo vía una dirección de autoconfiguración sin estado."
 
 msgid ""
 "Advertises the length of time in seconds that the prefix is valid for the "
index a77a4fa..3571a53 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2012-09-15 21:44+0200\n"
+"PO-Revision-Date: 2012-12-12 20:19+0200\n"
 "Last-Translator: José Vicente <josevteg@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: es\n"
@@ -68,7 +68,7 @@ msgid "Collectd Settings"
 msgstr "Configuración de Collectd"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -115,6 +115,9 @@ msgstr "Espacio en disco ocupado"
 msgid "Disk Usage"
 msgstr "Disco ocupado"
 
+msgid "Display Host »"
+msgstr "Mostrar máquina »"
+
 msgid "Display timespan »"
 msgstr "Mostrar lapso de tiempo »"
 
@@ -137,7 +140,7 @@ msgid "Filter class monitoring"
 msgstr "Monitorización del filtro de clases"
 
 msgid "Firewall"
-msgstr "Cortafuego"
+msgstr "Cortafuegos"
 
 msgid "Flush cache after"
 msgstr "Vaciar caché tras"
@@ -191,12 +194,6 @@ msgstr "Ignorar direcciones de origen"
 msgid "Incoming interface"
 msgstr "Interfaz de entrada"
 
-msgid "Installed network plugins:"
-msgstr "Plugins de red instalados:"
-
-msgid "Installed output plugins:"
-msgstr "Plugins de salida instalados:"
-
 msgid "Interface Plugin Configuration"
 msgstr "Configuración del interfaz de plugins"
 
@@ -290,13 +287,6 @@ msgstr "Configuración del plugin \"Red\""
 msgid "Network plugins"
 msgstr "Plugins de red"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-"Los plugins de red se usan para recolectar información sobre conexiones TCP, "
-"tráfico en los interfaces, reglas de iptables, etc."
-
 msgid "Network protocol"
 msgstr "Protocolo de red"
 
@@ -321,17 +311,6 @@ msgstr "Interfaz de salida"
 msgid "Output plugins"
 msgstr "Plugins de salida"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-"Los plugins de salida ofrecen varias posibilidades para almacenar los datos. "
-"Es posible activar varios plugins a la vez, por ejemplo para almacenar datos "
-"recolectados en bases de datos RRD y para transmitir los datos sobre la red "
-"a otras instancias de collectd."
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -431,13 +410,6 @@ msgstr "Carga del sistema"
 msgid "System plugins"
 msgstr "Plugins del sistema"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-"Los plugins del sistema recolectan valores sobre el estado y el uso de "
-"recursos del dispositivo.:"
-
 msgid "TCP Connections"
 msgstr "Conexiones TCP"
 
@@ -453,6 +425,11 @@ msgstr "TTL para paquetes de ping"
 msgid "Table"
 msgstr "Tabla"
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+"El plugin NUT obtiene información sobre Sistemas de Alimentación "
+"Ininterrumpida."
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -583,8 +560,8 @@ msgid ""
 "The processes plugin collects informations like cpu time, page faults and "
 "memory usage of selected processes."
 msgstr ""
-"El plugin \"procesos\" recoge información como tiempo de CPU, fallos de página "
-"y uso de memoria de los procesos elegidos."
+"El plugin \"procesos\" recoge información como tiempo de CPU, fallos de "
+"página y uso de memoria de los procesos elegidos."
 
 msgid ""
 "The rrdtool plugin stores the collected data in rrd database files, the "
@@ -592,20 +569,19 @@ msgid ""
 "values will result in a very high memory consumption in the temporary "
 "directory. This can render the device unusable!</strong>"
 msgstr ""
-"El plugin \"rrdtool\" almacena datos en ficheros de bb.dd. RRD que son la base "
-"para los diagramas.<br /><br /><strong>¡Ojo: Configurar valores incorrectos "
-"puede hacer que se use mucho espacio en el directorio temporal y puede "
-"hacer que el dispositivo funcione mal!</strong>"
+"El plugin \"rrdtool\" almacena datos en ficheros de bb.dd. RRD que son la "
+"base para los diagramas.<br /><br /><strong>¡Ojo: Configurar valores "
+"incorrectos puede hacer que se use mucho espacio en el directorio temporal y "
+"puede hacer que el dispositivo funcione mal!</strong>"
 
 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 ""
-"El paquete \"estadísticas\" está basado en <a "
-"href=\"http://collectd.org/index.shtml\">Collectd</a> y utiliza <a "
-"href=\"http://oss.oetiker.ch/rrdtool/\">RRD Tool</a> para dibujar gráficos con "
-"los datos recogidos."
+"El paquete \"estadísticas\" está basado en <a href=\"http://collectd.org/"
+"index.shtml\">Collectd</a> y utiliza <a href=\"http://oss.oetiker.ch/rrdtool/"
+"\">RRD Tool</a> para dibujar gráficos con los datos recogidos."
 
 msgid ""
 "The tcpconns plugin collects informations about open tcp connections on "
@@ -622,13 +598,6 @@ msgstr ""
 "datos recogidos por una instancia collectd."
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-"El plugin \"inalámbrico\" recoge estadísticas sobre fuerza de la señal, ruido "
-"y calidad."
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -644,6 +613,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr "Intenta resolver el nombre de máquina cualificado"
 
+msgid "UPS"
+msgstr "SAI"
+
+msgid "UPS Plugin Configuration"
+msgstr "Configuración del plugin SAI"
+
+msgid "UPS name in NUT ups@host format"
+msgstr "Nombre del SAI en el formato de NUT sai@máquina"
+
 msgid "UnixSock"
 msgstr "Socket UNIX"
 
@@ -662,9 +640,6 @@ msgstr "Monitorización detallada"
 msgid "Wireless"
 msgstr "Red inalámbrica"
 
-msgid "Wireless Plugin Configuration"
-msgstr "Configuración del plugin \"Wireless\""
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr "Configuración plugin \"Wireless iwinfo\""
 
@@ -689,6 +664,47 @@ msgstr "segundos (varios separados por espacio)"
 msgid "server interfaces"
 msgstr "interfaces servidores"
 
+#~ msgid "Installed network plugins:"
+#~ msgstr "Plugins de red instalados:"
+
+#~ msgid "Installed output plugins:"
+#~ msgstr "Plugins de salida instalados:"
+
+#~ msgid ""
+#~ "Network plugins are used to collect information about open tcp "
+#~ "connections, interface traffic, iptables rules etc."
+#~ msgstr ""
+#~ "Los plugins de red se usan para recolectar información sobre conexiones TCP, "
+#~ "tráfico en los interfaces, reglas de iptables, etc."
+
+#~ msgid ""
+#~ "Output plugins provide different possibilities to store collected data. "
+#~ "It is possible to enable multiple plugin at one, for example to store "
+#~ "collected data in rrd databases and to transmit the data over the network "
+#~ "to other collectd instances."
+#~ msgstr ""
+#~ "Los plugins de salida ofrecen varias posibilidades para almacenar los datos. "
+#~ "Es posible activar varios plugins a la vez, por ejemplo para almacenar "
+#~ "datos recolectados en bases de datos RRD y para transmitir los datos sobre "
+#~ "la red a otras instancias de collectd."
+
+#~ msgid ""
+#~ "System plugins collecting values about system state and ressource usage "
+#~ "on the device.:"
+#~ msgstr ""
+#~ "Los plugins del sistema recolectan valores sobre el estado y el uso de "
+#~ "recursos del dispositivo.:"
+
+#~ msgid ""
+#~ "The wireless plugin collects statistics about wireless signal strength, "
+#~ "noise and quality."
+#~ msgstr ""
+#~ "El plugin \"inalámbrico\" recoge estadísticas sobre fuerza de la señal, ruido "
+#~ "y calidad."
+
+#~ msgid "Wireless Plugin Configuration"
+#~ msgstr "Configuración del plugin \"Wireless\""
+
 #~ msgid "Filepath of the unix socket"
 #~ msgstr "Ruta de archivo para el socket de unix"
 
index b0a47a0..c9faff1 100644 (file)
@@ -26,8 +26,8 @@ msgid ""
 "Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded "
 "requests"
 msgstr ""
-"Añade una cabecera HTTP con \"X-Tinyproxy\" con la dirección IP del cliente "
-"las peticiones retransmitidas"
+"Añade una cabecera HTTP con \"X-Tinyproxy\" con la dirección IP del cliente "
+"las peticiones retransmitidas"
 
 msgid "Allowed clients"
 msgstr "Clientes permitidos"
@@ -66,8 +66,8 @@ msgid ""
 "Can be either an IP address or range, a domain name or \".\" for any host "
 "without domain"
 msgstr ""
-"Puede ser un rango de IPs, un nombre de dominio o \".\" para cualquier máquina "
-"sin dominio"
+"Puede ser un rango de IPs, un nombre de dominio o \".\" para cualquier "
+"máquina sin dominio"
 
 msgid "Configuration"
 msgstr "Configuración"
index 2df2815..6e3b281 100644 (file)
@@ -1,15 +1,15 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-01-15 05:32+0200\n"
-"Last-Translator: desillu <ledesillusionniste@hotmail.com>\n"
+"PO-Revision-Date: 2012-11-06 13:06+0200\n"
+"Last-Translator: hogsim <hogsim@gmail.com>\n"
 "Language-Team: none\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "AHCP Server"
 msgstr "Serveur AHCP"
@@ -102,10 +102,10 @@ msgid "Specifies the announced IPv4 and IPv6 network prefixes in CIDR notation"
 msgstr "Décrit les préfixes réseaux IPv4 et IPv6 publiés en notation CIDR"
 
 msgid "The AHCP Service is not running."
-msgstr ""
+msgstr "Le service AHCP n'est pas en fonctionnement."
 
 msgid "The AHCP Service is running with ID %s."
-msgstr ""
+msgstr "Le service AHCP est en fonctionnement avec l'ID s."
 
 msgid "There are no active leases."
 msgstr "Il n'y a aucun bail actif."
index 5b99fb8..fcdc313 100644 (file)
@@ -3,8 +3,8 @@ 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-07-02 08:42+0200\n"
-"Last-Translator: dgolle <dgolle@allnet.de>\n"
+"PO-Revision-Date: 2012-11-06 16:16+0200\n"
+"Last-Translator: hogsim <hogsim@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
@@ -115,7 +115,7 @@ msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
 msgstr "Maximum de requêtes concurrentes"
 
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr ""
+msgstr "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
 
 msgid "APN"
 msgstr "APN"
@@ -179,10 +179,10 @@ msgid "Active Connections"
 msgstr "Connexions actives"
 
 msgid "Active DHCP Leases"
-msgstr ""
+msgstr "Bails DHCP actifs"
 
 msgid "Active DHCPv6 Leases"
-msgstr ""
+msgstr "Bails DHCPv6 actifs"
 
 msgid "Ad-Hoc"
 msgstr "Ad-hoc"
@@ -256,6 +256,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr "La gamme autorisée va de 1 à 65535"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "Un réseau supplémentaire sera créé si vous laissé ceci décoché."
 
@@ -266,7 +271,7 @@ msgid "Antenna 2"
 msgstr "Antenne 2"
 
 msgid "Antenna Configuration"
-msgstr ""
+msgstr "Configuration de l'antenne"
 
 msgid "Any zone"
 msgstr "N'importe quelle zone"
@@ -284,7 +289,7 @@ msgid "Associated Stations"
 msgstr "Équipements associés"
 
 msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
+msgstr "Contrôleur sans fil Atheros 802.11%s "
 
 msgid "Authentication"
 msgstr "Authentification"
@@ -368,10 +373,10 @@ msgid "Bring up on boot"
 msgstr "L'activer au démarrage"
 
 msgid "Broadcom 802.11%s Wireless Controller"
-msgstr ""
+msgstr "Contrôleur sans fil Broadcom 802.11%s"
 
 msgid "Broadcom BCM%04x 802.11 Wireless Controller"
-msgstr ""
+msgstr "Contrôleur sans fil Broadcom BCM%04x 802.11"
 
 msgid "Buffered"
 msgstr "Temporisé"
@@ -427,6 +432,9 @@ msgid ""
 "Choose the network(s) you want to attach to this wireless interface or fill "
 "out the <em>create</em> field to define a new network."
 msgstr ""
+"Choisissez le(s) réseau(x)  que vous souhaitez attachez a cette interface "
+"sans-fil ou remplissez le <em>créer</em>  champ pour définir un nouveau "
+"réseau. "
 
 msgid "Cipher"
 msgstr "Code de chiffrement"
@@ -551,7 +559,7 @@ msgid "DHCP-Options"
 msgstr "Options DHCP"
 
 msgid "DHCPv6 Leases"
-msgstr ""
+msgstr "Bails DHCPv6"
 
 msgid "DNS"
 msgstr "DNS"
@@ -560,7 +568,7 @@ msgid "DNS forwardings"
 msgstr "transmissions DNS"
 
 msgid "DUID"
-msgstr ""
+msgstr "DUID"
 
 msgid "Debug"
 msgstr "Deboguage"
@@ -752,7 +760,7 @@ msgid "Enable Jumbo Frame passthrough"
 msgstr "Activer la circulation de très grandes trames (Jumbo)"
 
 msgid "Enable NTP client"
-msgstr ""
+msgstr "Activer client NTP"
 
 msgid "Enable TFTP server"
 msgstr "Activer le serveur TFTP"
@@ -882,6 +890,9 @@ msgstr "Écriture…"
 msgid "Force"
 msgstr "Forcer"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr "Forcer CCMP (AES)"
 
@@ -919,10 +930,10 @@ msgid "Frequency Hopping"
 msgstr "Sauts en fréquence"
 
 msgid "GHz"
-msgstr ""
+msgstr "Ghz"
 
 msgid "GPRS only"
-msgstr ""
+msgstr "seulement GPRS"
 
 msgid "Gateway"
 msgstr "Passerelle"
@@ -940,7 +951,7 @@ msgid "Generate archive"
 msgstr "Construire l'archive"
 
 msgid "Generic 802.11%s Wireless Controller"
-msgstr ""
+msgstr "Contrôleur sans fil générique 802.11%s"
 
 msgid "Given password confirmation did not match, password not changed!"
 msgstr ""
@@ -986,7 +997,7 @@ msgstr ""
 "authentification SSH sur clés publiques."
 
 msgid "Hermes 802.11b Wireless Controller"
-msgstr ""
+msgstr "Contrôleur sans fil Hermes 802.11b"
 
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "Cacher le ESSID"
@@ -1040,7 +1051,7 @@ msgid "IPv4 only"
 msgstr "IPv4 seulement"
 
 msgid "IPv4 prefix length"
-msgstr ""
+msgstr "longueur du préfixe IPv4"
 
 msgid "IPv4-Address"
 msgstr "Adresse IPv4"
@@ -1064,22 +1075,22 @@ msgid "IPv6 only"
 msgstr "IPv6 seulement"
 
 msgid "IPv6 prefix"
-msgstr ""
+msgstr "Préfixe IPv6"
 
 msgid "IPv6 prefix length"
-msgstr ""
+msgstr "longueur du préfixe IPv6"
 
 msgid "IPv6-Address"
-msgstr ""
+msgstr "Adresse IPv6"
 
 msgid "IPv6-in-IPv4 (RFC4213)"
 msgstr "IPv6 dans IPv4 (RFC 4213)"
 
 msgid "IPv6-over-IPv4 (6rd)"
-msgstr ""
+msgstr "IPv6 sur IPv4 (6ème)"
 
 msgid "IPv6-over-IPv4 (6to4)"
-msgstr ""
+msgstr "IPv6 sur IPv4 (6 vers 4)"
 
 msgid "Identity"
 msgstr "Identité"
@@ -1185,7 +1196,7 @@ msgid "Interfaces"
 msgstr "Interfaces"
 
 msgid "Internal Server Error"
-msgstr ""
+msgstr "Erreur Serveur Interne"
 
 msgid "Invalid"
 msgstr "Erreur : donnée entrée invalide"
@@ -1241,10 +1252,10 @@ msgid "Kill"
 msgstr "Tuer"
 
 msgid "L2TP"
-msgstr ""
+msgstr "L2TP"
 
 msgid "L2TP Server"
-msgstr ""
+msgstr "Serveur L2TP"
 
 msgid "LCP echo failure threshold"
 msgstr "Seuil d'erreur des échos LCP"
@@ -1396,10 +1407,10 @@ msgid "MAC-List"
 msgstr "Liste des adresses MAC"
 
 msgid "MB/s"
-msgstr ""
+msgstr "MB/s"
 
 msgid "MHz"
-msgstr ""
+msgstr "MHz"
 
 msgid "MTU"
 msgstr "MTU"
@@ -1426,7 +1437,7 @@ msgid "Maximum number of leased addresses."
 msgstr "Nombre maximum d'adresses allouées."
 
 msgid "Mbit/s"
-msgstr ""
+msgstr "Mbit/s"
 
 msgid "Memory"
 msgstr "Mémoire"
@@ -1583,7 +1594,7 @@ msgid "Normal"
 msgstr "Normal"
 
 msgid "Not Found"
-msgstr ""
+msgstr "Pas trouvé"
 
 msgid "Not associated"
 msgstr "Pas associé"
@@ -1598,7 +1609,7 @@ msgid "Notice"
 msgstr "Note"
 
 msgid "Nslookup"
-msgstr ""
+msgstr "Nslookup"
 
 msgid "OK"
 msgstr "OK"
@@ -1762,7 +1773,7 @@ msgid "Physical Settings"
 msgstr "Paramètres physiques"
 
 msgid "Ping"
-msgstr ""
+msgstr "Ping"
 
 msgid "Pkts."
 msgstr "Pqts."
@@ -1786,7 +1797,7 @@ msgid "Port %d is untagged in multiple VLANs!"
 msgstr "Le port %d n'est pas marqué dans plusieurs VLANs !"
 
 msgid "Port status:"
-msgstr ""
+msgstr "Statut du port :"
 
 msgid ""
 "Presume peer to be dead after given amount of LCP echo failures, use 0 to "
@@ -1799,7 +1810,7 @@ msgid "Prevents client-to-client communication"
 msgstr "Empêche la communication directe entre clients"
 
 msgid "Prism2/2.5/3 802.11b Wireless Controller"
-msgstr ""
+msgstr "Contrôleur sans fil Prism2/2.5/3 802.11b"
 
 msgid "Proceed"
 msgstr "Continuer"
@@ -1823,7 +1834,7 @@ msgid "Protocol support is not installed"
 msgstr "La gestion du protocole n'est pas installée"
 
 msgid "Provide NTP server"
-msgstr ""
+msgstr "Fournir serveur NTP"
 
 msgid "Provide new network"
 msgstr "Donner un nouveau réseau"
@@ -1832,7 +1843,7 @@ msgid "Pseudo Ad-Hoc (ahdemo)"
 msgstr "Pseudo Ad-Hoc (ahdemo)"
 
 msgid "Quality"
-msgstr ""
+msgstr "Qualitée"
 
 msgid "RTS/CTS Threshold"
 msgstr "Seuil RTS/CTS"
@@ -1844,7 +1855,7 @@ msgid "RX Rate"
 msgstr "Débit en réception"
 
 msgid "RaLink 802.11%s Wireless Controller"
-msgstr ""
+msgstr "Contrôleur sans fil RaLink 802.11%s"
 
 msgid "Radius-Accounting-Port"
 msgstr "Port de la comptabilisation Radius"
@@ -2151,10 +2162,10 @@ msgid "Some fields are invalid, cannot save values!"
 msgstr "Certains champs sont invalides, ne peut sauvegarder les valeurs !"
 
 msgid "Sorry, the object you requested was not found."
-msgstr ""
+msgstr "Désolé, l'objet que vous avez demandé n'as pas été trouvé."
 
 msgid "Sorry, the server encountered an unexpected error."
-msgstr ""
+msgstr "Désolé, le serveur à rencontré une erreur inattendue."
 
 msgid ""
 "Sorry, there is no sysupgrade support present, a new firmware image must be "
@@ -2332,13 +2343,15 @@ msgstr ""
 msgid ""
 "The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
 msgstr ""
+"Le préfixe IPv6 attribué par le fournisseur, se termine généralement par "
+"<code>::</code>"
 
 msgid ""
 "The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
 "code> and <code>_</code>"
 msgstr ""
-"Les caractères autorisés sont : <code>A-Z</code>, <code>a-z</code>, <code>0-"
-"9</code> et <code>_</code>"
+"Les caractères autorisés sont : <code>A-Z</code>, <code>a-z</code>, "
+"<code>0-9</code> et <code>_</code>"
 
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
@@ -2386,9 +2399,11 @@ msgid ""
 "The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
 "addresses."
 msgstr ""
+"La longueur du préfixe IPv4 en bits, le reste est utilisé dans les adresses "
+"IPv6"
 
 msgid "The length of the IPv6 prefix in bits"
-msgstr ""
+msgstr "La longueur du préfixe IPv6 en bits"
 
 msgid ""
 "The network ports on this device can be combined to several <abbr title="
@@ -2462,7 +2477,7 @@ msgstr ""
 "et activer l'accès par SSH."
 
 msgid "This IPv4 address of the relay"
-msgstr ""
+msgstr "L'adresse IPv4 du relais"
 
 msgid ""
 "This is a list of shell glob patterns for matching files and directories to "
@@ -2546,7 +2561,7 @@ msgid "Total Available"
 msgstr "Total disponible"
 
 msgid "Traceroute"
-msgstr ""
+msgstr "Traceroute"
 
 msgid "Traffic"
 msgstr "Trafic"
@@ -2591,7 +2606,7 @@ msgid "UDP:"
 msgstr "UDP :"
 
 msgid "UMTS only"
-msgstr ""
+msgstr "seulement UMTS"
 
 msgid "UMTS/GPRS/EV-DO"
 msgstr "UMTS/GPRS/EV-DO"
@@ -2603,7 +2618,7 @@ msgid "UUID"
 msgstr "UUID"
 
 msgid "Unable to dispatch"
-msgstr ""
+msgstr "Impossible d'envoyer"
 
 msgid "Unknown"
 msgstr "Inconnu"
@@ -2754,13 +2769,10 @@ msgstr ""
 "client) ou hostapd (en mode Point d'accès ou Ad-hoc)."
 
 msgid "Waiting for changes to be applied..."
-msgstr ""
+msgstr "En attente de l'application des changements..."
 
 msgid "Waiting for command to complete..."
-msgstr ""
-
-msgid "Waiting for router..."
-msgstr "Attente du routeur…"
+msgstr "En attente de la fin de la commande..."
 
 msgid "Warning"
 msgstr "Attention"
@@ -2835,22 +2847,22 @@ msgid "auto"
 msgstr "auto"
 
 msgid "baseT"
-msgstr ""
+msgstr "baseT"
 
 msgid "bridged"
 msgstr "ponté"
 
 msgid "create:"
-msgstr ""
+msgstr "créer:"
 
 msgid "creates a bridge over specified interface(s)"
 msgstr "créer un bridge entre plusieurs interfaces"
 
 msgid "dB"
-msgstr ""
+msgstr "dB"
 
 msgid "dBm"
-msgstr ""
+msgstr "dBm"
 
 msgid "disable"
 msgstr "désactiver"
@@ -2867,16 +2879,16 @@ msgid "forward"
 msgstr "transfert"
 
 msgid "full-duplex"
-msgstr ""
+msgstr "full-duplex"
 
 msgid "half-duplex"
-msgstr ""
+msgstr "half-duplex"
 
 msgid "help"
 msgstr "aide"
 
 msgid "hidden"
-msgstr ""
+msgstr "cacher"
 
 msgid "if target is a network"
 msgstr "si la destination est un réseau"
@@ -2885,13 +2897,13 @@ msgid "input"
 msgstr "entrée"
 
 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 "fichier de résolution local"
@@ -2900,7 +2912,7 @@ msgid "no"
 msgstr "non"
 
 msgid "no link"
-msgstr ""
+msgstr "pas de lien"
 
 msgid "none"
 msgstr "aucun"
@@ -2912,7 +2924,7 @@ msgid "on"
 msgstr "Actif"
 
 msgid "open"
-msgstr ""
+msgstr "ouvrir"
 
 msgid "routed"
 msgstr "routé"
@@ -2921,7 +2933,7 @@ msgid "tagged"
 msgstr "marqué"
 
 msgid "unknown"
-msgstr ""
+msgstr "inconnu"
 
 msgid "unlimited"
 msgstr "non limité"
@@ -2941,6 +2953,9 @@ msgstr "oui"
 msgid "« Back"
 msgstr "« Retour"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "Attente du routeur…"
+
 #~ msgid "Enable builtin NTP server"
 #~ msgstr "Activer le serveur NTP intégré"
 
diff --git a/po/fr/commands.po b/po/fr/commands.po
new file mode 100644 (file)
index 0000000..08b3d37
--- /dev/null
@@ -0,0 +1,91 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index 9415712..b95bb44 100644 (file)
@@ -1,25 +1,26 @@
-#, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2012-11-06 13:16+0200\n"
+"Last-Translator: hogsim <hogsim@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Translate Toolkit 1.1.1\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "CoovaChilli"
-msgstr ""
+msgstr "CoovaChilli"
 
 msgid "Network Configuration"
-msgstr ""
+msgstr "Configuration Réseau"
 
 msgid "RADIUS configuration"
-msgstr ""
+msgstr "Configuration RADIUS"
 
 msgid "UAM and MAC Authentication"
-msgstr ""
+msgstr "Authentification UAM et MAC"
index f7db18f..189e8fa 100644 (file)
@@ -1,17 +1,17 @@
-#, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-02 13:44+0100\n"
-"PO-Revision-Date: 2010-04-02 17:15+0100\n"
-"Last-Translator: Benoît Knecht <benoit.knecht@gmail.com>\n"
+"PO-Revision-Date: 2012-11-06 13:19+0200\n"
+"Last-Translator: hogsim <hogsim@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
+"Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Translate Toolkit 1.1.1\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Check for changed IP every"
 msgstr "Vérifier si l'adresse IP a changé toutes les"
@@ -35,6 +35,9 @@ msgstr ""
 msgid "Enable"
 msgstr "Activer"
 
+msgid "Event interface"
+msgstr "Événement sur l'interface"
+
 msgid "Force update every"
 msgstr "Vérification forcée toutes les"
 
@@ -50,6 +53,9 @@ msgstr "Interface"
 msgid "Network"
 msgstr "Réseau"
 
+msgid "On which interface up should start the ddns script process."
+msgstr "Sur quelle interface devrait démarrer le processus du script ddns."
+
 msgid "Password"
 msgstr "Mot de passe"
 
@@ -81,9 +87,3 @@ msgstr "min"
 
 msgid "network"
 msgstr "réseau"
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index 51a320d..a5b4e6a 100644 (file)
@@ -1,26 +1,28 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-11-23 22:32+0200\n"
-"Last-Translator: fredb <fblistes+luci@free.fr>\n"
+"PO-Revision-Date: 2012-11-06 13:21+0200\n"
+"Last-Translator: hogsim <hogsim@gmail.com>\n"
 "Language-Team: none\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Configure Diagnostics"
 msgstr "Configuration des diagnostics"
 
 msgid "Diagnostics"
-msgstr ""
+msgstr "Diagnostiques"
 
 msgid ""
 "The diagnostics available under this menu depend on what modules you have "
 "installed on your device."
 msgstr ""
+"Les diagnostics disponible ci-dessous dépendent des modules que vous avez "
+"installé sur votre appareil. "
 
 msgid ""
 "The entries in the menu allow you to perform diagnostic tests on your system "
index b86052d..3c359e6 100644 (file)
@@ -1,18 +1,18 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-01-15 07:15+0200\n"
-"Last-Translator: desillu <ledesillusionniste@hotmail.com>\n"
+"PO-Revision-Date: 2012-11-06 16:25+0200\n"
+"Last-Translator: hogsim <hogsim@gmail.com>\n"
 "Language-Team: none\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Actions"
-msgstr ""
+msgstr "Actions"
 
 msgid "Add"
 msgstr "Ajouter"
@@ -27,19 +27,26 @@ msgid "Configure"
 msgstr "Configurer"
 
 msgid "Configure Scans"
-msgstr ""
+msgstr "Configurer la recherche"
 
 msgid ""
 "Configure scanning for devices on specified networks. Decreasing 'Timeout', "
 "'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
 "may fail to find some devices."
 msgstr ""
+"Configurer la recherche d'appareils sur un réseau spécifié. Réduire le "
+"'Timeout', 'Repeat Count', et/ou  'Sleep Between Requests' peut augmenter la "
+"vitesse des scans, mais peut aussi ne pas trouver certains appareils."
 
 msgid ""
 "Configure scanning for supported SIP devices on specified networks. "
 "Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
 "speed up scans, but also may fail to find some devices."
 msgstr ""
+"Configurer la recherche d'appareils SIP supporté sur un réseau spécifié. "
+"Réduire le 'Timeout', 'Repeat Count', et/ou 'Sleep Between Requests' peut "
+"augmenter la vitesse des scans, mais peut aussi ne pas trouver certains "
+"appareils."
 
 msgid "Delete"
 msgstr "Supprimer"
@@ -48,7 +55,7 @@ msgid "Device Scan Config"
 msgstr "Configuration de la recherche de périphériques"
 
 msgid "Device Type"
-msgstr ""
+msgstr "Type d'appareil"
 
 msgid "Devices discovered for"
 msgstr "Devices discovered for"
@@ -98,22 +105,22 @@ msgid "Milliseconds to sleep between requests (default 100)"
 msgstr "Durée d'attente en millisecondes entre les requêtes (par défaut 100)"
 
 msgid "Model"
-msgstr ""
+msgstr "Modèle"
 
 msgid "Name"
 msgstr "Nom"
 
 msgid "Network Device Scan"
-msgstr ""
+msgstr "Analyse des périphériques réseau"
 
 msgid "Network Device Scanning Configuration"
-msgstr ""
+msgstr "Configuration de l'analyse des périphériques réseau"
 
 msgid "Networks to scan for devices"
-msgstr ""
+msgstr "Réseaux à scanner pour les périphériques "
 
 msgid "Networks to scan for supported devices"
-msgstr ""
+msgstr "Réseaux à scanner pour les périphériques supporté"
 
 msgid "No SIP devices"
 msgstr "Pas de périphérique SIP"
@@ -135,7 +142,7 @@ msgstr ""
 "Périphérique » (mac-to-devinfo) pour une gamme donnée d'adresses MAC"
 
 msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
+msgstr "Faire un scan ( Cela peut prendre quelques minutes)"
 
 msgid "Phone Information"
 msgstr "Informations concernant le téléphone"
@@ -150,7 +157,7 @@ msgid "Phones"
 msgstr "Téléphones"
 
 msgid "Ports"
-msgstr ""
+msgstr "Ports"
 
 msgid "Raw"
 msgstr "Brut"
@@ -159,7 +166,7 @@ msgid "Repeat Count"
 msgstr "Nombre de tentatives"
 
 msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
+msgstr "Refaire scans (cela peut prendre quelques minutes )"
 
 msgid "SIP Device Information"
 msgstr "Informations concernant le périphérique SIP"
@@ -174,7 +181,7 @@ msgid "SIP Devices on Network"
 msgstr "Périphériques SIP sur le réseau"
 
 msgid "SIP devices discovered for"
-msgstr ""
+msgstr "Périphériques SIP  découvert pour"
 
 msgid "Scan for devices on specified networks."
 msgstr "Rechercher des périphériques sur les réseaux spécifiés."
@@ -185,6 +192,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr "Scans for devices on specified networks."
+
 msgid "Sleep Between Requests"
 msgstr "Attente entre les requêtes"
 
@@ -208,6 +218,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr "Explorer d'autres réseaux"
-
-msgid "Scans for devices on specified networks."
-msgstr "Scans for devices on specified networks."
index 785d861..d69b1f1 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 msgid "BSSID"
 msgstr ""
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr ""
 
@@ -81,6 +84,9 @@ msgstr ""
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr ""
 
@@ -102,6 +108,12 @@ msgstr ""
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr ""
 
@@ -114,6 +126,15 @@ msgstr ""
 msgid "Hostname"
 msgstr ""
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -140,6 +161,9 @@ msgstr ""
 msgid "Latitude"
 msgstr ""
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -191,6 +215,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -221,6 +248,9 @@ msgstr ""
 msgid "Realname"
 msgstr ""
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -250,6 +280,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -299,6 +332,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -307,6 +343,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index 827ccd6..4b54e27 100644 (file)
@@ -3,15 +3,15 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-14 10:33+0200\n"
-"PO-Revision-Date: 2011-06-22 21:31+0200\n"
-"Last-Translator: fredb <fblistes+luci@free.fr>\n"
+"PO-Revision-Date: 2012-11-06 15:20+0200\n"
+"Last-Translator: hogsim <hogsim@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Disk"
 msgstr "Disque"
@@ -36,7 +36,7 @@ msgid "h"
 msgstr "h"
 
 msgid "hd-idle"
-msgstr ""
+msgstr "hd-idle"
 
 msgid ""
 "hd-idle is a utility program for spinning-down external disks after a period "
index b4d177c..2c2f312 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 "X-Generator: Pootle 2.0.4\n"
 
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr "Canal"
 
@@ -34,9 +37,18 @@ msgstr "Le serveur DHCP donnera automatiquement des adresses IP aux clients"
 msgid "Enable DHCP"
 msgstr "Activer le serveur DHCP"
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr "Paramètres généraux"
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -49,9 +61,17 @@ msgstr "Interfaces"
 msgid "Mesh IP address"
 msgstr "Adresse IP maillée"
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr "Assistant de Maillage"
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr "Protéger le LAN"
 
@@ -61,6 +81,9 @@ msgstr ""
 "Sélectionnez ceci pour permettre aux autres d'utiliser votre connexion pour "
 "accéder à Internet."
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr "Partager votre connexion Internet"
 
@@ -80,6 +103,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr "L'adresse IP donnée n'est pas dans le réseau maillé"
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index b6f02d2..64dc899 100644 (file)
@@ -3,39 +3,39 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2011-06-22 21:31+0200\n"
-"Last-Translator: fredb <fblistes+luci@free.fr>\n"
+"PO-Revision-Date: 2012-11-06 16:06+0200\n"
+"Last-Translator: hogsim <hogsim@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "CLK_pin"
-msgstr ""
+msgstr "CLK_pin"
 
 msgid "CS_pin"
-msgstr ""
+msgstr "CS_pin"
 
 msgid "DI_pin"
-msgstr ""
+msgstr "DI_pin"
 
 msgid "DO_pin"
-msgstr ""
+msgstr "DO_pin"
 
 msgid "Enable"
-msgstr ""
+msgstr "Activer"
 
 msgid "MMC/SD driver configuration"
-msgstr ""
+msgstr "Configuration driver MMC/SD"
 
 msgid "Mode"
-msgstr ""
+msgstr "Mode"
 
 msgid "Name"
-msgstr ""
+msgstr "Nom"
 
 msgid "Settings"
 msgstr "Configuration"
index ac0b9e3..39b1421 100644 (file)
@@ -1,15 +1,15 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-11-23 22:26+0200\n"
-"Last-Translator: fredb <fblistes+luci@free.fr>\n"
+"PO-Revision-Date: 2012-11-06 16:07+0200\n"
+"Last-Translator: hogsim <hogsim@gmail.com>\n"
 "Language-Team: none\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Attempts Before WAN Failover"
 msgstr "Essais avant de déclarer un WAN défaillant"
@@ -21,7 +21,7 @@ msgid "Auto"
 msgstr "Auto"
 
 msgid "Collecting data..."
-msgstr ""
+msgstr "Collection de données..."
 
 msgid ""
 "Configure rules for directing outbound traffic through specified WAN Uplinks."
@@ -45,7 +45,7 @@ msgid "Enable"
 msgstr "Activer"
 
 msgid "Failing"
-msgstr ""
+msgstr "Défaillance"
 
 msgid "Failover Traffic Destination"
 msgstr "Destination du trafic en cas de défaillance"
@@ -66,7 +66,7 @@ msgstr ""
 "connexions défaillantes."
 
 msgid "KO"
-msgstr ""
+msgstr "KO"
 
 msgid "Load Balancer Distribution"
 msgstr "Distribution d'équilibrage de charge"
@@ -81,7 +81,7 @@ msgid "Multi-WAN"
 msgstr "Multi-WAN"
 
 msgid "Multi-WAN Status"
-msgstr ""
+msgstr "Statut Multi-WAN"
 
 msgid "Multi-WAN Traffic Rules"
 msgstr "Règles de trafic avec des liens sortants multiples"
@@ -98,7 +98,7 @@ msgid "None"
 msgstr "Aucun"
 
 msgid "OK"
-msgstr ""
+msgstr "OK"
 
 msgid "Ports"
 msgstr "Ports"
@@ -107,13 +107,13 @@ msgid "Protocol"
 msgstr "Protocole"
 
 msgid "Recovering"
-msgstr ""
+msgstr "Récupération"
 
 msgid "Source Address"
 msgstr "Adresse source"
 
 msgid "Unknown"
-msgstr ""
+msgstr "Inconnu"
 
 msgid "WAN Interfaces"
 msgstr "Interfaces WAN"
index 781356b..d417e15 100644 (file)
@@ -3,15 +3,15 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-14 13:24+0200\n"
-"PO-Revision-Date: 2011-06-13 21:23+0200\n"
-"Last-Translator: fredb <fblistes+luci@free.fr>\n"
+"PO-Revision-Date: 2012-11-06 16:08+0200\n"
+"Last-Translator: hogsim <hogsim@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Clock Adjustment"
 msgstr "Ajustement de l'horloge"
@@ -38,7 +38,7 @@ msgid "Synchronizes the system time"
 msgstr "Synchronise le temps système"
 
 msgid "Time Server"
-msgstr ""
+msgstr "Serveur temps "
 
 msgid "Time Servers"
 msgstr "Serveurs de temps"
index cc11b15..ae901a0 100644 (file)
@@ -1,16 +1,17 @@
-#, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-03-25 22:10+0100\n"
-"PO-Revision-Date: 2010-03-26 09:06+0100\n"
-"Last-Translator: Benoît Knecht <benoit.knecht@gmail.com>\n"
+"PO-Revision-Date: 2012-11-06 16:08+0200\n"
+"Last-Translator: hogsim <hogsim@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Translate Toolkit 1.1.1\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Calculate overhead"
 msgstr "Calculer la surcharge"
@@ -102,4 +103,4 @@ msgid "priority"
 msgstr "prioritaire"
 
 msgid "qos_connbytes"
-msgstr ""
+msgstr "qos_connbytes"
index f627657..f1fec69 100644 (file)
@@ -68,7 +68,7 @@ msgid "Collectd Settings"
 msgstr "Paramètres Collectd"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -115,6 +115,9 @@ msgstr "Utilisation de l'espace-disque"
 msgid "Disk Usage"
 msgstr "Espace-disque"
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr "Période affichée »"
 
@@ -193,12 +196,6 @@ msgstr "Ignorer les adresses-source"
 msgid "Incoming interface"
 msgstr "Interface entrante"
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr "Configuration du greffon des Interfaces"
 
@@ -292,11 +289,6 @@ msgstr "Configuration du greffon réseau"
 msgid "Network plugins"
 msgstr "Greffons liés au réseau"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr "Protocole réseau"
 
@@ -321,13 +313,6 @@ msgstr "Interface sortante"
 msgid "Output plugins"
 msgstr "Greffons liés aux résultats"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -427,11 +412,6 @@ msgstr "Charge-système"
 msgid "System plugins"
 msgstr "Greffons liés au système"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr "Connexions TCP"
 
@@ -447,6 +427,9 @@ msgstr "TTL des paquets ping"
 msgid "Table"
 msgstr "Table"
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -609,13 +592,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-"Le greffon sans-fil récupère des informations sur la puissance du signal "
-"wifi, sa qualité et sur le bruit."
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -631,6 +607,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr "Tente de récupérer des noms d'hôtes complètement qualifiés"
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr "Socket Unix"
 
@@ -649,9 +634,6 @@ msgstr "Surveillance verbeuse"
 msgid "Wireless"
 msgstr "Sans-fil"
 
-msgid "Wireless Plugin Configuration"
-msgstr "Configuration du greffon sans-fil"
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
@@ -675,3 +657,13 @@ msgstr "En secondes ; séparer différentes valeurs par des espaces"
 
 msgid "server interfaces"
 msgstr "Interfaces du serveur"
+
+#~ msgid ""
+#~ "The wireless plugin collects statistics about wireless signal strength, "
+#~ "noise and quality."
+#~ msgstr ""
+#~ "Le greffon sans-fil récupère des informations sur la puissance du signal "
+#~ "wifi, sa qualité et sur le bruit."
+
+#~ msgid "Wireless Plugin Configuration"
+#~ msgstr "Configuration du greffon sans-fil"
index e927a01..ca78ca4 100644 (file)
@@ -3,15 +3,15 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2011-11-23 22:30+0200\n"
-"Last-Translator: fredb <fblistes+luci@free.fr>\n"
+"PO-Revision-Date: 2012-11-06 16:09+0200\n"
+"Last-Translator: hogsim <hogsim@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid ""
 "<em>Via proxy</em> routes requests to the given target via the specifed "
@@ -76,7 +76,7 @@ msgstr ""
 "ou \".\" pour n'importe quel nom d'hôte sans domaine"
 
 msgid "Configuration"
-msgstr ""
+msgstr "Configuration"
 
 msgid "Connection timeout"
 msgstr "Délai de connexion"
@@ -257,7 +257,7 @@ msgid "Statistics page"
 msgstr "Page de statistiques"
 
 msgid "Status"
-msgstr ""
+msgstr "Statut"
 
 msgid "Target host"
 msgstr "Hôte de destination"
@@ -266,7 +266,7 @@ msgid "Tinyproxy"
 msgstr "Tinyproxy"
 
 msgid "Tinyproxy Status"
-msgstr ""
+msgstr "Statut Tinyproxy"
 
 msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy"
 msgstr "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy"
index d0ca312..0fbb2fc 100644 (file)
@@ -1,16 +1,17 @@
-#, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2012-11-06 16:09+0200\n"
+"Last-Translator: hogsim <hogsim@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Translate Toolkit 1.1.1\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid ""
 "ACLs specify which external ports may be redirected to which internal "
@@ -125,7 +126,7 @@ msgid "There are no active redirects."
 msgstr "Il n'y a pas de redirections actives."
 
 msgid "UPNP"
-msgstr ""
+msgstr "UPNP"
 
 msgid ""
 "UPNP allows clients in the local network to automatically configure the "
index 2363852..71ef062 100644 (file)
@@ -1,21 +1,21 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-01-15 07:10+0200\n"
-"Last-Translator: desillu <ledesillusionniste@hotmail.com>\n"
+"PO-Revision-Date: 2012-11-06 16:09+0200\n"
+"Last-Translator: hogsim <hogsim@gmail.com>\n"
 "Language-Team: none\n"
 "Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Phones"
 msgstr "Téléphones"
 
 msgid "Voice"
-msgstr ""
+msgstr "Voix"
 
 #~ msgid "l_v_adminphones"
 #~ msgstr "Téléphones"
index 5d93da5..484e04a 100644 (file)
@@ -245,6 +245,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr "הטווח המורשה הוא 1 עד 65535"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 #, fuzzy
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "רשת נוספת תווצר אם תשאיר את זה לא מסומן"
@@ -842,6 +847,9 @@ msgstr ""
 msgid "Force"
 msgstr ""
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr ""
 
@@ -2584,9 +2592,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr ""
-
 msgid "Warning"
 msgstr "אזהרה"
 
diff --git a/po/he/commands.po b/po/he/commands.po
new file mode 100644 (file)
index 0000000..0e9e65d
--- /dev/null
@@ -0,0 +1,91 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index e9637f0..1e66f7f 100644 (file)
@@ -38,6 +38,9 @@ msgstr ""
 msgid "Enable"
 msgstr "אפשר"
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr "אלץ עדכון כל"
 
@@ -54,6 +57,9 @@ msgstr "ממשק"
 msgid "Network"
 msgstr "רשת"
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr "סיסמא"
 
@@ -85,9 +91,3 @@ msgstr "דק'"
 
 msgid "network"
 msgstr "רשת"
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index 5ff7d3b..7161955 100644 (file)
@@ -178,6 +178,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr ""
+
 msgid "Sleep Between Requests"
 msgstr ""
 
@@ -201,6 +204,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
index c126cc6..5d9e8a7 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "BSSID"
 msgstr "BSSID"
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr "הגדרות בסיס"
 
@@ -80,6 +83,9 @@ msgstr "ESSID"
 msgid "Edit index page"
 msgstr "ערוך דף אינדקס"
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr "שגיאה"
 
@@ -101,6 +107,12 @@ msgstr "שער"
 msgid "Go to"
 msgstr "עבור אל"
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr "שלום וברוך הבא לרשת של"
 
@@ -113,6 +125,15 @@ msgstr "דף הבית"
 msgid "Hostname"
 msgstr ""
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr "אם מסומן, תוכן ברירת המחדל לא יופיע"
 
@@ -139,6 +160,9 @@ msgstr "שמור הגדרות"
 msgid "Latitude"
 msgstr "רוחב"
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -190,6 +214,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr "סקירה"
 
@@ -220,6 +247,9 @@ msgstr ""
 msgid "Realname"
 msgstr ""
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -249,6 +279,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -298,6 +331,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -306,6 +342,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index d4cfc50..f887a89 100644 (file)
@@ -8,6 +8,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr ""
 
@@ -29,9 +32,18 @@ msgstr ""
 msgid "Enable DHCP"
 msgstr ""
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr ""
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -42,9 +54,17 @@ msgstr ""
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr ""
 
@@ -52,6 +72,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -66,6 +89,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 4e72ebd..6ad7475 100644 (file)
@@ -68,7 +68,7 @@ msgid "Collectd Settings"
 msgstr ""
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -112,6 +112,9 @@ msgstr ""
 msgid "Disk Usage"
 msgstr ""
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr ""
 
@@ -182,12 +185,6 @@ msgstr ""
 msgid "Incoming interface"
 msgstr ""
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr ""
 
@@ -281,11 +278,6 @@ msgstr ""
 msgid "Network plugins"
 msgstr ""
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr ""
 
@@ -310,13 +302,6 @@ msgstr ""
 msgid "Output plugins"
 msgstr ""
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr ""
 
@@ -416,11 +401,6 @@ msgstr ""
 msgid "System plugins"
 msgstr ""
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr ""
 
@@ -436,6 +416,9 @@ msgstr ""
 msgid "Table"
 msgstr ""
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -552,11 +535,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -568,6 +546,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr ""
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr ""
 
@@ -586,9 +573,6 @@ msgstr ""
 msgid "Wireless"
 msgstr ""
 
-msgid "Wireless Plugin Configuration"
-msgstr ""
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
index 5ebaf7d..bf8f216 100644 (file)
@@ -1,8 +1,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-09-13 18:30+0200\n"
-"Last-Translator: Gábor <vargalex@freemail.hu>\n"
+"PO-Revision-Date: 2012-11-20 18:52+0200\n"
+"Last-Translator: juhosg <juhosg@openwrt.org>\n"
 "Language-Team: none\n"
 "Language: hu\n"
 "MIME-Version: 1.0\n"
@@ -174,10 +174,10 @@ msgid "Active Connections"
 msgstr "Aktív kapcsolatok"
 
 msgid "Active DHCP Leases"
-msgstr ""
+msgstr "Aktív DHCP bérletek"
 
 msgid "Active DHCPv6 Leases"
-msgstr ""
+msgstr "Aktív DHCPv6 bérletek"
 
 msgid "Ad-Hoc"
 msgstr "Ad-Hoc"
@@ -249,6 +249,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr "Engedélyezett tartomány 1-től 65535-ig"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "Amennyiben ezt jelöletlenül hagyja, egy további hálózat jön létre"
 
@@ -422,6 +427,9 @@ msgid ""
 "Choose the network(s) you want to attach to this wireless interface or fill "
 "out the <em>create</em> field to define a new network."
 msgstr ""
+"Válassza ki azokat a hálózatokat, amelyeket csatlakoztatni akar ehhez a "
+"vezetéknélküli interfészhez, vagy töltse ki az <em>új</em> mezőt egy új "
+"hálózat definiálásához."
 
 msgid "Cipher"
 msgstr "Titkosító"
@@ -744,7 +752,7 @@ msgid "Enable Jumbo Frame passthrough"
 msgstr "Óriás keretek átengedésének engedélyezése"
 
 msgid "Enable NTP client"
-msgstr ""
+msgstr "NTP-kliens engedélyezése"
 
 msgid "Enable TFTP server"
 msgstr "TFTP kiszolgáló engedélyezése"
@@ -870,6 +878,9 @@ msgstr "Flash-elés..."
 msgid "Force"
 msgstr "Kényszerítés"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr "CCMP (AES) kényszerítése"
 
@@ -912,7 +923,7 @@ msgid "GHz"
 msgstr ""
 
 msgid "GPRS only"
-msgstr ""
+msgstr "Csak GPRS"
 
 msgid "Gateway"
 msgstr "Átjáró"
@@ -1016,7 +1027,7 @@ msgid "IPv4 and IPv6"
 msgstr "IPv4 és IPv6"
 
 msgid "IPv4 broadcast"
-msgstr "IPv4 broagcast"
+msgstr "IPv4 broadcast"
 
 msgid "IPv4 gateway"
 msgstr "IPv4 átjáró"
@@ -1028,7 +1039,7 @@ msgid "IPv4 only"
 msgstr "csak IPv4"
 
 msgid "IPv4 prefix length"
-msgstr ""
+msgstr "IPv4 prefix hossza"
 
 msgid "IPv4-Address"
 msgstr "IPv4-cím"
@@ -1055,10 +1066,10 @@ msgid "IPv6 prefix"
 msgstr ""
 
 msgid "IPv6 prefix length"
-msgstr ""
+msgstr "IPv6 prefix hossz"
 
 msgid "IPv6-Address"
-msgstr ""
+msgstr "IPv6-cím"
 
 msgid "IPv6-in-IPv4 (RFC4213)"
 msgstr "IPv6 IPv4-ben (RFC4213)"
@@ -1349,7 +1360,7 @@ msgid "Localise queries"
 msgstr ""
 
 msgid "Locked to channel %d used by %s"
-msgstr "Zárolt a %s által használt %d csatornára"
+msgstr "Zárolt a %d csatornára az %s által."
 
 msgid "Log output level"
 msgstr "Napló kimeneti szintje"
@@ -1569,7 +1580,7 @@ msgid "Normal"
 msgstr "Normál"
 
 msgid "Not Found"
-msgstr ""
+msgstr "Nem található"
 
 msgid "Not associated"
 msgstr "Nincs hozzárendelve"
@@ -1810,7 +1821,7 @@ msgid "Protocol support is not installed"
 msgstr "Protokoll támogatás nincs telepítve"
 
 msgid "Provide NTP server"
-msgstr ""
+msgstr "NTP kiszolgáló"
 
 msgid "Provide new network"
 msgstr "Új hálózat nyújtása"
@@ -1819,7 +1830,7 @@ msgid "Pseudo Ad-Hoc (ahdemo)"
 msgstr "Ál Ad-hoc (ahdemo)"
 
 msgid "Quality"
-msgstr ""
+msgstr "Minőség"
 
 msgid "RTS/CTS Threshold"
 msgstr "RTS/CTS küszöbérték"
@@ -1862,11 +1873,17 @@ msgid ""
 "Really delete this interface? The deletion cannot be undone!\\nYou might "
 "lose access to this device if you are connected via this interface."
 msgstr ""
+"Biztosan törli az interfészt? A törlés nem visszavonható!\n"
+" Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen az "
+"interfészen keresztül kapcsolódik."
 
 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 ""
+"Biztosan törli ezt a vezetéknélküli hálózatot? A törlés nem visszavonható!\n"
+"Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen a hálózaton "
+"keresztül kapcsolódik."
 
 msgid "Really reset all changes?"
 msgstr "Biztos, hogy visszavonja az összes módosítást?"
@@ -1875,11 +1892,17 @@ msgid ""
 "Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
 "you are connected via this interface."
 msgstr ""
+"Biztos, hogy leállítja a \"%s\" interfészt?\n"
+" Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen az "
+"interfészen keresztül kapcsolódik."
 
 msgid ""
 "Really shutdown network ?\\nYou might lose access to this device if you are "
 "connected via this interface."
 msgstr ""
+"Biztos, hogy leállítja a hálózatot?!\n"
+" Lehet, hogy elveszti a hozzáférést az eszközhöz, amennyiben ezen a "
+"hálózaton keresztül kapcsolódik."
 
 msgid "Really switch protocol?"
 msgstr "Biztos, hogy cserélni szeretné a protokollt?"
@@ -2019,10 +2042,10 @@ msgid "Rule #"
 msgstr "Szabály #"
 
 msgid "Run a filesystem check before mounting the device"
-msgstr "Fájlrendszer elleőrzés futtatása az eszköz csatolása előtt"
+msgstr "Fájlrendszer ellenőrzés futtatása az eszköz csatolása előtt"
 
 msgid "Run filesystem check"
-msgstr "Fájlrendszer elleőrzés futtatása"
+msgstr "Fájlrendszer ellenőrzés futtatása"
 
 msgid "SSH Access"
 msgstr "SSH hozzáférés"
@@ -2128,10 +2151,10 @@ msgid "Some fields are invalid, cannot save values!"
 msgstr "Néhán mező érvénytelen, az értékek nem menthetők!"
 
 msgid "Sorry, the object you requested was not found."
-msgstr ""
+msgstr "Sajnálom, a kért objektum nem található."
 
 msgid "Sorry, the server encountered an unexpected error."
-msgstr ""
+msgstr "Sajnálom, a szerver váratlan hibát észlelt."
 
 msgid ""
 "Sorry, there is no sysupgrade support present, a new firmware image must be "
@@ -2719,9 +2742,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr "Várakozás a routerre..."
-
 msgid "Warning"
 msgstr "Figyelmeztetés"
 
@@ -2801,7 +2821,7 @@ msgid "bridged"
 msgstr "áthidalt"
 
 msgid "create:"
-msgstr ""
+msgstr "új:"
 
 msgid "creates a bridge over specified interface(s)"
 msgstr "híd létrehozása a megadott interfész(ek) között"
@@ -2903,6 +2923,9 @@ msgstr "igen"
 msgid "« Back"
 msgstr "« Vissza"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "Várakozás a routerre..."
+
 #~ msgid "Enable builtin NTP server"
 #~ msgstr "Beépített NTP kiszolgáló engedélyezése"
 
diff --git a/po/hu/commands.po b/po/hu/commands.po
new file mode 100644 (file)
index 0000000..0e9e65d
--- /dev/null
@@ -0,0 +1,91 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index ecb5700..648f0cf 100644 (file)
@@ -37,6 +37,9 @@ msgstr ""
 msgid "Enable"
 msgstr "Engedélyezés"
 
+msgid "Event interface"
+msgstr "Esemány interfész"
+
 msgid "Force update every"
 msgstr "Frissítés erőltetése minden"
 
@@ -52,6 +55,9 @@ msgstr "Interfész"
 msgid "Network"
 msgstr "Hálózat"
 
+msgid "On which interface up should start the ddns script process."
+msgstr "Melyik interfész indulása váltsa ki a ddns script indítását."
+
 msgid "Password"
 msgstr "Jelszó"
 
@@ -83,9 +89,3 @@ msgstr "perc"
 
 msgid "network"
 msgstr "hálózat"
-
-msgid "Event interface"
-msgstr "Esemány interfész"
-
-msgid "On which interface up should start the ddns script process."
-msgstr "Melyik interfész indulása váltsa ki a ddns script indítását."
index 33b068d..e2acfdd 100644 (file)
@@ -187,6 +187,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr "Scans for devices on specified networks."
+
 msgid "Sleep Between Requests"
 msgstr "Kérések közötti szünet"
 
@@ -210,6 +213,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr "egyéb hálózatok ellenőrzése"
-
-msgid "Scans for devices on specified networks."
-msgstr "Scans for devices on specified networks."
index 8df7f6a..a14be13 100644 (file)
@@ -3,6 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -11,6 +12,9 @@ msgstr ""
 msgid "BSSID"
 msgstr ""
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr ""
 
@@ -77,6 +81,9 @@ msgstr ""
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr ""
 
@@ -98,6 +105,12 @@ msgstr ""
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr ""
 
@@ -110,6 +123,15 @@ msgstr ""
 msgid "Hostname"
 msgstr ""
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -136,6 +158,9 @@ msgstr ""
 msgid "Latitude"
 msgstr ""
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -187,6 +212,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -217,6 +245,9 @@ msgstr ""
 msgid "Realname"
 msgstr ""
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -246,6 +277,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -295,6 +329,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -303,6 +340,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index d4cfc50..f887a89 100644 (file)
@@ -8,6 +8,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr ""
 
@@ -29,9 +32,18 @@ msgstr ""
 msgid "Enable DHCP"
 msgstr ""
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr ""
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -42,9 +54,17 @@ msgstr ""
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr ""
 
@@ -52,6 +72,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -66,6 +89,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 9cfdf70..e4c392c 100644 (file)
@@ -79,8 +79,8 @@ msgid ""
 "With <abbr title=\"Quality of Service\">QoS</abbr> you can prioritize "
 "network traffic selected by addresses, ports or services."
 msgstr ""
-"A <abbr title=\"Quality of Service\">QoS</abbr> segítségével beállítható cím, "
-"portok vagy szolgáltatások alapján kiválasztott hálózati forgalom "
+"A <abbr title=\"Quality of Service\">QoS</abbr> segítségével beállítható "
+"cím, portok vagy szolgáltatások alapján kiválasztott hálózati forgalom "
 "prioritása."
 
 msgid "all"
index f2888c4..8777a49 100644 (file)
@@ -66,7 +66,7 @@ msgid "Collectd Settings"
 msgstr "Collectd beállítások"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -113,6 +113,9 @@ msgstr "Felhasznált lemezterület"
 msgid "Disk Usage"
 msgstr "Lemezhasználat"
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr "Időszak megjelenítése »"
 
@@ -192,12 +195,6 @@ msgstr "Forrás címek figyelmen kívül hagyása"
 msgid "Incoming interface"
 msgstr "Bejövő interfész"
 
-msgid "Installed network plugins:"
-msgstr "Telepített hálózati bővítmények:"
-
-msgid "Installed output plugins:"
-msgstr "Telepített kimeneti bővítmények:"
-
 msgid "Interface Plugin Configuration"
 msgstr "Interfész bővítmény beállítása"
 
@@ -293,13 +290,6 @@ msgstr "Hálózat bővítmény beállítása"
 msgid "Network plugins"
 msgstr "Hálózati bővítmények"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-"A hálózati bővítmények nyitott TCP kapcsolatok, interfész forgalom, iptables "
-"szabályok és ehhez hasonló információk gyűjtésére használhatók."
-
 msgid "Network protocol"
 msgstr "Hálózati protokoll"
 
@@ -324,18 +314,6 @@ msgstr "Kimenő interfész"
 msgid "Output plugins"
 msgstr "Kimeneti bővítmények"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-"A kimeneti bővítmények különféle lehetőségeket biztosítanak az összegyűjtött "
-"adatok tárolásához. Lehetőség van többféle bővítmény egyidejű "
-"engedélyezésére, például az összegyűjtött adatok RRD adatbázisban történő "
-"tárolására és egyidejűleg hálózaton keresztül másik collectd példányhoz való "
-"továbbítására."
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -439,13 +417,6 @@ msgstr "Rendszerterhelés"
 msgid "System plugins"
 msgstr "Rendszer bővítmények"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-"A rendszer bővítmények a rendszer állapotáról és az erőforrások "
-"használatáról gyűjtenek adatokat az eszközön."
-
 msgid "TCP Connections"
 msgstr "TCP kapcsolatok"
 
@@ -461,6 +432,9 @@ msgstr "TTL a ping csomagokhoz"
 msgid "Table"
 msgstr "Táblázat"
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -603,13 +577,6 @@ msgstr ""
 "kiolvashatók az összegyűjtött adatok egy futó collectd-ből. "
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-"A vezetéknélküli bővítmény vezetéknélküli jelerősségről, zajról és "
-"minőségről gyűjt információkat."
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -623,6 +590,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr ""
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr "UnixSock"
 
@@ -641,9 +617,6 @@ msgstr ""
 msgid "Wireless"
 msgstr "Vezeték nélküli"
 
-msgid "Wireless Plugin Configuration"
-msgstr "Vezetéknélküli bővítmény beállítása"
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr "iwinfo vezeték nélküli bővítmény beállítása"
 
@@ -667,3 +640,45 @@ msgstr "másodpercek; több szóközzel elválasztott érték is megadható"
 
 msgid "server interfaces"
 msgstr "kiszolgáló interfész"
+
+#~ msgid "Installed network plugins:"
+#~ msgstr "Telepített hálózati bővítmények:"
+
+#~ msgid "Installed output plugins:"
+#~ msgstr "Telepített kimeneti bővítmények:"
+
+#~ msgid ""
+#~ "Network plugins are used to collect information about open tcp "
+#~ "connections, interface traffic, iptables rules etc."
+#~ msgstr ""
+#~ "A hálózati bővítmények nyitott TCP kapcsolatok, interfész forgalom, iptables "
+#~ "szabályok és ehhez hasonló információk gyűjtésére használhatók."
+
+#~ msgid ""
+#~ "Output plugins provide different possibilities to store collected data. "
+#~ "It is possible to enable multiple plugin at one, for example to store "
+#~ "collected data in rrd databases and to transmit the data over the network "
+#~ "to other collectd instances."
+#~ msgstr ""
+#~ "A kimeneti bővítmények különféle lehetőségeket biztosítanak az összegyűjtött "
+#~ "adatok tárolásához. Lehetőség van többféle bővítmény egyidejű "
+#~ "engedélyezésére, például az összegyűjtött adatok RRD adatbázisban történő "
+#~ "tárolására és egyidejűleg hálózaton keresztül másik collectd példányhoz való "
+#~ "továbbítására."
+
+#~ msgid ""
+#~ "System plugins collecting values about system state and ressource usage "
+#~ "on the device.:"
+#~ msgstr ""
+#~ "A rendszer bővítmények a rendszer állapotáról és az erőforrások "
+#~ "használatáról gyűjtenek adatokat az eszközön."
+
+#~ msgid ""
+#~ "The wireless plugin collects statistics about wireless signal strength, "
+#~ "noise and quality."
+#~ msgstr ""
+#~ "A vezetéknélküli bővítmény vezetéknélküli jelerősségről, zajról és "
+#~ "minőségről gyűjt információkat."
+
+#~ msgid "Wireless Plugin Configuration"
+#~ msgstr "Vezetéknélküli bővítmény beállítása"
index 34e68bd..9630fa5 100644 (file)
@@ -3,27 +3,27 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2011-06-26 16:20+0200\n"
-"Last-Translator: Massimo <coatto87@gmail.com>\n"
+"PO-Revision-Date: 2012-12-15 19:35+0200\n"
+"Last-Translator: claudyus <claudyus84@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: it\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "(%d minute window, %d second interval)"
 msgstr "(%d finestra in minuti , %d secondi intervallo)"
 
 msgid "(%s available)"
-msgstr "(%s available)"
+msgstr "(%s disponibile)"
 
 msgid "(empty)"
 msgstr "(vuoto)"
 
 msgid "(no interfaces attached)"
-msgstr "(vuoto)"
+msgstr "(nessuna interfaccia collegata)"
 
 msgid "-- Additional Field --"
 msgstr "-- Campo aggiuntivo --"
@@ -35,10 +35,10 @@ msgid "-- custom --"
 msgstr "-- personalizzato --"
 
 msgid "1 Minute Load:"
-msgstr "1 minuto carico:"
+msgstr "Carico in 1 minuto:"
 
 msgid "15 Minute Load:"
-msgstr "15 minuti carico::"
+msgstr "Carico in 15 minut:"
 
 msgid "40MHz 2nd channel above"
 msgstr "40MHz superiore"
@@ -250,6 +250,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr "Range permesso 1-65535"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "Sarà creata una rete aggiuntiva se lasci questo senza spunta."
 
@@ -857,6 +862,9 @@ msgstr ""
 msgid "Force"
 msgstr "Forza"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr ""
 
@@ -2637,9 +2645,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr ""
-
 msgid "Warning"
 msgstr ""
 
diff --git a/po/it/commands.po b/po/it/commands.po
new file mode 100644 (file)
index 0000000..0e9e65d
--- /dev/null
@@ -0,0 +1,91 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index 754e919..4121613 100644 (file)
@@ -35,6 +35,9 @@ msgstr ""
 msgid "Enable"
 msgstr "Abilita"
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr "Forza aggiornamento ogni"
 
@@ -50,6 +53,9 @@ msgstr "Interfaccia"
 msgid "Network"
 msgstr "Rete"
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr "Password"
 
@@ -81,9 +87,3 @@ msgstr "min"
 
 msgid "network"
 msgstr "rete"
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index 5ff7d3b..7161955 100644 (file)
@@ -178,6 +178,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr ""
+
 msgid "Sleep Between Requests"
 msgstr ""
 
@@ -201,6 +204,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
index 3294c9a..68e9618 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 msgid "BSSID"
 msgstr ""
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr ""
 
@@ -81,6 +84,9 @@ msgstr ""
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr ""
 
@@ -102,6 +108,12 @@ msgstr ""
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr ""
 
@@ -114,6 +126,15 @@ msgstr ""
 msgid "Hostname"
 msgstr ""
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -140,6 +161,9 @@ msgstr ""
 msgid "Latitude"
 msgstr ""
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -191,6 +215,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -221,6 +248,9 @@ msgstr ""
 msgid "Realname"
 msgstr ""
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -250,6 +280,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -299,6 +332,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -307,6 +343,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index 3a6dfc0..114547a 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Pootle 2.0.4\n"
 
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr "Canale"
 
@@ -34,9 +37,18 @@ msgstr "DHCP assegnerà indirizzi ip ai client"
 msgid "Enable DHCP"
 msgstr "Abilità DHCP"
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr "Impostazioni generali"
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -47,9 +59,17 @@ msgstr "Interfacce"
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr "Proteggi LAN"
 
@@ -59,6 +79,9 @@ msgstr ""
 "Selezionare per permettere ad altri di usare la tua connessione per accedere "
 "a internet."
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr "Condividi la tua connessione internet"
 
@@ -77,6 +100,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr "L'IP dato non è all'interno del range degli indirizzi di rete mesh"
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 48c6188..2949f4a 100644 (file)
@@ -1,54 +1,57 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
+"PO-Revision-Date: 2012-12-15 19:42+0200\n"
+"Last-Translator: claudyus <claudyus84@gmail.com>\n"
 "Language-Team: none\n"
+"Language: it\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Advanced Settings"
-msgstr ""
+msgstr "Opzioni avanzate"
 
 msgid "Album art names:"
 msgstr ""
 
 msgid "Announced model number:"
-msgstr ""
+msgstr "Numero modello annunciato:"
 
 msgid "Announced serial number:"
-msgstr ""
+msgstr "Numero seriale annunciato:"
 
 msgid "Browse directory"
-msgstr ""
+msgstr "Esplora directory"
 
 msgid "Collecting data..."
-msgstr ""
+msgstr "Recuperando i dati..."
 
 msgid "Database directory:"
-msgstr ""
+msgstr "Directory database:"
 
 msgid "Enable TIVO:"
-msgstr ""
+msgstr "Abilita TIVO:"
 
 msgid "Enable inotify:"
-msgstr ""
+msgstr "Abilita inotify:"
 
 msgid "Enable:"
-msgstr ""
+msgstr "Abilita:"
 
 msgid "Friendly name:"
 msgstr ""
 
 msgid "General Settings"
-msgstr ""
+msgstr "Impostazioni generali"
 
 msgid "Interfaces:"
-msgstr ""
+msgstr "Interfaccie:"
 
 msgid "Log directory:"
-msgstr ""
+msgstr "Directory di log:"
 
 msgid "Media directories:"
 msgstr ""
@@ -57,6 +60,8 @@ msgid ""
 "MiniDLNA is server software with the aim of being fully compliant with DLNA/"
 "UPnP-AV clients."
 msgstr ""
+"MiniDLNA è un server il cui intento è di essere completamente compatibile "
+"con i DLNA/UPnP-AV client disponibili."
 
 msgid ""
 "Model number the miniDLNA daemon will report to clients in its XML "
@@ -64,25 +69,25 @@ msgid ""
 msgstr ""
 
 msgid "Music"
-msgstr ""
+msgstr "Musica"
 
 msgid "Network interfaces to serve."
-msgstr ""
+msgstr "Interfaccia di rete usata."
 
 msgid "Notify interval in seconds."
-msgstr ""
+msgstr "Intervallo di notifica in secondi."
 
 msgid "Notify interval:"
-msgstr ""
+msgstr "Intervallo di notifica:"
 
 msgid "Pictures"
-msgstr ""
+msgstr "Immagini"
 
 msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic."
 msgstr ""
 
 msgid "Port:"
-msgstr ""
+msgstr "Porta:"
 
 msgid "Presentation URL:"
 msgstr ""
@@ -94,6 +99,8 @@ msgid ""
 "Serial number the miniDLNA daemon will report to clients in its XML "
 "description."
 msgstr ""
+"Serial number che il server miniDLNA invierà ai client nella descrizione "
+"XML."
 
 msgid ""
 "Set this if you want to customize the name that shows up on your clients."
index de74ec9..3c9a190 100644 (file)
@@ -1,15 +1,18 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
+"PO-Revision-Date: 2012-12-15 19:31+0200\n"
+"Last-Translator: claudyus <claudyus84@gmail.com>\n"
 "Language-Team: none\n"
+"Language: it\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Advanced Settings"
-msgstr ""
+msgstr "Opzioni avanzate"
 
 msgid "Available"
 msgstr ""
index ab3fd9e..f89723e 100644 (file)
@@ -68,7 +68,7 @@ msgid "Collectd Settings"
 msgstr ""
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -115,6 +115,9 @@ msgstr ""
 msgid "Disk Usage"
 msgstr ""
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr ""
 
@@ -190,12 +193,6 @@ msgstr ""
 msgid "Incoming interface"
 msgstr ""
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr ""
 
@@ -291,11 +288,6 @@ msgstr ""
 msgid "Network plugins"
 msgstr ""
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr ""
 
@@ -320,13 +312,6 @@ msgstr ""
 msgid "Output plugins"
 msgstr ""
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr ""
 
@@ -426,11 +411,6 @@ msgstr ""
 msgid "System plugins"
 msgstr ""
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr ""
 
@@ -446,6 +426,9 @@ msgstr ""
 msgid "Table"
 msgstr "Tabella"
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -562,11 +545,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -578,6 +556,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr ""
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr ""
 
@@ -596,9 +583,6 @@ msgstr ""
 msgid "Wireless"
 msgstr ""
 
-msgid "Wireless Plugin Configuration"
-msgstr ""
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
index 1e78aec..34528c1 100644 (file)
@@ -3,15 +3,15 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2011-05-22 11:03+0200\n"
-"Last-Translator: Massimo <coatto87@gmail.com>\n"
+"PO-Revision-Date: 2012-12-15 19:29+0200\n"
+"Last-Translator: claudyus <claudyus84@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: it\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid ""
 "<em>Via proxy</em> routes requests to the given target via the specifed "
@@ -23,15 +23,17 @@ msgid ""
 "Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded "
 "requests"
 msgstr ""
+"Aggiungi una intestazione http \"X-Tinyproxy\" contenente l'IP del client a "
+"cui forwardare la richiesta"
 
 msgid "Allowed clients"
-msgstr ""
+msgstr "Client permessi"
 
 msgid "Allowed connect ports"
-msgstr ""
+msgstr "Porte di connessione permesse"
 
 msgid "Bind address"
-msgstr ""
+msgstr "Bind Address"
 
 msgid ""
 "By default, basic POSIX expressions are used for filtering. Enable this to "
@@ -47,6 +49,8 @@ msgid ""
 "By default, filtering is done based on domain names. Enable this to match "
 "against URLs instead"
 msgstr ""
+"Di default, il filto è basato sul nome di dominio. Abilita questa opzione "
+"per effettuare il match con URL"
 
 msgid ""
 "By default, the filter rules act as blacklist. Enable this option to only "
@@ -59,7 +63,7 @@ msgid ""
 msgstr ""
 
 msgid "Configuration"
-msgstr ""
+msgstr "Configurazione"
 
 msgid "Connection timeout"
 msgstr ""
@@ -74,7 +78,7 @@ msgid "Error page"
 msgstr ""
 
 msgid "Failed to retrieve statistics from url:"
-msgstr ""
+msgstr "Impossibile recuperare le statistiche dall'url:"
 
 msgid "Filter by RegExp"
 msgstr ""
@@ -109,6 +113,7 @@ msgstr ""
 msgid ""
 "List of IP addresses or ranges which are allowed to use the proxy server"
 msgstr ""
+"Lista di indirizzi IP o range di indirizzi a cui è permesso l'uso del proxy"
 
 msgid ""
 "List of allowed ports for the CONNECT method. A single value \"0\" allows "
@@ -143,7 +148,7 @@ msgid "Max. spare servers"
 msgstr ""
 
 msgid "Maximum allowed number of concurrently connected clients"
-msgstr ""
+msgstr "Numero massimo di client simultanei permessi"
 
 msgid ""
 "Maximum allowed number of requests per process. If it is exeeded, the "
index 539b9b0..24a7be5 100644 (file)
@@ -3,7 +3,7 @@ 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-08-30 16:46+0200\n"
+"PO-Revision-Date: 2012-11-17 16:43+0200\n"
 "Last-Translator: Kentaro <kentaro.matsuyama@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: ja\n"
@@ -173,10 +173,10 @@ msgid "Active Connections"
 msgstr "アクティブコネクション"
 
 msgid "Active DHCP Leases"
-msgstr ""
+msgstr "現在アクティブなDHCPリース"
 
 msgid "Active DHCPv6 Leases"
-msgstr ""
+msgstr "現在アクティブなDHCPv6リース"
 
 msgid "Ad-Hoc"
 msgstr "アドホック"
@@ -243,6 +243,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr "設定可能な範囲は1から65535です"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "チェックボックスがオフの場合、追加のネットワークが作成されます。"
 
@@ -414,6 +419,8 @@ msgid ""
 "Choose the network(s) you want to attach to this wireless interface or fill "
 "out the <em>create</em> field to define a new network."
 msgstr ""
+"無線インターフェースをアタッチするネットワークを選択してください。または、"
+"<em>作成</em>欄を選択すると新しいネットワークを作成します。"
 
 msgid "Cipher"
 msgstr "暗号化方式"
@@ -733,7 +740,7 @@ msgid "Enable Jumbo Frame passthrough"
 msgstr "ジャンボフレーム・パススルーを有効にする"
 
 msgid "Enable NTP client"
-msgstr ""
+msgstr "NTPクライアント機能を有効にする"
 
 msgid "Enable TFTP server"
 msgstr "TFTPサーバーを有効にする"
@@ -861,6 +868,9 @@ msgstr "更新中..."
 msgid "Force"
 msgstr "強制"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr "CCMP (AES) を使用"
 
@@ -899,10 +909,10 @@ msgid "Frequency Hopping"
 msgstr "周波数ホッピング"
 
 msgid "GHz"
-msgstr ""
+msgstr "GHz"
 
 msgid "GPRS only"
-msgstr ""
+msgstr "GPRSのみ"
 
 msgid "Gateway"
 msgstr "ゲートウェイ"
@@ -1016,7 +1026,7 @@ msgid "IPv4 only"
 msgstr "IPv4のみ"
 
 msgid "IPv4 prefix length"
-msgstr ""
+msgstr "IPv4 プレフィクス長"
 
 msgid "IPv4-Address"
 msgstr "IPv4-アドレス"
@@ -1352,7 +1362,7 @@ msgid "MAC-Address"
 msgstr "MAC-アドレス"
 
 msgid "MAC-Address Filter"
-msgstr "MACアドレスフィルタ"
+msgstr "MAC-アドレスフィルタ"
 
 msgid "MAC-Filter"
 msgstr "MAC-フィルタ"
@@ -1753,7 +1763,7 @@ msgid "Port %d is untagged in multiple VLANs!"
 msgstr ""
 
 msgid "Port status:"
-msgstr ""
+msgstr "ポート ステータス:"
 
 msgid ""
 "Presume peer to be dead after given amount of LCP echo failures, use 0 to "
@@ -1790,7 +1800,7 @@ msgid "Protocol support is not installed"
 msgstr "プロトコルサポートがインストールされていません"
 
 msgid "Provide NTP server"
-msgstr ""
+msgstr "NTPサーバー機能を有効にする"
 
 msgid "Provide new network"
 msgstr "新しいネットワークを設定する"
@@ -1799,7 +1809,7 @@ msgid "Pseudo Ad-Hoc (ahdemo)"
 msgstr "擬似アドホック (ahdemo)"
 
 msgid "Quality"
-msgstr ""
+msgstr "クオリティ"
 
 msgid "RTS/CTS Threshold"
 msgstr "RTS/CTS閾値"
@@ -1842,11 +1852,19 @@ msgid ""
 "Really delete this interface? The deletion cannot be undone!\\nYou might "
 "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 "本当に全ての変更をリセットしますか?"
@@ -1855,11 +1873,17 @@ msgid ""
 "Really shutdown interface \"%s\" ?\\nYou might lose access to this device if "
 "you are connected via this interface."
 msgstr ""
+"本当にインターフェース \"%s\" を停止しますか?\n"
+"このインターフェースを経由して接続している場合、デバイスにアクセスできなくな"
+"る場合があります。"
 
 msgid ""
 "Really shutdown network ?\\nYou might lose access to this device if you are "
 "connected via this interface."
 msgstr ""
+"本当にネットワークを停止しますか?\n"
+"このネットワークを経由して接続している場合、デバイスにアクセスできなくなる場"
+"合があります。"
 
 msgid "Really switch protocol?"
 msgstr "本当にプロトコルを切り替えますか?"
@@ -2110,7 +2134,7 @@ msgid "Sorry, the object you requested was not found."
 msgstr ""
 
 msgid "Sorry, the server encountered an unexpected error."
-msgstr ""
+msgstr "申し訳ありません。サーバーに予期せぬエラーが発生しました。"
 
 msgid ""
 "Sorry, there is no sysupgrade support present, a new firmware image must be "
@@ -2128,10 +2152,10 @@ msgid "Source"
 msgstr "送信元"
 
 msgid "Specifies the advertised preferred prefix lifetime in seconds"
-msgstr ""
+msgstr "通知する推奨有効時間を設定してください。(秒単位)"
 
 msgid "Specifies the advertised valid prefix lifetime in seconds"
-msgstr ""
+msgstr "通知する最終有効時間を設定してください。(秒単位)"
 
 msgid "Specifies the button state to handle"
 msgstr ""
@@ -2288,8 +2312,8 @@ msgid ""
 "The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
 "code> and <code>_</code>"
 msgstr ""
-"使用可能な文字は右記の通りです: <code>A-Z</code>, <code>a-z</code>, <code>0-"
-"9</code>, <code>_</code>"
+"使用可能な文字は右記の通りです: <code>A-Z</code>, <code>a-z</code>, "
+"<code>0-9</code>, <code>_</code>"
 
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
@@ -2533,7 +2557,7 @@ msgid "UDP:"
 msgstr "UDP:"
 
 msgid "UMTS only"
-msgstr ""
+msgstr "UMTSのみ"
 
 msgid "UMTS/GPRS/EV-DO"
 msgstr "UMTS/GPRS/EV-DO"
@@ -2618,7 +2642,7 @@ msgid "Use gateway metric"
 msgstr "ゲートウェイ・メトリックを使用する"
 
 msgid "Use preferred lifetime"
-msgstr ""
+msgstr "推奨有効時間"
 
 msgid "Use routing table"
 msgstr ""
@@ -2635,7 +2659,7 @@ msgstr ""
 "ト名をアサインします。"
 
 msgid "Use valid lifetime"
-msgstr ""
+msgstr "最終有効時間"
 
 msgid "Used"
 msgstr "使用"
@@ -2702,9 +2726,6 @@ msgstr "変更を適用中です..."
 msgid "Waiting for command to complete..."
 msgstr "コマンド実行中です..."
 
-msgid "Waiting for router..."
-msgstr "ルーターに接続中..."
-
 msgid "Warning"
 msgstr "警告"
 
@@ -2774,13 +2795,13 @@ msgid "auto"
 msgstr "自動"
 
 msgid "baseT"
-msgstr ""
+msgstr "baseT"
 
 msgid "bridged"
 msgstr "ブリッジ"
 
 msgid "create:"
-msgstr ""
+msgstr "作成:"
 
 msgid "creates a bridge over specified interface(s)"
 msgstr "指定したインターフェースでブリッジを作成します"
@@ -2808,10 +2829,10 @@ msgid "forward"
 msgstr ""
 
 msgid "full-duplex"
-msgstr ""
+msgstr "全二重"
 
 msgid "half-duplex"
-msgstr ""
+msgstr "半二重"
 
 msgid "help"
 msgstr "ヘルプ"
@@ -2841,7 +2862,7 @@ msgid "no"
 msgstr "いいえ"
 
 msgid "no link"
-msgstr ""
+msgstr "リンクなし"
 
 msgid "none"
 msgstr "なし"
@@ -2882,6 +2903,9 @@ msgstr "はい"
 msgid "« Back"
 msgstr "« 戻る"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "ルーターに接続中..."
+
 #~ msgid "Enable builtin NTP server"
 #~ msgstr "内蔵のNTPサーバーを有効にする"
 
diff --git a/po/ja/commands.po b/po/ja/commands.po
new file mode 100644 (file)
index 0000000..4132274
--- /dev/null
@@ -0,0 +1,91 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index 841b474..68b5392 100644 (file)
@@ -35,6 +35,9 @@ msgstr ""
 msgid "Enable"
 msgstr "有効"
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr "強制的にアップデートを行う間隔"
 
@@ -50,6 +53,9 @@ msgstr "インターフェース"
 msgid "Network"
 msgstr "ネットワーク"
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr "パスワード"
 
@@ -81,9 +87,3 @@ msgstr "分"
 
 msgid "network"
 msgstr "ネットワーク"
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index eef39d8..1ef3dad 100644 (file)
@@ -181,6 +181,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr ""
+
 msgid "Sleep Between Requests"
 msgstr "リクエスト間のスリープ時間"
 
@@ -204,6 +207,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
index fb2d212..0739c2f 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-03-30 17:00+0200\n"
-"PO-Revision-Date: 2012-04-19 07:55+0200\n"
+"PO-Revision-Date: 2012-11-14 17:32+0200\n"
 "Last-Translator: Kentaro <kentaro.matsuyama@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: ja\n"
@@ -11,7 +11,7 @@ msgstr ""
 "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: Pootle 2.0.6\n"
 
 msgid "%s in %s"
 msgstr ""
@@ -121,7 +121,7 @@ msgid "External port"
 msgstr "外部ポート"
 
 msgid "External zone"
-msgstr ""
+msgstr "外部ゾーン"
 
 msgid "Extra arguments"
 msgstr "追加設定"
index 785d861..d69b1f1 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 msgid "BSSID"
 msgstr ""
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr ""
 
@@ -81,6 +84,9 @@ msgstr ""
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr ""
 
@@ -102,6 +108,12 @@ msgstr ""
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr ""
 
@@ -114,6 +126,15 @@ msgstr ""
 msgid "Hostname"
 msgstr ""
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -140,6 +161,9 @@ msgstr ""
 msgid "Latitude"
 msgstr ""
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -191,6 +215,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -221,6 +248,9 @@ msgstr ""
 msgid "Realname"
 msgstr ""
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -250,6 +280,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -299,6 +332,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -307,6 +343,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index d74ee8c..0ec9d68 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-14 10:33+0200\n"
-"PO-Revision-Date: 2011-08-19 05:37+0200\n"
+"PO-Revision-Date: 2012-11-14 14:40+0200\n"
 "Last-Translator: Kentaro <kentaro.matsuyama@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: ja\n"
@@ -11,7 +11,7 @@ msgstr ""
 "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: Pootle 2.0.6\n"
 
 msgid "Disk"
 msgstr "ディスク"
@@ -36,7 +36,7 @@ msgid "h"
 msgstr "時"
 
 msgid "hd-idle"
-msgstr ""
+msgstr "hd-idle"
 
 msgid ""
 "hd-idle is a utility program for spinning-down external disks after a period "
index f035cf4..180d771 100644 (file)
@@ -1,3 +1,6 @@
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr ""
 
@@ -19,9 +22,18 @@ msgstr ""
 msgid "Enable DHCP"
 msgstr ""
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr ""
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -32,9 +44,17 @@ msgstr ""
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr ""
 
@@ -42,6 +62,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -56,6 +79,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index e7b0620..bb6135c 100644 (file)
@@ -1,16 +1,17 @@
-#, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-14 13:24+0200\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"PO-Revision-Date: 2012-11-14 14:41+0200\n"
+"Last-Translator: Kentaro <kentaro.matsuyama@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ja\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Translate Toolkit 1.1.1\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Clock Adjustment"
 msgstr "時刻調整"
@@ -37,7 +38,7 @@ msgid "Synchronizes the system time"
 msgstr "システムの時間を同期します。"
 
 msgid "Time Server"
-msgstr ""
+msgstr "時刻サーバー"
 
 msgid "Time Servers"
 msgstr "時刻サーバー"
index 6c991a7..3c36225 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-03-18 07:10+0200\n"
+"PO-Revision-Date: 2012-11-14 14:40+0200\n"
 "Last-Translator: Kentaro <kentaro.matsuyama@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: ja\n"
@@ -11,7 +11,7 @@ msgstr ""
 "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: Pootle 2.0.6\n"
 
 msgid "Active MID announcements"
 msgstr "アクティブなMID(Multi Interface Declaration) 通知"
@@ -394,7 +394,7 @@ msgid "NAT threshold"
 msgstr "NAT しきい値"
 
 msgid "NLQ"
-msgstr ""
+msgstr "NLQ"
 
 msgid "Neighbors"
 msgstr "隣接ノード"
index 962581e..99c5e1b 100644 (file)
@@ -68,7 +68,7 @@ msgid "Collectd Settings"
 msgstr "Collectd 設定"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -112,6 +112,9 @@ msgstr ""
 msgid "Disk Usage"
 msgstr ""
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr "時間帯表示 »"
 
@@ -182,12 +185,6 @@ msgstr ""
 msgid "Incoming interface"
 msgstr ""
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr ""
 
@@ -281,11 +278,6 @@ msgstr "ネットワークプラグイン設定"
 msgid "Network plugins"
 msgstr "ネットワークプラグイン"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr "ネットワークプロトコル"
 
@@ -310,13 +302,6 @@ msgstr ""
 msgid "Output plugins"
 msgstr "出力プラグイン"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -416,11 +401,6 @@ msgstr ""
 msgid "System plugins"
 msgstr "システムプラグイン"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr ""
 
@@ -436,6 +416,9 @@ msgstr ""
 msgid "Table"
 msgstr ""
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -555,11 +538,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -571,6 +549,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr ""
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr ""
 
@@ -589,9 +576,6 @@ msgstr ""
 msgid "Wireless"
 msgstr ""
 
-msgid "Wireless Plugin Configuration"
-msgstr ""
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr "無線LAN iwinfo プラグイン設定"
 
index 6021068..c4acb26 100644 (file)
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-04-19 08:06+0200\n"
+"PO-Revision-Date: 2012-11-17 16:19+0200\n"
 "Last-Translator: Kentaro <kentaro.matsuyama@gmail.com>\n"
 "Language-Team: none\n"
 "Language: ja\n"
@@ -9,10 +9,10 @@ msgstr ""
 "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: Pootle 2.0.6\n"
 
 msgid "Forced reboot delay"
-msgstr ""
+msgstr "強制再起動ディレイ時間"
 
 msgid "Host address to ping"
 msgstr "ping を実行する宛先を設定してください。"
@@ -36,7 +36,7 @@ msgid "Operating mode"
 msgstr "動作モード"
 
 msgid "Period"
-msgstr ""
+msgstr "周期"
 
 msgid "Ping host"
 msgstr "Ping 宛先ホスト"
index b72f3fd..d5b1f6f 100644 (file)
@@ -7,6 +7,7 @@ msgstr ""
 "PO-Revision-Date: 2010-05-07 17:57+1000\n"
 "Last-Translator: Wai Chet Teow <waichet@hotmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -232,6 +233,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr ""
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr ""
 
@@ -823,6 +829,9 @@ msgstr ""
 msgid "Force"
 msgstr "Paksa"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr ""
 
@@ -2226,8 +2235,8 @@ msgid ""
 "The allowed characters are: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
 "code> and <code>_</code>"
 msgstr ""
-"Karakter yang diizinkan adalah: <code>A-Z</code>, <code>a-z</code>, <code>0-"
-"9</code> dan <code>_</code>"
+"Karakter yang diizinkan adalah: <code>A-Z</code>, <code>a-z</code>, "
+"<code>0-9</code> dan <code>_</code>"
 
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
@@ -2609,9 +2618,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr ""
-
 msgid "Warning"
 msgstr ""
 
diff --git a/po/ms/commands.po b/po/ms/commands.po
new file mode 100644 (file)
index 0000000..6fbb983
--- /dev/null
@@ -0,0 +1,90 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index 07a89c5..5c584fb 100644 (file)
@@ -33,6 +33,9 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr ""
 
@@ -48,6 +51,9 @@ msgstr ""
 msgid "Network"
 msgstr ""
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr ""
 
@@ -79,9 +85,3 @@ msgstr ""
 
 msgid "network"
 msgstr ""
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index fb3216d..27d2b46 100644 (file)
@@ -177,6 +177,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr ""
+
 msgid "Sleep Between Requests"
 msgstr ""
 
@@ -200,6 +203,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
index 77e41b9..f3e9e94 100644 (file)
@@ -11,6 +11,9 @@ msgstr ""
 msgid "BSSID"
 msgstr ""
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr ""
 
@@ -77,6 +80,9 @@ msgstr ""
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr ""
 
@@ -98,6 +104,12 @@ msgstr ""
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr ""
 
@@ -110,6 +122,15 @@ msgstr ""
 msgid "Hostname"
 msgstr ""
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -136,6 +157,9 @@ msgstr ""
 msgid "Latitude"
 msgstr ""
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -187,6 +211,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -217,6 +244,9 @@ msgstr ""
 msgid "Realname"
 msgstr ""
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -246,6 +276,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -295,6 +328,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -303,6 +339,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index f035cf4..180d771 100644 (file)
@@ -1,3 +1,6 @@
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr ""
 
@@ -19,9 +22,18 @@ msgstr ""
 msgid "Enable DHCP"
 msgstr ""
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr ""
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -32,9 +44,17 @@ msgstr ""
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr ""
 
@@ -42,6 +62,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -56,6 +79,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 51cc75b..e828053 100644 (file)
@@ -5,6 +5,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -64,7 +65,7 @@ msgid "Collectd Settings"
 msgstr ""
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -108,6 +109,9 @@ msgstr ""
 msgid "Disk Usage"
 msgstr ""
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr ""
 
@@ -178,12 +182,6 @@ msgstr ""
 msgid "Incoming interface"
 msgstr ""
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr ""
 
@@ -277,11 +275,6 @@ msgstr ""
 msgid "Network plugins"
 msgstr ""
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr ""
 
@@ -306,13 +299,6 @@ msgstr ""
 msgid "Output plugins"
 msgstr ""
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr ""
 
@@ -412,11 +398,6 @@ msgstr ""
 msgid "System plugins"
 msgstr ""
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr ""
 
@@ -432,6 +413,9 @@ msgstr ""
 msgid "Table"
 msgstr ""
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -548,11 +532,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -564,6 +543,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr ""
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr ""
 
@@ -582,9 +570,6 @@ msgstr ""
 msgid "Wireless"
 msgstr ""
 
-msgid "Wireless Plugin Configuration"
-msgstr ""
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
index e0dad9b..c606fb7 100644 (file)
@@ -2,9 +2,9 @@ msgid ""
 msgstr ""
 "PO-Revision-Date: 2011-06-14 15:40+0200\n"
 "Last-Translator: protx <lars.hardy@gmail.com>\n"
+"Language: no\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Language: no\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Pootle 2.0.4\n"
 
@@ -242,6 +242,11 @@ msgstr "Tillat oppstrøms svar i 127.0.0.0/8 nettet, f.eks for RBL tjenester"
 msgid "Allowed range is 1 to 65535"
 msgstr ""
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "Et nytt nettverk vil bli opprettet hvis du tar bort haken."
 
@@ -851,6 +856,9 @@ msgstr ""
 msgid "Force"
 msgstr "Tving"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr ""
 
@@ -2667,9 +2675,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr "Venter på ruter..."
-
 msgid "Warning"
 msgstr "Advarsel"
 
@@ -2849,6 +2854,9 @@ msgstr "ja"
 msgid "« Back"
 msgstr "« Tilbake"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "Venter på ruter..."
+
 #~ msgid "Active Leases"
 #~ msgstr "Aktive Leier"
 
diff --git a/po/no/commands.po b/po/no/commands.po
new file mode 100644 (file)
index 0000000..0e9e65d
--- /dev/null
@@ -0,0 +1,91 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index d3a53b8..9744855 100644 (file)
@@ -26,6 +26,9 @@ msgstr ""
 msgid "Enable"
 msgstr "Aktiver"
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr "Tving oppdatering hver"
 
@@ -41,6 +44,9 @@ msgstr "Grensesnitt"
 msgid "Network"
 msgstr "Nettverk"
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr "Passord"
 
@@ -70,9 +76,3 @@ msgstr "minutter"
 
 msgid "network"
 msgstr "nettverk"
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index 090cc46..4ada96b 100644 (file)
@@ -27,20 +27,20 @@ msgid ""
 "'Repeat Count', and/or 'Sleep Between Requests' may speed up scans, but also "
 "may fail to find some devices."
 msgstr ""
-"Konfigurer skanning etter enheter på angitte nettverk. Ved å minske "
-"verdiene til 'Tidsavbrudd', 'Gjentagelser' og/eller Tid mellom forespørsler "
-"blir skanningen utført raskere, men det kan også medføre at noen enheter "
-"ikke blir funnet."
+"Konfigurer skanning etter enheter på angitte nettverk. Ved å minske verdiene "
+"til 'Tidsavbrudd', 'Gjentagelser' og/eller Tid mellom forespørsler blir "
+"skanningen utført raskere, men det kan også medføre at noen enheter ikke "
+"blir funnet."
 
 msgid ""
 "Configure scanning for supported SIP devices on specified networks. "
 "Decreasing 'Timeout', 'Repeat Count', and/or 'Sleep Between Requests' may "
 "speed up scans, but also may fail to find some devices."
 msgstr ""
-"Konfigurer skanning etter støttede SIP enheter på angitte nettverk. Ved å minske "
-"verdiene til 'Tidsavbrudd', 'Gjentagelser' og/eller tid mellom forespørsler "
-"blir skanningen utført raskere, men det kan også medføre at noen enheter "
-"ikke blir funnet."
+"Konfigurer skanning etter støttede SIP enheter på angitte nettverk. Ved å "
+"minske verdiene til 'Tidsavbrudd', 'Gjentagelser' og/eller tid mellom "
+"forespørsler blir skanningen utført raskere, men det kan også medføre at "
+"noen enheter ikke blir funnet."
 
 msgid "Delete"
 msgstr "Slett"
@@ -92,8 +92,7 @@ msgstr "MAC Enhets Overstyring"
 
 msgid "MAC range and information used to override system and IEEE databases"
 msgstr ""
-"MAC område og informasjon brukt til å overstyre system og IEEE "
-"databaser"
+"MAC område og informasjon brukt til å overstyre system og IEEE databaser"
 
 msgid "Milliseconds to sleep between requests (default 100)"
 msgstr "Antall millisekunder ventetid mellom forespørsler (standard 100)"
@@ -132,8 +131,8 @@ msgid ""
 "Override the information returned by the MAC to Device Info Script (mac-to-"
 "devinfo) for a specified range of MAC Addresses"
 msgstr ""
-"Overstyr informasjonen hentet fra MAC til enhets info skriptet "
-"(mac-til-devinfo) for et gitt område med MAC adresser"
+"Overstyr informasjonen hentet fra MAC til enhets info skriptet (mac-til-"
+"devinfo) for et gitt område med MAC adresser"
 
 msgid "Perform Scans (this can take a few minutes)"
 msgstr "Utfør Skanning (dette kan ta noen minutter)"
@@ -186,6 +185,9 @@ msgstr "Skann etter SIP enheter på spesifiserte nettverk"
 msgid "Scanning Configuration"
 msgstr "Skanning Konfigurasjon"
 
+msgid "Scans for devices on specified networks."
+msgstr "Nettverks Skanning Informasjon"
+
 msgid "Sleep Between Requests"
 msgstr "Tid mellom forespørsler"
 
@@ -209,6 +211,3 @@ msgstr "Leverandør"
 
 msgid "check other networks"
 msgstr "skjekk andre nettverk"
-
-msgid "Scans for devices on specified networks."
-msgstr "Nettverks Skanning Informasjon"
index 24ab6e1..e251b39 100644 (file)
@@ -7,6 +7,9 @@ msgstr ""
 msgid "BSSID"
 msgstr "BSSID"
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr "Grunnleggende Innstillinger"
 
@@ -73,6 +76,9 @@ msgstr "ESSID"
 msgid "Edit index page"
 msgstr "Rediger indeks side"
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr "Feil"
 
@@ -94,6 +100,12 @@ msgstr "Gateway"
 msgid "Go to"
 msgstr "Gå til"
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr "Hei og velkommen til nettverket av"
 
@@ -106,6 +118,15 @@ msgstr "Hjemmeside"
 msgid "Hostname"
 msgstr "Vertsnavn"
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr "Om valgt vises ikke det vanlige innholdselementet"
 
@@ -136,6 +157,9 @@ msgstr "Behold konfigurasjonen"
 msgid "Latitude"
 msgstr "Breddegrad"
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr "Last"
 
@@ -187,6 +211,9 @@ msgstr "OLSR"
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr "Oversikt"
 
@@ -217,6 +244,9 @@ msgstr "Profil (Ekspert)"
 msgid "Realname"
 msgstr "Virkelig Navn"
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr "SSID"
 
@@ -248,6 +278,9 @@ msgstr "Statistikk"
 msgid "Status"
 msgstr "Status"
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr "System"
 
@@ -305,6 +338,9 @@ msgstr "Oppetid"
 msgid "Verify downloaded images"
 msgstr "Verifiser nedlastede filer"
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -315,6 +351,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr "Trådløs Oversikt"
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index f035cf4..180d771 100644 (file)
@@ -1,3 +1,6 @@
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr ""
 
@@ -19,9 +22,18 @@ msgstr ""
 msgid "Enable DHCP"
 msgstr ""
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr ""
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -32,9 +44,17 @@ msgstr ""
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr ""
 
@@ -42,6 +62,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -56,6 +79,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 221fa5b..a4706b7 100644 (file)
@@ -59,7 +59,7 @@ msgid "Collectd Settings"
 msgstr "Collectd Innstillinger"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -106,6 +106,9 @@ msgstr "Disk Forbruk"
 msgid "Disk Usage"
 msgstr "Disk Anvendelse"
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr "Vis tidsperiode »"
 
@@ -181,12 +184,6 @@ msgstr "Ignorer kilde adresser"
 msgid "Incoming interface"
 msgstr "Innkommende grensesnitt"
 
-msgid "Installed network plugins:"
-msgstr "Installerte nettverks plugin:"
-
-msgid "Installed output plugins:"
-msgstr "Installerte utdata plugin:"
-
 msgid "Interface Plugin Configuration"
 msgstr "Grensesnitt plugin konfigurasjon"
 
@@ -280,13 +277,6 @@ msgstr "Nettverks plugin konfigurasjon"
 msgid "Network plugins"
 msgstr "Nettverks plugin"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-"Nettverks plugin er brukt til å samle inn informasjon om åpne tcp koblinger, "
-"trafikk over grensesnitt, iptables regler osv."
-
 msgid "Network protocol"
 msgstr "Nettverks protokoll"
 
@@ -311,17 +301,6 @@ msgstr "Utgående grensesnitt"
 msgid "Output plugins"
 msgstr "Utdata Plugin"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-"Utdata plugins gir ulike muligheter til å lagre innsamlede data. Det er "
-"mulig å aktivere flere pluginer på en, for eksempel for å lagre innsamlede "
-"data i RRD databaser og å overføre data over nettverket til andre collectd "
-"forekomster."
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -421,11 +400,6 @@ msgstr "System Belastning"
 msgid "System plugins"
 msgstr "System plugins"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr "System plugins samler verdier om systemets tilstand og ressurs-bruk.:"
-
 msgid "TCP Connections"
 msgstr "TCP Forbindelser"
 
@@ -441,6 +415,9 @@ msgstr "TTL for ping pakker"
 msgid "Table"
 msgstr "Tabell"
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -596,12 +573,6 @@ msgstr ""
 "data fra collectd prosess."
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-"Trådløs plugin samler statistikk om trådløs signalstyrke, støy og kvalitet."
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -617,6 +588,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr "Prøv å søk etter fullstendig vertsnavn"
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr "UnixSock"
 
@@ -635,9 +615,6 @@ msgstr "Detaljert overvåking"
 msgid "Wireless"
 msgstr "Trådløs"
 
-msgid "Wireless Plugin Configuration"
-msgstr "Trådløs plugin konfigurasjon"
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
@@ -661,3 +638,41 @@ msgstr "sekunder; flere adskilt med mellomrom"
 
 msgid "server interfaces"
 msgstr "Server grensesnitt"
+
+#~ msgid "Installed network plugins:"
+#~ msgstr "Installerte nettverks plugin:"
+
+#~ msgid "Installed output plugins:"
+#~ msgstr "Installerte utdata plugin:"
+
+#~ msgid ""
+#~ "Network plugins are used to collect information about open tcp "
+#~ "connections, interface traffic, iptables rules etc."
+#~ msgstr ""
+#~ "Nettverks plugin er brukt til å samle inn informasjon om åpne tcp koblinger, "
+#~ "trafikk over grensesnitt, iptables regler osv."
+
+#~ msgid ""
+#~ "Output plugins provide different possibilities to store collected data. "
+#~ "It is possible to enable multiple plugin at one, for example to store "
+#~ "collected data in rrd databases and to transmit the data over the network "
+#~ "to other collectd instances."
+#~ msgstr ""
+#~ "Utdata plugins gir ulike muligheter til å lagre innsamlede data. Det er "
+#~ "mulig å aktivere flere pluginer på en, for eksempel for å lagre innsamlede "
+#~ "data i RRD databaser og å overføre data over nettverket til andre collectd "
+#~ "forekomster."
+
+#~ msgid ""
+#~ "System plugins collecting values about system state and ressource usage "
+#~ "on the device.:"
+#~ msgstr "System plugins samler verdier om systemets tilstand og ressurs-bruk.:"
+
+#~ msgid ""
+#~ "The wireless plugin collects statistics about wireless signal strength, "
+#~ "noise and quality."
+#~ msgstr ""
+#~ "Trådløs plugin samler statistikk om trådløs signalstyrke, støy og kvalitet."
+
+#~ msgid "Wireless Plugin Configuration"
+#~ msgstr "Trådløs plugin konfigurasjon"
index 03baec4..b64e496 100644 (file)
@@ -3,8 +3,8 @@ msgstr ""
 "Project-Id-Version: LuCI\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-20 09:40+0200\n"
-"PO-Revision-Date: 2012-10-11 13:46+0200\n"
-"Last-Translator: mesiu84 <kmesek84@gmail.com>\n"
+"PO-Revision-Date: 2012-12-15 21:28+0200\n"
+"Last-Translator: razor07b7 <razor07b7@gmail.com>\n"
 "Language-Team: Polish\n"
 "Language: pl\n"
 "MIME-Version: 1.0\n"
@@ -258,6 +258,13 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr "Dopuszczony zakres: 1 do 65535"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+"Zawsze używaj kanał 40MHz nawet jeśli drugi kanał pokrywa się. Użycie tej "
+"opcji nie jest zgodne ze standardem IEEE 802.11n-2009!"
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr ""
 "Zostanie utworzona dodatkowa sieć jeśli zostawisz tą opcję niezaznaczoną."
@@ -892,6 +899,9 @@ msgstr "Aktualizuję !!!"
 msgid "Force"
 msgstr "Wymuś"
 
+msgid "Force 40MHz mode"
+msgstr "Wymuś tryb 40MHz"
+
 msgid "Force CCMP (AES)"
 msgstr "Wymuś CCMP (AES)"
 
@@ -2515,12 +2525,13 @@ msgstr ""
 "To jest lokalny adres końcowy przypisany przez tunnel broker'a, zwykle "
 "kończący się z <code>:2</code>"
 
+# w tłumaczeniu pojawiła się spacja po DHCP</ abbr> co powoduje niepoprawne wyświetlanie się strony z lang PL
 msgid ""
 "This is the only <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
 "abbr> in the local network"
 msgstr ""
-"To jest jedyny serwer <abbr title=\"Dynamic Host Configuration Protocol"
-"\">DHCP</ abbr> w sieci lokalnej"
+"To jest jedyny serwer <abbr title=\"Dynamic Host Configuration "
+"Protocol\">DHCP</abbr> w sieci lokalnej"
 
 msgid "This is the system crontab in which scheduled tasks can be defined."
 msgstr ""
@@ -2781,9 +2792,6 @@ msgstr "Czekanie na wprowadzenie zmian..."
 msgid "Waiting for command to complete..."
 msgstr "Czekanie na wykonanie komendy..."
 
-msgid "Waiting for router..."
-msgstr "Czekanie na router..."
-
 msgid "Warning"
 msgstr "Ostrzeżenie"
 
@@ -2966,6 +2974,9 @@ msgstr "tak"
 msgid "« Back"
 msgstr "« Wróć"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "Czekanie na router..."
+
 #~ msgid "Enable builtin NTP server"
 #~ msgstr "Włącz wbudowany serwer NTP"
 
diff --git a/po/pl/commands.po b/po/pl/commands.po
new file mode 100644 (file)
index 0000000..c9921fd
--- /dev/null
@@ -0,0 +1,92 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index 1f099e4..91485c2 100644 (file)
@@ -36,6 +36,9 @@ msgstr ""
 msgid "Enable"
 msgstr "Włącz"
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr "Wymuszaj aktualizację co"
 
@@ -51,6 +54,9 @@ msgstr "Interfejs"
 msgid "Network"
 msgstr "Sieć"
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr "Hasło"
 
@@ -82,9 +88,3 @@ msgstr "min"
 
 msgid "network"
 msgstr "sieć"
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index 5e00cab..32ccdce 100644 (file)
@@ -36,8 +36,9 @@ msgid ""
 "may fail to find some devices."
 msgstr ""
 "Konfiguruj skanowanie dla urządzeń w wybranych sieciach. Zmniejszanie "
-"\"Limitu czasu\", \"Liczby powtórzeń\" i/lub \"Oczekiwania między żądaniami\" może "
-"przyspieszyć skany, ale może też uniemożliwić wykrycie niektórych urządzeń."
+"\"Limitu czasu\", \"Liczby powtórzeń\" i/lub \"Oczekiwania między żądaniami"
+"\" może przyspieszyć skany, ale może też uniemożliwić wykrycie niektórych "
+"urządzeń."
 
 msgid ""
 "Configure scanning for supported SIP devices on specified networks. "
@@ -45,9 +46,9 @@ msgid ""
 "speed up scans, but also may fail to find some devices."
 msgstr ""
 "Konfiguruj skanowanie dla wspieranych urządzeń SIP w wybranych sieciach. "
-"Zmniejszanie \"Limitu czasu\", \"Liczby powtórzeń\" i/lub \"Oczekiwania między "
-"żądaniami\" może przyspieszyć skany, ale może też uniemożliwić wykrycie "
-"niektórych urządzeń."
+"Zmniejszanie \"Limitu czasu\", \"Liczby powtórzeń\" i/lub \"Oczekiwania "
+"między żądaniami\" może przyspieszyć skany, ale może też uniemożliwić "
+"wykrycie niektórych urządzeń."
 
 msgid "Delete"
 msgstr "Usuń"
@@ -193,6 +194,9 @@ msgstr "Skanuj w poszukiwaniu wspieranych urządzeń SIP w wybranych sieciach."
 msgid "Scanning Configuration"
 msgstr "Ustawienia skanowania"
 
+msgid "Scans for devices on specified networks."
+msgstr "Scans for devices on specified networks."
+
 msgid "Sleep Between Requests"
 msgstr "Pauza pomiędzy zapytaniami"
 
@@ -216,6 +220,3 @@ msgstr "Sprzedawca"
 
 msgid "check other networks"
 msgstr "sprawdź inne sieci"
-
-msgid "Scans for devices on specified networks."
-msgstr "Scans for devices on specified networks."
index 5a6fe62..a944149 100644 (file)
@@ -19,7 +19,8 @@ msgid "Channel"
 msgstr "Kanał"
 
 msgid "Check this to protect your LAN from other nodes or clients"
-msgstr "Zaznacz to, aby chronić Twoją sieć LAN przed innymi węzłami i klientami"
+msgstr ""
+"Zaznacz to, aby chronić Twoją sieć LAN przed innymi węzłami i klientami"
 
 msgid "Configure network"
 msgstr "Skonfiguruj sieć"
index 60183e6..3f8ab07 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 msgid "BSSID"
 msgstr "BSSID"
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr "Ustawienia Podstawowe"
 
@@ -82,6 +85,9 @@ msgstr "Nazwa sieci (ESSID)"
 msgid "Edit index page"
 msgstr "Edytuj stronę główną"
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr "Błąd"
 
@@ -103,6 +109,12 @@ msgstr "Brama"
 msgid "Go to"
 msgstr "Przejdź do"
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr "Cześć ! Witamy w sieci "
 
@@ -115,6 +127,15 @@ msgstr "Strona domowa"
 msgid "Hostname"
 msgstr "Nazwa hosta"
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr "Jeśli zaznaczone domyślna zawartość nie jest widoczna"
 
@@ -145,6 +166,9 @@ msgstr "Zachowaj konfigurację"
 msgid "Latitude"
 msgstr "Szerokość"
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr "Obciążenie"
 
@@ -198,6 +222,9 @@ msgstr "OLSR"
 msgid "Operator"
 msgstr "Zarządca"
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr "Przegląd"
 
@@ -228,6 +255,9 @@ msgstr "Profil (tryb eksperta)"
 msgid "Realname"
 msgstr "Imię i Nazwisko (prawdziwe)"
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr "SSID"
 
@@ -259,6 +289,9 @@ msgstr "Statystyki"
 msgid "Status"
 msgstr "Status"
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr "System"
 
@@ -318,6 +351,9 @@ msgstr "Aktualizacja"
 msgid "Verify downloaded images"
 msgstr "Sprawdź pobrane obrazy"
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -328,6 +364,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr "Przegląd Ustawień WiFi"
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index 410ce63..c0937c0 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 "|| n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr "Kanał"
 
@@ -37,9 +40,18 @@ msgstr "DHCP automatycznie przypisze adresy IP klientom"
 msgid "Enable DHCP"
 msgstr "Włącz DHCP"
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr "Ustawienia ogólne"
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -52,9 +64,17 @@ msgstr "Interfejsy"
 msgid "Mesh IP address"
 msgstr "Adres Mesh IP"
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr "Kreator Mesh"
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr "Chroń LAN"
 
@@ -64,6 +84,9 @@ msgstr ""
 "Zaznacz tę opcję aby inni użytkownicy mogli używać twojego połączenia do "
 "korzystania z internetu"
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr "Współdziel swoje połączenie internetowe"
 
@@ -82,6 +105,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr "Podany adres IP nie należy do zakresu sieci mesh"
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index f07fb49..b4a8a6f 100644 (file)
@@ -99,7 +99,8 @@ msgstr "Kontener główny (root):"
 msgid ""
 "Serial number the miniDLNA daemon will report to clients in its XML "
 "description."
-msgstr "Numer seryjny, który demon miniDLNA zgłosi klientom w swoim opisie XML."
+msgstr ""
+"Numer seryjny, który demon miniDLNA zgłosi klientom w swoim opisie XML."
 
 msgid ""
 "Set this if you want to customize the name that shows up on your clients."
@@ -148,9 +149,9 @@ msgid ""
 "(eg. media_dir=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."
+"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."
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "Podaj ścieżkę do gniazda (socketu) miniSSDPd."
@@ -173,8 +174,7 @@ msgstr "Usługa miniDLNA nie jest włączona."
 
 msgid "This is a list of file names to check for when searching for album art."
 msgstr ""
-"To jest lista nazw plików do sprawdzenia podczas wyszukiwania okładki "
-"albumu."
+"To jest lista nazw plików do sprawdzenia podczas wyszukiwania okładki albumu."
 
 msgid "Video"
 msgstr "Wideo"
index e826842..5904aed 100644 (file)
@@ -63,7 +63,8 @@ msgstr "Odstęp pomiędzy próbami monitoringu"
 
 msgid ""
 "Health Monitor detects and corrects network changes and failed connections."
-msgstr "Monitor stanu wykrywa i koryguje zmiany sieci oraz nieudane połączenia."
+msgstr ""
+"Monitor stanu wykrywa i koryguje zmiany sieci oraz nieudane połączenia."
 
 msgid "KO"
 msgstr "KO"
index 1b894dc..362ebd2 100644 (file)
@@ -177,8 +177,8 @@ msgid ""
 "interface broadcast IP."
 msgstr ""
 "Adres rozgłoszeniowy (broadcast) IPv4 dla wychodzących pakietów OLSR. "
-"Przydatnym przykładem byłoby 255.255.255.255. Domyślna wartość to \"0.0.0.0\" "
-"- jest wtedy używany adres rozgłoszeniowy interfejsu."
+"Przydatnym przykładem byłoby 255.255.255.255. Domyślna wartość to \"0.0.0.0"
+"\" - jest wtedy używany adres rozgłoszeniowy interfejsu."
 
 msgid "IPv4 source"
 msgstr "Źródło IPv4"
@@ -187,8 +187,8 @@ msgid ""
 "IPv4 src address for outgoing OLSR packages. Default is \"0.0.0.0\", which "
 "triggers usage of the interface IP."
 msgstr ""
-"Adres źródłowy IPv4 dla wychodzących pakietów. Domyślna wartość to \"0.0.0.0\" "
-"- jest wtedy używany adres IP interfejsu."
+"Adres źródłowy IPv4 dla wychodzących pakietów. Domyślna wartość to \"0.0.0.0"
+"\" - jest wtedy używany adres IP interfejsu."
 
 msgid "IPv6"
 msgstr "IPv6"
@@ -245,7 +245,8 @@ msgid ""
 "\"mesh\"."
 msgstr ""
 "Tryb interfejsu jest używany, aby zapobiec niepotrzebnemu przekazywaniu "
-"pakietów. Prawidłowe tryby to \"mesh\" i \"ether\". Domyślna wartość to \"mesh\"."
+"pakietów. Prawidłowe tryby to \"mesh\" i \"ether\". Domyślna wartość to "
+"\"mesh\"."
 
 msgid "Interfaces"
 msgstr "Interfejsy"
@@ -565,8 +566,8 @@ msgid "Topology"
 msgstr "Topologia"
 
 msgid ""
-"Type of service value for the IP header of control traffic. Default is "
-"\"16\"."
+"Type of service value for the IP header of control traffic. Default is \"16"
+"\"."
 msgstr ""
 
 msgid "Unable to connect to the OLSR daemon!"
index 1faa5c3..f84173e 100644 (file)
@@ -92,9 +92,9 @@ msgid ""
 "Enter this hostname (or hostname:port) in the Server/Registrar setting of "
 "SIP devices you will use from a remote location (they will work locally too)."
 msgstr ""
-"Podaj tę nazwę hosta (lub parę nazwa hosta:port) w ustawieniach "
-"serwera/rejestratora urządzeń SIP których będziesz używać z zewnątrz (będą "
-"też działać lokalnie)."
+"Podaj tę nazwę hosta (lub parę nazwa hosta:port) w ustawieniach serwera/"
+"rejestratora urządzeń SIP których będziesz używać z zewnątrz (będą też "
+"działać lokalnie)."
 
 msgid "External SIP Port"
 msgstr "Zewnętrzny port SIP"
@@ -124,8 +124,8 @@ msgstr ""
 "Dla każdego użytkownika z prawem wykonywania połączeń wychodzących możesz "
 "ograniczyć których operatorów mogą używać do tych połączeń. Domyślnie każdy "
 "użytkownik może używać dowolnego operatora. Użytkownik musi mieć prawo "
-"wykonywania połączeń wychodzących ustawione na stronie \"Konta użytkowników\", "
-"aby pojawić się na poniższej liście. Podaj operatorów VoIP w formacie "
+"wykonywania połączeń wychodzących ustawione na stronie \"Konta użytkowników"
+"\", aby pojawić się na poniższej liście. Podaj operatorów VoIP w formacie "
 "nazwa.użytkownika@jakaś.nazwa.hosta, tak jak są wypisani w \"Połączeniach "
 "wychodzących\" powyżej. Łatwiej jest skopiować powyższych operatorów. "
 "Nieprawidłowe wpisy, włącznie z operatorami bez prawa do połączeń "
index bb73a1a..56bf3c2 100644 (file)
@@ -176,8 +176,7 @@ msgstr "Zachowaj"
 
 msgid "Splash rules are integrated in this firewall zone"
 msgstr ""
-"Reguły komunikatu (Splash) są integrowane z ustawieniami firewalla tej "
-"strefy"
+"Reguły komunikatu (Splash) są integrowane z ustawieniami firewalla tej strefy"
 
 msgid "Splashtext"
 msgstr "Tekst komunikatu (Splash)"
index 1868b75..65c383c 100644 (file)
@@ -70,7 +70,7 @@ msgid "Collectd Settings"
 msgstr "Ustawienia Collectd"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -117,6 +117,9 @@ msgstr "Zużycie przestrzeni dyskowej"
 msgid "Disk Usage"
 msgstr "Użycie dysku"
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr "Przedział czasu wyświetlania »"
 
@@ -194,12 +197,6 @@ msgstr "Ignoruj adresy źródłowe"
 msgid "Incoming interface"
 msgstr "Interfejs przychodzący"
 
-msgid "Installed network plugins:"
-msgstr "Zainstalowane wtyczki sieciowe:"
-
-msgid "Installed output plugins:"
-msgstr "Zainstalowane wtyczki wyjścia:"
-
 msgid "Interface Plugin Configuration"
 msgstr "Konfiguracja wtyczki Interfejs"
 
@@ -295,13 +292,6 @@ msgstr "Konfiguracja wtyczki Sieć"
 msgid "Network plugins"
 msgstr "Wtyczki sieciowe"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-"Wtyczki sieciowe służą do zbierania informacji o otwartych połączeniach TCP, "
-"ruchu sieciowym na danym interfejsie, regułach iptables itp."
-
 msgid "Network protocol"
 msgstr "Protokoły sieciowe"
 
@@ -326,16 +316,6 @@ msgstr "Interfejs wychodzący"
 msgid "Output plugins"
 msgstr "Pluginy wyjścia"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-"Pluginy wyjścia dostarczają różnych możliwości przechowywania zgromadzonych "
-"danych. Można włączyć wiele pluginów naraz, na przykład przechowywać dane w "
-"bazach danych RRD i wysyłać je do innych instancji collectd w sieci."
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -436,13 +416,6 @@ msgstr "Obciążenie systemu"
 msgid "System plugins"
 msgstr "Wtyczki systemowe"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-"Wtyczki systemowe zbierają wartości o stanie systemu i użyciu zasobów "
-"urządzenia.:"
-
 msgid "TCP Connections"
 msgstr "Połączenia TCP"
 
@@ -458,6 +431,9 @@ msgstr "TTL dla pakietów ping"
 msgid "Table"
 msgstr "Tabela"
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -521,8 +497,8 @@ msgid ""
 "The iptables plugin will monitor selected firewall rules and collect "
 "informations about processed bytes and packets per rule."
 msgstr ""
-"Wtyczka \"iptables\" monitoruje wybrane reguły firewalla i zbiera statystyki "
-"procesach, bajtach i pakietach przypadających na daną regułę."
+"Wtyczka \"iptables\" monitoruje wybrane reguły firewalla i zbiera statystyki "
+"procesach, bajtach i pakietach przypadających na daną regułę."
 
 msgid ""
 "The irq plugin will monitor the rate of issues per second for each selected "
@@ -540,7 +516,8 @@ msgid "The load plugin collects statistics about the general system load."
 msgstr "Wtyczka \"load\" zbiera statystyki o ogólnych obciążeniu systemu."
 
 msgid "The memory plugin collects statistics about the memory usage."
-msgstr "\"wtyczka \"memory\" zbiera statystyki dotyczące wykorzystania pamięci."
+msgstr ""
+"\"wtyczka \"memory\" zbiera statystyki dotyczące wykorzystania pamięci."
 
 msgid ""
 "The netlink plugin collects extended informations like qdisc-, class- and "
@@ -578,9 +555,9 @@ msgid ""
 "\">Collectd</a> and uses <a href=\"http://oss.oetiker.ch/rrdtool/\">RRD "
 "Tool</a> to render diagram images from collected data."
 msgstr ""
-"Statystyki bazuja na <a href=\"http://collectd.org/index.shtml\">Collectd</a> "
-"oraz wykorzystują <a href=\"http://oss.oetiker.ch/rrdtool/\">RRD Tool</a> do "
-"generowania diagramów i wykresów z zebranych danych."
+"Statystyki bazuja na <a href=\"http://collectd.org/index.shtml\">Collectd</"
+"a> oraz wykorzystują <a href=\"http://oss.oetiker.ch/rrdtool/\">RRD Tool</a> "
+"do generowania diagramów i wykresów z zebranych danych."
 
 msgid ""
 "The tcpconns plugin collects informations about open tcp connections on "
@@ -595,12 +572,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-"Wtyczka \"wireless\" zbiera dane o sile sygnału, zakłóceniach i jakości WiFi."
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -612,6 +583,15 @@ msgstr "Ta sekcja określa do jakich serwerów zebrane dane zostaną wysłane."
 msgid "Try to lookup fully qualified hostname"
 msgstr ""
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr "UnixSock"
 
@@ -630,9 +610,6 @@ msgstr ""
 msgid "Wireless"
 msgstr "WiFi"
 
-msgid "Wireless Plugin Configuration"
-msgstr "konfiguracja wtyczki WiFi"
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
@@ -656,3 +633,42 @@ msgstr ""
 
 msgid "server interfaces"
 msgstr ""
+
+#~ msgid "Installed network plugins:"
+#~ msgstr "Zainstalowane wtyczki sieciowe:"
+
+#~ msgid "Installed output plugins:"
+#~ msgstr "Zainstalowane wtyczki wyjścia:"
+
+#~ msgid ""
+#~ "Network plugins are used to collect information about open tcp "
+#~ "connections, interface traffic, iptables rules etc."
+#~ msgstr ""
+#~ "Wtyczki sieciowe służą do zbierania informacji o otwartych połączeniach TCP, "
+#~ "ruchu sieciowym na danym interfejsie, regułach iptables itp."
+
+#~ msgid ""
+#~ "Output plugins provide different possibilities to store collected data. "
+#~ "It is possible to enable multiple plugin at one, for example to store "
+#~ "collected data in rrd databases and to transmit the data over the network "
+#~ "to other collectd instances."
+#~ msgstr ""
+#~ "Pluginy wyjścia dostarczają różnych możliwości przechowywania zgromadzonych "
+#~ "danych. Można włączyć wiele pluginów naraz, na przykład przechowywać dane w "
+#~ "bazach danych RRD i wysyłać je do innych instancji collectd w sieci."
+
+#~ msgid ""
+#~ "System plugins collecting values about system state and ressource usage "
+#~ "on the device.:"
+#~ msgstr ""
+#~ "Wtyczki systemowe zbierają wartości o stanie systemu i użyciu zasobów "
+#~ "urządzenia.:"
+
+#~ msgid ""
+#~ "The wireless plugin collects statistics about wireless signal strength, "
+#~ "noise and quality."
+#~ msgstr ""
+#~ "Wtyczka \"wireless\" zbiera dane o sile sygnału, zakłóceniach i jakości WiFi."
+
+#~ msgid "Wireless Plugin Configuration"
+#~ msgstr "konfiguracja wtyczki WiFi"
index 924b8d7..8e3bfc7 100644 (file)
@@ -69,8 +69,8 @@ msgid ""
 "Can be either an IP address or range, a domain name or \".\" for any host "
 "without domain"
 msgstr ""
-"Może być adresem lub zakresem adresów IP, nazwą domeny lub \".\" dla dowolnego "
-"hosta bez domeny."
+"Może być adresem lub zakresem adresów IP, nazwą domeny lub \".\" dla "
+"dowolnego hosta bez domeny."
 
 msgid "Configuration"
 msgstr "Konfiguracja"
@@ -185,7 +185,8 @@ msgid "Minimum number of prepared idle processes"
 msgstr "Minimalna liczba przygotowanych bezczynnych procesów"
 
 msgid "Number of idle processes to start when launching Tinyproxy"
-msgstr "Liczba bezczynnych procesów do włączenia podczas uruchamiania Tinyproxy"
+msgstr ""
+"Liczba bezczynnych procesów do włączenia podczas uruchamiania Tinyproxy"
 
 msgid "Plaintext file with URLs or domains to filter. One entry per line"
 msgstr ""
index f06162b..99085ba 100644 (file)
@@ -3,8 +3,8 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2012-04-19 21:20+0200\n"
-"PO-Revision-Date: 2012-10-11 14:23+0200\n"
-"Last-Translator: mesiu84 <kmesek84@gmail.com>\n"
+"PO-Revision-Date: 2012-10-15 22:58+0200\n"
+"Last-Translator: halinka1125 <halinka1125@op.pl>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: pl\n"
 "MIME-Version: 1.0\n"
@@ -110,8 +110,9 @@ msgstr "Ustawienia globalne"
 msgid "Idle seeding limit"
 msgstr ""
 
+#, fuzzy
 msgid "Idle seeding limit enabled"
-msgstr ""
+msgstr "Włączony limit transferu podczas bezczynności"
 
 msgid "Incomplete directory"
 msgstr "Niekompletny katalog"
@@ -169,20 +170,23 @@ msgstr "Limit peer'a dla torrenta"
 msgid "Peer port"
 msgstr "Port peer"
 
+#, fuzzy
 msgid "Peer port random high"
-msgstr ""
+msgstr "Maksymalny losowany port peer`a"
 
+#, fuzzy
 msgid "Peer port random low"
-msgstr ""
+msgstr "Minimalny losowany port peer`a"
 
+#, fuzzy
 msgid "Peer port random on start"
-msgstr ""
+msgstr "Losowy port peer`a przy starcie"
 
 msgid "Peer settings"
 msgstr "Ustawienia peer"
 
 msgid "Peer socket tos"
-msgstr ""
+msgstr "Typ gniazda <abbr title=\"Type-Of-Service w TCP\">TOS</abbr> peer`a"
 
 msgid "Port forwarding enabled"
 msgstr "Przekazywanie portów włączone"
@@ -194,10 +198,10 @@ msgid "Prefetch enabled"
 msgstr "Pobieranie wstępne włączone"
 
 msgid "Queue stalled enabled"
-msgstr ""
+msgstr "Blokada kolejki włączona"
 
 msgid "Queue stalled minutes"
-msgstr ""
+msgstr "Blokada kolejki w min."
 
 msgid "Queueing"
 msgstr "Kolejkowanie"
@@ -208,8 +212,9 @@ msgstr "Adres URL RPC"
 msgid "RPC authentication required"
 msgstr "Wymagana autoryzacja RPC"
 
+#, fuzzy
 msgid "RPC bind address"
-msgstr ""
+msgstr "Adres węzła RPC"
 
 msgid "RPC enabled"
 msgstr "RPC włączone"
@@ -247,14 +252,19 @@ msgstr "Włączaj demona jako użytkownik"
 msgid "Scheduling"
 msgstr "Harmonogramowanie"
 
+#, fuzzy
 msgid "Scrape paused torrents enabled"
-msgstr ""
+msgstr "Zdzieranie wstrzymanych torentów włączone"
 
+#, fuzzy
 msgid "Script torrent done enabled"
 msgstr ""
+"skrypty <abbr title=\" torrent done\">wykonano torrenta</abbr> włączone"
 
+#, fuzzy
 msgid "Script torrent done filename"
 msgstr ""
+"Nazwa pliku skryptu <abbr title=\" torrent done\">wykonano torrenta</abbr>"
 
 msgid "Seed queue enabled"
 msgstr "Kolejkowanie Seed'ów włączone"
@@ -287,7 +297,6 @@ msgstr ""
 msgid "Trash original torrent files"
 msgstr "Usuń oryginalne pliki torrent"
 
-#, fuzzy
 msgid "Upload slots per torrent"
 msgstr "Liczba połączeń na plik torrent - wysyłanie"
 
index 9a4cd79..559a85e 100644 (file)
@@ -6,6 +6,7 @@ msgstr ""
 "PO-Revision-Date: 2009-05-19 17:20+0200\n"
 "Last-Translator: Jose Monteiro <jm@unimos.net>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -238,6 +239,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr ""
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr ""
 
@@ -834,6 +840,9 @@ msgstr ""
 msgid "Force"
 msgstr "Forçar"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr ""
 
@@ -2615,9 +2624,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr ""
-
 msgid "Warning"
 msgstr ""
 
diff --git a/po/pt/commands.po b/po/pt/commands.po
new file mode 100644 (file)
index 0000000..0e9e65d
--- /dev/null
@@ -0,0 +1,91 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index ce1b52c..01e88cb 100644 (file)
@@ -37,6 +37,9 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr "Forçar actualização a cada"
 
@@ -53,6 +56,9 @@ msgstr ""
 msgid "Network"
 msgstr ""
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr ""
 
@@ -85,9 +91,3 @@ msgstr ""
 
 msgid "network"
 msgstr ""
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index 5ff7d3b..7161955 100644 (file)
@@ -178,6 +178,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr ""
+
 msgid "Sleep Between Requests"
 msgstr ""
 
@@ -201,6 +204,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
index 31f57db..495d111 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 msgid "BSSID"
 msgstr ""
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr ""
 
@@ -81,6 +84,9 @@ msgstr ""
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr ""
 
@@ -102,6 +108,12 @@ msgstr ""
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr "Olá e benvindo à rede "
 
@@ -114,6 +126,15 @@ msgstr ""
 msgid "Hostname"
 msgstr ""
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -144,6 +165,9 @@ msgstr ""
 msgid "Latitude"
 msgstr ""
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -195,6 +219,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -225,6 +252,9 @@ msgstr ""
 msgid "Realname"
 msgstr "Nome"
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -254,6 +284,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -303,6 +336,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -313,6 +349,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index f035cf4..180d771 100644 (file)
@@ -1,3 +1,6 @@
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr ""
 
@@ -19,9 +22,18 @@ msgstr ""
 msgid "Enable DHCP"
 msgstr ""
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr ""
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -32,9 +44,17 @@ msgstr ""
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr ""
 
@@ -42,6 +62,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -56,6 +79,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index c507f4a..45564fd 100644 (file)
@@ -7,6 +7,7 @@ msgstr ""
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -67,7 +68,7 @@ msgid "Collectd Settings"
 msgstr "Configurações do Collectd"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -114,6 +115,9 @@ msgstr "Utilização de espaço em disco"
 msgid "Disk Usage"
 msgstr "Utilização do Disco"
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr "Mostrar intervalo »"
 
@@ -191,12 +195,6 @@ msgstr "Ignorar endereços de origem"
 msgid "Incoming interface"
 msgstr "Interface de entrada"
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr "Configuração do plugin Interface"
 
@@ -290,11 +288,6 @@ msgstr "Configuração do plugin Rede"
 msgid "Network plugins"
 msgstr "Plugins de rede"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr "Protocolo de rede"
 
@@ -319,13 +312,6 @@ msgstr "Interface de saída"
 msgid "Output plugins"
 msgstr "Plugins de saída"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -425,11 +411,6 @@ msgstr "Carga do Sistema"
 msgid "System plugins"
 msgstr "Plugis de Sistema"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr "Conexões TCP"
 
@@ -445,6 +426,9 @@ msgstr "TTL para os pacotes do ping"
 msgid "Table"
 msgstr "Tabela"
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -605,13 +589,6 @@ msgstr ""
 "coletados a partir de uma instância do collectd."
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-"O plugin wireless coleta estatísticas sobre o nível de sinal wireless, o "
-"ruído e qualidade."
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -627,6 +604,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr "Tentar encontrar o nome do host completo (FQDN)"
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr "UnixSock"
 
@@ -645,9 +631,6 @@ msgstr "Monitoramento no modo verbose"
 msgid "Wireless"
 msgstr "Wireless"
 
-msgid "Wireless Plugin Configuration"
-msgstr "Configuração do plugin Wireless"
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
@@ -671,3 +654,13 @@ msgstr "segundos; vários valores, separar com espaço"
 
 msgid "server interfaces"
 msgstr "Interfaces do servidor"
+
+#~ msgid ""
+#~ "The wireless plugin collects statistics about wireless signal strength, "
+#~ "noise and quality."
+#~ msgstr ""
+#~ "O plugin wireless coleta estatísticas sobre o nível de sinal wireless, o "
+#~ "ruído e qualidade."
+
+#~ msgid "Wireless Plugin Configuration"
+#~ msgstr "Configuração do plugin Wireless"
index 75e27fa..bb5d522 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2012-09-27 01:06+0200\n"
+"PO-Revision-Date: 2012-11-11 03:56+0200\n"
 "Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: pt_BR\n"
@@ -172,10 +172,12 @@ msgid "Activate this network"
 msgstr "Ativar esta rede"
 
 msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
-msgstr "Rotas <abbr title=\"Protocolo de Internet Versão 4\">IPv4</abbr> ativas"
+msgstr ""
+"Rotas <abbr title=\"Protocolo de Internet Versão 4\">IPv4</abbr> ativas"
 
 msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
-msgstr "Rotas <abbr title=\"Protocolo de Internet Versão 6\">IPv6</abbr> ativas"
+msgstr ""
+"Rotas <abbr title=\"Protocolo de Internet Versão 6\">IPv6</abbr> ativas"
 
 msgid "Active Connections"
 msgstr "Conexões Ativas"
@@ -255,6 +257,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr "Faixa permitida de 1 a 65535"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "Uma rede adicional será criada se você deixar isto desmarcado."
 
@@ -427,7 +434,7 @@ msgid ""
 "out the <em>create</em> field to define a new network."
 msgstr ""
 "Escolha a rede (s) que deseja anexar a este interface wireless ou preencha o "
-"<em> criar </ em> campo para definir uma nova rede."
+"<em> criar </em> campo para definir uma nova rede."
 
 msgid "Cipher"
 msgstr "Cifra"
@@ -688,9 +695,9 @@ msgid ""
 "Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
 "<abbr title=\"Domain Name System\">DNS</abbr>-Name"
 msgstr ""
-"Não encaminhar consultas <abbr title=\"Sistema de Nomes de "
-"Domínios\">DNS</abbr> sem o nome completo do <abbr title=\"Sistema de Nomes de "
-"Domínios\">DNS</abbr>"
+"Não encaminhar consultas <abbr title=\"Sistema de Nomes de Domínios\">DNS</"
+"abbr> sem o nome completo do <abbr title=\"Sistema de Nomes de Domínios"
+"\">DNS</abbr>"
 
 msgid "Download and install package"
 msgstr "Baixe e instale o pacote"
@@ -754,7 +761,7 @@ msgid "Enable Jumbo Frame passthrough"
 msgstr "Ativar o encaminhamento de quadros jumbos (Jumbo Frames)"
 
 msgid "Enable NTP client"
-msgstr ""
+msgstr "Ativar o cliente <abbr title=\"Network Time Protocol\">NTP</abbr>"
 
 msgid "Enable TFTP server"
 msgstr "Ativar servidor TFTP"
@@ -882,6 +889,9 @@ msgstr "Gravando na flash..."
 msgid "Force"
 msgstr "Forçar"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr "Forçar CCMP (AES)"
 
@@ -974,7 +984,7 @@ msgid ""
 "Here you can configure the basic aspects of your device like its hostname or "
 "the timezone."
 msgstr ""
-"Aqui você pode configurar os aspectos básicos do seu equipamento,  como o "
+"Aqui você pode configurar os aspectos básicos do seu equipamento, como o "
 "nome do equipamento ou o fuso horário."
 
 msgid ""
@@ -1312,8 +1322,8 @@ msgstr ""
 
 msgid "List of hosts that supply bogus NX domain results"
 msgstr ""
-"Lista de servidores <abbr title=\"Domain Name System\">DNS</abbr> que fornecem "
-"resultados errados para consultas a domínios inexistentes (NX)"
+"Lista de servidores <abbr title=\"Domain Name System\">DNS</abbr> que "
+"fornecem resultados errados para consultas a domínios inexistentes (NX)"
 
 msgid "Listen only on the given interface or, if unspecified, on all"
 msgstr ""
@@ -1631,8 +1641,8 @@ msgstr ""
 "Nesta página pode configurar as interfaces de rede. Esta interface pode "
 "formar uma ponte juntando várias interfaces. Para isto, marque o campo "
 "\"Juntar interfaces em uma ponte\" e informar as várias interfaces de rede. "
-"Pode também usar a notação para <abbr title=\"Rede Local Virtual\">VLAN</abbr> "
-"<samp>INTERFACE.VLANNR</samp> (<abbr title=\"por exemplo\">ex.</abbr>: "
+"Pode também usar a notação para <abbr title=\"Rede Local Virtual\">VLAN</"
+"abbr> <samp>INTERFACE.VLANNR</samp> (<abbr title=\"por exemplo\">ex.</abbr>: "
 "<samp>eth0.1</samp>)."
 
 msgid "On-State Delay"
@@ -1837,7 +1847,7 @@ msgid "Protocol support is not installed"
 msgstr "O suporte ao protocolo não está instalado"
 
 msgid "Provide NTP server"
-msgstr ""
+msgstr "Fornecer servidor <abbr title=\"Network Time Protocol\">NTP</abbr>"
 
 msgid "Provide new network"
 msgstr "Prover nova rede"
@@ -2422,13 +2432,13 @@ msgid ""
 "segments. Often there is by default one Uplink port for a connection to the "
 "next greater network like the internet and other ports for a local network."
 msgstr ""
-"As portas de rede sobre este dispositivo pode ser combinadas com diversas "
-"<abbr Área title=\"Virtual local Network\"> VLAN </ abbr> s em que os "
-"computadores podem se comunicar diretamente uns com os outros. <abbr title="
-"\"Virtual local Network\"> VLAN </ abbr> s são muitas vezes utilizados para "
-"separar diferentes segmentos de rede. Muitas vezes é padrão uma porta Uplink "
-"para a conexão com a próxima maior rede como a Internet e outras portas para "
-"uma rede local."
+"As portas de rede neste dispositivo podem ser configuradas em diversas <abbr "
+"title=\"Virtual local Network\">VLAN</abbr>s nas quais computadores em uma "
+"mesma <abbr title=\"Virtual local Network\">VLAN</abbr> podem se comunicar "
+"diretamente. <abbr title=\"Virtual local Network\">VLAN</abbr>s são muitas "
+"vezes utilizadas para separar diferentes segmentos de rede. Em geral, existe "
+"uma porta para o enlace superior (uplink) e as demais portas são utilizadas "
+"para a rede local."
 
 msgid "The selected protocol needs a device assigned"
 msgstr "O protocolo selecionado necessita estar associado a um dispositivo"
@@ -2446,7 +2456,7 @@ msgid ""
 "address of your computer to reach the device again, depending on your "
 "settings."
 msgstr ""
-"O sistema está  gravando o firmware para a flash.<br /> NÃO DESLIGUE O "
+"O sistema está gravando o firmware para a flash.<br /> NÃO DESLIGUE O "
 "EQUIPAMENTO!<br /> Espere alguns minutos até tentar reconectar. Dependendo "
 "da sua configuração, pode ser necessário renovar o endereço do seu "
 "computador para poder conectar novamente ao roteador."
@@ -2776,13 +2786,10 @@ msgstr ""
 "do hostapd (para modo AP ou ad-hoc)."
 
 msgid "Waiting for changes to be applied..."
-msgstr "À espera de mudanças a serem aplicadas ..."
+msgstr "Esperando a aplicação das mudanças..."
 
 msgid "Waiting for command to complete..."
-msgstr "À espera pelos comandos  serem completados ..."
-
-msgid "Waiting for router..."
-msgstr "Esperando pelo roteador..."
+msgstr "Esperando o término do comando..."
 
 msgid "Warning"
 msgstr "Atenção"
@@ -2968,6 +2975,9 @@ msgstr "sim"
 msgid "« Back"
 msgstr "« Voltar"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "Esperando pelo roteador..."
+
 #~ msgid "Enable builtin NTP server"
 #~ msgstr "Ativar o servidor NTP embutido"
 
diff --git a/po/pt_BR/commands.po b/po/pt_BR/commands.po
new file mode 100644 (file)
index 0000000..08b3d37
--- /dev/null
@@ -0,0 +1,91 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index 1964bbc..1921b93 100644 (file)
@@ -3,15 +3,15 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-02 13:44+0100\n"
-"PO-Revision-Date: 2011-10-08 03:45+0200\n"
-"Last-Translator: luizluca <luizluca@gmail.com>\n"
+"PO-Revision-Date: 2012-11-03 07:02+0200\n"
+"Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Check for changed IP every"
 msgstr "Verifique por alterações no endereço IP a cada"
@@ -35,6 +35,9 @@ msgstr ""
 msgid "Enable"
 msgstr "Habilitar"
 
+msgid "Event interface"
+msgstr "Interface de eventos"
+
 msgid "Force update every"
 msgstr "Forçar atualização a cada"
 
@@ -50,6 +53,10 @@ msgstr "Interface"
 msgid "Network"
 msgstr "Rede"
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+"Na subida de qual interface que o processo do script ddns deve ser iniciado"
+
 msgid "Password"
 msgstr "Senha"
 
@@ -81,9 +88,3 @@ msgstr "min"
 
 msgid "network"
 msgstr "rede"
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index 837d830..53face0 100644 (file)
@@ -192,6 +192,9 @@ msgstr "Busca por dispositivos com suporte a SIP em redes especificadas."
 msgid "Scanning Configuration"
 msgstr "Configuração de busca"
 
+msgid "Scans for devices on specified networks."
+msgstr "Busca por dispositivos nas redes especificadas."
+
 msgid "Sleep Between Requests"
 msgstr "Espera Entre Requisições"
 
@@ -215,6 +218,3 @@ msgstr "Fabricante"
 
 msgid "check other networks"
 msgstr "verifique outras redes"
-
-msgid "Scans for devices on specified networks."
-msgstr "Busca por dispositivos nas redes especificadas."
index 0d463d0..00d43bc 100644 (file)
@@ -16,6 +16,9 @@ msgstr ""
 msgid "BSSID"
 msgstr "BSSID"
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr "Configurações Básicas"
 
@@ -84,6 +87,9 @@ msgstr "ESSID"
 msgid "Edit index page"
 msgstr "Edita a página índice"
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr "Erro"
 
@@ -105,6 +111,12 @@ msgstr "Roteador"
 msgid "Go to"
 msgstr "Vá para"
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr "Olá e seja bem-vindo à rede do"
 
@@ -117,6 +129,15 @@ msgstr "Página"
 msgid "Hostname"
 msgstr "Nome do equipamento"
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr "Se selecionado, o conteúdo padrão não é mostrado."
 
@@ -147,6 +168,9 @@ msgstr "Manter a configuração"
 msgid "Latitude"
 msgstr "Latitude"
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr "Carregar"
 
@@ -198,6 +222,9 @@ msgstr "OLSR"
 msgid "Operator"
 msgstr "Operador"
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr "Visão Geral"
 
@@ -228,6 +255,9 @@ msgstr "Perfil (Especialista)"
 msgid "Realname"
 msgstr "Nome Real"
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr "SSID"
 
@@ -259,6 +289,9 @@ msgstr "Estatística"
 msgid "Status"
 msgstr "Estado"
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr "Sistema"
 
@@ -318,6 +351,9 @@ msgstr "Tempo de atividade"
 msgid "Verify downloaded images"
 msgstr "Verifique as imagens baixadas"
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -328,6 +364,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr "Visão Geral da Rede Sem Fio"
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index 720e148..e6a4952 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 "X-Generator: Pootle 2.0.4\n"
 
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr "Canal"
 
@@ -35,9 +38,18 @@ msgstr "O DHCP irá atribuir automaticamente endereços IP para os clientes"
 msgid "Enable DHCP"
 msgstr "Habilitar DHCP"
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr "Configurações Gerais"
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -50,9 +62,17 @@ msgstr "Interfaces"
 msgid "Mesh IP address"
 msgstr "Endereço IP da rede em malha"
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr "Assistente de Configuração da Rede em Malha"
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr "Proteget Rede Local (LAN)"
 
@@ -62,6 +82,9 @@ msgstr ""
 "Selecione isto para permitir que outros usem sua conexão para acessar a "
 "internet."
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr "Compartilhar sua conexão com a internet"
 
@@ -82,6 +105,11 @@ msgstr ""
 "O endereço IP informado não está na faixa de endereços da rede em malha"
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 7c3b51c..ba72b82 100644 (file)
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-10-18 20:39+0200\n"
+"PO-Revision-Date: 2012-11-11 04:01+0200\n"
 "Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
 "Language-Team: none\n"
 "Language: pt_BR\n"
@@ -9,10 +9,10 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Attempts Before WAN Failover"
-msgstr "Tentativas Antes do Contorno à Falha na WAN"
+msgstr "Tentativas Antes da Solução de Contorno da WAN"
 
 msgid "Attempts Before WAN Recovery"
 msgstr "Tentativas Antes da Recuperação da WAN"
index 1ec1cdb..03cf8e6 100644 (file)
@@ -341,11 +341,10 @@ msgstr ""
 "Algoritmo de qualidade do enlace (somente para <abbr title=\"Link Quality, "
 "Qualidade do Enlace\">LQ</abbr> nível 2). <br /><b>etx_float</b>: ETX ponto "
 "flutuante com o envelhecimento exponencial<br /><b>etx_fpm</b> : o mesmo que "
-"etx_float, mas com aritmética inteira<br /><b>etx_ff</b> : ETX freifunk, "
-"uma variante do etx que usa todo tráfego OLSE (ao invés de somente as "
-"saudações) para o cálculo do ETX<br /><b>etx_ffeth</b>: variação "
-"incompatível do etx_ff que permite enlaces ethernet com ETX 0.1.<br />O "
-"padrão é \"etx_ff\""
+"etx_float, mas com aritmética inteira<br /><b>etx_ff</b> : ETX freifunk, uma "
+"variante do etx que usa todo tráfego OLSE (ao invés de somente as saudações) "
+"para o cálculo do ETX<br /><b>etx_ffeth</b>: variação incompatível do etx_ff "
+"que permite enlaces ethernet com ETX 0.1.<br />O padrão é \"etx_ff\""
 
 msgid ""
 "Link quality level switch between hopcount and cost-based (mostly ETX) "
@@ -422,8 +421,8 @@ msgstr "Limiar do NAT"
 
 msgid "NLQ"
 msgstr ""
-"<abbr title=\"Neighbor Link Quality, Qualidade do Enlace do "
-"Vizinho\">NLQ</abbr>"
+"<abbr title=\"Neighbor Link Quality, Qualidade do Enlace do Vizinho\">NLQ</"
+"abbr>"
 
 msgid "Neighbors"
 msgstr "Vizinhos"
@@ -637,10 +636,9 @@ msgid ""
 "length is 64 bits. Default is \"::/0\" (no prefix)."
 msgstr ""
 "Isto pode ser usado para sinalizar o prefixo IPv6 externo do enlace superior "
-"(uplink) para os clientes. Isto pode permitir que um cliente mude o "
-"endereço IPv6 local para usar o roteador IPv6 sem qualquer tradução de "
-"endereços. O tamanho máximo do prefixo é 64 bits. O padrão é \"::/0\" (nenhum "
-"prefixo)."
+"(uplink) para os clientes. Isto pode permitir que um cliente mude o endereço "
+"IPv6 local para usar o roteador IPv6 sem qualquer tradução de endereços. O "
+"tamanho máximo do prefixo é 64 bits. O padrão é \"::/0\" (nenhum prefixo)."
 
 msgid "Timing and Validity"
 msgstr "Temporização e Validade"
index 1f69903..ab77743 100644 (file)
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-09-27 00:39+0200\n"
+"PO-Revision-Date: 2012-11-11 04:03+0200\n"
 "Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
 "Language-Team: none\n"
 "Language: pt_BR\n"
@@ -88,14 +88,14 @@ msgid ""
 "you will use ONLY locally and never from a remote location."
 msgstr ""
 "Entre este endereço IP (ou IP:porta) na configuração de servidor/registrador "
-"dos seus dispositivos SIP que você irá usar SOMENTE localmente e nunca de "
-"um local remoto."
+"dos seus dispositivos SIP que você irá usar SOMENTE localmente e nunca de um "
+"local remoto."
 
 msgid ""
 "Enter this hostname (or hostname:port) in the Server/Registrar setting of "
 "SIP devices you will use from a remote location (they will work locally too)."
 msgstr ""
-"Entre com o nome do equipamento (or equipamento:porta)  na configuração de "
+"Entre com o nome do equipamento (ou equipamento:porta) na configuração de "
 "servidor/Registrar do seus dispositivos SIP que você irá usar de um local "
 "remoto (eles também funcionarão localmente)."
 
@@ -210,10 +210,10 @@ msgstr ""
 "IP e portas específicas, resultando em melhor latência e redimento de som. "
 "Se ativado, será configurada automaticamente pelo PABX uma regra de <abbr "
 "title=\"Quality of Service, Qualidade de serviço\">QoS</abbr> para este "
-"serviço, mas você deve visitar a página de configuração de <abbr "
-"title=\"Quality of Service, Qualidade de serviço\">QoS</abbr> (Rede -> QoS) "
-"para configurar outras configurações críticas de QoS como as velocidades da "
-"sua conexão."
+"serviço, mas você deve visitar a página de configuração de <abbr title="
+"\"Quality of Service, Qualidade de serviço\">QoS</abbr> (Rede -> QoS) para "
+"configurar outras configurações críticas de QoS como as velocidades da sua "
+"conexão."
 
 msgid ""
 "If you have more than one account that can make outgoing calls, you should "
@@ -240,16 +240,16 @@ msgstr ""
 "exemplo, para fazer chamadas para a Alemanha através de um provedor, você "
 "pode digitar 49. Para fazer chamadas para a América do Norte, você pode "
 "entrar 1NXXNXXXXXX. Se um de seus provedores pode fazer chamadas locais para "
-"um código de área como Nova York (646), você pode entrar com 646NXXXXXX "
-"para esse provedor. Você deve deixar uma conta com uma lista vazia para "
-"fazer chamadas com ele por padrão para o caso do prefixo não casar com "
-"nenhum outro fornecedor. O sistema irá substituir automaticamente uma lista "
-"vazia com uma mensagem que os este provedor será utilizado caso nenhuma das "
-"regras dos demais provedores casem. Seja tão específico quanto possível "
-"(isto é 1NXXNXXXXXX é melhor do que 1). Por favor, note que todos os códigos "
-"de discagem internacionais são descartados (por exemplo 00, 011, 010, "
-"0011). As entradas podem ser feitas em uma lista separada por espaços ou por "
-"nova linha."
+"um código de área como Nova York (646), você pode entrar com 646NXXXXXX para "
+"esse provedor. Você deve deixar uma conta com uma lista vazia para fazer "
+"chamadas com ele por padrão para o caso do prefixo não casar com nenhum "
+"outro fornecedor. O sistema irá substituir automaticamente uma lista vazia "
+"com uma mensagem que os este provedor será utilizado caso nenhuma das regras "
+"dos demais provedores casem. Seja tão específico quanto possível (isto é "
+"1NXXNXXXXXX é melhor do que 1). Por favor, note que todos os códigos de "
+"discagem internacionais são descartados (por exemplo 00, 011, 010, 0011). As "
+"entradas podem ser feitas em uma lista separada por espaços ou por nova "
+"linha."
 
 msgid "Incoming Calls"
 msgstr "Chamadas Recebidas"
@@ -320,9 +320,8 @@ msgstr ""
 "escutar. Não escolher o padrão 5060, porque é frequentemente alvo de ataques "
 "de força bruta. Quando terminar, (1) clique em \"Salvar e Aplicar\", e (2) "
 "clique no \"Reiniciar o serviço VoIP\" acima. Finalmente, (3) olhe na seção "
-"\"Contas de Dispositivos SIP/Telefones em Software\"  para atualizar o "
-"endereço e porta do servidor para seu Dispositivos SIP/Telefones em "
-"Software."
+"\"Contas de Dispositivos SIP/Telefones em Software\" para atualizar o "
+"endereço e porta do servidor para seu Dispositivos SIP/Telefones em Software."
 
 msgid "Port Setting for SIP Devices"
 msgstr "Configuração da Porta para Dispositivos SIP"
@@ -436,14 +435,14 @@ msgstr ""
 "SIP, e contas de usuários locais são configurados em \"Contas do Google\", "
 "\"Contas SIP\" e \"Contas de Usuário\" sub-seções. Você deve adicionar pelo "
 "menos uma conta de usuário para este PABX e configurar um dispositivo SIP ou "
-"softphone para usar a conta, a fim de fazer e receber chamadas com o Google "
-"/ SIP contas. Configurando vários usuários permitem que você faça chamadas "
-"gratuitas entre todos os usuários, e partilhar o Google configurado e contas "
-"SIP. Se você tem mais de um Google e contas SIP configurado, você "
+"softphone para usar a conta, a fim de fazer e receber chamadas com o "
+"Google / SIP contas. Configurando vários usuários permitem que você faça "
+"chamadas gratuitas entre todos os usuários, e partilhar o Google configurado "
+"e contas SIP. Se você tem mais de um Google e contas SIP configurado, você "
 "provavelmente deve configurar como as chamadas de e para eles são "
-"encaminhados para a \"Call Routing\" página. Se você está interessado em usar "
-"o seu próprio PABX de qualquer lugar do mundo, então, visitar o \"Remote Uso\" "
-"na seção \"Advanced Settings\" página."
+"encaminhados para a \"Call Routing\" página. Se você está interessado em "
+"usar o seu próprio PABX de qualquer lugar do mundo, então, visitar o "
+"\"Remote Uso\" na seção \"Advanced Settings\" página."
 
 msgid ""
 "This is the name that the VoIP server will use to identify itself when "
@@ -475,10 +474,10 @@ msgid ""
 msgstr ""
 "Este é o local onde você configura suas contas Google (Talk e Voice) para "
 "poder usá-las para realizar ou receber chamadas (conversa por voz e chamadas "
-"para telefones reais). Por favor, realize ao menos uma chamada de voz "
-"usando o plugin do Google Talk, instalável na interface do GMail. Após esta "
-"chamada, saia da sua conta em todos os serviços. Clique em \"Adicionar\" para "
-"adicionar quantas contas você desejar."
+"para telefones reais). Por favor, realize ao menos uma chamada de voz usando "
+"o plugin do Google Talk, instalável na interface do GMail. Após esta "
+"chamada, saia da sua conta em todos os serviços. Clique em \"Adicionar\" "
+"para adicionar quantas contas você desejar."
 
 msgid ""
 "This is where you set up your SIP (VoIP) accounts ts like Sipgate, "
index c367747..1932c9c 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2012-09-27 01:07+0200\n"
+"PO-Revision-Date: 2012-11-11 04:02+0200\n"
 "Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: pt_BR\n"
@@ -68,7 +68,7 @@ msgid "Collectd Settings"
 msgstr "Configurações do Collectd"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -115,6 +115,9 @@ msgstr "Utilização de espaço em disco"
 msgid "Disk Usage"
 msgstr "Utilização do Disco"
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr "Mostrar intervalo »"
 
@@ -193,12 +196,6 @@ msgstr "Ignorar endereços de origem"
 msgid "Incoming interface"
 msgstr "Interface de entrada"
 
-msgid "Installed network plugins:"
-msgstr "Plugins de rede instalados:"
-
-msgid "Installed output plugins:"
-msgstr "Plugins de saída instalados:"
-
 msgid "Interface Plugin Configuration"
 msgstr "Configuração do plugin Interface"
 
@@ -294,13 +291,6 @@ msgstr "Configuração do plugin Rede"
 msgid "Network plugins"
 msgstr "Plugins de rede"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-"Os plugins de rede são utilizados para coletar informações sobre conexões "
-"tcp abertas, tráfego da interface, regras do iptables, etc."
-
 msgid "Network protocol"
 msgstr "Protocolo de rede"
 
@@ -325,17 +315,6 @@ msgstr "Interface de saída"
 msgid "Output plugins"
 msgstr "Plugins de saída"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-"Os plugins de saída proveem diferentes possibilidades para armazenar os "
-"dados coletados. É possível habilitar diversos plugin para, por exemplo, "
-"coletar dados em bancos de dados rrd e transmitir os dados através da rede "
-"para outro serviço collectd."
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -435,13 +414,6 @@ msgstr "Carga do Sistema"
 msgid "System plugins"
 msgstr "Plugins de sistema"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-"Plugins do sistema coletando valores sobre o estado do sistema e uso dos "
-"recursos neste dispositivo.:"
-
 msgid "TCP Connections"
 msgstr "Conexões TCP"
 
@@ -457,6 +429,9 @@ msgstr "TTL para os pacotes do ping"
 msgid "Table"
 msgstr "Tabela"
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -606,7 +581,7 @@ msgid ""
 msgstr ""
 "As estatísticas são baseadas no <a href=\"http://collectd.org/index.shtml"
 "\">Collectd</a> e é utilizado o <a href=\"http://oss.oetiker.ch/rrdtool/"
-"\">RRD Tool</a> para renderização das imagens à partir dos dados coletados."
+"\">RRD Tool</a> para renderização das imagens a partir dos dados coletados."
 
 msgid ""
 "The tcpconns plugin collects informations about open tcp connections on "
@@ -623,13 +598,6 @@ msgstr ""
 "coletados a partir de uma collectd em execução."
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-"O plugin wireless coleta estatísticas sobre o nível de sinal wireless, o "
-"ruído e qualidade."
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -645,6 +613,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr "Tentar encontrar o nome do host completo (FQDN)"
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr "UnixSock"
 
@@ -663,9 +640,6 @@ msgstr "Monitoramento no modo detalhado"
 msgid "Wireless"
 msgstr "Rede Sem Fio (Wireless)"
 
-msgid "Wireless Plugin Configuration"
-msgstr "Configuração do Plugin da Rede Sem Fio (Wireless)"
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr "Configuração do Plugin iwinfo da Rede Sem Fio (Wireless)"
 
@@ -689,3 +663,44 @@ msgstr "segundos; vários valores, separar com espaço"
 
 msgid "server interfaces"
 msgstr "interfaces do servidor"
+
+#~ msgid "Installed network plugins:"
+#~ msgstr "Plugins de rede instalados:"
+
+#~ msgid "Installed output plugins:"
+#~ msgstr "Plugins de saída instalados:"
+
+#~ msgid ""
+#~ "Network plugins are used to collect information about open tcp "
+#~ "connections, interface traffic, iptables rules etc."
+#~ msgstr ""
+#~ "Os plugins de rede são utilizados para coletar informações sobre conexões "
+#~ "tcp abertas, tráfego da interface, regras do iptables, etc."
+
+#~ msgid ""
+#~ "Output plugins provide different possibilities to store collected data. "
+#~ "It is possible to enable multiple plugin at one, for example to store "
+#~ "collected data in rrd databases and to transmit the data over the network "
+#~ "to other collectd instances."
+#~ msgstr ""
+#~ "Os plugins de saída proveem diferentes possibilidades para armazenar os "
+#~ "dados coletados. É possível habilitar diversos plugin para, por exemplo, "
+#~ "coletar dados em bancos de dados rrd e transmitir os dados através da rede "
+#~ "para outro serviço collectd."
+
+#~ msgid ""
+#~ "System plugins collecting values about system state and ressource usage "
+#~ "on the device.:"
+#~ msgstr ""
+#~ "Plugins do sistema coletando valores sobre o estado do sistema e uso dos "
+#~ "recursos neste dispositivo.:"
+
+#~ msgid ""
+#~ "The wireless plugin collects statistics about wireless signal strength, "
+#~ "noise and quality."
+#~ msgstr ""
+#~ "O plugin wireless coleta estatísticas sobre o nível de sinal wireless, o "
+#~ "ruído e qualidade."
+
+#~ msgid "Wireless Plugin Configuration"
+#~ msgstr "Configuração do Plugin da Rede Sem Fio (Wireless)"
index 0851914..e9e530d 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2012-07-06 16:27+0200\n"
-"PO-Revision-Date: 2012-07-06 16:28+0200\n"
+"PO-Revision-Date: 2012-11-11 04:37+0200\n"
 "Last-Translator: Luiz Angelo <luizluca@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: pt_BR\n"
@@ -14,43 +14,43 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid "Alternative download speed"
-msgstr "Velocidade de download alternativo"
+msgstr "Velocidade alternativa para baixar"
 
 msgid "Alternative speed enabled"
-msgstr "Velocidade de download ativado"
+msgstr "Velocidade alternativa ativada"
 
 msgid "Alternative speed time begin"
-msgstr "Tempo de velocidade alternativo começar"
+msgstr "Hora de início da velocidade alternativa"
 
 msgid "Alternative speed time day"
-msgstr "Velocidade alternativa por dia"
+msgstr "Dia da velocidade alternativa"
 
 msgid "Alternative speed time end"
-msgstr "Velocidade alternativa final"
+msgstr "Hora final da velocidade alternativa"
 
 msgid "Alternative speed timing enabled"
-msgstr "Velocidade alternativa tempo ativo"
+msgstr "Temporização da velocidade alternativa habilitada"
 
 msgid "Alternative upload speed"
-msgstr "Alternativo velocidade de upload"
+msgstr "Velocidade de subida alternativa"
 
 msgid "Automatically start added torrents"
-msgstr "Iniciar automaticamente torrents adicionados "
+msgstr "Iniciar automaticamente os torrents adicionados "
 
 msgid "Bandwidth settings"
-msgstr "configurações de largura de banda"
+msgstr "Configurações da velocidade do enlace"
 
 msgid "Binding address IPv4"
-msgstr "Endereço IPv4 Binding"
+msgstr "Endereço de escuta IPv4"
 
 msgid "Binding address IPv6"
-msgstr "Endereço IPv6 Binding"
+msgstr "Endereço de escuta IPv6"
 
 msgid "Block list enabled"
-msgstr "Lista de Bloqueios habilitado"
+msgstr "Lista de Bloqueios habilitada"
 
 msgid "Blocklist URL"
-msgstr "Lista de bloqueio de URL"
+msgstr "URL da lista de bloqueio"
 
 msgid "Blocklists"
 msgstr "Lista de Bloqueio"
@@ -59,31 +59,31 @@ msgid "Cache size in MB"
 msgstr "Tamanho em MB do cache"
 
 msgid "Config file directory"
-msgstr "Configuração de diretório de arquivos"
+msgstr "Diretório dos arquivos de configuração"
 
 msgid "DHT enabled"
-msgstr "DHT Ativado"
+msgstr "DHT habilitado"
 
 msgid "Debug"
-msgstr "Debug"
+msgstr "Depuração"
 
 msgid "Download directory"
-msgstr "Diretório de download "
+msgstr "Diretório de arquivos baixados "
 
 msgid "Download queue enabled"
-msgstr "Fila Download ativado"
+msgstr "Fila para baixar habilitada"
 
 msgid "Download queue size"
-msgstr "Tamanho da fila de Download "
+msgstr "Tamanho da fila para baixar "
 
 msgid "Enable watch directory"
-msgstr "Ativar diretório assistido"
+msgstr "Habilitar monitoramento de diretório"
 
 msgid "Enabled"
-msgstr "Ativar"
+msgstr "Habilitar"
 
 msgid "Encryption"
-msgstr "Criptografar"
+msgstr "Cifragem"
 
 msgid "Error"
 msgstr "Erro"
@@ -101,37 +101,37 @@ msgid "Full"
 msgstr "Cheio"
 
 msgid "Global peer limit"
-msgstr "Limite global de pontos conectados"
+msgstr "Limite global de parceiros conectados"
 
 msgid "Global settings"
-msgstr "Configuração Global "
+msgstr "Configurações Globais"
 
 msgid "Idle seeding limit"
-msgstr "Limite de seeding ocioso"
+msgstr "Limite para parar de semear se ocioso"
 
 msgid "Idle seeding limit enabled"
-msgstr "Limite de seeding ocioso habilitado"
+msgstr "Habilitar limite para parar de semear se ocioso"
 
 msgid "Incomplete directory"
-msgstr "Diretório incompleto"
+msgstr "Diretório de incompletos"
 
 msgid "Incomplete directory enabled"
-msgstr "Diretório incompleto ativado"
+msgstr "Diretório de incompletos habilitado"
 
 msgid "Info"
 msgstr "informação"
 
 msgid "LPD enabled"
-msgstr "LPD ativado"
+msgstr "LPD habilitado"
 
 msgid "Lazy bitfield enabled"
-msgstr "Lazy bitfield ativado"
+msgstr "Envio de campo de bits incompletos habilitado"
 
 msgid "Message level"
-msgstr "nível de mensagem"
+msgstr "Nível de mensagens"
 
 msgid "Miscellaneous"
-msgstr "diverso"
+msgstr "Diversos"
 
 msgid "None"
 msgstr "Nada"
@@ -141,8 +141,8 @@ msgid ""
 "enabled, add a value. For Sunday - 1, Monday - 2, Tuesday - 4, Wednesday - "
 "8, Thursday - 16, Friday - 32, Saturday - 64"
 msgstr ""
-"Número / bitfield. Comece com 0, então para cada dia você quer que o "
-"programador habilitado, adicione um valor. Para domingo - 1, segunda-feira - "
+"Número/Campo de bits. Comece com 0 e, então, para cada dia você quer o "
+"agendador habilitado, adicione um valor. Para domingo - 1, segunda-feira - "
 "2, terça-feira - 4, quarta-feira - 8, quinta-feira - 16, sexta-feira - 32, "
 "Sábado - 64"
 
@@ -153,49 +153,49 @@ msgid "Open Web Interface"
 msgstr "Abrir interface Web"
 
 msgid "PEX enabled"
-msgstr "PEX ativado"
+msgstr "PEX habilitado"
 
 msgid "Peer Port settings"
-msgstr "Configuração de porta de  peer "
+msgstr "Configuração de porta do parceiro"
 
 msgid "Peer congestion algorithm"
-msgstr "Algoritmo de congestionamento por peer"
+msgstr "Algoritmo de congestionamento dos parceiro"
 
 msgid "Peer limit per torrent"
-msgstr "Limite de torrents por Peer"
+msgstr "Limite de torrents por parceiro"
 
 msgid "Peer port"
-msgstr "Porta de peer"
+msgstr "Porta do parceiro"
 
 msgid "Peer port random high"
-msgstr "Porta  alta randômica do peer "
+msgstr "Limite superior da porta aleatória do parceiro"
 
 msgid "Peer port random low"
-msgstr "Porta baixa randômica do peer"
+msgstr "Limite inferior da porta aleatória do parceiro"
 
 msgid "Peer port random on start"
-msgstr "Porta inicial randômica  do peer"
+msgstr "Porta aleatória inicial do parceiro"
 
 msgid "Peer settings"
-msgstr "Configuração do peer"
+msgstr "Configuração do parceiro"
 
 msgid "Peer socket tos"
-msgstr "Peer socket tos"
+msgstr "TOS da conexão do parceiro"
 
 msgid "Port forwarding enabled"
-msgstr "Porta encaminhando (forwarding) ativada"
+msgstr "Encaminhamento de porta ativado"
 
 msgid "Preferred"
-msgstr "preferido"
+msgstr "Preferencial"
 
 msgid "Prefetch enabled"
-msgstr "prefetch ativado"
+msgstr "Adiantamento de leitura de disco habilitado"
 
 msgid "Queue stalled enabled"
-msgstr "Fila parada ativada"
+msgstr "Parada de fila habilitada"
 
 msgid "Queue stalled minutes"
-msgstr "Fila parado minutos"
+msgstr "Parada de fila em minutos"
 
 msgid "Queueing"
 msgstr "Filas"
@@ -204,92 +204,91 @@ msgid "RPC URL"
 msgstr "RPC URL"
 
 msgid "RPC authentication required"
-msgstr "RPC autenticação requerida "
+msgstr "RPC requer autenticação "
 
 msgid "RPC bind address"
-msgstr "RPC endereço de ligação"
+msgstr "Endereço de escuta do RPC"
 
 msgid "RPC enabled"
-msgstr "RPC Ativado"
+msgstr "RPC habilitado"
 
 msgid "RPC password"
-msgstr "RPC Senha"
+msgstr "Senha do RPC"
 
 msgid "RPC port"
-msgstr "RPC porta"
+msgstr "Porta do RPC"
 
 msgid "RPC settings"
-msgstr "RPC configuração"
+msgstr "Configuração do RPC"
 
 msgid "RPC username"
-msgstr "RPC nome de usuario (login)"
+msgstr "Nome do usuario do RPC"
 
 msgid "RPC whitelist"
-msgstr "RPC lista permitida"
+msgstr "Lista branca do RPC"
 
 msgid "RPC whitelist enabled"
-msgstr "RPC lista permitida ativado"
+msgstr "Lista branca do RPC habilitada"
 
 msgid "Ratio limit"
-msgstr "limite Relação"
+msgstr "Limite da relação"
 
 msgid "Ratio limit enabled"
-msgstr "limite Relação ativado"
+msgstr "Limite da relação habilitado"
 
 msgid "Rename partial files"
-msgstr "Renomear arquivo parcialmente"
+msgstr "Renomear arquivos parciais"
 
 msgid "Run daemon as user"
-msgstr "Executar daemon como usuário"
+msgstr "Executar serviço como usuário"
 
 msgid "Scheduling"
-msgstr "agendamento"
+msgstr "Agendamento"
 
 msgid "Scrape paused torrents enabled"
-msgstr "Scrape torrents pausados ​​habilitado"
+msgstr "Busca de informações de torrents pausados ​​habilitada"
 
 msgid "Script torrent done enabled"
-msgstr "Torrente Script feito habilitado"
+msgstr "Script de conclusão de torrent habilitado"
 
 msgid "Script torrent done filename"
-msgstr "Torrente Script feito nome do arquivo"
+msgstr "Nome do arquivo do script de conclusão de torrent"
 
 msgid "Seed queue enabled"
-msgstr "Fila de Sementes habilitado"
+msgstr "Fila de semeadura habilitada"
 
 msgid "Seed queue size"
-msgstr "Tamanho da fila de Sementes"
+msgstr "Tamanho da fila de semeadura"
 
 msgid "Speed limit down"
-msgstr "Limite de velocidade down"
+msgstr "Limite inferior de velocidade"
 
 msgid "Speed limit down enabled"
-msgstr "Limite de velocidade down ativado"
+msgstr "Limite inferior de velocidade habilitado"
 
 msgid "Speed limit up"
-msgstr "Limite de velocidade up"
+msgstr "Limite superior de velocidade"
 
 msgid "Speed limit up enabled"
-msgstr "Limite de velocidade up ativado"
+msgstr "Limite superior de velocidade habilitado"
 
 msgid "Transmission"
-msgstr "transmissão"
+msgstr "Transmission"
 
 msgid ""
 "Transmission daemon is a simple bittorrent client, here you can configure "
 "the settings."
 msgstr ""
-"Daemon de transmissão é um cliente BitTorrent simples, aqui você pode "
-"configurar as definições."
+"O Transmission é um cliente BitTorrent simples, aqui você pode configurá-lo."
 
 msgid "Trash original torrent files"
-msgstr "Lixo arquivos torrent originais"
+msgstr "Apague os arquivos torrent originais"
 
 msgid "Upload slots per torrent"
-msgstr "Slots para upload por torrent"
+msgstr "Vagas para conexão de envio por torrent"
 
 msgid "Watch directory"
-msgstr "Assista diretório"
+msgstr "Monitorar diretório"
 
 msgid "in minutes from midnight"
 msgstr "em minutos a partir da meia-noite"
index 6a7406f..b0768f5 100644 (file)
@@ -1,8 +1,8 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2011-10-07 00:21+0200\n"
-"Last-Translator: Daniel <daniel.petre@pitesti.rcs-rds.ro>\n"
+"PO-Revision-Date: 2012-12-01 16:10+0200\n"
+"Last-Translator: cgherman <cgherman@mandrivausers.ro>\n"
 "Language-Team: none\n"
 "Language: ro\n"
 "MIME-Version: 1.0\n"
@@ -10,7 +10,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
 "20)) ? 1 : 2);;\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "(%d minute window, %d second interval)"
 msgstr ""
@@ -40,7 +40,7 @@ msgid "15 Minute Load:"
 msgstr "Incarcarea in ultimele 15 minute"
 
 msgid "40MHz 2nd channel above"
-msgstr ""
+msgstr "40MHz 2 canale de mai jos"
 
 msgid "40MHz 2nd channel below"
 msgstr ""
@@ -49,10 +49,10 @@ msgid "5 Minute Load:"
 msgstr "Incarcarea in ultimele 5 minute"
 
 msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
-msgstr ""
+msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
 
 msgid "<abbr title=\"Domain Name System\">DNS</abbr> query port"
-msgstr ""
+msgstr "<abbr title=\"Domain Name System\">DNS</abbr>port de apelare"
 
 msgid "<abbr title=\"Domain Name System\">DNS</abbr> server port"
 msgstr ""
@@ -63,7 +63,7 @@ msgid ""
 msgstr ""
 
 msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
-msgstr ""
+msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
 msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"
 msgstr "Adresa <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>"
@@ -232,6 +232,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr ""
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr ""
 
@@ -818,6 +823,9 @@ msgstr ""
 msgid "Force"
 msgstr "Forteaza"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr ""
 
@@ -2571,9 +2579,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr "Asteptam dupa router.."
-
 msgid "Warning"
 msgstr "Avertizare"
 
@@ -2745,6 +2750,9 @@ msgstr "da"
 msgid "« Back"
 msgstr "« Inapoi"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "Asteptam dupa router.."
+
 #~ msgid "Active Leases"
 #~ msgstr "Conexiuni dhcp active"
 
diff --git a/po/ro/commands.po b/po/ro/commands.po
new file mode 100644 (file)
index 0000000..2b3a72b
--- /dev/null
@@ -0,0 +1,99 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"PO-Revision-Date: 2012-12-01 16:07+0200\n"
+"Last-Translator: cgherman <cgherman@mandrivausers.ro>\n"
+"Language-Team: none\n"
+"Language: ro\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2);;\n"
+"X-Generator: Pootle 2.0.6\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+"Permite executarea comenzii si descarcarea rezultatului fara o autentificare "
+"anterioara"
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr "Permite utilizatorului sa adauge parametrii in linia de comanda"
+
+msgid "Arguments:"
+msgstr "Parametrii:"
+
+msgid "Binary data not displayed, download instead."
+msgstr "Datele binare nu sunt afisate, descarcale in schimb"
+
+msgid "Code:"
+msgstr "Cod:"
+
+msgid "Collecting data..."
+msgstr "Aduna date..."
+
+msgid "Command"
+msgstr "Comanda"
+
+msgid "Command failed"
+msgstr "Comanda esuata"
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr "Comanda reusita"
+
+msgid "Command:"
+msgstr "Comanda:"
+
+msgid "Configure"
+msgstr "Configureaza"
+
+msgid "Custom Commands"
+msgstr "Comenzi particulare"
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr "Dashboard"
+
+msgid "Description"
+msgstr "Descriere"
+
+msgid "Download"
+msgstr "Descarca"
+
+msgid "Failed to execute command!"
+msgstr "S-a esuat executarea comenzii!!"
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr "Se incarca"
+
+msgid "Public access"
+msgstr "Access public"
+
+msgid "Run"
+msgstr "Ruleaza"
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+"Aceasta pagina permite configurarea de comenzi personale ce pot fi usor "
+"apelate din interfata grafica"
+
+msgid "Waiting for command to complete..."
+msgstr "Astept finalizarea comenzii..."
index 7769f24..03104c3 100644 (file)
@@ -3,22 +3,25 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
+"PO-Revision-Date: 2012-12-01 15:57+0200\n"
+"Last-Translator: cgherman <cgherman@mandrivausers.ro>\n"
 "Language-Team: none\n"
+"Language: ro\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
-"20)) ? 1 : 2;\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
+"20)) ? 1 : 2);;\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "CoovaChilli"
-msgstr ""
+msgstr "CoovaChilli"
 
 msgid "Network Configuration"
-msgstr ""
+msgstr "Configurare retea"
 
 msgid "RADIUS configuration"
-msgstr ""
+msgstr "Configurare RADIUS"
 
 msgid "UAM and MAC Authentication"
-msgstr ""
+msgstr "Autentificare UAM si MAC"
index 6af34ff..cade2fb 100644 (file)
@@ -5,8 +5,8 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-02 13:44+0100\n"
-"PO-Revision-Date: 2011-10-07 00:42+0200\n"
-"Last-Translator: Daniel <daniel.petre@pitesti.rcs-rds.ro>\n"
+"PO-Revision-Date: 2012-12-01 15:59+0200\n"
+"Last-Translator: cgherman <cgherman@mandrivausers.ro>\n"
 "Language-Team: none\n"
 "Language: ro\n"
 "MIME-Version: 1.0\n"
@@ -14,7 +14,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
 "20)) ? 1 : 2);;\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Check for changed IP every"
 msgstr "Verifica pentru adresa IP schimbata la fiecare"
@@ -38,6 +38,9 @@ msgstr ""
 msgid "Enable"
 msgstr "Activeaza"
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr "Forteaza actualizarea la fiecare"
 
@@ -45,7 +48,7 @@ msgid "Force-time unit"
 msgstr "Unitatea de timp la fortare actualizare"
 
 msgid "Hostname"
-msgstr "nume dns"
+msgstr "Nume host"
 
 msgid "Interface"
 msgstr "Interfata"
@@ -53,6 +56,9 @@ msgstr "Interfata"
 msgid "Network"
 msgstr "Retea"
 
+msgid "On which interface up should start the ddns script process."
+msgstr "Pe care interfata trebuie sa porneasca scriptul ddns"
+
 msgid "Password"
 msgstr "Parola"
 
@@ -84,9 +90,3 @@ msgstr "minut(e)"
 
 msgid "network"
 msgstr "retea"
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index 39f50d8..a1cf113 100644 (file)
@@ -182,6 +182,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr ""
+
 msgid "Sleep Between Requests"
 msgstr "Pauza dintre cereri"
 
@@ -205,6 +208,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr "verifica alte retele"
-
-msgid "Scans for devices on specified networks."
-msgstr ""
index 821f2d9..2e7e311 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 msgid "BSSID"
 msgstr ""
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr ""
 
@@ -79,6 +82,9 @@ msgstr ""
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr ""
 
@@ -100,6 +106,12 @@ msgstr ""
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr ""
 
@@ -112,6 +124,15 @@ msgstr ""
 msgid "Hostname"
 msgstr ""
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -138,6 +159,9 @@ msgstr ""
 msgid "Latitude"
 msgstr ""
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -189,6 +213,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -219,6 +246,9 @@ msgstr ""
 msgid "Realname"
 msgstr ""
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -248,6 +278,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -297,6 +330,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -305,6 +341,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index 0ec7bd5..1a6d15f 100644 (file)
@@ -12,6 +12,9 @@ msgstr ""
 "20)) ? 1 : 2);;\n"
 "X-Generator: Pootle 2.0.4\n"
 
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr "Canal"
 
@@ -34,9 +37,18 @@ msgstr "DHCP va aloca automat adrese IP la clienti"
 msgid "Enable DHCP"
 msgstr "Activeaza DHCP"
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr "Setari generale"
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -47,9 +59,17 @@ msgstr "Interfete"
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr "Protejeaza reteaua locala LAN"
 
@@ -59,6 +79,9 @@ msgstr ""
 "Selecteaza aici ca sa permiti si altora sa-ti foloseasca si ei conexiunea ta "
 "de Internet."
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr "Partajeaza cu altii conexiunea ta de Internet"
 
@@ -73,6 +96,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 411ac13..893419f 100644 (file)
@@ -5,8 +5,8 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-14 13:24+0200\n"
-"PO-Revision-Date: 2011-10-07 17:07+0200\n"
-"Last-Translator: Daniel <daniel.petre@pitesti.rcs-rds.ro>\n"
+"PO-Revision-Date: 2012-12-01 16:08+0200\n"
+"Last-Translator: cgherman <cgherman@mandrivausers.ro>\n"
 "Language-Team: none\n"
 "Language: ro\n"
 "MIME-Version: 1.0\n"
@@ -14,7 +14,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
 "20)) ? 1 : 2);;\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Clock Adjustment"
 msgstr "Ajustarea ceasului"
@@ -41,7 +41,7 @@ msgid "Synchronizes the system time"
 msgstr "Sincronizeaza timpul sistemului"
 
 msgid "Time Server"
-msgstr ""
+msgstr "Server de timp"
 
 msgid "Time Servers"
 msgstr "Serverele de timp"
index 6798be7..ff5d564 100644 (file)
@@ -69,7 +69,7 @@ msgid "Collectd Settings"
 msgstr "Setarile Collectd"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -116,6 +116,9 @@ msgstr "Utilizarea spatiului pe disc"
 msgid "Disk Usage"
 msgstr "Utilizarea discului"
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr ""
 
@@ -186,12 +189,6 @@ msgstr ""
 msgid "Incoming interface"
 msgstr ""
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr ""
 
@@ -285,11 +282,6 @@ msgstr ""
 msgid "Network plugins"
 msgstr "Pluginuri de retea"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr ""
 
@@ -314,13 +306,6 @@ msgstr ""
 msgid "Output plugins"
 msgstr "Pluginuri de iesire"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -420,11 +405,6 @@ msgstr "Incarcarea de sistem"
 msgid "System plugins"
 msgstr "Pluginuri de sistem"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr "Conexiuni TCP"
 
@@ -440,6 +420,9 @@ msgstr ""
 msgid "Table"
 msgstr ""
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -558,11 +541,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -574,6 +552,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr "Incearca sa rezolvi numele de domeniu complet"
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr "UnixSock"
 
@@ -592,9 +579,6 @@ msgstr ""
 msgid "Wireless"
 msgstr "Wireless"
 
-msgid "Wireless Plugin Configuration"
-msgstr ""
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
index dbe3f94..e8fb86b 100644 (file)
@@ -1,6 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: ahcp\n"
+"POT-Creation-Date: \n"
 "PO-Revision-Date: 2012-08-15 15:30+0300\n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
@@ -8,10 +9,9 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.6\n"
-"POT-Creation-Date: \n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
 # Ad-Hoc Configuration Protocol - протокол автоматической конфигурации IPv6 и сетей IPv6/IPv4 двойного стека
index 2b15567..6eea0a9 100644 (file)
@@ -254,6 +254,11 @@ msgstr "Разрешить ответы в диапазоне 127.0.0.0/8, на
 msgid "Allowed range is 1 to 65535"
 msgstr "Допустимый диапазон от 1 до 65535"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "Если вы не выберите эту опцию, то будет создана дополнительная сеть."
 
@@ -878,6 +883,9 @@ msgstr "Прошивка..."
 msgid "Force"
 msgstr "Принудительно"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr "Требовать CCMP (AES)"
 
@@ -2752,9 +2760,6 @@ msgstr "Ожидание применения изменений..."
 msgid "Waiting for command to complete..."
 msgstr "Ожидание завершения выполнения команды..."
 
-msgid "Waiting for router..."
-msgstr "Ожидание маршрутизатора..."
-
 msgid "Warning"
 msgstr "Внимание"
 
@@ -2936,6 +2941,9 @@ msgstr "да"
 msgid "« Back"
 msgstr "« Назад"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "Ожидание маршрутизатора..."
+
 #~ msgid "Enable builtin NTP server"
 #~ msgstr "Включить встроенный NTP-сервер"
 
diff --git a/po/ru/commands.po b/po/ru/commands.po
new file mode 100644 (file)
index 0000000..ad2d1e9
--- /dev/null
@@ -0,0 +1,92 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index 00ab3d2..379ff7e 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.6\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index d24c374..558a2a8 100644 (file)
@@ -3,15 +3,15 @@ msgstr ""
 "Project-Id-Version: LuCI: ddns\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-02 13:44+0100\n"
-"PO-Revision-Date: 2012-08-14 22:36+0300\n"
+"PO-Revision-Date: 2012-11-01 21:54+0300\n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
 "Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
@@ -37,6 +37,9 @@ msgstr ""
 msgid "Enable"
 msgstr "Включить"
 
+msgid "Event interface"
+msgstr "Интерфейс события"
+
 msgid "Force update every"
 msgstr "Принудительно обновлять каждые"
 
@@ -52,6 +55,10 @@ msgstr "Интерфейс"
 msgid "Network"
 msgstr "Сеть"
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+"При включении какого интерфейса должен запускаться процесс скрипта DDNS."
+
 msgid "Password"
 msgstr "Пароль"
 
@@ -83,9 +90,3 @@ msgstr "мин"
 
 msgid "network"
 msgstr "сеть"
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index b249490..1abaa8c 100644 (file)
@@ -1,6 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: diag_core\n"
+"POT-Creation-Date: \n"
 "PO-Revision-Date: 2012-08-15 11:44+0300\n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
@@ -8,10 +9,9 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.6\n"
-"POT-Creation-Date: \n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
 msgid "Configure Diagnostics"
index 3d48d98..13d85e8 100644 (file)
@@ -1,6 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: diag_devinfo\n"
+"POT-Creation-Date: \n"
 "PO-Revision-Date: 2012-08-15 18:27+0300\n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
@@ -8,10 +9,9 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
-"POT-Creation-Date: \n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
 msgid "Actions"
@@ -196,6 +196,9 @@ msgstr "Сканировать поддерживаемые SIP-устройст
 msgid "Scanning Configuration"
 msgstr "Конфигурация сканирования"
 
+msgid "Scans for devices on specified networks."
+msgstr "Сканирует устройства в заданных сетях."
+
 msgid "Sleep Between Requests"
 msgstr "Пауза между запросами"
 
@@ -219,6 +222,3 @@ msgstr "Производитель"
 
 msgid "check other networks"
 msgstr "проверить другие сети"
-
-msgid "Scans for devices on specified networks."
-msgstr "Сканирует устройства в заданных сетях."
index 7a3d93f..afc10b9 100644 (file)
@@ -1,6 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: ffwizard\n"
+"POT-Creation-Date: \n"
 "PO-Revision-Date: 2012-08-15 17:17+0300\n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
@@ -8,10 +9,9 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.6\n"
-"POT-Creation-Date: \n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
 msgid "Allow to transfer anonymous statistics about this node"
index 7cd2956..a4ba704 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index b3e4b13..c0dd5ab 100644 (file)
@@ -18,6 +18,9 @@ msgstr ""
 msgid "BSSID"
 msgstr "BSSID"
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr "Базовые настройки"
 
@@ -86,6 +89,9 @@ msgstr "ESSID"
 msgid "Edit index page"
 msgstr "Редактировать главную страницу"
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr "Ошибка"
 
@@ -107,6 +113,12 @@ msgstr "Шлюз"
 msgid "Go to"
 msgstr "Перейти"
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr "Здравствуйте и добро пожаловать в сеть"
 
@@ -119,6 +131,15 @@ msgstr "Домашняя страница"
 msgid "Hostname"
 msgstr "Имя хоста"
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr "Если выбрано, содержимое по умолчанию не будет показано."
 
@@ -149,6 +170,9 @@ msgstr "Сохранить конфигурацию"
 msgid "Latitude"
 msgstr "Широта"
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr "Загрузка"
 
@@ -200,6 +224,9 @@ msgstr "OLSR"
 msgid "Operator"
 msgstr "Оператор"
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr "Обзор"
 
@@ -230,6 +257,9 @@ msgstr "Профиль (эксперт)"
 msgid "Realname"
 msgstr "Имя"
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr "SSID"
 
@@ -261,6 +291,9 @@ msgstr "Статистика"
 msgid "Status"
 msgstr "Статус"
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr "Система"
 
@@ -320,6 +353,9 @@ msgstr "Время работы"
 msgid "Verify downloaded images"
 msgstr "Проверять загруженные образы"
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -330,6 +366,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr "Обзор беспроводных сетей"
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index 79e3d84..51f1f6c 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.6\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index 32a5e65..8b08065 100644 (file)
@@ -10,11 +10,14 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr "Канал"
 
@@ -38,9 +41,18 @@ msgstr "DHCP автоматически назначит IP-адреса кли
 msgid "Enable DHCP"
 msgstr "Включить DHCP"
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr "Общие настройки"
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -53,9 +65,17 @@ msgstr "Интерфейсы"
 msgid "Mesh IP address"
 msgstr "IP-адрес ячейки"
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr "Мастер настройки ячеистой сети"
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr "Защитить LAN"
 
@@ -65,6 +85,9 @@ msgstr ""
 "Включите эту опцию, чтобы позволить другим клиентам использовать ваше "
 "подключение к интернету."
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr "Сделать интернет-подключение общедоступным"
 
@@ -84,6 +107,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr "Заданный IP-адрес не находится внутри ячеистой сети"
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index d1e52b8..62ffaca 100644 (file)
@@ -1,16 +1,16 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: minidlna\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
+"Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Language: ru\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
 msgid "Advanced Settings"
index f421383..dcc2e93 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.6\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index d3dde7f..c12d920 100644 (file)
@@ -1,6 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: multiwan\n"
+"POT-Creation-Date: \n"
 "PO-Revision-Date: 2012-08-15 14:05+0300\n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
@@ -8,10 +9,9 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
-"POT-Creation-Date: \n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
 msgid "Attempts Before WAN Failover"
index bfdbed3..229b610 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index 37a8681..5c0f66e 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
@@ -618,8 +618,8 @@ msgid "Topology"
 msgstr "Топология"
 
 msgid ""
-"Type of service value for the IP header of control traffic. Default is "
-"\"16\"."
+"Type of service value for the IP header of control traffic. Default is \"16"
+"\"."
 msgstr ""
 "Значение поля ToS IP -аголовка управляющего трафика. По умолчанию \"16\"."
 
index 6212fbf..7f8afc1 100644 (file)
@@ -3,15 +3,15 @@ msgstr ""
 "Project-Id-Version: LuCI: openvpn\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-08-16 20:01+0300\n"
+"PO-Revision-Date: 2012-11-01 21:58+0300\n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
 "Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
@@ -19,7 +19,7 @@ msgid "%s"
 msgstr "%s"
 
 msgid "'net30', 'p2p', or 'subnet'"
-msgstr "'net30', 'p2p', или 'subnet'"
+msgstr "'net30', 'p2p' или 'subnet'"
 
 msgid "Accept options pushed from server"
 msgstr "Принимать опции, отправленные с сервера"
@@ -382,7 +382,7 @@ msgstr "Пересогласовать ключ канала данных пос
 
 #, fuzzy
 msgid "Replay protection sliding window size"
-msgstr "Ð\97аÑ\89иÑ\82а Ð¾Ñ\82 Ð¿Ð¾Ð²Ñ\82оÑ\80а Ñ\81колÑ\8cзÑ\8fÑ\89его Ñ\80азмеÑ\80а Ð¾ÐºÐ½Ð°"
+msgstr "РазмеÑ\80 Ñ\81колÑ\8cзÑ\8fÑ\89его Ð¾ÐºÐ½Ð° Ð·Ð°Ñ\89иÑ\82Ñ\8b Ð¾Ñ\82 Ð¿Ð¾Ð²Ñ\82оÑ\80ов"
 
 msgid "Require explicit designation on certificate"
 msgstr "Требовать явного указания в сертификате"
index fcc4025..71f30e9 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index b40470f..68a345f 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index 151dca2..ae49c6d 100644 (file)
@@ -1,6 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: pbx-voicemail\n"
+"POT-Creation-Date: \n"
 "PO-Revision-Date: 2012-08-15 17:42+0300\n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
@@ -8,10 +9,9 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
-"POT-Creation-Date: \n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
 msgid "Email Addresses that Receive Voicemail"
index 78e08ab..f1d4968 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index 7a6aa29..ba0592a 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index 80cf471..37cc942 100644 (file)
@@ -1,6 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: radvd\n"
+"POT-Creation-Date: \n"
 "PO-Revision-Date: 2012-08-16 11:37+0300\n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
@@ -8,10 +9,9 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
-"POT-Creation-Date: \n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
 msgid "6to4 interface"
index 6dcc547..82906e3 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index d7ccb0c..14fa6b5 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index ac23581..e0ec9d9 100644 (file)
@@ -70,7 +70,7 @@ msgid "Collectd Settings"
 msgstr "Настройки Collectd"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -116,6 +116,9 @@ msgstr "Использование диска"
 msgid "Disk Usage"
 msgstr "Использование диска"
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr "Показать за промежуток »"
 
@@ -194,12 +197,6 @@ msgstr "Игнорировать адреса-источники"
 msgid "Incoming interface"
 msgstr "Входящий интерфейс"
 
-msgid "Installed network plugins:"
-msgstr "Установленные сетевые модули:"
-
-msgid "Installed output plugins:"
-msgstr "Установленные модули вывода:"
-
 msgid "Interface Plugin Configuration"
 msgstr "Конфигурация модуля Interface"
 
@@ -295,13 +292,6 @@ msgstr "Конфигурация модуля Network"
 msgid "Network plugins"
 msgstr "Сетевые модули"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-"Сетевые модули используются для сбора информации об открытых TCP-"
-"соединениях, трафике, правилах iptables и т.п."
-
 msgid "Network protocol"
 msgstr "Сетевой протокол"
 
@@ -326,16 +316,6 @@ msgstr "Исходящий интерфейс"
 msgid "Output plugins"
 msgstr "Модули вывода"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-"Модули вывода обеспечивают различные варианты сохранения собранных данных. "
-"Можно включить несколько модулей, например, чтобы сохранить собранные данные "
-"в базе данных RRD и передать их по сети другим инстанциям collectd."
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -437,13 +417,6 @@ msgstr "Загрузка системы"
 msgid "System plugins"
 msgstr "Системные модули"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-"Системные модули, собирающие данные о состоянии системы и использовании "
-"ресурсов устройства:"
-
 msgid "TCP Connections"
 msgstr "TCPConns"
 
@@ -459,6 +432,9 @@ msgstr "TTL для ping-пакетов"
 msgid "Table"
 msgstr "Таблица"
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -613,11 +589,6 @@ msgstr ""
 "получения статистики от работающего сервиса collectd."
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr "Модуль Wireless собирает статистику о силе, шуме и качестве сигнала."
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -633,6 +604,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr "Пытаться определять имя хоста"
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr "UnixSock"
 
@@ -651,9 +631,6 @@ msgstr "Расширенная статистика"
 msgid "Wireless"
 msgstr "Wireless"
 
-msgid "Wireless Plugin Configuration"
-msgstr "Конфигурация модуля Wireless"
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr "Конфигурация модуля Iwinfo"
 
@@ -678,3 +655,41 @@ msgstr "секунды; разделяются пробелом"
 
 msgid "server interfaces"
 msgstr "интерфейсы сервера"
+
+#~ msgid "Installed network plugins:"
+#~ msgstr "Установленные сетевые модули:"
+
+#~ msgid "Installed output plugins:"
+#~ msgstr "Установленные модули вывода:"
+
+#~ msgid ""
+#~ "Network plugins are used to collect information about open tcp "
+#~ "connections, interface traffic, iptables rules etc."
+#~ msgstr ""
+#~ "Сетевые модули используются для сбора информации об открытых "
+#~ "TCP-соединениях, трафике, правилах iptables и т.п."
+
+#~ msgid ""
+#~ "Output plugins provide different possibilities to store collected data. "
+#~ "It is possible to enable multiple plugin at one, for example to store "
+#~ "collected data in rrd databases and to transmit the data over the network "
+#~ "to other collectd instances."
+#~ msgstr ""
+#~ "Модули вывода обеспечивают различные варианты сохранения собранных данных. "
+#~ "Можно включить несколько модулей, например, чтобы сохранить собранные данные "
+#~ "в базе данных RRD и передать их по сети другим инстанциям collectd."
+
+#~ msgid ""
+#~ "System plugins collecting values about system state and ressource usage "
+#~ "on the device.:"
+#~ msgstr ""
+#~ "Системные модули, собирающие данные о состоянии системы и использовании "
+#~ "ресурсов устройства:"
+
+#~ msgid ""
+#~ "The wireless plugin collects statistics about wireless signal strength, "
+#~ "noise and quality."
+#~ msgstr "Модуль Wireless собирает статистику о силе, шуме и качестве сигнала."
+
+#~ msgid "Wireless Plugin Configuration"
+#~ msgstr "Конфигурация модуля Wireless"
index fc8b2be..f9a3c23 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index 862c638..fac9510 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.6\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index 4449ff2..6174930 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.6\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index 43a24d4..ac08e94 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.6\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index c667811..c9e859c 100644 (file)
@@ -3,6 +3,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: uvc_streamer\n"
+"POT-Creation-Date: \n"
 "PO-Revision-Date: 2012-08-15 11:46+0300\n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
@@ -10,10 +11,9 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
-"POT-Creation-Date: \n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
 #. Frames per second
index d41bc16..5254ca1 100644 (file)
@@ -1,6 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: vnstat\n"
+"POT-Creation-Date: \n"
 "PO-Revision-Date: 2012-08-15 11:48+0300\n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
@@ -8,10 +9,9 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
-"POT-Creation-Date: \n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
 msgid "Configuration"
index cab6db7..b6631df 100644 (file)
@@ -1,6 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: voice_core\n"
+"POT-Creation-Date: \n"
 "PO-Revision-Date: 2012-08-15 11:23+0300\n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
@@ -8,10 +9,9 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.6\n"
-"POT-Creation-Date: \n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
 msgid "Phones"
index b5fd769..5c98de0 100644 (file)
@@ -1,6 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: voice_diag\n"
+"POT-Creation-Date: \n"
 "PO-Revision-Date: 2012-08-15 11:22+0300\n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
@@ -8,10 +9,9 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
-"POT-Creation-Date: \n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
 msgid "Diagnostics"
index 0d5442c..828f65d 100644 (file)
@@ -1,16 +1,16 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: watchcat\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
 "Last-Translator: Roman A. aka BasicXP <x12ozmouse@ya.ru>\n"
 "Language-Team: Russian <x12ozmouse@ya.ru>\n"
+"Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Language: ru\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
 msgid "Forced reboot delay"
index 88122eb..6921997 100644 (file)
@@ -12,8 +12,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index ba78908..ac6b659 100644 (file)
@@ -10,8 +10,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
index ca644fc..833356f 100644 (file)
@@ -220,6 +220,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr ""
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr ""
 
@@ -804,6 +809,9 @@ msgstr ""
 msgid "Force"
 msgstr ""
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr ""
 
@@ -2546,9 +2554,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr ""
-
 msgid "Warning"
 msgstr ""
 
diff --git a/po/templates/commands.pot b/po/templates/commands.pot
new file mode 100644 (file)
index 0000000..5d2ffae
--- /dev/null
@@ -0,0 +1,84 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index d967c99..a213d4b 100644 (file)
@@ -21,6 +21,9 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr ""
 
@@ -36,6 +39,9 @@ msgstr ""
 msgid "Network"
 msgstr ""
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr ""
 
@@ -65,9 +71,3 @@ msgstr ""
 
 msgid "network"
 msgstr ""
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index 907fdd3..350466c 100644 (file)
@@ -171,6 +171,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr ""
+
 msgid "Sleep Between Requests"
 msgstr ""
 
@@ -194,6 +197,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
index 820104a..270c94b 100644 (file)
@@ -4,6 +4,9 @@ msgstr "Content-Type: text/plain; charset=UTF-8"
 msgid "BSSID"
 msgstr ""
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr ""
 
@@ -70,6 +73,9 @@ msgstr ""
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr ""
 
@@ -91,6 +97,12 @@ msgstr ""
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr ""
 
@@ -103,6 +115,15 @@ msgstr ""
 msgid "Hostname"
 msgstr ""
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -129,6 +150,9 @@ msgstr ""
 msgid "Latitude"
 msgstr ""
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -180,6 +204,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -210,6 +237,9 @@ msgstr ""
 msgid "Realname"
 msgstr ""
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -239,6 +269,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -288,6 +321,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -296,6 +332,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index fe7464e..63a6563 100644 (file)
@@ -1,6 +1,9 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8"
 
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr ""
 
@@ -22,9 +25,18 @@ msgstr ""
 msgid "Enable DHCP"
 msgstr ""
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr ""
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -35,9 +47,17 @@ msgstr ""
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr ""
 
@@ -45,6 +65,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -59,6 +82,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 400aa42..c15325c 100644 (file)
@@ -519,8 +519,8 @@ msgid "Topology"
 msgstr ""
 
 msgid ""
-"Type of service value for the IP header of control traffic. Default is "
-"\"16\"."
+"Type of service value for the IP header of control traffic. Default is \"16"
+"\"."
 msgstr ""
 
 msgid "Unable to connect to the OLSR daemon!"
index 43cef28..5f2e9dd 100644 (file)
@@ -56,7 +56,7 @@ msgid "Collectd Settings"
 msgstr ""
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -100,6 +100,9 @@ msgstr ""
 msgid "Disk Usage"
 msgstr ""
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr ""
 
@@ -170,12 +173,6 @@ msgstr ""
 msgid "Incoming interface"
 msgstr ""
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr ""
 
@@ -269,11 +266,6 @@ msgstr ""
 msgid "Network plugins"
 msgstr ""
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr ""
 
@@ -298,13 +290,6 @@ msgstr ""
 msgid "Output plugins"
 msgstr ""
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr ""
 
@@ -404,11 +389,6 @@ msgstr ""
 msgid "System plugins"
 msgstr ""
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr ""
 
@@ -424,6 +404,9 @@ msgstr ""
 msgid "Table"
 msgstr ""
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -540,11 +523,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -556,6 +534,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr ""
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr ""
 
@@ -574,9 +561,6 @@ msgstr ""
 msgid "Wireless"
 msgstr ""
 
-msgid "Wireless Plugin Configuration"
-msgstr ""
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
index 834f75b..1549e3b 100644 (file)
@@ -3,6 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -233,6 +234,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr ""
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr ""
 
@@ -817,6 +823,9 @@ msgstr ""
 msgid "Force"
 msgstr ""
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr ""
 
@@ -2559,9 +2568,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr ""
-
 msgid "Warning"
 msgstr ""
 
diff --git a/po/tr/commands.po b/po/tr/commands.po
new file mode 100644 (file)
index 0000000..4132274
--- /dev/null
@@ -0,0 +1,91 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index d649a69..cfe9d72 100644 (file)
@@ -34,6 +34,9 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr ""
 
@@ -49,6 +52,9 @@ msgstr ""
 msgid "Network"
 msgstr ""
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr ""
 
@@ -80,9 +86,3 @@ msgstr ""
 
 msgid "network"
 msgstr ""
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index a828dfc..3251675 100644 (file)
@@ -178,6 +178,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr ""
+
 msgid "Sleep Between Requests"
 msgstr ""
 
@@ -201,6 +204,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
index a2a1c53..1fc8b22 100644 (file)
@@ -3,6 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -11,6 +12,9 @@ msgstr ""
 msgid "BSSID"
 msgstr ""
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr ""
 
@@ -77,6 +81,9 @@ msgstr ""
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr ""
 
@@ -98,6 +105,12 @@ msgstr ""
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr ""
 
@@ -110,6 +123,15 @@ msgstr ""
 msgid "Hostname"
 msgstr ""
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -136,6 +158,9 @@ msgstr ""
 msgid "Latitude"
 msgstr ""
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -187,6 +212,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -217,6 +245,9 @@ msgstr ""
 msgid "Realname"
 msgstr ""
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -246,6 +277,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -295,6 +329,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -303,6 +340,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index 3af98f8..b0fcb64 100644 (file)
@@ -8,6 +8,9 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr ""
 
@@ -29,9 +32,18 @@ msgstr ""
 msgid "Enable DHCP"
 msgstr ""
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr ""
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -42,9 +54,17 @@ msgstr ""
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr ""
 
@@ -52,6 +72,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -66,6 +89,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 26a2585..d963dd8 100644 (file)
@@ -3,6 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -63,7 +64,7 @@ msgid "Collectd Settings"
 msgstr ""
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -107,6 +108,9 @@ msgstr ""
 msgid "Disk Usage"
 msgstr ""
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr ""
 
@@ -177,12 +181,6 @@ msgstr ""
 msgid "Incoming interface"
 msgstr ""
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr ""
 
@@ -276,11 +274,6 @@ msgstr ""
 msgid "Network plugins"
 msgstr ""
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr ""
 
@@ -305,13 +298,6 @@ msgstr ""
 msgid "Output plugins"
 msgstr ""
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr ""
 
@@ -411,11 +397,6 @@ msgstr ""
 msgid "System plugins"
 msgstr ""
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr ""
 
@@ -431,6 +412,9 @@ msgstr ""
 msgid "Table"
 msgstr ""
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -547,11 +531,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -563,6 +542,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr ""
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr ""
 
@@ -581,9 +569,6 @@ msgstr ""
 msgid "Wireless"
 msgstr ""
 
-msgid "Wireless Plugin Configuration"
-msgstr ""
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
index 78869a5..979e5d4 100644 (file)
@@ -8,8 +8,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 
 msgid "(%d minute window, %d second interval)"
@@ -261,6 +261,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr "Допустимий діапазон — від 1 до 65535"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "Якщо ви залишите це невибраним, буде створена додаткова мережа."
 
@@ -881,6 +886,9 @@ msgstr "Заливаємо..."
 msgid "Force"
 msgstr "Примусово"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr "Примусово CCMP (AES)"
 
@@ -2729,9 +2737,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr "Очікування маршрутизатора..."
-
 msgid "Warning"
 msgstr "Застереження"
 
@@ -2913,6 +2918,9 @@ msgstr "так"
 msgid "« Back"
 msgstr "« Назад"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "Очікування маршрутизатора..."
+
 #~ msgid "Enable builtin NTP server"
 #~ msgstr "Увімкнути вбудований NTP-сервер"
 
diff --git a/po/uk/commands.po b/po/uk/commands.po
new file mode 100644 (file)
index 0000000..ad2d1e9
--- /dev/null
@@ -0,0 +1,92 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index dc16761..f8d57fb 100644 (file)
@@ -12,8 +12,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Pootle 2.0.4\n"
 
 msgid "Check for changed IP every"
@@ -38,6 +38,9 @@ msgstr ""
 msgid "Enable"
 msgstr "Увімкнути"
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr "Примусово оновлювати кожні"
 
@@ -53,6 +56,9 @@ msgstr "Інтерфейс"
 msgid "Network"
 msgstr "Мережа"
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr "Пароль"
 
@@ -84,9 +90,3 @@ msgstr "хв"
 
 msgid "network"
 msgstr "мережа"
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index 3dce9c9..9fa5e3c 100644 (file)
@@ -6,8 +6,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
 msgid "Actions"
 msgstr ""
@@ -179,6 +179,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr ""
+
 msgid "Sleep Between Requests"
 msgstr ""
 
@@ -202,6 +205,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
index 5cd3d47..8342186 100644 (file)
@@ -3,6 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -12,6 +13,9 @@ msgstr ""
 msgid "BSSID"
 msgstr ""
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr ""
 
@@ -78,6 +82,9 @@ msgstr ""
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr ""
 
@@ -99,6 +106,12 @@ msgstr ""
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr ""
 
@@ -111,6 +124,15 @@ msgstr ""
 msgid "Hostname"
 msgstr ""
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -137,6 +159,9 @@ msgstr ""
 msgid "Latitude"
 msgstr ""
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -188,6 +213,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -218,6 +246,9 @@ msgstr ""
 msgid "Realname"
 msgstr ""
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -247,6 +278,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -296,6 +330,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -304,6 +341,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index 21f6b38..9722dd0 100644 (file)
@@ -6,8 +6,11 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
 
 msgid "Channel"
 msgstr ""
@@ -30,9 +33,18 @@ msgstr ""
 msgid "Enable DHCP"
 msgstr ""
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr ""
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -43,9 +55,17 @@ msgstr ""
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr ""
 
@@ -53,6 +73,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -67,6 +90,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 17b0dcb..38d08f2 100644 (file)
@@ -5,6 +5,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -66,7 +67,7 @@ msgid "Collectd Settings"
 msgstr ""
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -110,6 +111,9 @@ msgstr ""
 msgid "Disk Usage"
 msgstr ""
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr ""
 
@@ -180,12 +184,6 @@ msgstr ""
 msgid "Incoming interface"
 msgstr ""
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr ""
 
@@ -279,11 +277,6 @@ msgstr ""
 msgid "Network plugins"
 msgstr ""
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr ""
 
@@ -308,13 +301,6 @@ msgstr ""
 msgid "Output plugins"
 msgstr ""
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr ""
 
@@ -414,11 +400,6 @@ msgstr ""
 msgid "System plugins"
 msgstr ""
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr ""
 
@@ -434,6 +415,9 @@ msgstr ""
 msgid "Table"
 msgstr ""
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -550,11 +534,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -566,6 +545,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr ""
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr ""
 
@@ -584,9 +572,6 @@ msgstr ""
 msgid "Wireless"
 msgstr ""
 
-msgid "Wireless Plugin Configuration"
-msgstr ""
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
index 157587b..692b0e1 100644 (file)
@@ -6,6 +6,7 @@ msgstr ""
 "PO-Revision-Date: 2009-08-14 12:23+0200\n"
 "Last-Translator: Hong Phuc Dang <dhppat@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -233,6 +234,11 @@ msgstr ""
 msgid "Allowed range is 1 to 65535"
 msgstr ""
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr ""
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr ""
 
@@ -828,6 +834,9 @@ msgstr ""
 msgid "Force"
 msgstr "Force"
 
+msgid "Force 40MHz mode"
+msgstr ""
+
 msgid "Force CCMP (AES)"
 msgstr ""
 
@@ -2605,9 +2614,6 @@ msgstr ""
 msgid "Waiting for command to complete..."
 msgstr ""
 
-msgid "Waiting for router..."
-msgstr ""
-
 msgid "Warning"
 msgstr ""
 
diff --git a/po/vi/commands.po b/po/vi/commands.po
new file mode 100644 (file)
index 0000000..4132274
--- /dev/null
@@ -0,0 +1,91 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index 856faf8..6a3ecd5 100644 (file)
@@ -39,6 +39,9 @@ msgstr ""
 msgid "Enable"
 msgstr ""
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr "Buộc cập nhật mỗi"
 
@@ -55,6 +58,9 @@ msgstr ""
 msgid "Network"
 msgstr ""
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr ""
 
@@ -87,9 +93,3 @@ msgstr ""
 
 msgid "network"
 msgstr ""
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index a828dfc..3251675 100644 (file)
@@ -178,6 +178,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr ""
+
 msgid "Sleep Between Requests"
 msgstr ""
 
@@ -201,6 +204,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
index 621d9bc..a668287 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 msgid "BSSID"
 msgstr ""
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr ""
 
@@ -81,6 +84,9 @@ msgstr ""
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr ""
 
@@ -102,6 +108,12 @@ msgstr ""
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr "Xin chào và chào mừng gia nhập mạng lưới của"
 
@@ -114,6 +126,15 @@ msgstr ""
 msgid "Hostname"
 msgstr "Hostname"
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -143,6 +164,9 @@ msgstr "Giữ cấu hình"
 msgid "Latitude"
 msgstr ""
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -194,6 +218,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -224,6 +251,9 @@ msgstr ""
 msgid "Realname"
 msgstr "Tên thật "
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -253,6 +283,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -302,6 +335,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr "Xác minh hình ảnh đã tải"
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -310,6 +346,9 @@ msgstr "Chúng tôi là phát triển mạng lưới nguồn mở không dây đ
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index f035cf4..180d771 100644 (file)
@@ -1,3 +1,6 @@
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr ""
 
@@ -19,9 +22,18 @@ msgstr ""
 msgid "Enable DHCP"
 msgstr ""
 
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
 msgid "General Settings"
 msgstr ""
 
+msgid "IPv6 Settings"
+msgstr ""
+
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
 msgstr ""
@@ -32,9 +44,17 @@ msgstr ""
 msgid "Mesh IP address"
 msgstr ""
 
+msgid "Mesh IPv6 address"
+msgstr ""
+
 msgid "Mesh Wizard"
 msgstr ""
 
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
+msgstr ""
+
 msgid "Protect LAN"
 msgstr ""
 
@@ -42,6 +62,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -56,6 +79,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 0c3f776..c853c8a 100644 (file)
@@ -8,6 +8,7 @@ msgstr ""
 "PO-Revision-Date: 2009-08-16 05:50+0200\n"
 "Last-Translator: Hong Phuc Dang <dhppat@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -68,11 +69,11 @@ msgid "Collectd Settings"
 msgstr "Những cài đặt collectd"
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 là một daeomon nhỏ để thu thập dữ liệu từ nhiều nguồn thông qua các "
+"Collectd là một daemon nhỏ để thu thập dữ liệu từ nhiều nguồn thông qua các "
 "plugins khác nhau. Trên trang này, bạn có thể thay đổi cài đặt tổng quát cho "
 "cai collectd daemon. "
 
@@ -115,6 +116,9 @@ msgstr "Khoảng trống trên đĩa"
 msgid "Disk Usage"
 msgstr "Disk Usage"
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr "Display timespan"
 
@@ -192,12 +196,6 @@ msgstr "Lờ đi những địa chỉ nguồn"
 msgid "Incoming interface"
 msgstr "Giao diện đang tới"
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr "Cấu hình giao diện plugin"
 
@@ -291,11 +289,6 @@ msgstr "Cấu hình network plugin"
 msgid "Network plugins"
 msgstr "Network plugins"
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr "Network protocol"
 
@@ -320,13 +313,6 @@ msgstr "Giao diện ra ngoài"
 msgid "Output plugins"
 msgstr "Output plugins"
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr "Ping"
 
@@ -426,11 +412,6 @@ msgstr "System Load"
 msgid "System plugins"
 msgstr "System plugins"
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr "Kết nối TCP"
 
@@ -446,6 +427,9 @@ msgstr "TTl cho gói ping"
 msgid "Table"
 msgstr "Table"
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -607,13 +591,6 @@ msgstr ""
 "từ một collectd instance đang vận hành. "
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-"Cấu hình wireless plugin thu thập thống kê về độ mạnh của tín hiệu wireless, "
-"noise và chất lượng."
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -626,6 +603,15 @@ msgstr "Section này định nghĩa servers thu thập dữ liệu địa phươ
 msgid "Try to lookup fully qualified hostname"
 msgstr "Thử tra cứu những tên host đủ điều kiện"
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr "UnixSock"
 
@@ -644,9 +630,6 @@ msgstr "Verbose monitoring"
 msgid "Wireless"
 msgstr "Mạng không dây"
 
-msgid "Wireless Plugin Configuration"
-msgstr "Cấu hình Wireless Plugin "
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
@@ -670,3 +653,13 @@ msgstr "giây; nhiều phân tách bởi khoảng trống"
 
 msgid "server interfaces"
 msgstr "giao diện server"
+
+#~ msgid ""
+#~ "The wireless plugin collects statistics about wireless signal strength, "
+#~ "noise and quality."
+#~ msgstr ""
+#~ "Cấu hình wireless plugin thu thập thống kê về độ mạnh của tín hiệu wireless, "
+#~ "noise và chất lượng."
+
+#~ msgid "Wireless Plugin Configuration"
+#~ msgstr "Cấu hình Wireless Plugin "
index 4dad89e..50af97c 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-12-21 23:08+0200\n"
-"PO-Revision-Date: 2012-10-06 11:33+0200\n"
+"PO-Revision-Date: 2012-11-23 11:54+0200\n"
 "Last-Translator: phantasm131 <phantasm131@gmail.com>\n"
 "Language-Team: QQ Group:75543259\n"
 "Language: zh_CN\n"
@@ -237,6 +237,11 @@ msgstr "允许127.0.0.0/8回环范围内的上行响应,例如:RBL服务"
 msgid "Allowed range is 1 to 65535"
 msgstr "允许的范围:1 到 65535"
 
+msgid ""
+"Always use 40MHz channels even if the secondary channel overlaps. Using this "
+"option does not comply with IEEE 802.11n-2009!"
+msgstr "强制启用40MHz频宽并忽略辅助信道重叠。此选项不兼容IEEE 802.11n-2009!"
+
 msgid "An additional network will be created if you leave this unchecked."
 msgstr "取消选中将会另外创建一个新网络,而不会覆盖当前网络设置"
 
@@ -828,6 +833,9 @@ msgstr "刷写中..."
 msgid "Force"
 msgstr "强制开启DHCP"
 
+msgid "Force 40MHz mode"
+msgstr "强制40MHz频宽"
+
 msgid "Force CCMP (AES)"
 msgstr "强制使用CCMP(AES)加密"
 
@@ -2240,8 +2248,8 @@ msgid ""
 "\">e.g.</abbr> <samp><abbr title=\"Third Extended Filesystem\">ext3</abbr></"
 "samp>)"
 msgstr ""
-"用于格式化存储器的文件系统,(<abbr title=\"for example\">例如</abbr> <samp><abbr title=\"Third "
-"Extended Filesystem\">ext4</abbr></samp>)"
+"用于格式化存储器的文件系统,(<abbr title=\"for example\">例如</abbr> "
+"<samp><abbr title=\"Third Extended Filesystem\">ext4</abbr></samp>)"
 
 msgid ""
 "The flash image was uploaded. Below is the checksum and file size listed, "
@@ -2608,9 +2616,6 @@ msgstr "正在应用更改..."
 msgid "Waiting for command to complete..."
 msgstr "正在执行命令..."
 
-msgid "Waiting for router..."
-msgstr "等待路由器..."
-
 msgid "Warning"
 msgstr "警告"
 
@@ -2785,29 +2790,32 @@ msgstr "是"
 msgid "« Back"
 msgstr "« 后退"
 
+#~ msgid "Waiting for router..."
+#~ msgstr "等待路由器..."
+
 #~ msgid "Enable builtin NTP server"
 #~ msgstr "开启内置NTP服务器"
 
 #~ msgid "Active Leases"
-#~ msgstr "活动客户端"
+#~ msgstr "活动的租约"
 
 #~ msgid "Open"
-#~ msgstr "开启"
+#~ msgstr "打开"
 
 #~ msgid "KB"
 #~ msgstr "KB"
 
 #~ msgid "Bit Rate"
-#~ msgstr "传输速率"
+#~ msgstr "比特率"
 
 #~ msgid "Configuration / Apply"
-#~ msgstr "Configuration / Apply"
+#~ msgstr "设置 /应用"
 
 #~ msgid "Configuration / Changes"
-#~ msgstr "Configuration / Changes"
+#~ msgstr "设置 / 修改"
 
 #~ msgid "Configuration / Revert"
-#~ msgstr "Configuration / Revert"
+#~ msgstr "设置 / 重置"
 
 #~ msgid "MAC"
 #~ msgstr "MAC"
@@ -2819,16 +2827,18 @@ msgstr "« 后退"
 #~ msgstr "<abbr title=\"Encrypted\">加密</abbr>"
 
 #~ msgid "<abbr title=\"Wireless Local Area Network\">WLAN</abbr>-Scan"
-#~ msgstr "<abbr title=\"Wireless Local Area Network\">WLAN</abbr>-搜索"
+#~ msgstr "搜索<abbr title=\"Wireless Local Area Network\">WLAN</abbr>"
 
 #~ msgid ""
 #~ "Choose the network you want to attach to this wireless interface. Select "
 #~ "<em>unspecified</em> to not attach any network or fill out the "
 #~ "<em>create</em> field to define a new network."
-#~ msgstr "此无线接口的网络。填写<em>创建</em>栏可新建网络。"
+#~ msgstr ""
+#~ "请选择你需要链接到无线网络接口的网络. 如果不链接到任何网络请选择 <em>未指"
+#~ "定</em>,如果需要创建新网络请点<em>创建</em>."
 
 #~ msgid "Create Network"
-#~ msgstr "Create Network"
+#~ msgstr "创建一个网络"
 
 #~ msgid "Link"
 #~ msgstr "链接"
@@ -2840,16 +2850,17 @@ msgstr "« 后退"
 #~ msgstr "Power"
 
 #~ msgid "Wifi networks in your local environment"
-#~ msgstr "Wifi networks in your local environment"
+#~ msgstr "扫描到的无线热点"
 
 #~ msgid ""
 #~ "<abbr title=\"Classless Inter-Domain Routing\">CIDR</abbr>-Notation: "
 #~ "address/prefix"
 #~ msgstr ""
-#~ "<abbr title=\"Classless Inter-Domain Routing\">CIDR</abbr>-标识:地址/前缀"
+#~ "<abbr title=\"Classless Inter-Domain Routing\">CIDR</abbr>-Notation: "
+#~ "address/prefix"
 
 #~ msgid "<abbr title=\"Domain Name System\">DNS</abbr>-Server"
-#~ msgstr "<abbr title=\"Domain Name System\">DNS</abbr>-Server"
+#~ msgstr "<abbr title=\"Domain Name System\">DNS</abbr>-服务器"
 
 #~ msgid "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Broadcast"
 #~ msgstr "<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-广播"
@@ -2861,14 +2872,13 @@ msgstr "« 后退"
 #~ msgstr "IP-Aliases"
 
 #~ msgid "IPv6 Setup"
-#~ msgstr "IPv6设置"
+#~ msgstr "IPv6 设置"
 
 #~ msgid ""
 #~ "Note: If you choose an interface here which is part of another network, "
 #~ "it will be moved into this network."
 #~ msgstr ""
-#~ "Note: If you choose an interface here which is part of another network, "
-#~ "it will be moved into this network."
+#~ "注意:当你选择一个已经存在与一个网络中的接口时,它将会被移除那个网络。"
 
 #~ msgid ""
 #~ "Really delete this interface? The deletion cannot be undone!\\nYou might "
@@ -2911,13 +2921,10 @@ msgstr "« 后退"
 #~ "the next greater network like the internet and other ports for a local "
 #~ "network."
 #~ msgstr ""
-#~ "The network ports on your router can be combined to several <abbr title="
-#~ "\"Virtual Local Area Network\">VLAN</abbr>s in which computers can "
-#~ "communicate directly with each other. <abbr title=\"Virtual Local Area "
-#~ "Network\">VLAN</abbr>s are often used to separate different network "
-#~ "segments. Often there is by default one Uplink port for a connection to "
-#~ "the next greater network like the internet and other ports for a local "
-#~ "network."
+#~ "本设备可以划分为多个<abbr title=\"Virtual Local Area Network\">VLAN</"
+#~ "abbr>,并支持电脑间的直接通讯;<abbr title=\"Virtual Local Area Network"
+#~ "\">VLAN</abbr>也常用于分割不同网段;默认通常是一条上传端口连接ISP,其余端"
+#~ "口为本地子网。"
 
 #~ msgid "Enable buffering"
 #~ msgstr "开启缓冲"
@@ -3226,7 +3233,7 @@ msgstr "« 后退"
 #~ msgstr "空闲"
 
 #~ msgid "static"
-#~ msgstr "静态IP"
+#~ msgstr "静态"
 
 #~ msgid ""
 #~ "<abbr title=\"Lua Configuration Interface\">LuCI</abbr> is a collection "
@@ -3702,4 +3709,4 @@ msgstr "« 后退"
 #~ msgstr "服务"
 
 #~ msgid "Statistics"
-#~ msgstr "统计"
+#~ msgstr "统计信息"
diff --git a/po/zh_CN/commands.po b/po/zh_CN/commands.po
new file mode 100644 (file)
index 0000000..6fbb983
--- /dev/null
@@ -0,0 +1,90 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "A short textual description of the configured command"
+msgstr ""
+
+msgid "Access command with"
+msgstr ""
+
+msgid ""
+"Allow executing the command and downloading its output without prior "
+"authentication"
+msgstr ""
+
+msgid "Allow the user to provide additional command line arguments"
+msgstr ""
+
+msgid "Arguments:"
+msgstr ""
+
+msgid "Binary data not displayed, download instead."
+msgstr ""
+
+msgid "Code:"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Command"
+msgstr ""
+
+msgid "Command failed"
+msgstr ""
+
+msgid "Command line to execute"
+msgstr ""
+
+msgid "Command successful"
+msgstr ""
+
+msgid "Command:"
+msgstr ""
+
+msgid "Configure"
+msgstr ""
+
+msgid "Custom Commands"
+msgstr ""
+
+msgid "Custom arguments"
+msgstr ""
+
+msgid "Dashboard"
+msgstr ""
+
+msgid "Description"
+msgstr ""
+
+msgid "Download"
+msgstr ""
+
+msgid "Failed to execute command!"
+msgstr ""
+
+msgid "Link"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Public access"
+msgstr ""
+
+msgid "Run"
+msgstr ""
+
+msgid ""
+"This page allows you to configure custom shell commands which can be easily "
+"invoked from the web interface."
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
index 5b96eeb..6dbf5a2 100644 (file)
@@ -34,6 +34,9 @@ msgstr ""
 msgid "Enable"
 msgstr "启用"
 
+msgid "Event interface"
+msgstr ""
+
 msgid "Force update every"
 msgstr "强制更新间隔"
 
@@ -49,6 +52,9 @@ msgstr "接口"
 msgid "Network"
 msgstr "网络"
 
+msgid "On which interface up should start the ddns script process."
+msgstr ""
+
 msgid "Password"
 msgstr "密码"
 
@@ -80,9 +86,3 @@ msgstr "分"
 
 msgid "network"
 msgstr "网络"
-
-msgid "Event interface"
-msgstr ""
-
-msgid "On which interface up should start the ddns script process."
-msgstr ""
index d75c897..7346ef9 100644 (file)
@@ -181,6 +181,9 @@ msgstr ""
 msgid "Scanning Configuration"
 msgstr ""
 
+msgid "Scans for devices on specified networks."
+msgstr ""
+
 msgid "Sleep Between Requests"
 msgstr ""
 
@@ -204,6 +207,3 @@ msgstr ""
 
 msgid "check other networks"
 msgstr ""
-
-msgid "Scans for devices on specified networks."
-msgstr ""
index ef0c77d..0174bf1 100644 (file)
@@ -399,8 +399,10 @@ msgid ""
 "forwarded traffic between different networks within the zone. <em>Covered "
 "networks</em> specifies which available networks are member of this zone."
 msgstr ""
-"本节定义 %q 的通用属性, <em>入站数据</em> 和 <em>出站数据</em>规则用于设置数据包“进”和“出”路由器(某个接口)默认的转发原则"
-",<em>转发</em>规则用于特定(一个或多个)区域的不同子网之间的数据包转发。<em>覆盖网络</em>选择从属于这个区域的网络。"
+"本节定义 %q 的通用属性, <em>入站数据</em> 和 <em>出站数据</em>规则用于设置数"
+"据包“进”和“出”路由器(某个接口)默认的转发原则,<em>转发</em>规则用于特定(一"
+"个或多个)区域的不同子网之间的数据包转发。<em>覆盖网络</em>选择从属于这个区域"
+"的网络。"
 
 msgid "To %s at %s on <var>this device</var>"
 msgstr "到 %s at %s 位于<var>本设备</var>"
index fc3d68f..0850bbe 100644 (file)
@@ -16,6 +16,9 @@ msgstr ""
 msgid "BSSID"
 msgstr "BSSID"
 
+msgid "Bad (ETX > 10)"
+msgstr ""
+
 msgid "Basic Settings"
 msgstr "基础设置"
 
@@ -82,6 +85,9 @@ msgstr ""
 msgid "Edit index page"
 msgstr ""
 
+msgid "Enable IPv6"
+msgstr ""
+
 msgid "Error"
 msgstr ""
 
@@ -103,6 +109,12 @@ msgstr ""
 msgid "Go to"
 msgstr ""
 
+msgid "Good (2 < ETX < 4)"
+msgstr ""
+
+msgid "Green"
+msgstr ""
+
 msgid "Hello and welcome in the network of"
 msgstr ""
 
@@ -115,6 +127,15 @@ msgstr ""
 msgid "Hostname"
 msgstr ""
 
+msgid "IPv6 Config"
+msgstr ""
+
+msgid "IPv6 Prefix"
+msgstr ""
+
+msgid "IPv6 network in CIDR notation."
+msgstr ""
+
 msgid "If selected then the default content element is not shown."
 msgstr ""
 
@@ -141,6 +162,9 @@ msgstr ""
 msgid "Latitude"
 msgstr ""
 
+msgid "Legend"
+msgstr ""
+
 msgid "Load"
 msgstr ""
 
@@ -192,6 +216,9 @@ msgstr ""
 msgid "Operator"
 msgstr ""
 
+msgid "Orange"
+msgstr ""
+
 msgid "Overview"
 msgstr ""
 
@@ -222,6 +249,9 @@ msgstr ""
 msgid "Realname"
 msgstr ""
 
+msgid "Red"
+msgstr ""
+
 msgid "SSID"
 msgstr ""
 
@@ -251,6 +281,9 @@ msgstr ""
 msgid "Status"
 msgstr ""
 
+msgid "Still usable (4 < ETX < 10)"
+msgstr ""
+
 msgid "System"
 msgstr ""
 
@@ -300,6 +333,9 @@ msgstr ""
 msgid "Verify downloaded images"
 msgstr ""
 
+msgid "Very good (ETX < 2)"
+msgstr ""
+
 msgid ""
 "We are an initiative to establish a free, independent and open wireless mesh "
 "network."
@@ -308,6 +344,9 @@ msgstr ""
 msgid "Wireless Overview"
 msgstr ""
 
+msgid "Yellow"
+msgstr ""
+
 msgid ""
 "You can display additional content on the public index page by inserting "
 "valid XHTML in the form below.<br />Headlines should be enclosed between &lt;"
index f965b6d..cf9926c 100644 (file)
@@ -3,8 +3,8 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2012-09-24 18:01+0200\n"
-"PO-Revision-Date: 2012-09-24 18:01+0200\n"
-"Last-Translator: shanliren <shanliren.net@gmail.com>\n"
+"PO-Revision-Date: 2012-10-30 04:28+0200\n"
+"Last-Translator: yingrui <easygodg@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
@@ -13,41 +13,61 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: Pootle 2.0.6\n"
 
+msgid "Activate or deactivate IPv6 config globally."
+msgstr ""
+
 msgid "Channel"
 msgstr "频道"
 
 msgid "Check this to protect your LAN from other nodes or clients"
-msgstr ""
+msgstr "选择此项,隔离其他节点或客户端的攻击来保护你的局域网"
 
 msgid "Cleanup config"
-msgstr ""
+msgstr "清空配置"
 
 msgid "Configure this interface"
-msgstr ""
+msgstr "配置当前界面"
 
 msgid "DHCP IP range"
-msgstr ""
+msgstr "DHCP IP 范围"
 
 msgid "DHCP will automatically assign ip addresses to clients"
-msgstr ""
+msgstr "DHCP将自动给客户端分配IP地址"
 
 msgid "Enable DHCP"
+msgstr "启动DHCP"
+
+msgid "Enable RA"
+msgstr ""
+
+msgid "Enabled"
 msgstr ""
 
 msgid "General Settings"
+msgstr "总体设置"
+
+msgid "IPv6 Settings"
 msgstr ""
 
 msgid ""
 "If this is selected then config is cleaned before setting new config options."
-msgstr ""
+msgstr "如果此项被选中,在设置新选项之前,配置将被清空。"
 
 msgid "Interfaces"
-msgstr ""
+msgstr "界面"
 
 msgid "Mesh IP address"
+msgstr "Mesh IP 地址"
+
+msgid "Mesh IPv6 address"
 msgstr ""
 
 msgid "Mesh Wizard"
+msgstr "Mesh 导引"
+
+msgid ""
+"Note: this will setup this interface for mesh operation, i.e. add to zone "
+"'freifunk' and enable olsr."
 msgstr ""
 
 msgid "Protect LAN"
@@ -57,6 +77,9 @@ msgid ""
 "Select this to allow others to use your connection to access the internet."
 msgstr ""
 
+msgid "Send router advertisements on this device."
+msgstr ""
+
 msgid "Share your internet connection"
 msgstr ""
 
@@ -71,6 +94,11 @@ msgid "The given IP address is not inside the mesh network range"
 msgstr ""
 
 msgid ""
+"This is a unique IPv6 address in CIDR notation (e.g. 2001:1:2:3::1/64) and "
+"has to be registered at your local community."
+msgstr ""
+
+msgid ""
 "This is a unique address in the mesh (e.g. 10.1.1.1) and has to be "
 "registered at your local community."
 msgstr ""
index 8df98a8..e699392 100644 (file)
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
+"PO-Revision-Date: 2012-11-16 06:26+0200\n"
+"Last-Translator: Rui <shenrui01@gmail.com>\n"
 "Language-Team: none\n"
+"Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Pootle 2.0.6\n"
 
 msgid "Advanced Settings"
-msgstr ""
+msgstr "高级设置"
 
 msgid "Album art names:"
-msgstr ""
+msgstr "专辑封面名称:"
 
 msgid "Announced model number:"
-msgstr ""
+msgstr "通告型号:"
 
 msgid "Announced serial number:"
-msgstr ""
+msgstr "通告编号:"
 
 msgid "Browse directory"
-msgstr ""
+msgstr "浏览目录"
 
 msgid "Collecting data..."
-msgstr ""
+msgstr "收集数据..."
 
 msgid "Database directory:"
-msgstr ""
+msgstr "数据库目录:"
 
 msgid "Enable TIVO:"
-msgstr ""
+msgstr "启用TIVO:"
 
 msgid "Enable inotify:"
-msgstr ""
+msgstr "启用inotify:"
 
 msgid "Enable:"
-msgstr ""
+msgstr "启用:"
 
 msgid "Friendly name:"
-msgstr ""
+msgstr "友好名称:"
 
 msgid "General Settings"
-msgstr ""
+msgstr "基本设置"
 
 msgid "Interfaces:"
-msgstr ""
+msgstr "接口:"
 
 msgid "Log directory:"
-msgstr ""
+msgstr "日志目录:"
 
 msgid "Media directories:"
-msgstr ""
+msgstr "媒体目录:"
 
 msgid ""
 "MiniDLNA is server software with the aim of being fully compliant with DLNA/"
 "UPnP-AV clients."
-msgstr ""
+msgstr "MiniDLNA是DLNA / UPnP-AV媒体服务器。"
 
 msgid ""
 "Model number the miniDLNA daemon will report to clients in its XML "
 "description."
-msgstr ""
+msgstr "miniDLNA守护程序将在其XML描述中向客户端通告型号。"
 
 msgid "Music"
-msgstr ""
+msgstr "音乐"
 
 msgid "Network interfaces to serve."
-msgstr ""
+msgstr "服务的网络接口。"
 
 msgid "Notify interval in seconds."
-msgstr ""
+msgstr "通知的时间间隔,以秒为单位。"
 
 msgid "Notify interval:"
-msgstr ""
+msgstr "通知的时间间隔:"
 
 msgid "Pictures"
-msgstr ""
+msgstr "图片"
 
 msgid "Port for HTTP (descriptions, SOAP, media transfer) traffic."
-msgstr ""
+msgstr "Port for HTTP (descriptions, SOAP, media transfer) traffic."
 
 msgid "Port:"
-msgstr ""
+msgstr "端口:"
 
 msgid "Presentation URL:"
-msgstr ""
+msgstr "服务网址"
 
 msgid "Root container:"
-msgstr ""
+msgstr "根目录:"
 
 msgid ""
 "Serial number the miniDLNA daemon will report to clients in its XML "
 "description."
-msgstr ""
+msgstr "miniDLNA守护程序将在其XML描述中向客户端通告编号。"
 
 msgid ""
 "Set this if you want to customize the name that shows up on your clients."
-msgstr ""
+msgstr "设置自定义名称。"
 
 msgid ""
 "Set this if you would like to specify the directory where you want MiniDLNA "
 "to store its database and album art cache."
-msgstr ""
+msgstr "设置miniDLNA缓存目录"
 
 msgid ""
 "Set this if you would like to specify the directory where you want MiniDLNA "
 "to store its log file."
-msgstr ""
+msgstr "设置miniDLNA日志目录"
 
 msgid ""
 "Set this to enable inotify monitoring to automatically discover new files."
-msgstr ""
+msgstr "设定启用inotify监控,自动发现新的文件。"
 
 msgid ""
 "Set this to enable support for streaming .jpg and .mp3 files to a TiVo "
 "supporting HMO."
-msgstr ""
+msgstr "为HMO TiVo启用JPG和MP3流媒体支持。"
 
 msgid ""
 "Set this to strictly adhere to DLNA standards. This will allow server-side "
 "downscaling of very large JPEG images, which may hurt JPEG serving "
 "performance on (at least) Sony DLNA products."
 msgstr ""
+"设定严格遵守DLNA标准。这将允许服务器端降小大尺寸JPEG图像,在(至少)索尼DLNA"
+"的产品这可能会降低JPEG服务性能。"
 
 msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
@@ -129,35 +135,38 @@ msgid ""
 "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."
 msgstr ""
+"设置要扫描的目录。如果你想限制特定内容类型的目录,你可以在前面加上类型(用于"
+"音频'A','V'视频,'P'图片),其次是用逗号分隔的目录(如media_dir = A,/ mnt/"
+"媒体/音乐)。可以指定多个目录。"
 
 msgid "Specify the path to the MiniSSDPd socket."
-msgstr ""
+msgstr "指定MiniSSDPd socket的路径。"
 
 msgid "Standard container"
-msgstr ""
+msgstr "基本目录"
 
 msgid "Strict to DLNA standard:"
-msgstr ""
+msgstr "严格的DLNA标准:"
 
 msgid ""
 "The miniDLNA service is active, serving %d audio, %d video and %d image "
 "files."
-msgstr ""
+msgstr "miniDLNA服务已启用,提供 %d 音频, %d 视频 和 %d 图片."
 
 msgid "The miniDLNA service is not running."
-msgstr ""
+msgstr "miniDLNA服务未启用"
 
 msgid "This is a list of file names to check for when searching for album art."
-msgstr ""
+msgstr "这是一个文件名列表,为搜索专辑封面。"
 
 msgid "Video"
-msgstr ""
+msgstr "视频"
 
 msgid "miniDLNA"
-msgstr ""
+msgstr "miniDLNA"
 
 msgid "miniDLNA Status"
-msgstr ""
+msgstr "miniDLNA 状态"
 
 msgid "miniSSDP socket:"
-msgstr ""
+msgstr "miniSSDP socket:"
index 28172b3..0821c3f 100644 (file)
@@ -3,8 +3,8 @@ msgstr ""
 "Project-Id-Version: LuCi Chinese Translation\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2010-04-14 13:24+0200\n"
-"PO-Revision-Date: 2012-06-28 08:58+0200\n"
-"Last-Translator: phantasm131 <phantasm131@gmail.com>\n"
+"PO-Revision-Date: 2012-11-15 21:39+0200\n"
+"Last-Translator: Rui <shenrui01@gmail.com>\n"
 "Language-Team: QQ Group 75543259\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
@@ -14,40 +14,40 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid "Clock Adjustment"
-msgstr ""
+msgstr "时钟校对"
 
 msgid "Count of time measurements"
-msgstr ""
+msgstr "单位时间数"
 
 msgid "Current system time"
-msgstr ""
+msgstr "当前系统时间"
 
 msgid "General"
-msgstr ""
+msgstr "基本设置"
 
 msgid "Hostname"
-msgstr ""
+msgstr "主机名"
 
 msgid "Offset frequency"
-msgstr ""
+msgstr "偏移量"
 
 msgid "Port"
-msgstr ""
+msgstr "端口"
 
 msgid "Synchronizes the system time"
-msgstr ""
+msgstr "同步系统时间"
 
 msgid "Time Server"
-msgstr ""
+msgstr "时间服务器"
 
 msgid "Time Servers"
-msgstr ""
+msgstr "时间服务器"
 
 msgid "Time Synchronisation"
-msgstr ""
+msgstr "时间同步"
 
 msgid "Update interval (in seconds)"
-msgstr ""
+msgstr "更新间隔(秒)"
 
 msgid "empty = infinite"
-msgstr ""
+msgstr "空值为无限长度"
index 9e7dea7..748aca1 100644 (file)
@@ -3,8 +3,8 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-19 19:35+0200\n"
-"PO-Revision-Date: 2012-06-21 18:36+0200\n"
-"Last-Translator: phantasm131 <phantasm131@gmail.com>\n"
+"PO-Revision-Date: 2012-11-22 18:17+0200\n"
+"Last-Translator: Rui <shenrui01@gmail.com>\n"
 "Language-Team: QQ Group 75543259 <axishero@foxmail.com>\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
@@ -14,30 +14,30 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid "Bidirectional mode"
-msgstr ""
+msgstr "双向模式"
 
 msgid "Device"
-msgstr ""
+msgstr "设备"
 
 msgid ""
 "First you have to install the packages to get support for USB (kmod-usb-"
 "printer) or parallel port (kmod-lp)."
-msgstr ""
+msgstr "首先你必须安装支持USB打印机的驱动(kmod-usb-printer)或者并行端口驱动(kmod-lp)"
 
 msgid "Port"
-msgstr ""
+msgstr "端口"
 
 msgid "Settings"
-msgstr ""
+msgstr "设置"
 
 msgid "TCP listener port."
-msgstr ""
+msgstr "监听端口"
 
 msgid "enable"
-msgstr ""
+msgstr "启用"
 
 msgid "p910nd - Printer server"
-msgstr ""
+msgstr "打印服务器"
 
 #~ msgid "p910nd listens on port 910+N. E.g. 9100 for the first printer."
 #~ msgstr "p910nd 的监听端口是910+N,举例:9100用于监听第一台打印机"
index b4c84bb..34b6a78 100644 (file)
@@ -33,7 +33,9 @@ msgid ""
 "Bandwidth limit for clients is only activated when both up- and download "
 "limit are set. Use a value of 0 here to completely disable this limitation. "
 "Whitelisted clients are not limited."
-msgstr "只有当 上传和下载的限制都设置的时候对客户端的带宽限制才会生效。在这里使用0 可以完全禁用此限制。白名单客户端不受限制。"
+msgstr ""
+"只有当 上传和下载的限制都设置的时候对客户端的带宽限制才会生效。在这里使用0 可"
+"以完全禁用此限制。白名单客户端不受限制。"
 
 # Something wwrong?
 msgid ""
index b024c54..dfc1abc 100644 (file)
@@ -68,7 +68,7 @@ msgid "Collectd Settings"
 msgstr ""
 
 msgid ""
-"Collectd is a small daeomon for collecting data from various sources through "
+"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 ""
@@ -112,6 +112,9 @@ msgstr ""
 msgid "Disk Usage"
 msgstr ""
 
+msgid "Display Host »"
+msgstr ""
+
 msgid "Display timespan »"
 msgstr ""
 
@@ -182,12 +185,6 @@ msgstr ""
 msgid "Incoming interface"
 msgstr ""
 
-msgid "Installed network plugins:"
-msgstr ""
-
-msgid "Installed output plugins:"
-msgstr ""
-
 msgid "Interface Plugin Configuration"
 msgstr ""
 
@@ -281,11 +278,6 @@ msgstr ""
 msgid "Network plugins"
 msgstr ""
 
-msgid ""
-"Network plugins are used to collect information about open tcp connections, "
-"interface traffic, iptables rules etc."
-msgstr ""
-
 msgid "Network protocol"
 msgstr ""
 
@@ -310,13 +302,6 @@ msgstr ""
 msgid "Output plugins"
 msgstr ""
 
-msgid ""
-"Output plugins provide different possibilities to store collected data. It "
-"is possible to enable multiple plugin at one, for example to store collected "
-"data in rrd databases and to transmit the data over the network to other "
-"collectd instances."
-msgstr ""
-
 msgid "Ping"
 msgstr ""
 
@@ -416,11 +401,6 @@ msgstr ""
 msgid "System plugins"
 msgstr ""
 
-msgid ""
-"System plugins collecting values about system state and ressource usage on "
-"the device.:"
-msgstr ""
-
 msgid "TCP Connections"
 msgstr ""
 
@@ -436,6 +416,9 @@ msgstr ""
 msgid "Table"
 msgstr ""
 
+msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
+msgstr ""
+
 msgid ""
 "The OLSRd plugin reads information about meshed networks from the txtinfo "
 "plugin of OLSRd."
@@ -552,11 +535,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"The wireless plugin collects statistics about wireless signal strength, "
-"noise and quality."
-msgstr ""
-
-msgid ""
 "This section defines on which interfaces collectd will wait for incoming "
 "connections."
 msgstr ""
@@ -568,6 +546,15 @@ msgstr ""
 msgid "Try to lookup fully qualified hostname"
 msgstr ""
 
+msgid "UPS"
+msgstr ""
+
+msgid "UPS Plugin Configuration"
+msgstr ""
+
+msgid "UPS name in NUT ups@host format"
+msgstr ""
+
 msgid "UnixSock"
 msgstr ""
 
@@ -586,9 +573,6 @@ msgstr ""
 msgid "Wireless"
 msgstr ""
 
-msgid "Wireless Plugin Configuration"
-msgstr ""
-
 msgid "Wireless iwinfo Plugin Configuration"
 msgstr ""
 
index 121642c..af7d365 100644 (file)
@@ -16,6 +16,8 @@ msgid ""
 "upstream proxy, <em>Reject access</em> disables any upstream proxy for the "
 "target"
 msgstr ""
+"<em>通过代理</em>允许给定的对象经过指定的上行代理的路由请求。<em>拒绝代理</"
+"em> 禁用对象的任何上行代理。"
 
 msgid ""
 "Adds an \"X-Tinyproxy\" HTTP header with the client IP address to forwarded "
@@ -23,163 +25,165 @@ msgid ""
 msgstr ""
 
 msgid "Allowed clients"
-msgstr ""
+msgstr "授权客户端"
 
 msgid "Allowed connect ports"
-msgstr ""
+msgstr "允许的连接端口"
 
 msgid "Bind address"
-msgstr ""
+msgstr "绑定地址"
 
 msgid ""
 "By default, basic POSIX expressions are used for filtering. Enable this to "
 "activate extended regular expressions"
 msgstr ""
+"默认情况下,使用基本的POSIX表达式作为滤规则。启用这个以使用正规表达式代替之。"
 
 msgid ""
 "By default, filter strings are treated as case-insensitive. Enable this to "
 "make the matching case-sensitive"
-msgstr ""
+msgstr "默认情况下,过滤规则是不区分大小写的。启用它则转为区分大小写。"
 
 msgid ""
 "By default, filtering is done based on domain names. Enable this to match "
 "against URLs instead"
-msgstr ""
+msgstr "默认情况下,过滤器只匹配域名。启用它以匹配URL。"
 
 msgid ""
 "By default, the filter rules act as blacklist. Enable this option to only "
 "allow matched URLs or domain names"
 msgstr ""
+"默认情况下,过滤规则将以黑名单形式匹配。启用它将仅允许过滤规则里的URL或域名。"
 
 msgid ""
 "Can be either an IP address or range, a domain name or \".\" for any host "
 "without domain"
-msgstr ""
+msgstr "可以是IP地址或者范围,也可以是域名或者以\".\"代表任意主机"
 
 msgid "Configuration"
 msgstr ""
 
 msgid "Connection timeout"
-msgstr ""
+msgstr "连接超时时间"
 
 msgid "Default deny"
-msgstr ""
+msgstr "默认拒绝"
 
 msgid "Enable Tinyproxy server"
-msgstr ""
+msgstr "启用Tinyproxy"
 
 msgid "Error page"
-msgstr ""
+msgstr "错误页面"
 
 msgid "Failed to retrieve statistics from url:"
 msgstr ""
 
 msgid "Filter by RegExp"
-msgstr ""
+msgstr "正则表达式过滤器"
 
 msgid "Filter by URLs"
-msgstr ""
+msgstr "基于URL的过滤器"
 
 msgid "Filter case-sensitive"
-msgstr ""
+msgstr "过滤器大小写敏感"
 
 msgid "Filter file"
-msgstr ""
+msgstr "过滤器文件"
 
 msgid "Filtering and ACLs"
-msgstr ""
+msgstr "过滤规则和访问控制列表"
 
 msgid "General settings"
-msgstr ""
+msgstr "基本设置"
 
 msgid "Group"
-msgstr ""
+msgstr "运行组"
 
 msgid "HTML template file to serve for stat host requests"
 msgstr ""
 
 msgid "HTML template file to serve when HTTP errors occur"
-msgstr ""
+msgstr "HTTP出错页面HTML模板"
 
 msgid "Header whitelist"
 msgstr ""
 
 msgid ""
 "List of IP addresses or ranges which are allowed to use the proxy server"
-msgstr ""
+msgstr "允许访问代理服务器的IP或IP段列表"
 
 msgid ""
 "List of allowed ports for the CONNECT method. A single value \"0\" allows "
 "all ports"
-msgstr ""
+msgstr "允许CONNECT方法连接的端口列表,0代表所有端口。"
 
 msgid "Listen address"
-msgstr ""
+msgstr "服务地址"
 
 msgid "Listen port"
-msgstr ""
+msgstr "服务端口"
 
 msgid "Log file"
-msgstr ""
+msgstr "日志文件"
 
 msgid "Log file to use for dumping messages"
 msgstr ""
 
 msgid "Log level"
-msgstr ""
+msgstr "记录等级"
 
 msgid "Logging verbosity of the Tinyproxy process"
 msgstr ""
 
 msgid "Max. clients"
-msgstr ""
+msgstr "最大客户端数"
 
 msgid "Max. requests per server"
-msgstr ""
+msgstr "单进程最大请求数"
 
 msgid "Max. spare servers"
-msgstr ""
+msgstr "最多备用服务器"
 
 msgid "Maximum allowed number of concurrently connected clients"
-msgstr ""
+msgstr "允许同时连接的最大客户端数量"
 
 msgid ""
 "Maximum allowed number of requests per process. If it is exeeded, the "
 "process is restarted. Zero means unlimited."
-msgstr ""
+msgstr "单个进程允许的最多请求数,超过这个值,进程将重启。0表示不限制。"
 
 msgid "Maximum number of prepared idle processes"
-msgstr ""
+msgstr "备用进程数的最大值"
 
 msgid "Maximum number of seconds an inactive connection is held open"
 msgstr ""
 
 msgid "Min. spare servers"
-msgstr ""
+msgstr "最少备用服务器"
 
 msgid "Minimum number of prepared idle processes"
-msgstr ""
+msgstr "备用进程数的最小值"
 
 msgid "Number of idle processes to start when launching Tinyproxy"
-msgstr ""
+msgstr "启动Tinyproxy时开启的进程数"
 
 msgid "Plaintext file with URLs or domains to filter. One entry per line"
-msgstr ""
+msgstr "用于过滤器的文本,包含URL或者域名,每行一条。"
 
 msgid "Policy"
-msgstr ""
+msgstr "策略"
 
 msgid "Privacy settings"
-msgstr ""
+msgstr "策略设置"
 
 msgid "Reject access"
-msgstr ""
+msgstr "拒绝访问"
 
 msgid "Server Settings"
-msgstr ""
+msgstr "服务器设置"
 
 msgid "Server limits"
-msgstr ""
+msgstr "服务器限制"
 
 msgid ""
 "Specifies HTTP header names which are allowed to pass-through, all others "
@@ -194,45 +198,45 @@ msgstr ""
 
 msgid ""
 "Specifies the address Tinyproxy binds to for outbound forwarded requests"
-msgstr ""
+msgstr "指定服务器向外转发请求时所使用的地址"
 
 msgid "Specifies the addresses Tinyproxy is listening on for requests"
-msgstr ""
+msgstr "指定服务器接收代理请求所使用的地址"
 
 msgid "Specifies the group name the Tinyproxy process is running as"
-msgstr ""
+msgstr "指定Tinyproxy进程所属组"
 
 msgid ""
 "Specifies the upstream proxy to use for accessing the target host. Format is "
 "<code>address:port</code>"
-msgstr ""
+msgstr "指定上级代理. 格式 <code>IP地址:端口</code>"
 
 msgid "Specifies the user name the Tinyproxy process is running as"
-msgstr ""
+msgstr "指定Tinyproxy进程所属用户"
 
 msgid "Start spare servers"
 msgstr ""
 
 msgid "Statistics page"
-msgstr ""
+msgstr "统计页面"
 
 msgid "Status"
 msgstr ""
 
 msgid "Target host"
-msgstr ""
+msgstr "目标主机"
 
 msgid "Tinyproxy"
-msgstr ""
+msgstr "Tinyproxy"
 
 msgid "Tinyproxy Status"
 msgstr ""
 
 msgid "Tinyproxy is a small and fast non-caching HTTP(S)-Proxy"
-msgstr ""
+msgstr "Tinyproxy是一个轻量级无缓存机制的高速HTTP(S)代理服务器"
 
 msgid "Upstream Proxies"
-msgstr ""
+msgstr "上级代理"
 
 msgid ""
 "Upstream proxy rules define proxy servers to use when accessing certain IP "
@@ -240,19 +244,19 @@ msgid ""
 msgstr ""
 
 msgid "Use syslog"
-msgstr ""
+msgstr "使用系统日志服务"
 
 msgid "User"
-msgstr ""
+msgstr "运行用户"
 
 msgid "Via hostname"
 msgstr ""
 
 msgid "Via proxy"
-msgstr ""
+msgstr "通过代理"
 
 msgid "Writes log messages to syslog instead of a log file"
-msgstr ""
+msgstr "将日志写入系统日志以代替指定的日志文件"
 
 msgid "X-Tinyproxy header"
 msgstr ""
index 1a22a2e..f426526 100644 (file)
@@ -47,4 +47,6 @@ msgid ""
 "uShare is a UPnP (TM) A/V & DLNA Media Server. It implements the server "
 "component that provides UPnP media devices with information on available "
 "multimedia files."
-msgstr "uShare是一个UPnP(TM) A/V和DLNA媒体服务器。可以将多媒体文件共享到支持UPnP的设备上。"
+msgstr ""
+"uShare是一个UPnP(TM) A/V和DLNA媒体服务器。可以将多媒体文件共享到支持UPnP的设"
+"备上。"
index 501c868..3e4bb0a 100644 (file)
@@ -38,4 +38,5 @@ msgstr "网络相机流"
 msgid ""
 "Configure your Linux-UVC compatible webcam. Point your browser to e.g. <a "
 "href=\"http://%s:%i/\">http://%s:%i/</a>"
-msgstr "配置兼容的网络相机。用浏览器访问<a href=\"http://%s:%i/\">http://%s:%i/</a>"
+msgstr ""
+"配置兼容的网络相机。用浏览器访问<a href=\"http://%s:%i/\">http://%s:%i/</a>"
index ee9d7b1..0482e95 100644 (file)
@@ -20,7 +20,9 @@ msgstr "ping主机地址"
 msgid ""
 "How often to check internet connection. Default unit is seconds, you can you "
 "use the suffix 'm' for minutes, 'h' for hours or 'd' for days"
-msgstr "检测网络连接的频率。默认单位为秒,你可以使用'm'作为后缀表示分钟,‘h’表示小时‘d’表示天。"
+msgstr ""
+"检测网络连接的频率。默认单位为秒,你可以使用'm'作为后缀表示分钟,‘h’表示小"
+"时‘d’表示天。"
 
 msgid ""
 "In periodic mode, it defines the reboot period. In internet mode, it defines "
@@ -28,8 +30,9 @@ msgid ""
 "engaged.Default unit is seconds, you can use the suffix 'm' for minutes, 'h' "
 "for hours or 'd' for days"
 msgstr ""
-"在周期模式,此处定义了重启的周期。在联网模式,这个表示没有网络连接情况下到执行重启的最长时间间隔。默认单位为秒,你可以使用'm'作为后缀表示分钟,‘h’"
-"表示小时‘d’表示天。"
+"在周期模式,此处定义了重启的周期。在联网模式,这个表示没有网络连接情况下到执"
+"行重启的最长时间间隔。默认单位为秒,你可以使用'm'作为后缀表示分钟,‘h’表示小"
+"时‘d’表示天。"
 
 msgid "Operating mode"
 msgstr "操作模式"
@@ -56,4 +59,5 @@ msgid ""
 "a non zero value here, will trigger a delayed hard reboot if the soft reboot "
 "fails. Enter a number of seconds to enable, use 0 to disable"
 msgstr ""
-"当重启系统的时候WatchCat将会触发一个软重启,在这里输入一个非0的值,如果软重启失败将会触发一个延迟的硬重启。输入秒数启用,输入0禁止功能。"
+"当重启系统的时候WatchCat将会触发一个软重启,在这里输入一个非0的值,如果软重启"
+"失败将会触发一个延迟的硬重启。输入秒数启用,输入0禁止功能。"
index cd6394e..c44f088 100644 (file)
@@ -14,36 +14,36 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid "Broadcast on all interfaces"
-msgstr ""
+msgstr "向所有接口广播"
 
 msgid "Choose the host to wake up or enter a custom MAC address to use"
-msgstr ""
+msgstr "选择要唤醒的主机或者输入自定义mac地址"
 
 msgid "Host to wake up"
-msgstr ""
+msgstr "选择要唤醒的主机"
 
 msgid "Network interface to use"
-msgstr ""
+msgstr "选择使用的网络接口"
 
 msgid ""
 "Sometimes only one of both tools work. If one of fails, try the other one"
-msgstr ""
+msgstr "有时只有一个工具生效。如果其中一个失效,请尝试另一个"
 
 msgid "Specifies the interface the WoL packet is sent on"
-msgstr ""
+msgstr "限定网络唤醒数据包将被发送到的接口"
 
 msgid "Starting WoL utility:"
-msgstr ""
+msgstr "正在启动网络唤醒工具"
 
 msgid "Wake on LAN"
-msgstr ""
+msgstr "网络唤醒"
 
 msgid ""
 "Wake on LAN is a mechanism to remotely boot computers in the local network."
-msgstr ""
+msgstr "网络唤醒提供了从远程启动本地网络内计算机的机制。"
 
 msgid "Wake up host"
-msgstr ""
+msgstr "唤醒主机"
 
 msgid "WoL program"
-msgstr ""
+msgstr "网络唤醒程序"
index 049525d..dfd545f 100644 (file)
@@ -69,6 +69,8 @@ for _, p in ipairs({"ppp", "pptp", "pppoe", "pppoa", "3g", "l2tp"}) do
                        return (nixio.fs.glob("/usr/lib/pppd/*/pptp.so")() ~= nil)
                elseif p == "3g" then
                        return nixio.fs.access("/lib/netifd/proto/3g.sh")
+               elseif p == "l2tp" then
+                       return nixio.fs.access("/lib/netifd/proto/l2tp.sh")
                else
                        return nixio.fs.access("/lib/netifd/proto/ppp.sh")
                end
diff --git a/themes/base/htdocs/luci-static/resources/Dropdowns.js b/themes/base/htdocs/luci-static/resources/Dropdowns.js
deleted file mode 100644 (file)
index a8d12b9..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
-Copyright (C) 2008  Alina Friedrichsen <x-alina@gmx.net>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-*/
-
-function initDropdowns() {
-       var aSelects = XHTML1.getElementsByTagName("select");
-       var isIE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
-
-       function showPlaceholder(sel) {
-               if( ! sel._ph ) {
-                       var box = sel.getBoundingClientRect();
-                       sel._dm = sel.currentStyle.display;
-                       sel._ph = document.createElement('input');
-                       sel.parentNode.insertBefore(sel._ph, sel);
-                       sel._ph.style.width  = ( box.right - box.left ) + 'px';
-                       sel._ph.style.height = ( box.bottom - box.top ) + 'px';
-                       sel._ph.style.margin = sel.currentStyle.margin;
-               }
-
-               sel._ph.value = sel.options[sel.selectedIndex].text;
-               sel._ph.style.display = sel._dm;
-               sel.style.display = 'none';
-       }
-
-       function hidePlaceholder(sel) {
-               if( sel._ph ) sel._ph.style.display = 'none';
-               sel.style.display = sel._dm;
-       }
-
-       function hideSelects() {
-               for(var i = 0; i < aSelects.length; i++) {
-                       showPlaceholder(aSelects[i]);
-               }
-       }
-
-       function showSelects() {
-               for(var i = 0; i < aSelects.length; i++) {
-                       hidePlaceholder(aSelects[i]);
-               }
-       }
-
-       function isEmptyObject(obj) {
-               for(var i in obj) {
-                       return false;
-               }
-               return true;
-       }
-
-       var nextUniqueID = 1;
-       var elementsNeeded = {};
-       var menusShown = {};
-       var menusToHide = {};
-       var delayHideTimerId;
-       var delayHideAllTime = 1000;
-       var delayHideTime = 400;
-       function delayHide() {
-               for(var i in menusToHide) {
-                       XHTML1.removeClass(menusToHide[i], "focus");
-               }
-               delayHideTimerId = null;
-       }
-
-       function updatePopup() {
-               if(isIE6) {
-                       if(isEmptyObject(elementsNeeded)) {
-                               showSelects();
-                       }
-                       else{
-                               hideSelects();
-                       }
-               }
-
-               var menusShownOld = menusShown;
-               menusShown = {};
-               for(var id in elementsNeeded) {
-                       var element = elementsNeeded[id];
-                       for(element = findLi(element); element; element = findLi(element.parentNode)) {
-                               XHTML1.addClass(element, "focus");
-                               if(!element.uniqueID) {
-                                       element.uniqueID = nextUniqueID++;
-                               }
-                               element.style.zIndex = 1000;
-                               menusShown[element.uniqueID] = element;
-                               delete menusToHide[element.uniqueID];
-                       }
-               }
-               for(var id in menusShownOld) {
-                       if(!menusShown[id]) {
-                               if(delayHideTimerId) {
-                                       clearTimeout(delayHideTimerId);
-                                       delayHideTimerId = 0;
-                                       delayHide();
-                               }
-                               menusToHide[id] = menusShownOld[id];
-                               menusToHide[id].style.zIndex = 999;
-                       }
-               }
-               if(menusToHide || isEmptyObject(elementsNeeded)) {
-                       if(delayHideTimerId) {
-                               clearTimeout(delayHideTimerId);
-                       }
-                       delayHideTimerId = setTimeout(delayHide, isEmptyObject(elementsNeeded) ? delayHideAllTime : delayHideTime);
-               }
-       }
-
-       function findLi(element) {
-               for(; element; element = element.parentNode) {
-                       if(XHTML1.isElement(element, "li")) {
-                               return element;
-                       }
-               }
-       }
-
-       function onmouseover(evt) {
-               var li = findLi(evt.currentTarget);
-               if(li && !li.focused) {
-                       if(!li.uniqueID) {
-                               li.uniqueID = nextUniqueID++;
-                       }
-                       elementsNeeded[li.uniqueID] = li;
-               }
-               XHTML1.addClass(evt.currentTarget, "over");
-               updatePopup();
-       }
-
-       function onmouseout(evt) {
-               var li = findLi(evt.currentTarget);
-               if(li && !li.focused && li.uniqueID) {
-                       delete elementsNeeded[li.uniqueID];
-               }
-               XHTML1.removeClass(evt.currentTarget, "over");
-               updatePopup();
-       }
-
-       function onfocus(evt) {
-               var li = findLi(evt.currentTarget);
-               if(li) {
-                       li.focused = true;
-                       if(!li.uniqueID) {
-                               li.uniqueID = nextUniqueID++;
-                       }
-                       elementsNeeded[li.uniqueID] = li;
-               }
-               updatePopup();
-       }
-
-       function onblur(evt) {
-               var li = findLi(evt.currentTarget);
-               if(li) {
-                       li.focused = false;
-                       delete elementsNeeded[li.uniqueID];
-               }
-               updatePopup();
-       }
-
-       var aElements = XHTML1.getElementsByTagName("a");
-       for(var i = 0; i < aElements.length; i++) {
-               var a = aElements[i];
-               for(var element = a.parentNode; element; element = element.parentNode) {
-                       if(XHTML1.isElement(element, "ul") && XHTML1.containsClass(element, "dropdowns")) {
-                               XHTML1.addEventListener(a, "focus", onfocus);
-                               XHTML1.addEventListener(a, "blur", onblur);
-                               XHTML1.addEventListener(a, "mouseover", onmouseover);
-                               XHTML1.addEventListener(a, "mouseout", onmouseout);
-                               break;
-                       }
-               }
-       }
-
-       XHTML1.addEventListener(document, "click", function() {
-               if (delayHideTimerId) {
-                       clearTimeout(delayHideTimerId);
-                       delayHideTimerId = 0;
-                       delayHide();
-               }
-       });
-}
-
-if(XHTML1.isDOMSupported()) {
-       XHTML1.addEventListener(window, "load", initDropdowns);
-}
diff --git a/themes/base/htdocs/luci-static/resources/VarType.js b/themes/base/htdocs/luci-static/resources/VarType.js
deleted file mode 100644 (file)
index d466810..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-Copyright (C) 2008  Alina Friedrichsen <x-alina@gmx.net>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-*/
-
-function VarType() {
-}
-
-VarType.isNull = function(obj) {
-       if(typeof obj == "undefined") return true;
-       if(typeof obj == "object" && (!obj)) return true;
-       return false;
-};
-
-VarType.toFloat = function(value) {
-       value = Number(value);
-       return value;
-};
-
-VarType.toDecimal = function(value) {
-       value = Number(value);
-       if(!isFinite(value)) value = 0.0;
-       return value;
-};
-
-VarType.toInt = function(value) {
-       value = Number(value);
-       if(!isFinite(value)) value = 0.0;
-       value = Math.floor(value);
-       return value;
-};
-
-VarType.toUInt = function(value) {
-       value = Number(value);
-       if(!isFinite(value)) value = 0.0;
-       else if(value < 0.0) value = 0.0;
-       value = Math.floor(value);
-       return value;
-};
-
-VarType.toStr = function(value) {
-       if(VarType.isNull(value)) value = "";
-       value = String(value);
-       return value;
-};
-
-VarType.toBool = function(value) {
-       value = Boolean(value);
-       return value;
-};
-
-VarType.needObject = function(obj) {
-       if(typeof obj != "object" || (!obj)) throw new TypeError();
-};
-
-VarType.needInstanceOf = function(obj, type) {
-       if(!(obj instanceof type)) throw new TypeError();
-};
-
-VarType.needFunction = function(obj) {
-       if(typeof obj != "function") throw new TypeError();
-};
-
-VarType.needNode = function(obj, type) {
-       VarType.needObject(obj);
-       if(VarType.isNull(obj.nodeType)) throw new TypeError();
-       if(!VarType.isNull(type)) {
-               type = VarType.toInt(type);
-               if(obj.nodeType != type) throw new TypeError();
-       }
-};
diff --git a/themes/base/htdocs/luci-static/resources/XHTML1.js b/themes/base/htdocs/luci-static/resources/XHTML1.js
deleted file mode 100644 (file)
index a7d4f7d..0000000
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
-Copyright (C) 2007, 2008  Alina Friedrichsen <x-alina@gmx.net>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-*/
-
-var XMLNS_XMLNS = "http://www.w3.org/2000/xmlns/";
-var XMLNS_XML = "http://www.w3.org/XML/1998/namespace";
-var XMLNS_XHTML = "http://www.w3.org/1999/xhtml";
-
-function W3CDOM_Event(currentTarget) {
-       VarType.needObject(currentTarget);
-       this.currentTarget = currentTarget;
-       this.preventDefault = function() { window.event.returnValue = false; };
-       return this;
-}
-
-function XHTML1() {
-}
-
-XHTML1.isDOMSupported = function() {
-       if(!document.getElementById) return false;
-       if(!(window.addEventListener || window.attachEvent)) return false;
-       return true;
-};
-
-XHTML1.isXHTML = function() {
-       if(document.documentElement.nodeName == "HTML") return false;
-       return true;
-};
-
-XHTML1.addEventListener = function(target, type, listener) {
-       VarType.needObject(target);
-       type = VarType.toStr(type);
-       VarType.needFunction(listener);
-
-       if(target.addEventListener) {
-               target.addEventListener(type, listener, false);
-       }
-       else if(target.attachEvent) {
-               target.attachEvent("on" + type, function() { listener(new W3CDOM_Event(target)); } );
-       }
-};
-
-XHTML1.createElement = function(tagName) {
-       tagName = VarType.toStr(tagName);
-
-       if(XHTML1.isXHTML()) {
-               return document.createElementNS(XMLNS_XHTML, tagName.toLowerCase());
-       }
-
-       return document.createElement(tagName.toUpperCase());
-};
-
-XHTML1.getElementsByTagName = function(tagName) {
-       tagName = VarType.toStr(tagName);
-
-       if(XHTML1.isXHTML()) {
-               return document.getElementsByTagNameNS(XMLNS_XHTML, tagName.toLowerCase());
-       }
-
-       return document.getElementsByTagName(tagName.toUpperCase());
-};
-
-XHTML1.isElement = function(node, tagName) {
-       VarType.needNode(node);
-       tagName = VarType.toStr(tagName);
-
-       if(node.nodeType == 1) {
-               if(XHTML1.isXHTML()) {
-                       if(node.namespaceURI == XMLNS_XHTML) {
-                               if(node.localName == tagName.toLowerCase()) return true;
-                       }
-               } else {
-                       if(node.nodeName == tagName.toUpperCase()) return true;
-               }
-       }
-
-       return false;
-};
-
-XHTML1.getAttribute = function(element, name) {
-       VarType.needNode(element, 1);
-       name = VarType.toStr(name);
-
-       name = name.toLowerCase();
-
-       if(XHTML1.isXHTML()) {
-               return element.getAttributeNS(null, name);
-       }
-
-       if(name == "class") {
-               return element.className;
-       }
-
-       return element.getAttribute(name);
-};
-
-XHTML1.setAttribute = function(element, name, value) {
-       VarType.needNode(element, 1);
-       name = VarType.toStr(name);
-       value = VarType.toStr(value);
-
-       name = name.toLowerCase();
-
-       if(XHTML1.isXHTML()) {
-               element.setAttributeNS(null, name, value);
-               return;
-       }
-
-       if(name == "class") {
-               element.className = value;
-               return;
-       }
-
-       element.setAttribute(name, value);
-};
-
-XHTML1.removeAttribute = function(element, name) {
-       VarType.needNode(element, 1);
-       name = VarType.toStr(name);
-
-       name = name.toLowerCase();
-
-       if(XHTML1.isXHTML()) {
-               element.removeAttributeNS(null, name);
-               return;
-       }
-
-       if(name == "class") {
-               element.className = "";
-               return;
-       }
-
-       element.removeAttribute(name);
-};
-
-XHTML1.containsClass = function(element, className) {
-       VarType.needNode(element, 1);
-       className = VarType.toStr(className).replace(/^\s+/g, "").replace(/\s+$/g, "");
-
-       var classString = XHTML1.getAttribute(element, "class").replace(/\s+/g, " ").replace(/^\s+/g, "").replace(/\s+$/g, "");
-       var classArray = classString.split(" ");
-       for(var i = 0; i < classArray.length; i++) {
-               if(classArray[i] == className) return true;
-       }
-
-       return false;
-};
-
-XHTML1.addClass = function(element, className) {
-       VarType.needNode(element, 1);
-       className = VarType.toStr(className).replace(/^\s+/g, "").replace(/\s+$/g, "");
-
-       var classString = XHTML1.getAttribute(element, "class").replace(/\s+/g, " ").replace(/^\s+/g, "").replace(/\s+$/g, "");
-       var classArray = classString.split(" ");
-       classString = "";
-       for(var i = 0; i < classArray.length; i++) {
-               if(classArray[i] != className) {
-                       if(classString == "") classString = classArray[i];
-                       else classString += " " + classArray[i];
-               }
-       }
-
-       if(classString == "") classString = className;
-       else classString += " " + className;
-
-       XHTML1.setAttribute(element, "class", classString);
-};
-
-XHTML1.removeClass = function(element, className) {
-       VarType.needNode(element, 1);
-       className = VarType.toStr(className).replace(/^\s+/g, "").replace(/\s+$/g, "");
-
-       var classString = XHTML1.getAttribute(element, "class").replace(/\s+/g, " ").replace(/^\s+/g, "").replace(/\s+$/g, "");
-       var classArray = classString.split(" ");
-       classString = "";
-       for(var i = 0; i < classArray.length; i++) {
-               if(classArray[i] != className) {
-                       if(classString == "") classString = classArray[i];
-                       else classString += " " + classArray[i];
-               }
-       }
-
-       XHTML1.setAttribute(element, "class", classString);
-};
-
-XHTML1.removeAllChildren = function(node) {
-       VarType.needNode(node);
-
-       while(node.lastChild) {
-               node.removeChild(node.lastChild);
-       }
-};
-
-XHTML1.getTextContent = function(node) {
-       VarType.needNode(node);
-
-       if(typeof node.textContent != "undefined") {
-               return node.textContent;
-       }
-
-       switch(node.nodeType) {
-               case 1:
-               case 2:
-               case 5:
-               case 6:
-               case 11:
-                       var textContent = "";
-                       for(node = node.firstChild; node; node = node.nextSibling) {
-                               if(node.nodeType == 7) continue;
-                               if(node.nodeType == 8) continue;
-                               textContent += VarType.toStr(XHTML1.getTextContent(node));
-                       }
-                       return textContent;
-               case 3:
-               case 4:
-               case 7:
-               case 8:
-                       return node.nodeValue;
-       }
-
-       return null;
-};
-
-XHTML1.setTextContent = function(node, value) {
-       VarType.needNode(node);
-       value = VarType.toStr(value);
-
-       if(typeof node.textContent != "undefined") {
-               node.textContent = value;
-       }
-
-       switch(node.nodeType) {
-               case 1:
-               case 2:
-               case 5:
-               case 6:
-               case 11:
-                       XHTML1.removeAllChildren(node);
-                       if(value != "") {
-                               node.appendChild(document.createTextNode(value));
-                       }
-                       break;
-               case 3:
-               case 4:
-               case 7:
-               case 8:
-                       node.nodeValue = value;
-                       break;
-       }
-};
index 286ed25..26f2bbb 100644 (file)
 /* Reset.less
  * Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here      that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc).
  * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
-html, body {
+html {
        margin: 0;
        padding: 0;
 }
 
+body {
+       margin: 0;
+       padding: 5px;
+}
+
 h1, h2, h3, h4, h5, h6, p, pre, a, abbr, acronym, code, del, em, img, q, s,
 small, strike, strong, sub, sup, tt, var, dd, dl, dt, li, ol, ul, fieldset,
 form, label, legend, button, table, caption, tbody, tfoot, thead, tr, th, td {
@@ -789,6 +794,7 @@ header .fill {
        -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
        -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
+       padding: 0 5px;
 }
 
 header div > ul, .nav {
@@ -1451,6 +1457,18 @@ footer {
        background-image: url('../resources/cbi/link.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
 }
 
+.cbi-button-download,
+.cbi-input-download {
+       background-position: 6px center, left top;
+       padding-left: 28px;
+       background-image: url('../resources/cbi/download.gif'), -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));
+       background-image: url('../resources/cbi/download.gif'), -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
+       background-image: url('../resources/cbi/download.gif'), -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);
+       background-image: url('../resources/cbi/download.gif'), -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
+       background-image: url('../resources/cbi/download.gif'), -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
+       background-image: url('../resources/cbi/download.gif'), linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
+}
+
 .btn.active, .btn:active {
        -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
        -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
index 33e2e48..c79c152 100644 (file)
@@ -79,7 +79,7 @@ You may obtain a copy of the License at
                                end
                 if level > 2 then
                %>
-                       <li class="tabmenu-item-<%=v%><%- if nnode._menu_selected or (node.leaf and v == leaf) then -%> active<% end %>">
+                       <li class="tabmenu-item-<%=v%><%- if nnode._menu_selected or (node.leaf and v == leaf) then %> active<% end %>">
                            <a href="<%=nodeurl(prefix, v, nnode.query)%>"><%=striptags(translate(nnode.title))%></a>
                        </li>
                <%      end
@@ -106,6 +106,10 @@ You may obtain a copy of the License at
   <link rel="shortcut icon" href="<%=media%>/favicon.ico">
   <% if node and node.css then %><link rel="stylesheet" href="<%=resource%>/<%=node.css%>">
   <% end -%>
+  <% if css then %><style title="text/css">
+  <%-= css %>
+  </style>
+  <% end -%>
   <script src="<%=resource%>/xhr.js"></script>
  </head>
 
index 5e5d75c..4f89b2d 100644 (file)
@@ -8,16 +8,16 @@ body {
        color: #ffffff;
        font-family: Verdana, Arial, sans-serif;
        font-size: 100%;
-       line-height: 100%; 
+       line-height: 100%;
        background-image: url(images/main-back.png);
        background-repeat: repeat-x;
        background-position: left bottom;
        }
-#all {  
+#all {
         margin: 0px;
        padding: 0px;
         min-height: 800px;
-}      
+}
 
 code {
        font-family: monospace;
@@ -27,7 +27,7 @@ code {
 a:link, a:visited {
        color:#000000;
        font-weight:bold;
-       text-decoration:none;   
+       text-decoration:none;
        }
 a:hover {
        color:#333333;
@@ -201,7 +201,7 @@ div#maincontent ul {
        color: #000000;
        text-decoration: none;
        font-size: 70%;
-       font-weight: bold; 
+       font-weight: bold;
 }
 
 
@@ -211,7 +211,7 @@ div#maincontent ul {
        border-top:0.3em solid #FFCB05;
        margin-top:  -0.2em;
 }
-.mainmenu .active a{   
+.mainmenu .active a{
        color: #000000;
        font-weight: bold;
        border-top:0.2em solid #FFCB05;
index 7313fff..5099d18 100644 (file)
@@ -30,7 +30,6 @@ for i,r in ipairs(request) do
        end
 end
 
-require("luci.i18n").loadc("base")
 require("luci.http").prepare_content("text/html")
 
 -%>
@@ -41,6 +40,10 @@ require("luci.http").prepare_content("text/html")
 <head>
        <link rel="stylesheet" type="text/css" href="<%=media%>/cascade.css" />
        <% if node and node.css then %><link rel="stylesheet" type="text/css" href="<%=resource%>/<%=node.css%>" /><% end %>
+       <% if css then %><style title="text/css">
+       <%-= css %>
+       </style>
+       <% end -%>
        <link rel="shortcut icon" href="<%=media%>/images/favicon.ico" />
        <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
        <meta http-equiv="content-script-type" content="text/javascript" />
index cd49fcb..d5fe772 100644 (file)
@@ -275,19 +275,19 @@ ul.dropdowns ul ul ul li:hover ul {
        left: 100%;
 }
 
-#xhr_poll_status { 
-       cursor: pointer; 
-} 
+#xhr_poll_status {
+       cursor: pointer;
+}
 
-#xhr_poll_status #xhr_poll_status_off { 
-       font-weight: bold; 
-       color: #FF0000; 
-} 
+#xhr_poll_status #xhr_poll_status_off {
+       font-weight: bold;
+       color: #FF0000;
+}
 
-#xhr_poll_status #xhr_poll_status_on { 
-       font-weight: bold; 
-       color: #00FF00; 
-} 
+#xhr_poll_status #xhr_poll_status_on {
+       font-weight: bold;
+       color: #00FF00;
+}
 
 #menubar {
        position: relative;
@@ -658,7 +658,7 @@ input.cbi-button-add {
        background-color: inherit;
        color: #000;
        padding: 0 1px 0 17px;
-       border: 1px solid #FFF; 
+       border: 1px solid #FFF;
 }
 
 input.cbi-input-fieldadd,
@@ -691,18 +691,27 @@ input.cbi-button-save {
 input.cbi-input-apply,
 input.cbi-button-apply {
        background: url('../resources/cbi/apply.gif') no-repeat scroll 1px center;
-       background-color: inherit; 
-       color: #000; 
+       background-color: inherit;
+       color: #000;
        padding: 0 1px 0 17px;
-} 
+}
 
-input.cbi-input-link, 
-       input.cbi-button-link { 
-       background: url('../resources/cbi/link.gif') no-repeat scroll 1px center; 
+input.cbi-input-link,
+input.cbi-button-link {
+       background: url('../resources/cbi/link.gif') no-repeat scroll 1px center;
        background-color: inherit;
-       color: #000;    
+       color: #000;
+       padding: 0 1px 0 17px;
+       border: none;
+}
+
+input.cbi-input-download,
+input.cbi-button-download {
+       background: url('../resources/cbi/download.gif') no-repeat scroll 1px center;
+       background-color: inherit;
+       color: #000;
        padding: 0 1px 0 17px;
-       border: none;   
+       border: none;
 }
 
 input.cbi-input-remove,
@@ -994,72 +1003,72 @@ td.cbi-value-error {
        padding: 0.5em;
 }
 
-.uci-change-list {                 
-        font-family: monospace;    
-}                                  
-                                   
-.uci-change-list ins,              
-.uci-change-legend-label ins {     
-        text-decoration: none;     
-        border: 1px solid #00FF00; 
-        background-color: #CCFFCC; 
-        display: block;            
-        padding: 2px;              
-}                                 
-                                           
-.uci-change-list del,               
-.uci-change-legend-label del {                  
-        text-decoration: none;    
+.uci-change-list {
+        font-family: monospace;
+}
+
+.uci-change-list ins,
+.uci-change-legend-label ins {
+        text-decoration: none;
+        border: 1px solid #00FF00;
+        background-color: #CCFFCC;
+        display: block;
+        padding: 2px;
+}
+
+.uci-change-list del,
+.uci-change-legend-label del {
+        text-decoration: none;
         border: 1px solid #FF0000;
         background-color: #FFCCCC;
-        display: block;           
-        font-style: normal;       
-        padding: 2px;             
-}                                 
-                                  
-.uci-change-list var,             
-.uci-change-legend-label var {    
-        text-decoration: none;    
+        display: block;
+        font-style: normal;
+        padding: 2px;
+}
+
+.uci-change-list var,
+.uci-change-legend-label var {
+        text-decoration: none;
         border: 1px solid #CCCCCC;
         background-color: #EEEEEE;
-        display: block;           
-        font-style: normal;       
-        padding: 2px;             
-}                                 
-                                  
-.uci-change-list var ins,         
-.uci-change-list var del {        
-        /*display: inline;*/      
-        border: none;             
-        white-space: pre;         
-        font-style: normal;       
-        padding: 0px;             
-}                                 
-                                  
-.uci-change-legend {              
-        padding: 5px;             
-}                                 
-                                         
-.uci-change-legend-label {          
-        width: 150px;             
-        float: left;              
-        font-size: 80%;           
-}                                 
-
-.uci-change-legend-label>ins,     
-.uci-change-legend-label>del,     
-.uci-change-legend-label>var {    
-        float: left;              
-        margin-right: 4px;        
-        width: 10px;              
-        height: 10px;             
-        display: block;           
-}                                        
-                                    
-.uci-change-legend-label var ins, 
+        display: block;
+        font-style: normal;
+        padding: 2px;
+}
+
+.uci-change-list var ins,
+.uci-change-list var del {
+        /*display: inline;*/
+        border: none;
+        white-space: pre;
+        font-style: normal;
+        padding: 0px;
+}
+
+.uci-change-legend {
+        padding: 5px;
+}
+
+.uci-change-legend-label {
+        width: 150px;
+        float: left;
+        font-size: 80%;
+}
+
+.uci-change-legend-label>ins,
+.uci-change-legend-label>del,
+.uci-change-legend-label>var {
+        float: left;
+        margin-right: 4px;
+        width: 10px;
+        height: 10px;
+        display: block;
+}
+
+.uci-change-legend-label var ins,
 .uci-change-legend-label var del {
-        line-height: 6px;         
-        border: none;             
+        line-height: 6px;
+        border: none;
 }
 
-} 
+}
index 2608177..a8c257e 100644 (file)
@@ -74,11 +74,15 @@ You may obtain a copy of the License at
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <meta http-equiv="Content-Script-Type" content="text/javascript" />
 <link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/cascade.css" />
-<link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="<%=media%>/mobile.css" type="text/css" />
+<link rel="stylesheet" media="only screen and (max-device-width: 854px)" href="<%=media%>/mobile.css" type="text/css" />
 <link rel="stylesheet" media="handheld" href="<%=media%>/mobile.css" type="text/css" />
 <!--[if IE 7]><link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/ie7.css" /><![endif]-->
 <% if node and node.css then %><link rel="stylesheet" type="text/css" media="screen" href="<%=resource%>/<%=node.css%>" />
 <% end -%>
+<% if css then %><style title="text/css">
+<%= css %>
+</style>
+<% end -%>
 <script type="text/javascript" src="<%=resource%>/xhr.js"></script>
 
 <title><%=striptags( hostname .. ( (node and node.title) and ' - ' .. translate(tostring(node.title)) or '')) %> - LuCI</title>
index acb44f3..4a6877f 100644 (file)
@@ -529,6 +529,14 @@ input.cbi-button-link {
        padding-right: 1px;
 }
 
+input.cbi-input-download,
+input.cbi-button-download {
+       background-image: url('../resources/cbi/download.gif');
+       color: #000000;
+       padding-left: 17px;
+       padding-right: 1px;
+}
+
 input.cbi-input-remove,
 div.cbi-section-remove input {
        background-image: url('../resources/cbi/remove.gif');
index 9f85959..5006723 100644 (file)
@@ -107,6 +107,10 @@ $Id$
 <!--[if IE 8]><link rel="stylesheet" type="text/css" media="screen" href="<%=media%>/ie8.css" /><![endif]-->
 <% if node and node.css then %><link rel="stylesheet" type="text/css" media="screen" href="<%=resource%>/<%=node.css%>" />
 <% end -%>
+<% if css then %><style title="text/css">
+<%= css %>
+</style>
+<% end -%>
 <script type="text/javascript" src="<%=resource%>/xhr.js"></script>
 <title><%=striptags( hostname .. ( (node and node.title) and ' - ' .. translate(node.title) or '')) %> - LuCI</title>
 </head>