forked from I2P_Developers/i2p.i2p
merge of '4016f0b3372bfe07d914506d696a999c20d4c02c'
and '66ef156941e22ca82de6bf0b9ec70dd74c7a130b'
This commit is contained in:
22
.tx/config
22
.tx/config
@@ -7,6 +7,8 @@ trans.es = apps/i2ptunnel/locale/messages_es.po
|
||||
trans.fr = apps/i2ptunnel/locale/messages_fr.po
|
||||
trans.nl = apps/i2ptunnel/locale/messages_nl.po
|
||||
trans.ru = apps/i2ptunnel/locale/messages_ru.po
|
||||
trans.sv_SE = apps/i2ptunnel/locale/messages_sv.po
|
||||
trans.vi = apps/i2ptunnel/locale/messages_vi.po
|
||||
trans.zh_CN = apps/i2ptunnel/locale/messages_zh.po
|
||||
|
||||
[I2P.routerconsole]
|
||||
@@ -15,9 +17,14 @@ source_lang = en
|
||||
trans.ar = apps/routerconsole/locale/messages_ar.po
|
||||
trans.de = apps/routerconsole/locale/messages_de.po
|
||||
trans.es = apps/routerconsole/locale/messages_es.po
|
||||
trans.fi = apps/routerconsole/locale/messages_fi.po
|
||||
trans.fr = apps/routerconsole/locale/messages_fr.po
|
||||
trans.it = apps/routerconsole/locale/messages_it.po
|
||||
trans.nl = apps/routerconsole/locale/messages_nl.po
|
||||
trans.pl = apps/routerconsole/locale/messages_pl.po
|
||||
trans.ru = apps/routerconsole/locale/messages_ru.po
|
||||
trans.sv_SE = apps/routerconsole/locale/messages_sv.po
|
||||
trans.vi = apps/routerconsole/locale/messages_vi.po
|
||||
trans.zh_CN = apps/routerconsole/locale/messages_zh.po
|
||||
|
||||
[I2P.i2psnark]
|
||||
@@ -27,9 +34,13 @@ trans.ar = apps/i2psnark/locale/messages_ar.po
|
||||
trans.de = apps/i2psnark/locale/messages_de.po
|
||||
trans.es = apps/i2psnark/locale/messages_es.po
|
||||
trans.fr = apps/i2psnark/locale/messages_fr.po
|
||||
trans.it = apps/i2psnark/locale/messages_it.po
|
||||
trans.nl = apps/i2psnark/locale/messages_nl.po
|
||||
trans.pl = apps/i2psnark/locale/messages_pl.po
|
||||
trans.pt = apps/i2psnark/locale/messages_pt.po
|
||||
trans.ru = apps/i2psnark/locale/messages_ru.po
|
||||
trans.sv_SE = apps/i2psnark/locale/messages_sv.po
|
||||
trans.vi = apps/i2psnark/locale/messages_vi.po
|
||||
trans.zh_CN = apps/i2psnark/locale/messages_zh.po
|
||||
|
||||
[I2P.susidns]
|
||||
@@ -40,7 +51,9 @@ trans.de = apps/susidns/locale/messages_de.po
|
||||
trans.es = apps/susidns/locale/messages_es.po
|
||||
trans.fr = apps/susidns/locale/messages_fr.po
|
||||
trans.nl = apps/susidns/locale/messages_nl.po
|
||||
trans.pl = apps/susidns/locale/messages_pl.po
|
||||
trans.ru = apps/susidns/locale/messages_ru.po
|
||||
trans.sv_SE = apps/susidns/locale/messages_sv.po
|
||||
trans.zh_CN = apps/susidns/locale/messages_zh.po
|
||||
|
||||
[I2P.desktopgui]
|
||||
@@ -49,9 +62,14 @@ source_lang = en
|
||||
trans.ar = apps/desktopgui/locale/messages_ar.po
|
||||
trans.de = apps/desktopgui/locale/messages_de.po
|
||||
trans.es = apps/desktopgui/locale/messages_es.po
|
||||
trans.fi = apps/desktopgui/locale/messages_fi.po
|
||||
trans.fr = apps/desktopgui/locale/messages_fr.po
|
||||
trans.it = apps/desktopgui/locale/messages_it.po
|
||||
trans.nl = apps/desktopgui/locale/messages_nl.po
|
||||
trans.pl = apps/desktopgui/locale/messages_pl.po
|
||||
trans.ru = apps/desktopgui/locale/messages_ru.po
|
||||
trans.sv_SE = apps/desktopgui/locale/messages_sv.po
|
||||
trans.vi = apps/desktopgui/locale/messages_vi.po
|
||||
trans.zh_CN = apps/desktopgui/locale/messages_zh.po
|
||||
|
||||
[I2P.susimail]
|
||||
@@ -61,6 +79,10 @@ trans.de = apps/susimail/locale/messages_de.po
|
||||
trans.es = apps/susimail/locale/messages_es.po
|
||||
trans.fr = apps/susimail/locale/messages_fr.po
|
||||
trans.nl = apps/susimail/locale/messages_nl.po
|
||||
trans.sv_SE = apps/susimail/locale/messages_sv.po
|
||||
trans.pl = apps/susimail/locale/messages_pl.po
|
||||
trans.vi = apps/susimail/locale/messages_vi.po
|
||||
trans.zh_CN = apps/susimail/locale/messages_zh.po
|
||||
|
||||
[main]
|
||||
host = http://www.transifex.net
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Headless I2P installation instructions
|
||||
Headless (console mode) I2P installation instructions
|
||||
|
||||
1) java -jar i2pinstall.exe -console (you've already done this)
|
||||
|
||||
@@ -6,9 +6,9 @@ This will run the installer in text mode, including running the postinstall.sh
|
||||
script. After that, you may run 'sh i2prouter start'
|
||||
which will start the router and attempt to launch a browser.
|
||||
|
||||
If you do not have an X server running, the browser launch will probably fail, and
|
||||
If you do not have an X server running, the browser launch may fail, and
|
||||
you may use:
|
||||
lynx http://localhost:7657/index.jsp
|
||||
lynx http://localhost:7657/
|
||||
to configure the router.
|
||||
|
||||
If you're having trouble, swing by http://forum.i2p2.de/, check the
|
||||
@@ -24,22 +24,22 @@ edit the files i2prouter (Linux) and wrapper.config (Linux and Windows)
|
||||
where there are comments labeled "PORTABLE". Do this before you
|
||||
run I2P for the first time.
|
||||
|
||||
To run I2P explicitly:
|
||||
To start I2P:
|
||||
(*nix): sh i2prouter start
|
||||
(win*): I2P.exe
|
||||
(Platforms unsupported by the wrapper - PPC, ARM, etc): sh runplain.sh
|
||||
(non-x86 platforms PPC, ARM, etc): sh runplain.sh
|
||||
|
||||
To stop the router (gracefully):
|
||||
lynx http://localhost:7657/configservice.jsp ("Shutdown gracefully")
|
||||
To stop I2P (gracefully):
|
||||
lynx http://localhost:7657/summaryframe (click "Shutdown")
|
||||
|
||||
To stop the router (immediately):
|
||||
To stop I2P immediately:
|
||||
sh i2prouter stop
|
||||
|
||||
To uninstall I2P:
|
||||
rm -rf $i2pInstallDir
|
||||
rm -rf $I2PInstallDir ~/.i2p
|
||||
|
||||
Supported JVMs:
|
||||
Windows: Latest available from http://java.sun.com/ (1.5+ supported)
|
||||
Linux: Latest available from http://java.sun.com/ (1.5+ supported)
|
||||
FreeBSD: Sun 1.5-compatible (NIO required)
|
||||
various: http://www.kaffe.org/ Sun 1.5-compatible (NIO required)
|
||||
Windows: Latest available from http://java.com/download (1.5+ supported)
|
||||
Linux: Latest available from http://java.com/download (1.5+ supported)
|
||||
FreeBSD: 1.5-compatible (NIO required)
|
||||
Other operating systems and JVMs: See http://trac.i2p2.de/wiki/java
|
||||
|
||||
28
INSTALL.txt
28
INSTALL.txt
@@ -1,8 +1,8 @@
|
||||
I2P source installation instructions
|
||||
|
||||
Prerequisites to build from source:
|
||||
Java SDK (preferably Sun) 1.5.0 or higher (1.6 recommended)
|
||||
The SDK must have Pack200 support (java.util.jar.Pack200)
|
||||
Java SDK (preferably Oracle/Sun or OpenJDK) 1.6.0 or higher
|
||||
Non-linux operating systems and JVMs: See http://trac.i2p2.de/wiki/java
|
||||
Apache Ant 1.7.0 or higher
|
||||
Optional, For multilanguage support: The xgettext, msgfmt, and msgmerge tools installed
|
||||
from the GNU gettext package http://www.gnu.org/software/gettext/
|
||||
@@ -24,10 +24,24 @@ From there, you can run the headless (console mode) installer:
|
||||
Or run the GUI installer:
|
||||
java -jar i2pinstall.exe
|
||||
|
||||
Or move the update file into an existing installation directory and restart.
|
||||
Or move the i2pupdate.zip file into an existing installation directory and restart.
|
||||
|
||||
To start I2P:
|
||||
(*nix): sh i2prouter start
|
||||
(win*): I2P.exe
|
||||
(non-x86 platforms PPC, ARM, etc): sh runplain.sh
|
||||
|
||||
To stop I2P (gracefully):
|
||||
lynx http://localhost:7657/summaryframe (click "Shutdown")
|
||||
|
||||
To stop I2P immediately:
|
||||
sh i2prouter stop
|
||||
|
||||
To uninstall I2P:
|
||||
rm -rf $I2PInstallDir ~/.i2p
|
||||
|
||||
Supported JVMs:
|
||||
Windows: Latest available from http://java.sun.com/ (1.5+ supported)
|
||||
Linux: Latest available from http://java.sun.com/ (1.5+ supported)
|
||||
FreeBSD: Sun 1.5-compatible (NIO required)
|
||||
various: http://www.kaffe.org/ Sun 1.5-compatible (NIO required)
|
||||
Windows: Latest available from http://java.com/download (1.5+ supported)
|
||||
Linux: Latest available from http://java.com/download (1.5+ supported)
|
||||
FreeBSD: 1.5-compatible (NIO required)
|
||||
Other operating systems and JVMs: See http://trac.i2p2.de/wiki/java
|
||||
|
||||
47
LICENSE.txt
47
LICENSE.txt
@@ -29,7 +29,7 @@ POSSIBILITY OF SUCH DAMAGES.
|
||||
LICENSES
|
||||
--------
|
||||
|
||||
Core:
|
||||
Core (i2p.jar):
|
||||
Public domain except as listed below:
|
||||
|
||||
ElGamal and DSA code:
|
||||
@@ -56,10 +56,6 @@ Public domain except as listed below:
|
||||
Copyright (C) 2001, 2002, Free Software Foundation, Inc.
|
||||
See licenses/LICENSE-LGPLv2.1.txt
|
||||
|
||||
GMP 4.1.3:
|
||||
Copyright 1991, 1996, 1999, 2000 Free Software Foundation, Inc.
|
||||
See licenses/LICENSE-LGPLv2.1.txt
|
||||
|
||||
HashCash code:
|
||||
Copyright 2006 Gregory Rubin grrubin@gmail.com
|
||||
See licenses/LICENSE-HashCash.txt
|
||||
@@ -72,8 +68,12 @@ Public domain except as listed below:
|
||||
Contains some code Copyright 2006 Sun Microsystems, Inc.
|
||||
See licenses/LICENSE-InstallCert.txt
|
||||
|
||||
BlockFile:
|
||||
Copyright (c) 2006, Matthew Estes
|
||||
See licenses/LICENSE-BlockFile.txt
|
||||
|
||||
Router:
|
||||
|
||||
Router (router.jar):
|
||||
Public domain except as listed below:
|
||||
UPnP.java:
|
||||
From freenet
|
||||
@@ -127,11 +127,22 @@ Installer:
|
||||
|
||||
|
||||
|
||||
Wrapper 3.1.1:
|
||||
Copyright (c) 1999, 2004 Tanuki Software
|
||||
Java Service Wrapper Community Edition 32-bit 3.5.9:
|
||||
Copyright (C) 1999-2011 Tanuki Software, Ltd. All Rights Reserved.
|
||||
See licenses/LICENSE-Wrapper.txt
|
||||
|
||||
|
||||
Jbigi Libraries (jbigi.jar):
|
||||
JNI code public domain.
|
||||
|
||||
GMP 4.1.3 / 4.1.4:
|
||||
Copyright 1991, 1996, 1999, 2000 Free Software Foundation, Inc.
|
||||
See licenses/LICENSE-LGPLv2.1.txt
|
||||
|
||||
GMP 4.3.2 / 5.0.2:
|
||||
Copyright 1991, 1996, 1999, 2000, 2007 Free Software Foundation, Inc.
|
||||
See licenses/LICENSE-LGPLv3.txt
|
||||
|
||||
|
||||
Applications:
|
||||
|
||||
@@ -141,7 +152,7 @@ Applications:
|
||||
|
||||
BOB:
|
||||
Copyright (C) sponge
|
||||
DWTFYWTPL
|
||||
See licenses/COPYING-BOB.txt
|
||||
|
||||
I2PSnark:
|
||||
Copyright (C) 2003 Mark J. Wielaard
|
||||
@@ -164,13 +175,13 @@ Applications:
|
||||
By welterde.
|
||||
See licenses/LICENSE-GPLv2.txt
|
||||
|
||||
Jetty 5.1.12:
|
||||
Jetty 5.1.15:
|
||||
Copyright 2000-2004 Mort Bay Consulting Pty. Ltd.
|
||||
See licenses/LICENSE-Apache1.1.txt
|
||||
See licenses/LICENSE-Apache2.0.txt
|
||||
See licenses/NOTICE-Commons-Logging.txt
|
||||
|
||||
JRobin 1.4.0:
|
||||
JRobin 1.5.9.1:
|
||||
See licenses/LICENSE-LGPLv2.1.txt
|
||||
|
||||
Ministreaming Lib:
|
||||
@@ -190,6 +201,10 @@ Applications:
|
||||
Copyright (c) 2003 Direct Information Pvt. Ltd. All Rights Reserved.
|
||||
See licenses/LICENSE-GeoIP.txt
|
||||
|
||||
Router Console and I2PSnark themes:
|
||||
"Man with hat over face" & related images licensed under a Creative Commons 2.0 license.
|
||||
Original photos by Florian Kuhlmann. http://www.flickr.com/photos/floriankuhlmann/3117758155
|
||||
|
||||
SAM:
|
||||
Public domain.
|
||||
|
||||
@@ -199,6 +214,8 @@ Applications:
|
||||
SusiDNS:
|
||||
Copyright (C) 2005 <susi23@mail.i2p>
|
||||
See licenses/LICENSE-GPLv2.txt
|
||||
Uses Apache Jakarta Standard Tag Library 1.1.2:
|
||||
See licenses/LICENSE-Apache2.0.txt
|
||||
|
||||
SusiMail:
|
||||
Copyright (C) 2004-2005 <susi23@mail.i2p>
|
||||
@@ -223,6 +240,10 @@ distributions. See the source package for the additional license information.
|
||||
Atalk:
|
||||
Public domain
|
||||
|
||||
BOB Demos:
|
||||
Copyright (C) sponge
|
||||
DWTFYWTPL
|
||||
|
||||
Desktopgui
|
||||
Copyright (c) Mathias De Maré
|
||||
See apps/desktopgui/LICENSE
|
||||
@@ -240,7 +261,3 @@ distributions. See the source package for the additional license information.
|
||||
|
||||
SAM Python Library:
|
||||
Public domain.
|
||||
|
||||
I2PSnark/Console themes:
|
||||
"Man with hat over face" & related images licensed under a Creative Commons 2.0 license.
|
||||
Original photos by Florian Kuhlmann. http://www.flickr.com/photos/floriankuhlmann/3117758155
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
Prerequisites to build from source:
|
||||
Java SDK (preferably Sun) 1.5.0 or higher (1.6 recommended)
|
||||
The SDK must have Pack200 support (java.util.jar.Pack200)
|
||||
Java SDK (preferably Oracle/Sun or OpenJDK) 1.6.0 or higher
|
||||
Non-linux operating systems and JVMs: See http://trac.i2p2.de/wiki/java
|
||||
Apache Ant 1.7.0 or higher
|
||||
Optional, For multilanguage support: The xgettext, msgfmt, and msgmerge tools installed
|
||||
from the GNU gettext package http://www.gnu.org/software/gettext/
|
||||
from the GNU gettext package http://www.gnu.org/software/gettext/
|
||||
|
||||
To build:
|
||||
ant pkg
|
||||
@@ -11,7 +11,7 @@ To build:
|
||||
See INSTALL.txt or http://www.i2p2.de/download.html for installation instructions.
|
||||
|
||||
Documentation:
|
||||
http://www.i2p2.de/
|
||||
http://www.i2p2.de/how
|
||||
API: run 'ant javadoc' then start at build/javadoc/index.html
|
||||
|
||||
Latest release:
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="net.i2p.router"
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0.0">
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<!-- 3 = 1.5, 2 = 1.1, 1 = 1.0; would probably work with 1 but don't have a 1.0 SDK to test against -->
|
||||
<uses-sdk android:minSdkVersion="2" />
|
||||
<application android:label="@string/app_name">
|
||||
<activity android:name=".I2PAndroid"
|
||||
android:label="@string/app_name"
|
||||
android:launchMode="singleTask" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
</manifest>
|
||||
@@ -1,38 +0,0 @@
|
||||
These instructions are for a recent Android SDK (1.6 or later)..
|
||||
Should also still work with a 1.5 SDK.
|
||||
The build file is not compatible with the 1.1 SDK any more.
|
||||
|
||||
#Download the SDK from http://developer.android.com/sdk/index.html
|
||||
#Unzip the android SDK in ../../
|
||||
#So then the android tools will be in ../../android-sdk-linux_86/tools/
|
||||
#
|
||||
# now go to the available packages tab, check the box and click refresh,
|
||||
# and download an SDK Platform
|
||||
# Since I2P is configured to run on 1.1 or higher
|
||||
# (API 2) download that one. Otherwise you must change the
|
||||
# target in default.properties from android-2 to andriod-x
|
||||
# where x is the API version.
|
||||
|
||||
# create a file local.properties with the following line:
|
||||
# sdk-location=/path/to/your/android-sdk-linux_86
|
||||
|
||||
#then build the android apk file:
|
||||
ant debug
|
||||
|
||||
# Create the android 1.1 (API 2) virtual device
|
||||
# (don't make a custom hardware profile)
|
||||
# A AVD created with the 1.5 SDK will not work with the newer tools
|
||||
../../android-sdk-linux_86/tools/android create avd --name i2p --target 2
|
||||
|
||||
#then run the emulator:
|
||||
../../android-sdk-linux_86/tools/emulator -avd i2p &
|
||||
|
||||
#then wait a couple minutes until the emulator is up
|
||||
#then install the I2P app
|
||||
ant install
|
||||
|
||||
#then run the debugger
|
||||
../../android-sdk-linux_86/tools/ddms &
|
||||
|
||||
#to rebuild and reinstall to emulator:
|
||||
ant reinstall
|
||||
@@ -1,356 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name=".I2PAndroid" default="help">
|
||||
|
||||
<!-- The local.properties file is created and updated by the 'android' tool.
|
||||
It contain the path to the SDK. It should *NOT* be checked in in Version
|
||||
Control Systems. -->
|
||||
<property file="local.properties"/>
|
||||
|
||||
<!-- The build.properties file can be created by you and is never touched
|
||||
by the 'android' tool. This is the place to change some of the default property values
|
||||
used by the Ant rules.
|
||||
Here are some properties you may want to change/update:
|
||||
|
||||
application-package
|
||||
the name of your application package as defined in the manifest. Used by the
|
||||
'uninstall' rule.
|
||||
source-folder
|
||||
the name of the source folder. Default is 'src'.
|
||||
out-folder
|
||||
the name of the output folder. Default is 'bin'.
|
||||
|
||||
Properties related to the SDK location or the project target should be updated
|
||||
using the 'android' tool with the 'update' action.
|
||||
|
||||
This file is an integral part of the build system for your application and
|
||||
should be checked in in Version Control Systems.
|
||||
|
||||
-->
|
||||
<property file="build.properties"/>
|
||||
|
||||
<!-- The default.properties file is created and updated by the 'android' tool, as well
|
||||
as ADT.
|
||||
This file is an integral part of the build system for your application and
|
||||
should be checked in in Version Control Systems. -->
|
||||
<property file="default.properties"/>
|
||||
|
||||
<!-- Custom Android task to deal with the project target, and import the proper rules.
|
||||
This requires ant 1.6.0 or above. -->
|
||||
<path id="android.antlibs">
|
||||
<pathelement path="${sdk-location}/tools/lib/anttasks.jar" />
|
||||
<pathelement path="${sdk-location}/tools/lib/sdklib.jar" />
|
||||
<pathelement path="${sdk-location}/tools/lib/androidprefs.jar" />
|
||||
<pathelement path="${sdk-location}/tools/lib/apkbuilder.jar" />
|
||||
<pathelement path="${sdk-location}/tools/lib/jarutils.jar" />
|
||||
</path>
|
||||
|
||||
<taskdef name="setup"
|
||||
classname="com.android.ant.SetupTask"
|
||||
classpathref="android.antlibs"/>
|
||||
|
||||
<!-- Execute the Android Setup task that will setup some properties specific to the target,
|
||||
and import the rules files.
|
||||
To customize the rules, copy/paste them below the task, and disable import by setting
|
||||
the import attribute to false:
|
||||
<setup import="false" />
|
||||
|
||||
This will ensure that the properties are setup correctly but that your customized
|
||||
targets are used.
|
||||
-->
|
||||
<setup import="false" />
|
||||
|
||||
<!--
|
||||
================================================================================
|
||||
New I2P rules
|
||||
================================================================================
|
||||
-->
|
||||
|
||||
<target name="buildrouter" depends="dirs" >
|
||||
<!-- build router and core -->
|
||||
<ant dir=".." target="buildrouter" />
|
||||
|
||||
<!-- router -->
|
||||
<copy file="../build/router.jar" todir="${external-libs-folder}" />
|
||||
|
||||
<!-- core -->
|
||||
<mkdir dir="tmp" />
|
||||
<unjar src="../build/i2p.jar" dest="tmp/" />
|
||||
<delete file="tmp/net/i2p/util/LogWriter.class" />
|
||||
<!-- org.bouncycastle.crypto already in android
|
||||
but we need a little trickery because our HMac is incompatible...
|
||||
and the libs aren't in the SDK to compile against??? -->
|
||||
<jar destfile="${external-libs-folder}/crypto.jar" >
|
||||
<fileset dir="tmp/" >
|
||||
<include name="org/bouncycastle/crypto/Digest.class" />
|
||||
<include name="org/bouncycastle/crypto/Mac.class" />
|
||||
<include name="org/bouncycastle/crypto/digests/GeneralDigest.class" />
|
||||
<include name="org/bouncycastle/crypto/digests/MD5Digest.class" />
|
||||
</fileset>
|
||||
</jar>
|
||||
<delete>
|
||||
<fileset dir="tmp/" >
|
||||
<include name="org/bouncycastle/crypto/Digest.class" />
|
||||
<include name="org/bouncycastle/crypto/Mac.class" />
|
||||
<include name="org/bouncycastle/crypto/digests/GeneralDigest.class" />
|
||||
<include name="org/bouncycastle/crypto/digests/MD5Digest.class" />
|
||||
</fileset>
|
||||
</delete>
|
||||
<!--
|
||||
<delete dir="tmp/org/bouncycastle/" />
|
||||
<delete file="tmp/net/i2p/crypto/HMACGenerator.class" />
|
||||
-->
|
||||
<delete file="tmp/org/bouncycastle/" />
|
||||
<!-- lots of unneeded stuff could be deleted here -->
|
||||
<jar destfile="${external-libs-folder}/i2p.jar" basedir="tmp/" />
|
||||
|
||||
<!-- some resources -->
|
||||
<mkdir dir="res/drawable/" />
|
||||
<copy file="../installer/resources/themes/console/images/i2plogo.png" todir="res/drawable/" />
|
||||
<copy file="../installer/resources/blocklist.txt" tofile="res/raw/blocklist_txt" />
|
||||
</target>
|
||||
|
||||
<target name="hackcleanup">
|
||||
<delete file="${external-libs-folder}/crypto.jar" />
|
||||
</target>
|
||||
|
||||
<!-- fix for property name change sometime after SDK 1.5 -->
|
||||
<property name="android-jar" value="${android.jar}" />
|
||||
<property name="android-aidl" value="${android.aidl}" />
|
||||
|
||||
<!--
|
||||
================================================================================
|
||||
From here down copied from SDK platforms/android-1.1/templates/android_rules.xml
|
||||
and then modified
|
||||
================================================================================
|
||||
-->
|
||||
|
||||
<!--
|
||||
This rules file is meant to be imported by the custom Ant task:
|
||||
com.android.ant.AndroidInitTask
|
||||
|
||||
The following properties are put in place by the importing task:
|
||||
android-jar, android-aidl, aapt, aidl, and dx
|
||||
|
||||
Additionnaly, the task sets up the following classpath reference:
|
||||
android.target.classpath
|
||||
This is used by the compiler task as the boot classpath.
|
||||
-->
|
||||
|
||||
<!-- Custom tasks -->
|
||||
<taskdef name="aaptexec"
|
||||
classname="com.android.ant.AaptExecLoopTask"
|
||||
classpathref="android.antlibs"/>
|
||||
|
||||
<taskdef name="apkbuilder"
|
||||
classname="com.android.ant.ApkBuilderTask"
|
||||
classpathref="android.antlibs"/>
|
||||
|
||||
<!-- Properties -->
|
||||
|
||||
<property name="android-tools" value="${sdk-location}/tools" />
|
||||
|
||||
<!-- Input directories -->
|
||||
<property name="source-folder" value="src" />
|
||||
<property name="gen-folder" value="gen" />
|
||||
<property name="resource-folder" value="res" />
|
||||
<property name="asset-folder" value="assets" />
|
||||
<property name="source-location" value="${basedir}/${source-folder}" />
|
||||
|
||||
<!-- folder for the 3rd party java libraries -->
|
||||
<property name="external-libs-folder" value="libs" />
|
||||
|
||||
<!-- folder for the native libraries -->
|
||||
<property name="native-libs-folder" value="libs" />
|
||||
|
||||
<!-- Output directories -->
|
||||
<property name="gen-folder" value="gen" />
|
||||
<property name="out-folder" value="bin" />
|
||||
<property name="out-classes" value="${out-folder}/classes" />
|
||||
<property name="out-classes-location" value="${basedir}/${out-classes}"/>
|
||||
<!-- out folders for a parent project if this project is an instrumentation project -->
|
||||
<property name="main-out-folder" value="../${out-folder}" />
|
||||
<property name="main-out-classes" value="${main-out-folder}/classes"/>
|
||||
|
||||
<!-- Intermediate files -->
|
||||
<property name="dex-file" value="classes.dex" />
|
||||
<property name="intermediate-dex" value="${out-folder}/${dex-file}" />
|
||||
<!-- dx does not properly support incorrect / or \ based on the platform
|
||||
and Ant cannot convert them because the parameter is not a valid path.
|
||||
Because of this we have to compute different paths depending on the platform. -->
|
||||
<condition property="intermediate-dex-location"
|
||||
value="${basedir}\${intermediate-dex}"
|
||||
else="${basedir}/${intermediate-dex}" >
|
||||
<os family="windows"/>
|
||||
</condition>
|
||||
|
||||
<!-- The final package file to generate -->
|
||||
<property name="out-debug-package" value="${out-folder}/${ant.project.name}-debug.apk"/>
|
||||
|
||||
<!-- Tools -->
|
||||
<condition property="exe" value=".exe" else=""><os family="windows"/></condition>
|
||||
<property name="adb" value="${android-tools}/adb${exe}"/>
|
||||
|
||||
<!-- rules -->
|
||||
|
||||
<!-- Create the output directories if they don't exist yet. -->
|
||||
<target name="dirs">
|
||||
<echo>Creating output directories if needed...</echo>
|
||||
<mkdir dir="${resource-folder}" />
|
||||
<mkdir dir="${external-libs-folder}" />
|
||||
<mkdir dir="${gen-folder}" />
|
||||
<mkdir dir="${out-folder}" />
|
||||
<mkdir dir="${out-classes}" />
|
||||
</target>
|
||||
|
||||
<!-- Generate the R.java file for this project's resources. -->
|
||||
<target name="resource-src" depends="dirs">
|
||||
<echo>Generating R.java / Manifest.java from the resources...</echo>
|
||||
<exec executable="${aapt}" failonerror="true">
|
||||
<arg value="package" />
|
||||
<arg value="-m" />
|
||||
<arg value="-J" />
|
||||
<arg path="${gen-folder}" />
|
||||
<arg value="-M" />
|
||||
<arg path="AndroidManifest.xml" />
|
||||
<arg value="-S" />
|
||||
<arg path="${resource-folder}" />
|
||||
<arg value="-I" />
|
||||
<arg path="${android-jar}" />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<!-- Generate java classes from .aidl files. -->
|
||||
<target name="aidl" depends="dirs">
|
||||
<echo>Compiling aidl files into Java classes...</echo>
|
||||
<apply executable="${aidl}" failonerror="true">
|
||||
<arg value="-p${android-aidl}" />
|
||||
<arg value="-I${source-folder}" />
|
||||
<arg value="-o${gen-folder}" />
|
||||
<fileset dir="${source-folder}">
|
||||
<include name="**/*.aidl"/>
|
||||
</fileset>
|
||||
</apply>
|
||||
</target>
|
||||
|
||||
<!-- Compile this project's .java files into .class files. -->
|
||||
<!-- I2P add buildrouter -->
|
||||
<target name="compile" depends="buildrouter, resource-src, aidl">
|
||||
<javac encoding="ascii" target="1.5" debug="true" extdirs=""
|
||||
destdir="${out-classes}"
|
||||
bootclasspathref="android.target.classpath">
|
||||
<src path="${source-folder}" />
|
||||
<src path="${gen-folder}" />
|
||||
<classpath>
|
||||
<fileset dir="${external-libs-folder}" includes="*.jar"/>
|
||||
<pathelement path="${main-out-classes}"/>
|
||||
</classpath>
|
||||
</javac>
|
||||
</target>
|
||||
|
||||
<!-- Convert this project's .class files into .dex files. -->
|
||||
<!-- I2P add hackcleanup -->
|
||||
<target name="dex" depends="compile, hackcleanup">
|
||||
<echo>Converting compiled files and external libraries into ${out-folder}/${dex-file}...</echo>
|
||||
<apply executable="${dx}" failonerror="true" parallel="true">
|
||||
<!-- I2P this is a bad sign that we need this -->
|
||||
<arg value="-JXmx256m" />
|
||||
<arg value="--dex" />
|
||||
<arg value="--output=${intermediate-dex-location}" />
|
||||
<arg path="${out-classes-location}" />
|
||||
<fileset dir="${external-libs-folder}" includes="*.jar"/>
|
||||
</apply>
|
||||
</target>
|
||||
|
||||
<!-- Put the project's resources into the output package file
|
||||
This actually can create multiple resource package in case
|
||||
Some custom apk with specific configuration have been
|
||||
declared in default.properties.
|
||||
-->
|
||||
<target name="package-resources">
|
||||
<echo>Packaging resources</echo>
|
||||
<aaptexec executable="${aapt}"
|
||||
command="package"
|
||||
manifest="AndroidManifest.xml"
|
||||
resources="${resource-folder}"
|
||||
assets="${asset-folder}"
|
||||
androidjar="${android-jar}"
|
||||
outfolder="${out-folder}"
|
||||
basename="${ant.project.name}" />
|
||||
</target>
|
||||
|
||||
<!-- Package the application and sign it with a debug key.
|
||||
This is the default target when building. It is used for debug. -->
|
||||
<target name="debug" depends="dex, package-resources">
|
||||
<apkbuilder
|
||||
outfolder="${out-folder}"
|
||||
basename="${ant.project.name}"
|
||||
signed="true"
|
||||
verbose="false">
|
||||
<file path="${intermediate-dex}" />
|
||||
<sourcefolder path="${source-folder}" />
|
||||
<jarfolder path="${external-libs-folder}" />
|
||||
<nativefolder path="${native-libs-folder}" />
|
||||
</apkbuilder>
|
||||
</target>
|
||||
|
||||
<!-- Package the application without signing it.
|
||||
This allows for the application to be signed later with an official publishing key. -->
|
||||
<target name="release" depends="dex, package-resources">
|
||||
<apkbuilder
|
||||
outfolder="${out-folder}"
|
||||
basename="${ant.project.name}"
|
||||
signed="false"
|
||||
verbose="false">
|
||||
<file path="${intermediate-dex}" />
|
||||
<sourcefolder path="${source-folder}" />
|
||||
<jarfolder path="${external-libs-folder}" />
|
||||
<nativefolder path="${native-libs-folder}" />
|
||||
</apkbuilder>
|
||||
<echo>All generated packages need to be signed with jarsigner before they are published.</echo>
|
||||
</target>
|
||||
|
||||
<!-- Install the package on the default emulator -->
|
||||
<target name="install" depends="debug">
|
||||
<echo>Installing ${out-debug-package} onto default emulator...</echo>
|
||||
<exec executable="${adb}" failonerror="true">
|
||||
<arg value="install" />
|
||||
<arg path="${out-debug-package}" />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="reinstall" depends="debug">
|
||||
<echo>Installing ${out-debug-package} onto default emulator...</echo>
|
||||
<exec executable="${adb}" failonerror="true">
|
||||
<arg value="install" />
|
||||
<arg value="-r" />
|
||||
<arg path="${out-debug-package}" />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<!-- Uinstall the package from the default emulator -->
|
||||
<target name="uninstall">
|
||||
<echo>Uninstalling ${application-package} from the default emulator...</echo>
|
||||
<exec executable="${adb}" failonerror="true">
|
||||
<arg value="uninstall" />
|
||||
<arg path="${application-package}" />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="help">
|
||||
<!-- displays starts at col 13
|
||||
|13 80| -->
|
||||
<echo>Android Ant Build. Available targets:</echo>
|
||||
<echo> help: Displays this help.</echo>
|
||||
<echo> debug: Builds the application and sign it with a debug key.</echo>
|
||||
<echo> release: Builds the application. The generated apk file must be</echo>
|
||||
<echo> signed before it is published.</echo>
|
||||
<echo> install: Installs the debug package onto a running emulator or</echo>
|
||||
<echo> device. This can only be used if the application has </echo>
|
||||
<echo> not yet been installed.</echo>
|
||||
<echo> reinstall: Installs the debug package on a running emulator or</echo>
|
||||
<echo> device that already has the application.</echo>
|
||||
<echo> The signatures must match.</echo>
|
||||
<echo> uninstall: uninstall the application from a running emulator or</echo>
|
||||
<echo> device.</echo>
|
||||
</target>
|
||||
</project>
|
||||
@@ -1,11 +0,0 @@
|
||||
# This file is automatically generated by Android Tools.
|
||||
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
|
||||
#
|
||||
# This file must be checked in Version Control Systems.
|
||||
#
|
||||
# To customize properties used by the Ant build system use,
|
||||
# "build.properties", and override values to adapt the script to your
|
||||
# project structure.
|
||||
|
||||
# Project target.
|
||||
target=android-2
|
||||
@@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
>
|
||||
<TextView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Hello World, I2PAndroid"
|
||||
/>
|
||||
<ImageView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/i2plogo"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
logger.defaultLevel=INFO
|
||||
logger.record.net.i2p.router.transport.FIFOBandwidthRefiller=ERROR
|
||||
logger.record.net.i2p.stat.Rate=ERROR
|
||||
@@ -1,22 +0,0 @@
|
||||
# initial router.config
|
||||
# temp directory
|
||||
i2p.dir.temp=/data/data/net.i2p.router/files/tmp
|
||||
i2p.dir.pid=/data/data/net.i2p.router/files/tmp
|
||||
# save memory
|
||||
prng.buffers=2
|
||||
router.decayingBloomFilterM=20
|
||||
stat.full=false
|
||||
i2np.udp.maxConnections=30
|
||||
# no I2CP
|
||||
i2p.dummyClientFacade=true
|
||||
# for now
|
||||
#i2np.ntcp.enable=false
|
||||
#
|
||||
# UDP crashes the JVM, don't know why
|
||||
#
|
||||
i2np.udp.enable=false
|
||||
# no COMM at all!!!
|
||||
#i2p.vmCommSystem=true
|
||||
# not on android
|
||||
i2np.upnp.enable=false
|
||||
routerconsole.geoip.enable=false
|
||||
@@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">I2PAndroid</string>
|
||||
</resources>
|
||||
@@ -1,142 +0,0 @@
|
||||
package net.i2p.router;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.content.res.Resources.NotFoundException;
|
||||
import android.os.Bundle;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import net.i2p.router.Router;
|
||||
import net.i2p.router.RouterLaunch;
|
||||
// import net.i2p.util.NativeBigInteger;
|
||||
|
||||
public class I2PAndroid extends Activity
|
||||
{
|
||||
static Context _context;
|
||||
private static final String DIR = "/data/data/net.i2p.router/files";
|
||||
|
||||
/** Called when the activity is first created. */
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.main);
|
||||
|
||||
_context = this; // Activity extends Context
|
||||
debugStuff();
|
||||
initialize();
|
||||
// 300ms per run
|
||||
// 5x slower than java on my server and 50x slower than native on my server
|
||||
// NativeBigInteger.main(null);
|
||||
}
|
||||
|
||||
public void onRestart()
|
||||
{
|
||||
System.err.println("onRestart called");
|
||||
super.onRestart();
|
||||
}
|
||||
|
||||
public void onStart()
|
||||
{
|
||||
System.err.println("onStart called");
|
||||
super.onStart();
|
||||
RouterLaunch.main(null);
|
||||
System.err.println("Router.main finished");
|
||||
}
|
||||
|
||||
public void onResume()
|
||||
{
|
||||
System.err.println("onResume called");
|
||||
super.onResume();
|
||||
}
|
||||
|
||||
public void onPause()
|
||||
{
|
||||
System.err.println("onPause called");
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
public void onStop()
|
||||
{
|
||||
System.err.println("onStop called");
|
||||
super.onStop();
|
||||
|
||||
// from routerconsole ContextHelper
|
||||
List contexts = RouterContext.listContexts();
|
||||
if ( (contexts == null) || (contexts.isEmpty()) )
|
||||
throw new IllegalStateException("No contexts. This is usually because the router is either starting up or shutting down.");
|
||||
RouterContext ctx = (RouterContext)contexts.get(0);
|
||||
|
||||
// shutdown() doesn't return so use shutdownGracefully()
|
||||
ctx.router().shutdownGracefully(Router.EXIT_HARD);
|
||||
System.err.println("shutdown complete");
|
||||
}
|
||||
|
||||
public void onDestroy()
|
||||
{
|
||||
System.err.println("onDestroy called");
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
public static Context getContext() {
|
||||
return _context;
|
||||
}
|
||||
|
||||
private void debugStuff() {
|
||||
System.err.println("java.io.tmpdir" + ": " + System.getProperty("java.io.tmpdir"));
|
||||
System.err.println("java.vendor" + ": " + System.getProperty("java.vendor"));
|
||||
System.err.println("java.version" + ": " + System.getProperty("java.version"));
|
||||
System.err.println("os.arch" + ": " + System.getProperty("os.arch"));
|
||||
System.err.println("os.name" + ": " + System.getProperty("os.name"));
|
||||
System.err.println("os.version" + ": " + System.getProperty("os.version"));
|
||||
System.err.println("user.dir" + ": " + System.getProperty("user.dir"));
|
||||
System.err.println("user.home" + ": " + System.getProperty("user.home"));
|
||||
System.err.println("user.name" + ": " + System.getProperty("user.name"));
|
||||
}
|
||||
|
||||
private void initialize() {
|
||||
// Until we can edit the router.config on the device,
|
||||
// copy it from the resource every time.
|
||||
// File f = new I2PFile("router.config");
|
||||
// if (!f.exists()) {
|
||||
copyResourceToFile(R.raw.router_config, "router.config");
|
||||
copyResourceToFile(R.raw.logger_config, "logger.config");
|
||||
copyResourceToFile(R.raw.blocklist_txt, "blocklist.txt");
|
||||
// }
|
||||
|
||||
// Set up the locations so Router and WorkingDir can find them
|
||||
System.setProperty("i2p.dir.base", DIR);
|
||||
System.setProperty("i2p.dir.config", DIR);
|
||||
System.setProperty("wrapper.logfile", DIR + "/wrapper.log");
|
||||
}
|
||||
|
||||
private void copyResourceToFile(int resID, String f) {
|
||||
InputStream in = null;
|
||||
FileOutputStream out = null;
|
||||
|
||||
System.err.println("Creating file " + f + " from resource");
|
||||
byte buf[] = new byte[4096];
|
||||
try {
|
||||
// Context methods
|
||||
in = getResources().openRawResource(resID);
|
||||
out = openFileOutput(f, 0);
|
||||
|
||||
int read = 0;
|
||||
while ( (read = in.read(buf)) != -1)
|
||||
out.write(buf, 0, read);
|
||||
|
||||
} catch (IOException ioe) {
|
||||
} catch (Resources.NotFoundException nfe) {
|
||||
} finally {
|
||||
if (in != null) try { in.close(); } catch (IOException ioe) {}
|
||||
if (out != null) try { out.close(); } catch (IOException ioe) {}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,163 +0,0 @@
|
||||
package net.i2p.util;
|
||||
|
||||
/*
|
||||
* public domain
|
||||
*
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* bridge to android logging
|
||||
*
|
||||
* @author zzz
|
||||
*/
|
||||
class LogWriter implements Runnable {
|
||||
private final static long CONFIG_READ_ITERVAL = 10 * 1000;
|
||||
private long _lastReadConfig = 0;
|
||||
private long _numBytesInCurrentFile = 0;
|
||||
private OutputStream _currentOut; // = System.out
|
||||
private int _rotationNum = -1;
|
||||
private String _logFilenamePattern;
|
||||
private File _currentFile;
|
||||
private LogManager _manager;
|
||||
|
||||
private boolean _write;
|
||||
|
||||
private LogWriter() { // nop
|
||||
}
|
||||
|
||||
public LogWriter(LogManager manager) {
|
||||
_manager = manager;
|
||||
}
|
||||
|
||||
public void stopWriting() {
|
||||
_write = false;
|
||||
}
|
||||
|
||||
public void run() {
|
||||
_write = true;
|
||||
try {
|
||||
while (_write) {
|
||||
flushRecords();
|
||||
rereadConfig();
|
||||
}
|
||||
System.err.println("Done writing");
|
||||
} catch (Exception e) {
|
||||
System.err.println("Error writing the logs: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void flushRecords() { flushRecords(true); }
|
||||
public void flushRecords(boolean shouldWait) {
|
||||
try {
|
||||
List records = _manager._removeAll();
|
||||
if (records == null) return;
|
||||
for (int i = 0; i < records.size(); i++) {
|
||||
LogRecord rec = (LogRecord) records.get(i);
|
||||
writeRecord(rec);
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
} finally {
|
||||
if (shouldWait) {
|
||||
try {
|
||||
synchronized (this) {
|
||||
this.wait(10*1000);
|
||||
}
|
||||
} catch (InterruptedException ie) { // nop
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String currentFile() {
|
||||
return _currentFile != null ? _currentFile.getAbsolutePath() : "uninitialized";
|
||||
}
|
||||
|
||||
private void rereadConfig() {
|
||||
long now = Clock.getInstance().now();
|
||||
if (now - _lastReadConfig > CONFIG_READ_ITERVAL) {
|
||||
_manager.rereadConfig();
|
||||
_lastReadConfig = now;
|
||||
}
|
||||
}
|
||||
|
||||
private void writeRecord(LogRecord rec) {
|
||||
if (rec.getThrowable() == null)
|
||||
log(rec.getPriority(), rec.getSource(), rec.getSourceName(), rec.getThreadName(), rec.getMessage());
|
||||
else
|
||||
log(rec.getPriority(), rec.getSource(), rec.getSourceName(), rec.getThreadName(), rec.getMessage(), rec.getThrowable());
|
||||
}
|
||||
|
||||
public void log(int priority, Class src, String name, String threadName, String msg) {
|
||||
if (src != null) {
|
||||
String tag = src.getName();
|
||||
int dot = tag.lastIndexOf(".");
|
||||
if (dot >= 0)
|
||||
tag = tag.substring(dot + 1);
|
||||
android.util.Log.println(toAndroidLevel(priority),
|
||||
tag,
|
||||
'[' + threadName + "] " + msg);
|
||||
} else if (name != null)
|
||||
android.util.Log.println(toAndroidLevel(priority),
|
||||
name,
|
||||
'[' + threadName + "] " + msg);
|
||||
else
|
||||
android.util.Log.println(toAndroidLevel(priority),
|
||||
threadName, msg);
|
||||
}
|
||||
|
||||
public void log(int priority, Class src, String name, String threadName, String msg, Throwable t) {
|
||||
if (src != null) {
|
||||
String tag = src.getName();
|
||||
int dot = tag.lastIndexOf(".");
|
||||
if (dot >= 0)
|
||||
tag = tag.substring(dot + 1);
|
||||
android.util.Log.println(toAndroidLevel(priority),
|
||||
tag,
|
||||
'[' + threadName + "] " + msg +
|
||||
' ' + t.toString() + ' ' + android.util.Log.getStackTraceString(t));
|
||||
} else if (name != null)
|
||||
android.util.Log.println(toAndroidLevel(priority),
|
||||
name,
|
||||
'[' + threadName + "] " + msg +
|
||||
' ' + t.toString() + ' ' + android.util.Log.getStackTraceString(t));
|
||||
else
|
||||
android.util.Log.println(toAndroidLevel(priority),
|
||||
threadName,
|
||||
msg + ' ' + t.toString() + ' ' + android.util.Log.getStackTraceString(t));
|
||||
}
|
||||
|
||||
private static int toAndroidLevel(int level) {
|
||||
switch (level) {
|
||||
case Log.DEBUG:
|
||||
return android.util.Log.DEBUG;
|
||||
case Log.INFO:
|
||||
return android.util.Log.INFO;
|
||||
case Log.WARN:
|
||||
return android.util.Log.WARN;
|
||||
case Log.ERROR:
|
||||
case Log.CRIT:
|
||||
default:
|
||||
return android.util.Log.ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
private static final String replace(String pattern, int num) {
|
||||
char c[] = pattern.toCharArray();
|
||||
StringBuffer buf = new StringBuffer();
|
||||
for (int i = 0; i < c.length; i++) {
|
||||
if ( (c[i] != '#') && (c[i] != '@') )
|
||||
buf.append(c[i]);
|
||||
else
|
||||
buf.append(num);
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
}
|
||||
@@ -71,6 +71,7 @@
|
||||
nbproject/build-impl.xml file.
|
||||
|
||||
-->
|
||||
|
||||
<target depends="jar" description="Build BOB into a SINGLE JAR." name="onejar">
|
||||
<!-- Make needed working dirs -->
|
||||
<mkdir dir="${dist.dir}/lib" />
|
||||
|
||||
@@ -26,7 +26,7 @@ dist.dir=dist
|
||||
dist.jar=${dist.dir}/BOB.jar
|
||||
dist.javadoc.dir=${dist.dir}/javadoc
|
||||
endorsed.classpath=
|
||||
excludes=
|
||||
excludes=**/*.html,**/*.txt
|
||||
file.reference.build-javadoc=../../i2p.i2p/build/javadoc
|
||||
file.reference.i2p.jar=../../core/java/build/i2p.jar
|
||||
file.reference.i2ptunnel.jar=../i2ptunnel/java/build/i2ptunnel.jar
|
||||
|
||||
@@ -51,6 +51,8 @@
|
||||
<!-- unused for now, as we oddly ship addressbook as a .war -->
|
||||
<target name="jar" depends="compile, changes">
|
||||
<jar basedir="${build}" destfile="${dist}/${jar}">
|
||||
<!-- set if unset -->
|
||||
<property name="workspace.changes" value="" />
|
||||
<manifest>
|
||||
<attribute name="Main-Class" value="addressbook.Daemon"/>
|
||||
<attribute name="Build-Date" value="${build.timestamp}" />
|
||||
@@ -67,6 +69,8 @@
|
||||
<copy todir="${dist}/tmp/WEB-INF/classes">
|
||||
<fileset dir="${build}"/>
|
||||
</copy>
|
||||
<!-- set if unset -->
|
||||
<property name="workspace.changes.tr" value="" />
|
||||
<war basedir="${dist}/tmp" webxml="web.xml" destfile="${dist}/${war}">
|
||||
<manifest>
|
||||
<attribute name="Build-Date" value="${build.timestamp}" />
|
||||
@@ -81,9 +85,17 @@
|
||||
<uptodate property="war.uptodate" targetfile="${dist}/${war}">
|
||||
<srcfiles dir= "." includes="${build}/**/*.class, web.xml"/>
|
||||
</uptodate>
|
||||
<condition property="shouldListChanges" >
|
||||
<and>
|
||||
<not>
|
||||
<isset property="war.uptodate" />
|
||||
</not>
|
||||
<isset property="mtn.available" />
|
||||
</and>
|
||||
</condition>
|
||||
</target>
|
||||
|
||||
<target name="changes">
|
||||
<target name="changes" depends="warUpToDate" if="shouldListChanges" >
|
||||
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
|
||||
<arg value="list" />
|
||||
<arg value="changed" />
|
||||
|
||||
@@ -23,12 +23,14 @@ package net.i2p.addressbook;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.util.EepGet;
|
||||
import net.i2p.util.SecureFile;
|
||||
|
||||
/**
|
||||
* An address book for storing human readable names mapped to base64 i2p
|
||||
@@ -40,11 +42,12 @@ import net.i2p.util.EepGet;
|
||||
*/
|
||||
class AddressBook {
|
||||
|
||||
private String location;
|
||||
|
||||
private Map addresses;
|
||||
|
||||
private final String location;
|
||||
/** either addresses or subFile will be non-null, but not both */
|
||||
private final Map<String, String> addresses;
|
||||
private final File subFile;
|
||||
private boolean modified;
|
||||
private static final boolean DEBUG = false;
|
||||
|
||||
/**
|
||||
* Construct an AddressBook from the contents of the Map addresses.
|
||||
@@ -53,8 +56,10 @@ class AddressBook {
|
||||
* A Map containing human readable addresses as keys, mapped to
|
||||
* base64 i2p destinations.
|
||||
*/
|
||||
public AddressBook(Map addresses) {
|
||||
public AddressBook(Map<String, String> addresses) {
|
||||
this.addresses = addresses;
|
||||
this.subFile = null;
|
||||
this.location = null;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -82,6 +87,7 @@ class AddressBook {
|
||||
}
|
||||
*/
|
||||
static final long MAX_SUB_SIZE = 3 * 1024 * 1024l; //about 5,000 hosts
|
||||
|
||||
/**
|
||||
* Construct an AddressBook from the Subscription subscription. If the
|
||||
* address book at subscription has not changed since the last time it was
|
||||
@@ -90,33 +96,46 @@ class AddressBook {
|
||||
*
|
||||
* Yes, the EepGet fetch() is done in this constructor.
|
||||
*
|
||||
* This stores the subscription in a temporary file and does not read the whole thing into memory.
|
||||
* An AddressBook created with this constructor may not be modified or written using write().
|
||||
* It may be a merge source (an parameter for another AddressBook's merge())
|
||||
* but may not be a merge target (this.merge() will throw an exception).
|
||||
*
|
||||
* @param subscription
|
||||
* A Subscription instance pointing at a remote address book.
|
||||
* @param proxyHost hostname of proxy
|
||||
* @param proxyPort port number of proxy
|
||||
*/
|
||||
public AddressBook(Subscription subscription, String proxyHost, int proxyPort) {
|
||||
File tmp = new File(I2PAppContext.getGlobalContext().getTempDir(), "addressbook.tmp");
|
||||
Map<String, String> a = null;
|
||||
File subf = null;
|
||||
try {
|
||||
File tmp = SecureFile.createTempFile("addressbook", null, I2PAppContext.getGlobalContext().getTempDir());
|
||||
EepGet get = new EepGet(I2PAppContext.getGlobalContext(), true,
|
||||
proxyHost, proxyPort, 0, -1l, MAX_SUB_SIZE, tmp.getAbsolutePath(), null,
|
||||
subscription.getLocation(), true, subscription.getEtag(), subscription.getLastModified(), null);
|
||||
if (get.fetch()) {
|
||||
subscription.setEtag(get.getETag());
|
||||
subscription.setLastModified(get.getLastModified());
|
||||
subscription.setLastFetched(I2PAppContext.getGlobalContext().clock().now());
|
||||
subf = tmp;
|
||||
} else {
|
||||
a = Collections.EMPTY_MAP;
|
||||
tmp.delete();
|
||||
}
|
||||
} catch (IOException ioe) {
|
||||
a = Collections.EMPTY_MAP;
|
||||
}
|
||||
this.addresses = a;
|
||||
this.subFile = subf;
|
||||
this.location = subscription.getLocation();
|
||||
EepGet get = new EepGet(I2PAppContext.getGlobalContext(), true,
|
||||
proxyHost, proxyPort, 0, -1l, MAX_SUB_SIZE, tmp.getAbsolutePath(), null,
|
||||
subscription.getLocation(), true, subscription.getEtag(), subscription.getLastModified(), null);
|
||||
if (get.fetch()) {
|
||||
subscription.setEtag(get.getETag());
|
||||
subscription.setLastModified(get.getLastModified());
|
||||
subscription.setLastFetched(I2PAppContext.getGlobalContext().clock().now());
|
||||
}
|
||||
try {
|
||||
this.addresses = ConfigParser.parse(tmp);
|
||||
} catch (IOException exp) {
|
||||
this.addresses = new HashMap();
|
||||
}
|
||||
tmp.delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct an AddressBook from the contents of the file at file. If the
|
||||
* file cannot be read, construct an empty AddressBook
|
||||
* file cannot be read, construct an empty AddressBook.
|
||||
* This reads the entire file into memory.
|
||||
* The resulting map is modifiable and may be a merge target.
|
||||
*
|
||||
* @param file
|
||||
* A File pointing at a file with lines in the format
|
||||
@@ -125,22 +144,38 @@ class AddressBook {
|
||||
*/
|
||||
public AddressBook(File file) {
|
||||
this.location = file.toString();
|
||||
Map<String, String> a;
|
||||
try {
|
||||
this.addresses = ConfigParser.parse(file);
|
||||
a = ConfigParser.parse(file);
|
||||
} catch (IOException exp) {
|
||||
this.addresses = new HashMap();
|
||||
a = new HashMap();
|
||||
}
|
||||
this.addresses = a;
|
||||
this.subFile = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a Map containing the addresses in the AddressBook.
|
||||
*
|
||||
* @return A Map containing the addresses in the AddressBook, where the key
|
||||
* is a human readable name, and the value is a base64 i2p
|
||||
* destination.
|
||||
* Return an iterator over the addresses in the AddressBook.
|
||||
* @since 0.8.7
|
||||
*/
|
||||
public Map getAddresses() {
|
||||
return this.addresses;
|
||||
public Iterator<Map.Entry<String, String>> iterator() {
|
||||
if (this.subFile != null)
|
||||
return new ConfigIterator(this.subFile);
|
||||
return this.addresses.entrySet().iterator();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete the temp file or clear the map.
|
||||
* @since 0.8.7
|
||||
*/
|
||||
public void delete() {
|
||||
if (this.subFile != null) {
|
||||
this.subFile.delete();
|
||||
} else if (this.addresses != null) {
|
||||
try {
|
||||
this.addresses.clear();
|
||||
} catch (UnsupportedOperationException uoe) {}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -148,29 +183,32 @@ class AddressBook {
|
||||
*
|
||||
* @return A String representing either an abstract path, or a url,
|
||||
* depending on how the instance was constructed.
|
||||
* Will be null if created with the Map constructor.
|
||||
*/
|
||||
public String getLocation() {
|
||||
return this.location;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a string representation of the contents of the AddressBook.
|
||||
* Return a string representation of the origin of the AddressBook.
|
||||
*
|
||||
* @return A String representing the contents of the AddressBook.
|
||||
* @return A String representing the origin of the AddressBook.
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.addresses.toString();
|
||||
if (this.location != null)
|
||||
return "Book from " + this.location;
|
||||
return "Map containing " + this.addresses.size() + " entries";
|
||||
}
|
||||
|
||||
private static final int MIN_DEST_LENGTH = 516;
|
||||
private static final int MAX_DEST_LENGTH = MIN_DEST_LENGTH + 100; // longer than any known cert type for now
|
||||
|
||||
/**
|
||||
* Do basic validation of the hostname and dest
|
||||
* Do basic validation of the hostname
|
||||
* hostname was already converted to lower case by ConfigParser.parse()
|
||||
*/
|
||||
private static boolean valid(String host, String dest) {
|
||||
public static boolean isValidKey(String host) {
|
||||
return
|
||||
host.endsWith(".i2p") &&
|
||||
host.length() > 4 &&
|
||||
@@ -194,8 +232,15 @@ class AddressBook {
|
||||
(! host.equals("console.i2p")) &&
|
||||
(! host.endsWith(".proxy.i2p")) &&
|
||||
(! host.endsWith(".router.i2p")) &&
|
||||
(! host.endsWith(".console.i2p")) &&
|
||||
(! host.endsWith(".console.i2p"))
|
||||
;
|
||||
}
|
||||
|
||||
/**
|
||||
* Do basic validation of the b64 dest, without bothering to instantiate it
|
||||
*/
|
||||
private static boolean isValidDest(String dest) {
|
||||
return
|
||||
// null cert ends with AAAA but other zero-length certs would be AA
|
||||
((dest.length() == MIN_DEST_LENGTH && dest.endsWith("AA")) ||
|
||||
(dest.length() > MIN_DEST_LENGTH && dest.length() <= MAX_DEST_LENGTH)) &&
|
||||
@@ -216,18 +261,21 @@ class AddressBook {
|
||||
* @param overwrite True to overwrite
|
||||
* @param log
|
||||
* The log to write messages about new addresses or conflicts to.
|
||||
*
|
||||
* @throws IllegalStateException if this was created with the Subscription constructor.
|
||||
*/
|
||||
public void merge(AddressBook other, boolean overwrite, Log log) {
|
||||
Iterator otherIter = other.addresses.keySet().iterator();
|
||||
if (this.addresses == null)
|
||||
throw new IllegalStateException();
|
||||
for (Iterator<Map.Entry<String, String>> iter = other.iterator(); iter.hasNext(); ) {
|
||||
Map.Entry<String, String> entry = iter.next();
|
||||
String otherKey = entry.getKey();
|
||||
String otherValue = entry.getValue();
|
||||
|
||||
while (otherIter.hasNext()) {
|
||||
String otherKey = (String) otherIter.next();
|
||||
String otherValue = (String) other.addresses.get(otherKey);
|
||||
|
||||
if (valid(otherKey, otherValue)) {
|
||||
if (isValidKey(otherKey) && isValidDest(otherValue)) {
|
||||
if (this.addresses.containsKey(otherKey) && !overwrite) {
|
||||
if (!this.addresses.get(otherKey).equals(otherValue)
|
||||
&& log != null) {
|
||||
if (DEBUG && log != null &&
|
||||
!this.addresses.get(otherKey).equals(otherValue)) {
|
||||
log.append("Conflict for " + otherKey + " from "
|
||||
+ other.location
|
||||
+ ". Destination in remote address book is "
|
||||
@@ -252,8 +300,12 @@ class AddressBook {
|
||||
*
|
||||
* @param file
|
||||
* The file to write the contents of this AddressBook too.
|
||||
*
|
||||
* @throws IllegalStateException if this was created with the Subscription constructor.
|
||||
*/
|
||||
public void write(File file) {
|
||||
if (this.addresses == null)
|
||||
throw new IllegalStateException();
|
||||
if (this.modified) {
|
||||
try {
|
||||
ConfigParser.write(this.addresses, file);
|
||||
@@ -267,8 +319,17 @@ class AddressBook {
|
||||
* Write this AddressBook out to the file it was read from. Requires that
|
||||
* AddressBook was constructed from a file on the local filesystem. If the
|
||||
* file cannot be writen to, this method will silently fail.
|
||||
*
|
||||
* @throws IllegalStateException if this was not created with the File constructor.
|
||||
*/
|
||||
public void write() {
|
||||
if (this.location == null || this.location.startsWith("http://"))
|
||||
throw new IllegalStateException();
|
||||
this.write(new File(this.location));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void finalize() {
|
||||
delete();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
/*
|
||||
* Copyright (c) 2004 Ragnarok
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package net.i2p.addressbook;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
/**
|
||||
* A class to iterate through a hosts.txt or config file without
|
||||
* reading the whole thing into memory.
|
||||
* Keys are always converted to lower case.
|
||||
*
|
||||
* Callers should iterate all the way through or call close()
|
||||
* to ensure the underlying stream is closed.
|
||||
*
|
||||
* @since 0.8.7
|
||||
*/
|
||||
class ConfigIterator implements Iterator<Map.Entry<String, String>> {
|
||||
|
||||
private BufferedReader input;
|
||||
private ConfigEntry next;
|
||||
|
||||
/**
|
||||
* A dummy iterator in which hasNext() is always false.
|
||||
*/
|
||||
public ConfigIterator() {}
|
||||
|
||||
/**
|
||||
* An iterator over the key/value pairs in the file.
|
||||
*/
|
||||
public ConfigIterator(File file) {
|
||||
try {
|
||||
FileInputStream fileStream = new FileInputStream(file);
|
||||
input = new BufferedReader(new InputStreamReader(fileStream));
|
||||
} catch (IOException ioe) {}
|
||||
}
|
||||
|
||||
public boolean hasNext() {
|
||||
if (input == null)
|
||||
return false;
|
||||
if (next != null)
|
||||
return true;
|
||||
try {
|
||||
String inputLine = input.readLine();
|
||||
while (inputLine != null) {
|
||||
inputLine = ConfigParser.stripComments(inputLine);
|
||||
String[] splitLine = inputLine.split("=");
|
||||
if (splitLine.length == 2) {
|
||||
next = new ConfigEntry(splitLine[0].trim().toLowerCase(), splitLine[1].trim());
|
||||
return true;
|
||||
}
|
||||
inputLine = input.readLine();
|
||||
}
|
||||
} catch (IOException ioe) {}
|
||||
try { input.close(); } catch (IOException ioe) {}
|
||||
input = null;
|
||||
next = null;
|
||||
return false;
|
||||
}
|
||||
|
||||
public Map.Entry<String, String> next() {
|
||||
if (!hasNext())
|
||||
throw new NoSuchElementException();
|
||||
Map.Entry<String, String> rv = next;
|
||||
next = null;
|
||||
return rv;
|
||||
}
|
||||
|
||||
public void remove() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public void close() {
|
||||
if (input != null) {
|
||||
try { input.close(); } catch (IOException ioe) {}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void finalize() {
|
||||
close();
|
||||
}
|
||||
|
||||
/**
|
||||
* The object returned by the iterator.
|
||||
*/
|
||||
private static class ConfigEntry implements Map.Entry<String, String> {
|
||||
private final String key;
|
||||
private final String value;
|
||||
|
||||
public ConfigEntry(String k, String v) {
|
||||
key = k;
|
||||
value = v;
|
||||
}
|
||||
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public String setValue(String v) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return key.hashCode() ^ value.hashCode();
|
||||
}
|
||||
|
||||
public boolean equals(Object o) {
|
||||
if (!(o instanceof Map.Entry))
|
||||
return false;
|
||||
Map.Entry e = (Map.Entry) o;
|
||||
return key.equals(e.getKey()) && value.equals(e.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,6 @@ import java.io.InputStreamReader;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.StringReader;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -85,8 +84,8 @@ class ConfigParser {
|
||||
* if the BufferedReader cannot be read.
|
||||
*
|
||||
*/
|
||||
public static Map parse(BufferedReader input) throws IOException {
|
||||
Map result = new HashMap();
|
||||
public static Map<String, String> parse(BufferedReader input) throws IOException {
|
||||
Map<String, String> result = new HashMap();
|
||||
String inputLine;
|
||||
inputLine = input.readLine();
|
||||
while (inputLine != null) {
|
||||
@@ -111,11 +110,11 @@ class ConfigParser {
|
||||
* @throws IOException
|
||||
* if file cannot be read.
|
||||
*/
|
||||
public static Map parse(File file) throws IOException {
|
||||
public static Map<String, String> parse(File file) throws IOException {
|
||||
FileInputStream fileStream = new FileInputStream(file);
|
||||
BufferedReader input = new BufferedReader(new InputStreamReader(
|
||||
fileStream));
|
||||
Map rv = ConfigParser.parse(input);
|
||||
Map<String, String> rv = ConfigParser.parse(input);
|
||||
try {
|
||||
fileStream.close();
|
||||
} catch (IOException ioe) {}
|
||||
@@ -132,7 +131,7 @@ class ConfigParser {
|
||||
* @throws IOException
|
||||
* if file cannot be read.
|
||||
*/
|
||||
public static Map parse(String string) throws IOException {
|
||||
public static Map<String, String> parse(String string) throws IOException {
|
||||
StringReader stringReader = new StringReader(string);
|
||||
BufferedReader input = new BufferedReader(stringReader);
|
||||
return ConfigParser.parse(input);
|
||||
@@ -149,14 +148,13 @@ class ConfigParser {
|
||||
* @return A Map containing the key, value pairs from file, or if file
|
||||
* cannot be read, map.
|
||||
*/
|
||||
public static Map parse(File file, Map map) {
|
||||
Map result;
|
||||
public static Map<String, String> parse(File file, Map<String, String> map) {
|
||||
Map<String, String> result;
|
||||
try {
|
||||
result = ConfigParser.parse(file);
|
||||
for (Iterator iter = map.keySet().iterator(); iter.hasNext(); ) {
|
||||
String key = (String) iter.next();
|
||||
if (!result.containsKey(key))
|
||||
result.put(key, map.get(key));
|
||||
for (Map.Entry<String, String> entry : map.entrySet()) {
|
||||
if (!result.containsKey(entry.getKey()))
|
||||
result.put(entry.getKey(), entry.getValue());
|
||||
}
|
||||
} catch (IOException exp) {
|
||||
result = map;
|
||||
@@ -177,9 +175,9 @@ class ConfigParser {
|
||||
* @throws IOException
|
||||
* if input cannot be read.
|
||||
*/
|
||||
public static List parseSubscriptions(BufferedReader input)
|
||||
public static List<String> parseSubscriptions(BufferedReader input)
|
||||
throws IOException {
|
||||
List result = new LinkedList();
|
||||
List<String> result = new LinkedList();
|
||||
String inputLine = input.readLine();
|
||||
while (inputLine != null) {
|
||||
inputLine = ConfigParser.stripComments(inputLine).trim();
|
||||
@@ -201,11 +199,11 @@ class ConfigParser {
|
||||
* @throws IOException
|
||||
* if file cannot be read.
|
||||
*/
|
||||
public static List parseSubscriptions(File file) throws IOException {
|
||||
public static List<String> parseSubscriptions(File file) throws IOException {
|
||||
FileInputStream fileStream = new FileInputStream(file);
|
||||
BufferedReader input = new BufferedReader(new InputStreamReader(
|
||||
fileStream));
|
||||
List rv = ConfigParser.parseSubscriptions(input);
|
||||
List<String> rv = ConfigParser.parseSubscriptions(input);
|
||||
try {
|
||||
fileStream.close();
|
||||
} catch (IOException ioe) {}
|
||||
@@ -221,7 +219,7 @@ class ConfigParser {
|
||||
* @throws IOException
|
||||
* if string cannot be read.
|
||||
*/
|
||||
public static List parseSubscriptions(String string) throws IOException {
|
||||
public static List<String> parseSubscriptions(String string) throws IOException {
|
||||
StringReader stringReader = new StringReader(string);
|
||||
BufferedReader input = new BufferedReader(stringReader);
|
||||
return ConfigParser.parseSubscriptions(input);
|
||||
@@ -238,8 +236,8 @@ class ConfigParser {
|
||||
* @return A List consisting of one element for each line in file, or if
|
||||
* file cannot be read, list.
|
||||
*/
|
||||
public static List parseSubscriptions(File file, List list) {
|
||||
List result;
|
||||
public static List<String> parseSubscriptions(File file, List<String> list) {
|
||||
List<String> result;
|
||||
try {
|
||||
result = ConfigParser.parseSubscriptions(file);
|
||||
} catch (IOException exp) {
|
||||
@@ -263,12 +261,9 @@ class ConfigParser {
|
||||
* @throws IOException
|
||||
* if the BufferedWriter cannot be written to.
|
||||
*/
|
||||
public static void write(Map map, BufferedWriter output) throws IOException {
|
||||
Iterator keyIter = map.keySet().iterator();
|
||||
|
||||
while (keyIter.hasNext()) {
|
||||
String key = (String) keyIter.next();
|
||||
output.write(key + "=" + (String) map.get(key));
|
||||
public static void write(Map<String, String> map, BufferedWriter output) throws IOException {
|
||||
for (Map.Entry<String, String> entry : map.entrySet()) {
|
||||
output.write(entry.getKey() + '=' + entry.getValue());
|
||||
output.newLine();
|
||||
}
|
||||
output.close();
|
||||
@@ -288,7 +283,7 @@ class ConfigParser {
|
||||
* @throws IOException
|
||||
* if file cannot be written to.
|
||||
*/
|
||||
public static void write(Map map, File file) throws IOException {
|
||||
public static void write(Map<String, String> map, File file) throws IOException {
|
||||
boolean success = false;
|
||||
if (!isWindows) {
|
||||
File tmp = SecureFile.createTempFile("temp-", ".tmp", file.getAbsoluteFile().getParentFile());
|
||||
@@ -318,12 +313,10 @@ class ConfigParser {
|
||||
* @throws IOException
|
||||
* if output cannot be written to.
|
||||
*/
|
||||
public static void writeSubscriptions(List list, BufferedWriter output)
|
||||
public static void writeSubscriptions(List<String> list, BufferedWriter output)
|
||||
throws IOException {
|
||||
Iterator iter = list.iterator();
|
||||
|
||||
while (iter.hasNext()) {
|
||||
output.write((String) iter.next());
|
||||
for (String s : list) {
|
||||
output.write(s);
|
||||
output.newLine();
|
||||
}
|
||||
output.close();
|
||||
@@ -340,7 +333,7 @@ class ConfigParser {
|
||||
* @throws IOException
|
||||
* if output cannot be written to.
|
||||
*/
|
||||
public static void writeSubscriptions(List list, File file)
|
||||
public static void writeSubscriptions(List<String> list, File file)
|
||||
throws IOException {
|
||||
ConfigParser.writeSubscriptions(list, new BufferedWriter(
|
||||
new OutputStreamWriter(new SecureFileOutputStream(file), "UTF-8")));
|
||||
|
||||
@@ -22,13 +22,20 @@
|
||||
package net.i2p.addressbook;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.Set;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.client.naming.NamingService;
|
||||
import net.i2p.client.naming.SingleFileNamingService;
|
||||
import net.i2p.data.DataFormatException;
|
||||
import net.i2p.data.Destination;
|
||||
import net.i2p.util.SecureDirectory;
|
||||
|
||||
/**
|
||||
@@ -41,6 +48,7 @@ public class Daemon {
|
||||
public static final String VERSION = "2.0.4";
|
||||
private static final Daemon _instance = new Daemon();
|
||||
private boolean _running;
|
||||
private static final boolean DEBUG = false;
|
||||
|
||||
/**
|
||||
* Update the router and published address books using remote data from the
|
||||
@@ -49,29 +57,166 @@ public class Daemon {
|
||||
* @param master
|
||||
* The master AddressBook. This address book is never
|
||||
* overwritten, so it is safe for the user to write to.
|
||||
* It is only merged to the published addressbook.
|
||||
* May be null.
|
||||
* @param router
|
||||
* The router AddressBook. This is the address book read by
|
||||
* client applications.
|
||||
* @param published
|
||||
* The published AddressBook. This address book is published on
|
||||
* the user's eepsite so that others may subscribe to it.
|
||||
* May be null.
|
||||
* If non-null, overwrite with the new addressbook.
|
||||
* @param subscriptions
|
||||
* A SubscriptionList listing the remote address books to update
|
||||
* from.
|
||||
* @param log
|
||||
* The log to write changes and conflicts to.
|
||||
* May be null.
|
||||
*/
|
||||
public void update(AddressBook master, AddressBook router,
|
||||
public static void update(AddressBook master, AddressBook router,
|
||||
File published, SubscriptionList subscriptions, Log log) {
|
||||
router.merge(master, true, null);
|
||||
Iterator iter = subscriptions.iterator();
|
||||
Iterator<AddressBook> iter = subscriptions.iterator();
|
||||
while (iter.hasNext()) {
|
||||
// yes, the EepGet fetch() is done in next()
|
||||
router.merge((AddressBook) iter.next(), false, log);
|
||||
router.merge(iter.next(), false, log);
|
||||
}
|
||||
router.write();
|
||||
if (published != null)
|
||||
if (published != null) {
|
||||
if (master != null)
|
||||
router.merge(master, true, null);
|
||||
router.write(published);
|
||||
}
|
||||
subscriptions.write();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the router and published address books using remote data from the
|
||||
* subscribed address books listed in subscriptions.
|
||||
* Merging of the "master" addressbook is NOT supported.
|
||||
*
|
||||
* @param router
|
||||
* The NamingService to update, generally the root NamingService from the context.
|
||||
* @param published
|
||||
* The published AddressBook. This address book is published on
|
||||
* the user's eepsite so that others may subscribe to it.
|
||||
* May be null.
|
||||
* If non-null, overwrite with the new addressbook.
|
||||
* @param subscriptions
|
||||
* A SubscriptionList listing the remote address books to update
|
||||
* from.
|
||||
* @param log
|
||||
* The log to write changes and conflicts to.
|
||||
* May be null.
|
||||
* @since 0.8.7
|
||||
*/
|
||||
public static void update(NamingService router, File published, SubscriptionList subscriptions, Log log) {
|
||||
// If the NamingService is a database, we look up as we go.
|
||||
// If it is a text file, we do things differently, to avoid O(n**2) behavior
|
||||
// when scanning large subscription results (i.e. those that return the whole file, not just the new entries) -
|
||||
// we load all the known hostnames into a Set one time.
|
||||
// This also has the advantage of not flushing the NamingService's LRU cache.
|
||||
String nsClass = router.getClass().getSimpleName();
|
||||
boolean isTextFile = nsClass.equals("HostsTxtNamingService") || nsClass.equals("SingleFileNamingService");
|
||||
Set<String> knownNames = null;
|
||||
|
||||
NamingService publishedNS = null;
|
||||
Iterator<AddressBook> iter = subscriptions.iterator();
|
||||
while (iter.hasNext()) {
|
||||
// yes, the EepGet fetch() is done in next()
|
||||
long start = System.currentTimeMillis();
|
||||
AddressBook sub = iter.next();
|
||||
long end = System.currentTimeMillis();
|
||||
// SubscriptionIterator puts in a dummy AddressBook with no location if no fetch is done
|
||||
if (DEBUG && log != null && sub.getLocation() != null)
|
||||
log.append("Fetch of " + sub.getLocation() + " took " + (end - start));
|
||||
start = end;
|
||||
int old = 0, nnew = 0, invalid = 0, conflict = 0, total = 0;
|
||||
for (Iterator<Map.Entry<String, String>> eIter = sub.iterator(); eIter.hasNext(); ) {
|
||||
Map.Entry<String, String> entry = eIter.next();
|
||||
String key = entry.getKey();
|
||||
boolean isKnown;
|
||||
Destination oldDest = null;
|
||||
if (isTextFile) {
|
||||
if (knownNames == null) {
|
||||
// load the hostname set
|
||||
Properties opts = new Properties();
|
||||
opts.setProperty("file", "hosts.txt");
|
||||
knownNames = router.getNames(opts);
|
||||
}
|
||||
isKnown = knownNames.contains(key);
|
||||
} else {
|
||||
oldDest = router.lookup(key);
|
||||
isKnown = oldDest != null;
|
||||
}
|
||||
try {
|
||||
if (!isKnown) {
|
||||
if (AddressBook.isValidKey(key)) {
|
||||
Destination dest = new Destination(entry.getValue());
|
||||
Properties props = new Properties();
|
||||
props.setProperty("s", sub.getLocation());
|
||||
boolean success = router.put(key, dest, props);
|
||||
if (log != null) {
|
||||
if (success)
|
||||
log.append("New address " + key +
|
||||
" added to address book. From: " + sub.getLocation());
|
||||
else
|
||||
log.append("Save to naming service " + router + " failed for new key " + key);
|
||||
}
|
||||
// now update the published addressbook
|
||||
if (published != null) {
|
||||
if (publishedNS == null)
|
||||
publishedNS = new SingleFileNamingService(I2PAppContext.getGlobalContext(), published.getAbsolutePath());
|
||||
success = publishedNS.putIfAbsent(key, dest);
|
||||
if (!success) {
|
||||
try {
|
||||
log.append("Save to published address book " + published.getCanonicalPath() + " failed for new key " + key);
|
||||
} catch (IOException ioe) {}
|
||||
}
|
||||
}
|
||||
if (isTextFile)
|
||||
// keep track for later dup check
|
||||
knownNames.add(key);
|
||||
nnew++;
|
||||
} else if (log != null) {
|
||||
log.append("Bad hostname " + key + " from "
|
||||
+ sub.getLocation());
|
||||
invalid++;
|
||||
}
|
||||
} else if (false && DEBUG && log != null) {
|
||||
// lookup the conflict if we haven't yet (O(n**2) for text file)
|
||||
if (isTextFile)
|
||||
oldDest = router.lookup(key);
|
||||
if (oldDest != null && !oldDest.toBase64().equals(entry.getValue())) {
|
||||
log.append("Conflict for " + key + " from "
|
||||
+ sub.getLocation()
|
||||
+ ". Destination in remote address book is "
|
||||
+ entry.getValue());
|
||||
conflict++;
|
||||
} else {
|
||||
old++;
|
||||
}
|
||||
} else {
|
||||
old++;
|
||||
}
|
||||
} catch (DataFormatException dfe) {
|
||||
if (log != null)
|
||||
log.append("Invalid b64 for" + key + " From: " + sub.getLocation());
|
||||
invalid++;
|
||||
}
|
||||
total++;
|
||||
}
|
||||
if (DEBUG && log != null && total > 0) {
|
||||
log.append("Merge of " + sub.getLocation() + " into " + router +
|
||||
" took " + (System.currentTimeMillis() - start) + " ms with " +
|
||||
total + " total, " +
|
||||
nnew + " new, " +
|
||||
old + " old, " +
|
||||
invalid + " invalid, " +
|
||||
conflict + " conflicts");
|
||||
}
|
||||
sub.delete();
|
||||
}
|
||||
subscriptions.write();
|
||||
}
|
||||
|
||||
@@ -83,44 +228,80 @@ public class Daemon {
|
||||
* @param home
|
||||
* The directory containing addressbook's configuration files.
|
||||
*/
|
||||
public void update(Map settings, String home) {
|
||||
File masterFile = new File(home, (String) settings
|
||||
.get("master_addressbook"));
|
||||
File routerFile = new File(home, (String) settings
|
||||
.get("router_addressbook"));
|
||||
public static void update(Map<String, String> settings, String home) {
|
||||
File published = null;
|
||||
if ("true".equals(settings.get("should_publish")))
|
||||
published = new File(home, (String) settings
|
||||
boolean should_publish = Boolean.valueOf(settings.get("should_publish")).booleanValue();
|
||||
if (should_publish)
|
||||
published = new File(home, settings
|
||||
.get("published_addressbook"));
|
||||
File subscriptionFile = new File(home, (String) settings
|
||||
File subscriptionFile = new File(home, settings
|
||||
.get("subscriptions"));
|
||||
File logFile = new File(home, (String) settings.get("log"));
|
||||
File etagsFile = new File(home, (String) settings.get("etags"));
|
||||
File lastModifiedFile = new File(home, (String) settings
|
||||
File logFile = new File(home, settings.get("log"));
|
||||
File etagsFile = new File(home, settings.get("etags"));
|
||||
File lastModifiedFile = new File(home, settings
|
||||
.get("last_modified"));
|
||||
File lastFetchedFile = new File(home, (String) settings
|
||||
File lastFetchedFile = new File(home, settings
|
||||
.get("last_fetched"));
|
||||
long delay;
|
||||
try {
|
||||
delay = Long.parseLong((String) settings.get("update_delay"));
|
||||
delay = Long.parseLong(settings.get("update_delay"));
|
||||
} catch (NumberFormatException nfe) {
|
||||
delay = 12;
|
||||
}
|
||||
delay *= 60 * 60 * 1000;
|
||||
|
||||
AddressBook master = new AddressBook(masterFile);
|
||||
AddressBook router = new AddressBook(routerFile);
|
||||
|
||||
List defaultSubs = new LinkedList();
|
||||
List<String> defaultSubs = new LinkedList();
|
||||
// defaultSubs.add("http://i2p/NF2RLVUxVulR3IqK0sGJR0dHQcGXAzwa6rEO4WAWYXOHw-DoZhKnlbf1nzHXwMEJoex5nFTyiNMqxJMWlY54cvU~UenZdkyQQeUSBZXyuSweflUXFqKN-y8xIoK2w9Ylq1k8IcrAFDsITyOzjUKoOPfVq34rKNDo7fYyis4kT5bAHy~2N1EVMs34pi2RFabATIOBk38Qhab57Umpa6yEoE~rbyR~suDRvD7gjBvBiIKFqhFueXsR2uSrPB-yzwAGofTXuklofK3DdKspciclTVzqbDjsk5UXfu2nTrC1agkhLyqlOfjhyqC~t1IXm-Vs2o7911k7KKLGjB4lmH508YJ7G9fLAUyjuB-wwwhejoWqvg7oWvqo4oIok8LG6ECR71C3dzCvIjY2QcrhoaazA9G4zcGMm6NKND-H4XY6tUWhpB~5GefB3YczOqMbHq4wi0O9MzBFrOJEOs3X4hwboKWANf7DT5PZKJZ5KorQPsYRSq0E3wSOsFCSsdVCKUGsAAAA/i2p/hosts.txt");
|
||||
defaultSubs.add("http://www.i2p2.i2p/hosts.txt");
|
||||
|
||||
SubscriptionList subscriptions = new SubscriptionList(subscriptionFile,
|
||||
etagsFile, lastModifiedFile, lastFetchedFile, delay, defaultSubs, (String) settings
|
||||
.get("proxy_host"), Integer.parseInt((String) settings.get("proxy_port")));
|
||||
etagsFile, lastModifiedFile, lastFetchedFile, delay, defaultSubs, settings
|
||||
.get("proxy_host"), Integer.parseInt(settings.get("proxy_port")));
|
||||
Log log = new Log(logFile);
|
||||
|
||||
update(master, router, published, subscriptions, log);
|
||||
// If false, add hosts via naming service; if true, write hosts.txt file directly
|
||||
// Default false
|
||||
if (Boolean.valueOf(settings.get("update_direct")).booleanValue()) {
|
||||
// Direct hosts.txt access
|
||||
File routerFile = new File(home, settings.get("router_addressbook"));
|
||||
AddressBook master;
|
||||
if (should_publish) {
|
||||
File masterFile = new File(home, settings.get("master_addressbook"));
|
||||
master = new AddressBook(masterFile);
|
||||
} else {
|
||||
master = null;
|
||||
}
|
||||
AddressBook router = new AddressBook(routerFile);
|
||||
update(master, router, published, subscriptions, log);
|
||||
} else {
|
||||
// Naming service - no merging of master to router and published is supported.
|
||||
update(getNamingService(settings.get("naming_service")), published, subscriptions, log);
|
||||
}
|
||||
}
|
||||
|
||||
/** depth-first search */
|
||||
private static NamingService searchNamingService(NamingService ns, String srch)
|
||||
{
|
||||
String name = ns.getName();
|
||||
if (name.equals(srch) || name.endsWith('/' + srch) || name.endsWith('\\' + srch))
|
||||
return ns;
|
||||
List<NamingService> list = ns.getNamingServices();
|
||||
if (list != null) {
|
||||
for (NamingService nss : list) {
|
||||
NamingService rv = searchNamingService(nss, srch);
|
||||
if (rv != null)
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/** @return the configured NamingService, or the root NamingService */
|
||||
private static NamingService getNamingService(String srch)
|
||||
{
|
||||
NamingService root = I2PAppContext.getGlobalContext().namingService();
|
||||
NamingService rv = searchNamingService(root, srch);
|
||||
return rv != null ? rv : root;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -149,7 +330,7 @@ public class Daemon {
|
||||
homeFile = new SecureDirectory(System.getProperty("user.dir"));
|
||||
}
|
||||
|
||||
Map defaultSettings = new HashMap();
|
||||
Map<String, String> defaultSettings = new HashMap();
|
||||
defaultSettings.put("proxy_host", "127.0.0.1");
|
||||
defaultSettings.put("proxy_port", "4444");
|
||||
defaultSettings.put("master_addressbook", "../userhosts.txt");
|
||||
@@ -162,6 +343,8 @@ public class Daemon {
|
||||
defaultSettings.put("last_modified", "last_modified");
|
||||
defaultSettings.put("last_fetched", "last_fetched");
|
||||
defaultSettings.put("update_delay", "12");
|
||||
defaultSettings.put("update_direct", "false");
|
||||
defaultSettings.put("naming_service", "hosts.txt");
|
||||
|
||||
if (!homeFile.exists()) {
|
||||
boolean created = homeFile.mkdirs();
|
||||
@@ -173,7 +356,7 @@ public class Daemon {
|
||||
|
||||
File settingsFile = new File(homeFile, settingsLocation);
|
||||
|
||||
Map settings = ConfigParser.parse(settingsFile, defaultSettings);
|
||||
Map<String, String> settings = ConfigParser.parse(settingsFile, defaultSettings);
|
||||
// wait
|
||||
try {
|
||||
Thread.sleep(5*60*1000 + I2PAppContext.getGlobalContext().random().nextLong(5*60*1000));
|
||||
@@ -181,7 +364,7 @@ public class Daemon {
|
||||
} catch (InterruptedException ie) {}
|
||||
|
||||
while (_running) {
|
||||
long delay = Long.parseLong((String) settings.get("update_delay"));
|
||||
long delay = Long.parseLong(settings.get("update_delay"));
|
||||
if (delay < 1) {
|
||||
delay = 1;
|
||||
}
|
||||
|
||||
@@ -21,13 +21,18 @@
|
||||
|
||||
package net.i2p.addressbook;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.client.naming.NamingServiceUpdater;
|
||||
|
||||
/**
|
||||
* A thread that waits five minutes, then runs the addressbook daemon.
|
||||
*
|
||||
* @author Ragnarok
|
||||
*
|
||||
*/
|
||||
class DaemonThread extends Thread {
|
||||
class DaemonThread extends Thread implements NamingServiceUpdater {
|
||||
|
||||
private String[] args;
|
||||
|
||||
@@ -49,11 +54,22 @@ class DaemonThread extends Thread {
|
||||
// Thread.sleep(5 * 60 * 1000);
|
||||
//} catch (InterruptedException exp) {
|
||||
//}
|
||||
I2PAppContext.getGlobalContext().namingService().registerUpdater(this);
|
||||
Daemon.main(this.args);
|
||||
I2PAppContext.getGlobalContext().namingService().unregisterUpdater(this);
|
||||
}
|
||||
|
||||
public void halt() {
|
||||
Daemon.stop();
|
||||
interrupt();
|
||||
}
|
||||
|
||||
/**
|
||||
* The NamingServiceUpdater interface
|
||||
* @param options ignored
|
||||
* @since 0.8.7
|
||||
*/
|
||||
public void update(Properties options) {
|
||||
interrupt();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,9 +35,9 @@ import net.i2p.data.DataHelper; // debug
|
||||
*
|
||||
* @author Ragnarok
|
||||
*/
|
||||
class SubscriptionIterator implements Iterator {
|
||||
class SubscriptionIterator implements Iterator<AddressBook> {
|
||||
|
||||
private Iterator subIterator;
|
||||
private Iterator<Subscription> subIterator;
|
||||
private String proxyHost;
|
||||
private int proxyPort;
|
||||
private final long delay;
|
||||
@@ -51,7 +51,7 @@ class SubscriptionIterator implements Iterator {
|
||||
* @param proxyHost proxy hostname
|
||||
* @param proxyPort proxt port number
|
||||
*/
|
||||
public SubscriptionIterator(List subscriptions, long delay, String proxyHost, int proxyPort) {
|
||||
public SubscriptionIterator(List<Subscription> subscriptions, long delay, String proxyHost, int proxyPort) {
|
||||
this.subIterator = subscriptions.iterator();
|
||||
this.delay = delay;
|
||||
this.proxyHost = proxyHost;
|
||||
@@ -72,8 +72,8 @@ class SubscriptionIterator implements Iterator {
|
||||
* see java.util.Iterator#next()
|
||||
* @return an AddressBook (empty if the minimum delay has not been met)
|
||||
*/
|
||||
public Object next() {
|
||||
Subscription sub = (Subscription) this.subIterator.next();
|
||||
public AddressBook next() {
|
||||
Subscription sub = this.subIterator.next();
|
||||
if (sub.getLastFetched() + this.delay < I2PAppContext.getGlobalContext().clock().now()) {
|
||||
//System.err.println("Fetching addressbook from " + sub.getLocation());
|
||||
return new AddressBook(sub, this.proxyHost, this.proxyPort);
|
||||
|
||||
@@ -24,7 +24,6 @@ package net.i2p.addressbook;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -37,7 +36,7 @@ import java.util.Map;
|
||||
*/
|
||||
class SubscriptionList {
|
||||
|
||||
private List subscriptions;
|
||||
private List<Subscription> subscriptions;
|
||||
|
||||
private File etagsFile;
|
||||
|
||||
@@ -68,7 +67,7 @@ class SubscriptionList {
|
||||
* @param proxyPort proxy port number
|
||||
*/
|
||||
public SubscriptionList(File locationsFile, File etagsFile,
|
||||
File lastModifiedFile, File lastFetchedFile, long delay, List defaultSubs, String proxyHost,
|
||||
File lastModifiedFile, File lastFetchedFile, long delay, List<String> defaultSubs, String proxyHost,
|
||||
int proxyPort) {
|
||||
this.subscriptions = new LinkedList();
|
||||
this.etagsFile = etagsFile;
|
||||
@@ -77,11 +76,10 @@ class SubscriptionList {
|
||||
this.delay = delay;
|
||||
this.proxyHost = proxyHost;
|
||||
this.proxyPort = proxyPort;
|
||||
Map etags;
|
||||
Map lastModified;
|
||||
Map lastFetched;
|
||||
String location;
|
||||
List locations = ConfigParser.parseSubscriptions(locationsFile,
|
||||
Map<String, String> etags;
|
||||
Map<String, String> lastModified;
|
||||
Map<String, String> lastFetched;
|
||||
List<String> locations = ConfigParser.parseSubscriptions(locationsFile,
|
||||
defaultSubs);
|
||||
try {
|
||||
etags = ConfigParser.parse(etagsFile);
|
||||
@@ -98,12 +96,10 @@ class SubscriptionList {
|
||||
} catch (IOException exp) {
|
||||
lastFetched = new HashMap();
|
||||
}
|
||||
Iterator iter = locations.iterator();
|
||||
while (iter.hasNext()) {
|
||||
location = (String) iter.next();
|
||||
this.subscriptions.add(new Subscription(location, (String) etags.get(location),
|
||||
(String) lastModified.get(location),
|
||||
(String) lastFetched.get(location)));
|
||||
for (String location : locations) {
|
||||
this.subscriptions.add(new Subscription(location, etags.get(location),
|
||||
lastModified.get(location),
|
||||
lastFetched.get(location)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,13 +121,10 @@ class SubscriptionList {
|
||||
* won't be read back correctly; the '=' should be escaped.
|
||||
*/
|
||||
public void write() {
|
||||
Iterator iter = this.subscriptions.iterator();
|
||||
Subscription sub;
|
||||
Map etags = new HashMap();
|
||||
Map lastModified = new HashMap();
|
||||
Map lastFetched = new HashMap();
|
||||
while (iter.hasNext()) {
|
||||
sub = (Subscription) iter.next();
|
||||
Map<String, String> etags = new HashMap();
|
||||
Map<String, String> lastModified = new HashMap();
|
||||
Map<String, String> lastFetched = new HashMap();
|
||||
for (Subscription sub : this.subscriptions) {
|
||||
if (sub.getEtag() != null) {
|
||||
etags.put(sub.getLocation(), sub.getEtag());
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
<property name="javadoc" value="javadoc"/>
|
||||
|
||||
<property name="javac.compilerargs" value=""/>
|
||||
<property name="require.gettext" value="true" />
|
||||
|
||||
<target name="init">
|
||||
<mkdir dir="${build}"/>
|
||||
@@ -29,8 +30,7 @@
|
||||
<compilerarg line="${javac.compilerargs}" />
|
||||
<classpath>
|
||||
<pathelement location="../../core/java/build/i2p.jar" />
|
||||
<!-- doesn't matter if we're not on win32, we just need the java classes, not the platform-dependent code -->
|
||||
<pathelement location="../../installer/lib/wrapper/win32/wrapper.jar" />
|
||||
<pathelement location="../../installer/lib/wrapper/all/wrapper.jar" />
|
||||
<pathelement location="../../router/java/build/router.jar" />
|
||||
</classpath>
|
||||
</javac>
|
||||
@@ -39,17 +39,20 @@
|
||||
</copy>
|
||||
</target>
|
||||
|
||||
<target name="jar" depends="compile">
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" >
|
||||
<target name="bundle" >
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="${require.gettext}" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
</exec>
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="${require.gettext}" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
</exec>
|
||||
<!-- multi-lang is optional -->
|
||||
<exec executable="sh" osfamily="windows" failifexecutionfails="false" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="listChangedFiles" depends="jarUpToDate" if="shouldListChanges" >
|
||||
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
|
||||
<arg value="list" />
|
||||
<arg value="changed" />
|
||||
@@ -61,6 +64,11 @@
|
||||
<arg value="[:space:]" />
|
||||
<arg value="," />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="jar" depends="compile, bundle, listChangedFiles" unless="jar.uptodate" >
|
||||
<!-- set if unset -->
|
||||
<property name="workspace.changes.tr" value="" />
|
||||
<jar basedir="${build}" destfile="${dist}/${jar}">
|
||||
<manifest>
|
||||
<attribute name="Main-Class" value="net.i2p.desktopgui.Main"/>
|
||||
@@ -71,6 +79,20 @@
|
||||
</jar>
|
||||
</target>
|
||||
|
||||
<target name="jarUpToDate">
|
||||
<uptodate property="jar.uptodate" targetfile="${dist}/${jar}" >
|
||||
<srcfiles dir= "." includes="build/**/*.class" />
|
||||
</uptodate>
|
||||
<condition property="shouldListChanges" >
|
||||
<and>
|
||||
<not>
|
||||
<isset property="jar.uptodate" />
|
||||
</not>
|
||||
<isset property="mtn.available" />
|
||||
</and>
|
||||
</condition>
|
||||
</target>
|
||||
|
||||
<target name="javadoc">
|
||||
<mkdir dir="${build}" />
|
||||
<mkdir dir="${build}/${javadoc}" />
|
||||
@@ -88,15 +110,15 @@
|
||||
</target>
|
||||
|
||||
<target name="poupdate">
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="true" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
<arg value="-p" />
|
||||
</exec>
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="true" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
<arg value="-p" />
|
||||
</exec>
|
||||
<exec executable="sh" osfamily="windows" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="windows" failifexecutionfails="true" failonerror="true" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
<arg value="-p" />
|
||||
</exec>
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
CLASS=net.i2p.desktopgui.messages
|
||||
TMPFILE=build/javafiles.txt
|
||||
export TZ=UTC
|
||||
RC=0
|
||||
|
||||
if [ "$1" = "-p" ]
|
||||
then
|
||||
@@ -76,15 +77,17 @@ do
|
||||
-o ${i}t
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo 'Warning - xgettext failed, not updating translations'
|
||||
echo "ERROR - xgettext failed on ${i}, not updating translations"
|
||||
rm -f ${i}t
|
||||
RC=1
|
||||
break
|
||||
fi
|
||||
msgmerge -U --backup=none $i ${i}t
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo 'Warning - msgmerge failed, not updating translations'
|
||||
echo "ERROR - msgmerge failed on ${i}, not updating translations"
|
||||
rm -f ${i}t
|
||||
RC=1
|
||||
break
|
||||
fi
|
||||
rm -f ${i}t
|
||||
@@ -101,11 +104,13 @@ do
|
||||
msgfmt --java --statistics -r $CLASS -l $LG -d build $i
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo 'Warning - msgfmt failed, not updating translations'
|
||||
echo "ERROR - msgfmt failed on ${i}, not updating translations"
|
||||
# msgfmt leaves the class file there so the build would work the next time
|
||||
find build -name messages_${LG}.class -exec rm -f {} \;
|
||||
RC=1
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
rm -f $TMPFILE
|
||||
# todo: return failure
|
||||
exit 0
|
||||
exit $RC
|
||||
|
||||
57
apps/desktopgui/locale/messages_it.po
Normal file
57
apps/desktopgui/locale/messages_it.po
Normal file
@@ -0,0 +1,57 @@
|
||||
# I2P
|
||||
# Copyright (C) 2009 The I2P Project
|
||||
# This file is distributed under the same license as the desktopgui package.
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# <jokjok@hotmail.it>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
|
||||
"PO-Revision-Date: 2011-06-09 17:09+0000\n"
|
||||
"Last-Translator: mkkid <jokjok@hotmail.it>\n"
|
||||
"Language-Team: Italian (http://www.transifex.net/projects/p/I2P/team/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: it\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
|
||||
msgid "Start I2P"
|
||||
msgstr "Avvia I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
|
||||
msgid "I2P is starting!"
|
||||
msgstr "Avvio di I2P in corso!"
|
||||
|
||||
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
|
||||
msgid "Starting"
|
||||
msgstr "Avvio"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
|
||||
msgid "Launch I2P Browser"
|
||||
msgstr "Avvia il Browser I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
|
||||
msgid "Configure desktopgui"
|
||||
msgstr "Configura desktopgui"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
|
||||
msgid "Restart I2P"
|
||||
msgstr "Riavvia I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
|
||||
msgid "Stop I2P"
|
||||
msgstr "Ferma I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44
|
||||
msgid "Tray icon configuration"
|
||||
msgstr "Configurazione dell'icona nell'Area di notifica"
|
||||
|
||||
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47
|
||||
msgid "Should tray icon be enabled?"
|
||||
msgstr "Vuoi che l'icona nell'Area di notifica venga abilitata?"
|
||||
|
||||
|
||||
57
apps/desktopgui/locale/messages_pl.po
Normal file
57
apps/desktopgui/locale/messages_pl.po
Normal file
@@ -0,0 +1,57 @@
|
||||
# I2P
|
||||
# Copyright (C) 2009 The I2P Project
|
||||
# This file is distributed under the same license as the desktopgui package.
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# <b790979@klzlk.com>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
|
||||
"PO-Revision-Date: 2011-05-25 18:36+0000\n"
|
||||
"Last-Translator: PolishAnon <b790979@klzlk.com>\n"
|
||||
"Language-Team: Polish (http://www.transifex.net/projects/p/I2P/team/pl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pl\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||
|
||||
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
|
||||
msgid "Start I2P"
|
||||
msgstr "Uruchom I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
|
||||
msgid "I2P is starting!"
|
||||
msgstr "Uruchamianie I2P!"
|
||||
|
||||
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
|
||||
msgid "Starting"
|
||||
msgstr "Uruchamianie"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
|
||||
msgid "Launch I2P Browser"
|
||||
msgstr "Uruchom Przeglądarke I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
|
||||
msgid "Configure desktopgui"
|
||||
msgstr "Skonfiguruj intrefejs pulpitu (desktopgui)"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
|
||||
msgid "Restart I2P"
|
||||
msgstr "Zrestartuj I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
|
||||
msgid "Stop I2P"
|
||||
msgstr "Zatrzymaj I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44
|
||||
msgid "Tray icon configuration"
|
||||
msgstr "Konfiguracja ikony zasobnika"
|
||||
|
||||
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47
|
||||
msgid "Should tray icon be enabled?"
|
||||
msgstr "Czy ikona zasobnika powinna być aktywna?"
|
||||
|
||||
|
||||
57
apps/desktopgui/locale/messages_sv.po
Normal file
57
apps/desktopgui/locale/messages_sv.po
Normal file
@@ -0,0 +1,57 @@
|
||||
# I2P
|
||||
# Copyright (C) 2009 The I2P Project
|
||||
# This file is distributed under the same license as the desktopgui package.
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# 123hund123 <M8R-ra4r1r@mailinator.com>, 2011
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
|
||||
"PO-Revision-Date: 2011-03-22 15:49+0000\n"
|
||||
"Last-Translator: 123hund123 <M8R-ra4r1r@mailinator.com>\n"
|
||||
"Language-Team: Swedish (Sweden) (http://www.transifex.net/projects/p/I2P/team/sv_SE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sv_SE\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
|
||||
msgid "Start I2P"
|
||||
msgstr "Starta I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
|
||||
msgid "I2P is starting!"
|
||||
msgstr "I2P startas!"
|
||||
|
||||
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
|
||||
msgid "Starting"
|
||||
msgstr "Startar"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
|
||||
msgid "Launch I2P Browser"
|
||||
msgstr "Öppna I2P browser"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
|
||||
msgid "Configure desktopgui"
|
||||
msgstr "Konfigurera desktopgui"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
|
||||
msgid "Restart I2P"
|
||||
msgstr "Starta om I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
|
||||
msgid "Stop I2P"
|
||||
msgstr "Stoppar I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44
|
||||
msgid "Tray icon configuration"
|
||||
msgstr "Ikonpanelskonfiguration"
|
||||
|
||||
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47
|
||||
msgid "Should tray icon be enabled?"
|
||||
msgstr "Ska ikonpanelen vara aktiverad?"
|
||||
|
||||
|
||||
57
apps/desktopgui/locale/messages_vi.po
Normal file
57
apps/desktopgui/locale/messages_vi.po
Normal file
@@ -0,0 +1,57 @@
|
||||
# I2P
|
||||
# Copyright (C) 2009 The I2P Project
|
||||
# This file is distributed under the same license as the desktopgui package.
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# dich_tran <tran.nathan@gmail.com>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
|
||||
"PO-Revision-Date: 2011-04-12 06:13+0000\n"
|
||||
"Last-Translator: dich_tran <tran.nathan@gmail.com>\n"
|
||||
"Language-Team: Vietnamese (http://www.transifex.net/projects/p/I2P/team/vi/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: vi\n"
|
||||
"Plural-Forms: nplurals=1; plural=0\n"
|
||||
|
||||
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
|
||||
msgid "Start I2P"
|
||||
msgstr "Khởi động I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
|
||||
msgid "I2P is starting!"
|
||||
msgstr "I2P đang bắt đầu"
|
||||
|
||||
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
|
||||
msgid "Starting"
|
||||
msgstr "Bắt đầu"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
|
||||
msgid "Launch I2P Browser"
|
||||
msgstr "Kích hoạt trình duyệt I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
|
||||
msgid "Configure desktopgui"
|
||||
msgstr "Cấu hình giao diện"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
|
||||
msgid "Restart I2P"
|
||||
msgstr "Khởi động lại I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
|
||||
msgid "Stop I2P"
|
||||
msgstr "Ngưng I2P"
|
||||
|
||||
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44
|
||||
msgid "Tray icon configuration"
|
||||
msgstr "Cấu hình tray icon"
|
||||
|
||||
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47
|
||||
msgid "Should tray icon be enabled?"
|
||||
msgstr "Cần dùng tray icon?"
|
||||
|
||||
|
||||
@@ -22,7 +22,10 @@
|
||||
</classpath>
|
||||
</depend>
|
||||
</target>
|
||||
|
||||
<property name="javac.compilerargs" value="" />
|
||||
<property name="require.gettext" value="true" />
|
||||
|
||||
<target name="compile" depends="depend">
|
||||
<mkdir dir="./build" />
|
||||
<mkdir dir="./build/obj" />
|
||||
@@ -36,7 +39,7 @@
|
||||
</javac>
|
||||
</target>
|
||||
|
||||
<target name="jar" depends="builddep, compile, jarUpToDate" unless="jar.uptodate" >
|
||||
<target name="listChangedFiles" depends="jarUpToDate" if="shouldListChanges" >
|
||||
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
|
||||
<arg value="list" />
|
||||
<arg value="changed" />
|
||||
@@ -48,6 +51,11 @@
|
||||
<arg value="[:space:]" />
|
||||
<arg value="," />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="jar" depends="builddep, compile, jarUpToDate, listChangedFiles" unless="jar.uptodate" >
|
||||
<!-- set if unset -->
|
||||
<property name="workspace.changes.tr" value="" />
|
||||
<jar destfile="./build/i2psnark.jar" basedir="./build/obj" includes="**/*.class" excludes="**/I2PSnarkServlet*.class **/messages_*.class">
|
||||
<manifest>
|
||||
<attribute name="Main-Class" value="org.klomp.snark.Snark" />
|
||||
@@ -63,6 +71,17 @@
|
||||
<uptodate property="jar.uptodate" targetfile="build/i2psnark.jar" >
|
||||
<srcfiles dir= "build/obj" includes="**/*.class" excludes="**/I2PSnarkServlet*.class **/messages_*.class" />
|
||||
</uptodate>
|
||||
<condition property="shouldListChanges" >
|
||||
<and>
|
||||
<not>
|
||||
<isset property="jar.uptodate" />
|
||||
</not>
|
||||
<not>
|
||||
<isset property="wjar.uptodate" />
|
||||
</not>
|
||||
<isset property="mtn.available" />
|
||||
</and>
|
||||
</condition>
|
||||
</target>
|
||||
|
||||
<!-- Ideally we would include
|
||||
@@ -72,7 +91,9 @@
|
||||
- So we must continue to duplicate everything in the war.
|
||||
<classes dir="./build/obj" includes="**/I2PSnarkServlet*.class" />
|
||||
-->
|
||||
<target name="war" depends="jar, bundle, warUpToDate" unless="war.uptodate" >
|
||||
<target name="war" depends="jar, bundle, warUpToDate, listChangedFiles" unless="war.uptodate" >
|
||||
<!-- set if unset -->
|
||||
<property name="workspace.changes.tr" value="" />
|
||||
<war destfile="../i2psnark.war" webxml="../web.xml" basedir="../" includes="_icons/*" >
|
||||
<!-- include only the web stuff, as of 0.7.12 the router will add i2psnark.jar to the classpath for the war -->
|
||||
<classes dir="./build/obj" includes="**/web/*.class" />
|
||||
@@ -93,10 +114,10 @@
|
||||
<target name="bundle" depends="compile">
|
||||
<!-- Update the messages_*.po files.
|
||||
We need to supply the bat file for windows, and then change the fail property to true -->
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="${require.gettext}" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
</exec>
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="${require.gettext}" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
</exec>
|
||||
<!-- multi-lang is optional -->
|
||||
@@ -107,15 +128,15 @@
|
||||
|
||||
<target name="poupdate" depends="builddep, compile">
|
||||
<!-- Update the messages_*.po files. -->
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="true" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
<arg value="-p" />
|
||||
</exec>
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="true" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
<arg value="-p" />
|
||||
</exec>
|
||||
<exec executable="sh" osfamily="windows" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="windows" failifexecutionfails="true" failonerror="true" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
<arg value="-p" />
|
||||
</exec>
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
CLASS=org.klomp.snark.web.messages
|
||||
TMPFILE=build/javafiles.txt
|
||||
export TZ=UTC
|
||||
RC=0
|
||||
|
||||
if [ "$1" = "-p" ]
|
||||
then
|
||||
@@ -67,15 +68,17 @@ do
|
||||
-o ${i}t
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo 'Warning - xgettext failed, not updating translations'
|
||||
echo "ERROR - xgettext failed on ${i}, not updating translations"
|
||||
rm -f ${i}t
|
||||
RC=1
|
||||
break
|
||||
fi
|
||||
msgmerge -U --backup=none $i ${i}t
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo 'Warning - msgmerge failed, not updating translations'
|
||||
echo "ERROR - msgmerge failed on ${i}, not updating translations"
|
||||
rm -f ${i}t
|
||||
RC=1
|
||||
break
|
||||
fi
|
||||
rm -f ${i}t
|
||||
@@ -92,11 +95,13 @@ do
|
||||
msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo 'Warning - msgfmt failed, not updating translations'
|
||||
echo "ERROR - msgfmt failed on ${i}, not updating translations"
|
||||
# msgfmt leaves the class file there so the build would work the next time
|
||||
find build/obj -name messages_${LG}.class -exec rm -f {} \;
|
||||
RC=1
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
rm -f $TMPFILE
|
||||
# todo: return failure
|
||||
exit 0
|
||||
exit $RC
|
||||
|
||||
@@ -24,7 +24,6 @@ import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
@@ -401,7 +400,7 @@ public class MetaInfo
|
||||
****/
|
||||
|
||||
private boolean fast_checkPiece(int piece, byte[] bs, int off, int length) {
|
||||
SHA1 sha1 = new SHA1();
|
||||
MessageDigest sha1 = SHA1.getInstance();
|
||||
|
||||
sha1.update(bs, off, length);
|
||||
byte[] hash = sha1.digest();
|
||||
@@ -519,18 +518,11 @@ public class MetaInfo
|
||||
}
|
||||
byte[] infoBytes = BEncoder.bencode(info);
|
||||
//_log.debug("info bencoded: [" + Base64.encode(infoBytes, true) + "]");
|
||||
try
|
||||
{
|
||||
MessageDigest digest = MessageDigest.getInstance("SHA");
|
||||
MessageDigest digest = SHA1.getInstance();
|
||||
byte hash[] = digest.digest(infoBytes);
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("info hash: " + I2PSnarkUtil.toHex(hash));
|
||||
return hash;
|
||||
}
|
||||
catch(NoSuchAlgorithmException nsa)
|
||||
{
|
||||
throw new InternalError(nsa.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/** @since 0.8.5 */
|
||||
|
||||
@@ -130,7 +130,8 @@ public class PeerAcceptor
|
||||
}
|
||||
}
|
||||
|
||||
private static final int LOOKAHEAD_SIZE = "19".length() +
|
||||
/** 48 */
|
||||
private static final int LOOKAHEAD_SIZE = 1 + // chr(19)
|
||||
"BitTorrent protocol".length() +
|
||||
8 + // blank, reserved
|
||||
20; // infohash
|
||||
@@ -144,7 +145,7 @@ public class PeerAcceptor
|
||||
if (read != buf.length)
|
||||
throw new IOException("Unable to read the hash (read " + read + ")");
|
||||
byte rv[] = new byte[20];
|
||||
System.arraycopy(buf, buf.length-rv.length-1, rv, 0, rv.length);
|
||||
System.arraycopy(buf, buf.length-rv.length, rv, 0, rv.length);
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -342,6 +342,11 @@ public class PeerCoordinator implements PeerListener
|
||||
private int getMaxConnections() {
|
||||
if (metainfo == null)
|
||||
return 6;
|
||||
int pieces = metainfo.getPieces();
|
||||
if (pieces <= 2)
|
||||
return 4;
|
||||
if (pieces <= 5)
|
||||
return 6;
|
||||
int size = metainfo.getPieceLength(0);
|
||||
int max = _util.getMaxConnections();
|
||||
if (size <= 512*1024 || completed())
|
||||
|
||||
@@ -23,6 +23,7 @@ package org.klomp.snark;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
@@ -165,7 +166,7 @@ public class Storage
|
||||
*/
|
||||
private byte[] fast_digestCreate() throws IOException {
|
||||
// Calculate piece_hashes
|
||||
SHA1 digest = new SHA1();
|
||||
MessageDigest digest = SHA1.getInstance();
|
||||
|
||||
byte[] piece_hashes = new byte[20 * pieces];
|
||||
|
||||
@@ -556,7 +557,8 @@ public class Storage
|
||||
private static final char[] ILLEGAL = new char[] {
|
||||
'<', '>', ':', '"', '/', '\\', '|', '?', '*',
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 };
|
||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||||
0x7f };
|
||||
|
||||
/**
|
||||
* Removes 'suspicious' characters from the given file name.
|
||||
|
||||
@@ -1038,6 +1038,8 @@ public class I2PSnarkServlet extends Default {
|
||||
client = "Robert";
|
||||
else if (ch.startsWith("LV")) // LVCS 1.0.2?; LVRS 1.0.4
|
||||
client = "Transmission";
|
||||
else if ("LUtU".equals(ch))
|
||||
client = "KTorrent";
|
||||
else
|
||||
client = _("Unknown") + " (" + ch + ')';
|
||||
out.write(client + " <tt>" + peer.toString().substring(5, 9)+ "</tt>");
|
||||
|
||||
@@ -8,14 +8,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P i2psnark\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-03-03 18:28+0000\n"
|
||||
"PO-Revision-Date: 2011-02-27 17:33+0100\n"
|
||||
"Last-Translator: \n"
|
||||
"POT-Creation-Date: 2011-06-02 16:12+0000\n"
|
||||
"PO-Revision-Date: 2011-06-02 22:29+0100\n"
|
||||
"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
|
||||
"Language-Team: foo <foo@bar>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
"X-Poedit-Language: German\n"
|
||||
|
||||
@@ -46,9 +46,7 @@ msgstr "Startverzögerung auf {0} gesetzt"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:386
|
||||
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
|
||||
msgstr ""
|
||||
"Änderungen an I2CP und am Tunnel werden nach dem Stoppen aller Torrents "
|
||||
"wirksam"
|
||||
msgstr "Änderungen an I2CP und am Tunnel werden nach dem Stoppen aller Torrents wirksam"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:393
|
||||
msgid "Disconnecting old I2CP destination"
|
||||
@@ -60,11 +58,8 @@ msgid "I2CP settings changed to {0}"
|
||||
msgstr "I2CP Einstellungen geändert auf {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:402
|
||||
msgid ""
|
||||
"Unable to connect with the new settings, reverting to the old I2CP settings"
|
||||
msgstr ""
|
||||
"Verbinden mit den neuen Einstellungen nicht möglich, benutze wieder die "
|
||||
"alten I2CP-Einstellungen"
|
||||
msgid "Unable to connect with the new settings, reverting to the old I2CP settings"
|
||||
msgstr "Verbinden mit den neuen Einstellungen nicht möglich, benutze wieder die alten I2CP-Einstellungen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:406
|
||||
msgid "Unable to reconnect with the old settings!"
|
||||
@@ -89,28 +84,20 @@ msgstr "Deaktiviere Autostart"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:437
|
||||
msgid "Enabled open trackers - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
"OpenTracker aktiviert - Um dies anzuwenden, müssen die Torrents neu "
|
||||
"gestartet werden."
|
||||
msgstr "OpenTracker aktiviert - Um dies anzuwenden, müssen die Torrents neu gestartet werden."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:439
|
||||
msgid "Disabled open trackers - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
"OpenTracker deaktiviert - Um dies anzuwenden, müssen die Torrents neu "
|
||||
"gestartet werden."
|
||||
msgstr "OpenTracker deaktiviert - Um dies anzuwenden, müssen die Torrents neu gestartet werden."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:447
|
||||
msgid "Open Tracker list changed - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
"OpenTracker-Liste geändert - Um dies anzuwenden, müssen die Torrents neu "
|
||||
"gestartet werden"
|
||||
msgstr "OpenTracker-Liste geändert - Um dies anzuwenden, müssen die Torrents neu gestartet werden"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:454
|
||||
#, java-format
|
||||
msgid "{0} theme loaded, return to main i2psnark page to view."
|
||||
msgstr ""
|
||||
"Thema {0} geladen. Gehen Sie zurück zur Hauptseite von i2psnark, um die "
|
||||
"Änderungen zu sehen!"
|
||||
msgstr "Thema {0} geladen. Gehen Sie zurück zur Hauptseite von i2psnark, um die Änderungen zu sehen!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:461
|
||||
msgid "Configuration unchanged."
|
||||
@@ -127,8 +114,7 @@ msgstr "Verbinde mit I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:539
|
||||
msgid "Error connecting to I2P - check your I2CP settings!"
|
||||
msgstr ""
|
||||
"Fehler beim Verbinden mit I2P - Kontrollieren Sie die I2CP-Einstellungen!"
|
||||
msgstr "Fehler beim Verbinden mit I2P - Kontrollieren Sie die I2CP-Einstellungen!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:548
|
||||
#, java-format
|
||||
@@ -142,163 +128,152 @@ msgid "Cannot open \"{0}\""
|
||||
msgstr "Kann dies nicht öffnen: \"{0}\""
|
||||
|
||||
#. TODO - if the existing one is a magnet, delete it and add the metainfo instead?
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:586
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:661
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:716
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:589
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:665
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:720
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976
|
||||
#, java-format
|
||||
msgid "Torrent with this info hash is already running: {0}"
|
||||
msgstr "Torrent mit diesem Infohash läuft schon: {0}"
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:593
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:596
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers "
|
||||
"only."
|
||||
msgstr ""
|
||||
"Warnung - keine I2P Tracker in \"{0}\", werde nur bei I2P-OpenTrackern "
|
||||
"bekanntgeben"
|
||||
msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only."
|
||||
msgstr "Warnung - keine I2P Tracker in \"{0}\", werde nur bei I2P-OpenTrackern bekanntgeben"
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:598
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:601
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is "
|
||||
"enabled before starting this torrent."
|
||||
msgstr ""
|
||||
"Warnung - keine I2P-Tracker in \"{0}\" gefunden. Stell sicher, dass "
|
||||
"OpenTracker aktiviert sind, bevor du diesen Torrent startest!"
|
||||
msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent."
|
||||
msgstr "Warnung - keine I2P-Tracker in \"{0}\" gefunden. Stell sicher, dass OpenTracker aktiviert sind, bevor du diesen Torrent startest!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:619
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:622
|
||||
#, java-format
|
||||
msgid "Torrent in \"{0}\" is invalid"
|
||||
msgstr "Torrent in \"{0}\" ist nicht gültig"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:624
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:627
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998
|
||||
#, java-format
|
||||
msgid "ERROR - Out of memory, cannot create torrent from {0}"
|
||||
msgstr ""
|
||||
"Fehler - unzureichender Arbeitsspeicher, kann keinen Torrent von {0} "
|
||||
"erstellen."
|
||||
msgstr "Fehler - unzureichender Arbeitsspeicher, kann keinen Torrent von {0} erstellen."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:635
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:639
|
||||
#, java-format
|
||||
msgid "Torrent added and started: \"{0}\""
|
||||
msgstr "Torrent hinzugefügt und gestartet: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:637
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:641
|
||||
#, java-format
|
||||
msgid "Torrent added: \"{0}\""
|
||||
msgstr "Torrent hinzugefügt: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:672
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:676
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
|
||||
#, java-format
|
||||
msgid "Fetching {0}"
|
||||
msgstr "Hole {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:675
|
||||
#, java-format
|
||||
msgid ""
|
||||
"We have no saved peers and no other torrents are running. Fetch of {0} will "
|
||||
"not succeed until you start another torrent."
|
||||
msgstr ""
|
||||
"Wir haben keine Gespeicherten Teilnehmer und keine anderen aktiven Torrents. "
|
||||
"Das Herunterladen von {0} kann nicht erfolgen, solange du keinen anderen "
|
||||
"Torrent startest."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:679
|
||||
#, java-format
|
||||
msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent."
|
||||
msgstr "Wir haben keine Gespeicherten Teilnehmer und keine anderen aktiven Torrents. Das Herunterladen von {0} kann nicht erfolgen, solange du keinen anderen Torrent startest."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:683
|
||||
#, java-format
|
||||
msgid "Adding {0}"
|
||||
msgstr "Hinzufügen {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:726
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:749
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1174
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:730
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:753
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1180
|
||||
#, java-format
|
||||
msgid "Failed to copy torrent file to {0}"
|
||||
msgstr "Konnte Torrent-Datei nicht nach {0} kopieren"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:972
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:976
|
||||
#, java-format
|
||||
msgid "Too many files in \"{0}\" ({1}), deleting it!"
|
||||
msgstr "Zu viele Dateien in \"{0}\" ({1}), wird gelöscht! "
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:974
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:978
|
||||
#, java-format
|
||||
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
|
||||
msgstr "Torrentdatei \"{0}\" darf nicht auf '.torrent' enden, wird gelöscht!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:976
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:980
|
||||
#, java-format
|
||||
msgid "No pieces in \"{0}\", deleting it!"
|
||||
msgstr "Keine Teile in \"{0}\", wird entfernt!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:978
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:982
|
||||
#, java-format
|
||||
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
|
||||
msgstr "Zu viele Teile in \"{0}\", das Limit sind {1}, werden gelöscht!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:980
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:984
|
||||
#, java-format
|
||||
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
|
||||
msgstr "Teile in \"{0}\" sind zu groß ({1}B), lösche es."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:981
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:985
|
||||
#, java-format
|
||||
msgid "Limit is {0}B"
|
||||
msgstr "Limit ist \"{0}\"Bytes"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:989
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:987
|
||||
#, java-format
|
||||
msgid "Torrent \"{0}\" has no data, deleting it!"
|
||||
msgstr "Torrent \"{0}\" enthält keine Daten und wird gelöscht!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:995
|
||||
#, java-format
|
||||
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
|
||||
msgstr ""
|
||||
"Torrents größer als \"{0}\"Bytes werden nicht unterstützt, lösche \"{1}\"."
|
||||
msgstr "Torrents größer als \"{0}\"Bytes werden nicht unterstützt, lösche \"{1}\"."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1005
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1011
|
||||
#, java-format
|
||||
msgid "Error: Could not remove the torrent {0}"
|
||||
msgstr "Fehler: Konnte den Torrent \"{0}\" nicht entfernen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1026
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1044
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1032
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1050
|
||||
#, java-format
|
||||
msgid "Torrent stopped: \"{0}\""
|
||||
msgstr "Torrent angehalten: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1065
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1071
|
||||
#, java-format
|
||||
msgid "Torrent removed: \"{0}\""
|
||||
msgstr "Torrent entfernt: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1073
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1079
|
||||
#, java-format
|
||||
msgid "Adding torrents in {0}"
|
||||
msgstr "Füge Torrents in {0} hinzu ..."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1122
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1128
|
||||
#, java-format
|
||||
msgid "Download finished: {0}"
|
||||
msgstr "vollständig heruntergeladen:\"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1170
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1176
|
||||
#, java-format
|
||||
msgid "Metainfo received for {0}"
|
||||
msgstr "Metainfo für {0} erhalten"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1171
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1177
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526
|
||||
#, java-format
|
||||
msgid "Starting up torrent {0}"
|
||||
msgstr "Starte Torrent {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1225
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
|
||||
msgid "Unable to connect to I2P!"
|
||||
msgstr "Konnte mich nicht mit I2P verbinden!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1237
|
||||
#, java-format
|
||||
msgid "Unable to add {0}"
|
||||
msgstr "Konnte {0} nicht hinzufügen."
|
||||
@@ -395,82 +370,81 @@ msgstr " "
|
||||
msgid "Up Rate"
|
||||
msgstr "ausgehend"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366
|
||||
msgid "Stop all torrents and the I2P tunnel"
|
||||
msgstr "Stoppe alle Torrents und den I2P-Tunnel"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368
|
||||
msgid "Stop All"
|
||||
msgstr "Stoppe alle"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377
|
||||
msgid "Start all torrents and the I2P tunnel"
|
||||
msgstr "Starte alle Torrents und den I2P-Tunnel"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379
|
||||
msgid "Start All"
|
||||
msgstr "Starte alle"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398
|
||||
msgid "No torrents loaded."
|
||||
msgstr "keine Torrents geladen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403
|
||||
msgid "Totals"
|
||||
msgstr "Gesamt"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405
|
||||
#, java-format
|
||||
msgid "1 torrent"
|
||||
msgid_plural "{0} torrents"
|
||||
msgstr[0] "1 Torrent"
|
||||
msgstr[1] "{0} Torrents"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:408
|
||||
#, java-format
|
||||
msgid "1 connected peer"
|
||||
msgid_plural "{0} connected peers"
|
||||
msgstr[0] "1 verbundener Teilnehmer"
|
||||
msgstr[1] "{0} verbundene Teilnehmer"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:497
|
||||
#, java-format
|
||||
msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
|
||||
msgstr "ungültige URL - muss mit \"http://\", \"{0}\", oder \"{1}\" anfangen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:572
|
||||
#, java-format
|
||||
msgid "Magnet deleted: {0}"
|
||||
msgstr "Magnetlink wurde gelöscht: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578
|
||||
#, java-format
|
||||
msgid "Torrent file deleted: {0}"
|
||||
msgstr "Torrentdatei gelöscht: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594
|
||||
#, java-format
|
||||
msgid "Data file deleted: {0}"
|
||||
msgstr "Daten gelöscht: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
|
||||
#, java-format
|
||||
msgid "Data file could not be deleted: {0}"
|
||||
msgstr "Daten konnten nicht gelöscht werden: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605
|
||||
#, java-format
|
||||
msgid "Data dir deleted: {0}"
|
||||
msgstr "Datenverzeichnis wurde gelöscht: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638
|
||||
msgid "Error creating torrent - you must select a tracker"
|
||||
msgstr ""
|
||||
"Fehler beim Erstellen des Torrents - Sie müssen einen Tracker auswählen!"
|
||||
msgstr "Fehler beim Erstellen des Torrents - Sie müssen einen Tracker auswählen!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653
|
||||
#, java-format
|
||||
@@ -479,12 +453,8 @@ msgstr "Torrent erstellt für \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Many I2P trackers require you to register new torrents before seeding - "
|
||||
"please do so before starting \"{0}\""
|
||||
msgstr ""
|
||||
"Viele I2P-Tracker erfordern eine Registrierung, bevor der Torrent verteilt "
|
||||
"wird. Bitte tun Sie dies vor dem Start von \"{0}\"!"
|
||||
msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\""
|
||||
msgstr "Viele I2P-Tracker erfordern eine Registrierung, bevor der Torrent verteilt wird. Bitte tun Sie dies vor dem Start von \"{0}\"!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
|
||||
#, java-format
|
||||
@@ -498,9 +468,7 @@ msgstr "Kann keinen Torrent für nicht existente Daten erstellen: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
|
||||
msgid "Error creating torrent - you must enter a file or directory"
|
||||
msgstr ""
|
||||
"Fehler beim Erstellen des Torrents - Sie müssen eine Datei oder ein "
|
||||
"Verzeichnis angeben."
|
||||
msgstr "Fehler beim Erstellen des Torrents - Sie müssen eine Datei oder ein Verzeichnis angeben."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
|
||||
msgid "Stopping all torrents and closing the I2P tunnel."
|
||||
@@ -599,20 +567,15 @@ msgstr "Start"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982
|
||||
msgid "Remove the torrent from the active list, deleting the .torrent file"
|
||||
msgstr ""
|
||||
"entfernt den Torrent von der aktiven Liste und löscht die .torrent-Datei"
|
||||
msgstr "entfernt den Torrent von der aktiven Liste und löscht die .torrent-Datei"
|
||||
|
||||
#. Can't figure out how to escape double quotes inside the onclick string.
|
||||
#. Single quotes in translate strings with parameters must be doubled.
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
|
||||
"data will not be deleted) ?"
|
||||
msgstr ""
|
||||
"Sind Sie sicher, dass Sie die Datei \\''{0}.torrent\\'' löschen wollen? "
|
||||
"(Heruntergeladene Daten werden nicht gelöscht.)"
|
||||
msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?"
|
||||
msgstr "Sind Sie sicher, dass Sie die Datei \\''{0}.torrent\\'' löschen wollen? (Heruntergeladene Daten werden nicht gelöscht.)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990
|
||||
msgid "Remove"
|
||||
@@ -627,12 +590,8 @@ msgstr "löscht die .torrent-Datei und dazugehörige Daten Datei(en)"
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
|
||||
"data?"
|
||||
msgstr ""
|
||||
"Sind Sie sicher, dass Sie die Torrentdatei \\''{0}\\'' und alle "
|
||||
"heruntergeladenen Daten löschen wollen?"
|
||||
msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?"
|
||||
msgstr "Sind Sie sicher, dass Sie die Torrentdatei \\''{0}\\'' und alle heruntergeladenen Daten löschen wollen?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
|
||||
msgid "Delete"
|
||||
@@ -676,11 +635,8 @@ msgid "From URL"
|
||||
msgstr "Quell-URL"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193
|
||||
msgid ""
|
||||
"Enter the torrent file download URL (I2P only), magnet link, or maggot link"
|
||||
msgstr ""
|
||||
"Gib die Download-URL der torrent-Datei (nur I2P), einen Magnet- oder einen "
|
||||
"Maggotlink an!"
|
||||
msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link"
|
||||
msgstr "Gib die Download-URL der torrent-Datei (nur I2P), einen Magnet- oder einen Maggotlink an!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198
|
||||
msgid "Add torrent"
|
||||
@@ -792,12 +748,8 @@ msgid "Use open trackers also"
|
||||
msgstr "Benutze auch OpenTracker"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358
|
||||
msgid ""
|
||||
"If checked, announce torrents to open trackers as well as the tracker listed "
|
||||
"in the torrent file"
|
||||
msgstr ""
|
||||
"Wenn markiert, wird der Torrent neben dem angegebenen Tracker auch bei den "
|
||||
"OpenTrackern bekannt gegeben."
|
||||
msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"
|
||||
msgstr "Wenn markiert, wird der Torrent neben dem angegebenen Tracker auch bei den OpenTrackern bekannt gegeben."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362
|
||||
msgid "Open tracker announce URLs"
|
||||
@@ -932,90 +884,70 @@ msgstr "Prioritäten speichern"
|
||||
msgid "Torrent fetched from {0}"
|
||||
msgstr "Torrent geholt von {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988
|
||||
#, java-format
|
||||
msgid "Torrent already running: {0}"
|
||||
msgstr "Torrent läuft schon: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990
|
||||
#, java-format
|
||||
msgid "Torrent already in the queue: {0}"
|
||||
msgstr "Torrent ist schon in der Warteschlange: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996
|
||||
#, java-format
|
||||
msgid "Torrent at {0} was not valid"
|
||||
msgstr "Torrent in {0} war nicht gültig"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2003
|
||||
#, java-format
|
||||
msgid "Torrent was not retrieved from {0}"
|
||||
msgstr "Torrent wurde nicht geladen von {0}"
|
||||
|
||||
#~ msgid "Torrent file must originate from an I2P-based tracker"
|
||||
#~ msgstr "Die Torrentdatei muss von einem Tracker in I2P stammen."
|
||||
|
||||
#~ msgid " theme locked and loaded."
|
||||
#~ msgstr "Aufmachung geladen"
|
||||
|
||||
#~ msgid "Estimated Download Time"
|
||||
#~ msgstr "geschätzte verbleibende Zeit bis zur Fertigstellung"
|
||||
|
||||
#~ msgid "Torrent file {0} does not exist"
|
||||
#~ msgstr "Torrentdatei {0} existiert nicht"
|
||||
|
||||
#~ msgid "Copying torrent to {0}"
|
||||
#~ msgstr "Kopiere Torrent nach {0}"
|
||||
|
||||
#~ msgid "from {0}"
|
||||
#~ msgstr "von {0}"
|
||||
|
||||
#~ msgid "Downloading"
|
||||
#~ msgstr "lade herunter"
|
||||
|
||||
#~ msgid "FileSize"
|
||||
#~ msgstr "Größe"
|
||||
|
||||
#~ msgid "Download Status"
|
||||
#~ msgstr "Zustand"
|
||||
|
||||
#~ msgid "size: {0}B"
|
||||
#~ msgstr "Größe: {0}Byte"
|
||||
|
||||
#~ msgid "Directory to store torrents and data"
|
||||
#~ msgstr "Verzeichnis zum Speichern von Torrentdateien und Daten"
|
||||
|
||||
#~ msgid "Do not download"
|
||||
#~ msgstr "nicht herunterladen"
|
||||
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "Details"
|
||||
|
||||
#~ msgid "Cannot change the I2CP settings while torrents are active"
|
||||
#~ msgstr ""
|
||||
#~ "Kann nicht die I2CP Einstellungen ändern während Torrents aktiv sind."
|
||||
|
||||
#~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!"
|
||||
#~ msgstr ""
|
||||
#~ "Nicht-I2P Tracker in\"{0}\", entferne ihn aus unserer Liste der Tracker!"
|
||||
|
||||
#~ msgid "{0} torrents"
|
||||
#~ msgstr "{0} Torrents"
|
||||
|
||||
#~ msgid "Uninteresting"
|
||||
#~ msgstr "nicht interessiert"
|
||||
|
||||
#~ msgid "Choked"
|
||||
#~ msgstr "Gestaut"
|
||||
|
||||
#~ msgid "Uninterested"
|
||||
#~ msgstr "Nicht interessiert"
|
||||
|
||||
#~ msgid "Choking"
|
||||
#~ msgstr "Stau"
|
||||
|
||||
#~ msgid "Custom tracker URL"
|
||||
#~ msgstr "Spezifische Tracker URL"
|
||||
|
||||
#~ msgid "Configure"
|
||||
#~ msgstr "Einstellungen"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P i2psnark\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-03-03 18:28+0000\n"
|
||||
"POT-Creation-Date: 2011-06-11 08:22+0000\n"
|
||||
"PO-Revision-Date: 2010-06-15 14:09+0100\n"
|
||||
"Last-Translator: duck <duck@mail.i2p>\n"
|
||||
"Language-Team: duck <duck@mail.i2p>\n"
|
||||
@@ -128,16 +128,16 @@ msgid "Cannot open \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#. TODO - if the existing one is a magnet, delete it and add the metainfo instead?
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:586
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:661
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:716
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:589
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:665
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:720
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976
|
||||
#, java-format
|
||||
msgid "Torrent with this info hash is already running: {0}"
|
||||
msgstr ""
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:593
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:596
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers "
|
||||
@@ -145,136 +145,141 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:598
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:601
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is "
|
||||
"enabled before starting this torrent."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:619
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:622
|
||||
#, java-format
|
||||
msgid "Torrent in \"{0}\" is invalid"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:624
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:627
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998
|
||||
#, java-format
|
||||
msgid "ERROR - Out of memory, cannot create torrent from {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:635
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:639
|
||||
#, java-format
|
||||
msgid "Torrent added and started: \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:637
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:641
|
||||
#, java-format
|
||||
msgid "Torrent added: \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:672
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:676
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
|
||||
#, java-format
|
||||
msgid "Fetching {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:675
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:679
|
||||
#, java-format
|
||||
msgid ""
|
||||
"We have no saved peers and no other torrents are running. Fetch of {0} will "
|
||||
"not succeed until you start another torrent."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:679
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:683
|
||||
#, java-format
|
||||
msgid "Adding {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:726
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:749
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1174
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:730
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:753
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1180
|
||||
#, java-format
|
||||
msgid "Failed to copy torrent file to {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:972
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:976
|
||||
#, java-format
|
||||
msgid "Too many files in \"{0}\" ({1}), deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:974
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:978
|
||||
#, java-format
|
||||
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:976
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:980
|
||||
#, java-format
|
||||
msgid "No pieces in \"{0}\", deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:978
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:982
|
||||
#, java-format
|
||||
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:980
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:984
|
||||
#, java-format
|
||||
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:981
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:985
|
||||
#, java-format
|
||||
msgid "Limit is {0}B"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:989
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:987
|
||||
#, java-format
|
||||
msgid "Torrent \"{0}\" has no data, deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:995
|
||||
#, java-format
|
||||
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1005
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1011
|
||||
#, java-format
|
||||
msgid "Error: Could not remove the torrent {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1026
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1044
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1032
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1050
|
||||
#, java-format
|
||||
msgid "Torrent stopped: \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1065
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1071
|
||||
#, java-format
|
||||
msgid "Torrent removed: \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1073
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1079
|
||||
#, java-format
|
||||
msgid "Adding torrents in {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1122
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1128
|
||||
#, java-format
|
||||
msgid "Download finished: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1170
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1176
|
||||
#, java-format
|
||||
msgid "Metainfo received for {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1171
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1177
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526
|
||||
#, java-format
|
||||
msgid "Starting up torrent {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1225
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
|
||||
msgid "Unable to connect to I2P!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1237
|
||||
#, java-format
|
||||
msgid "Unable to add {0}"
|
||||
msgstr ""
|
||||
@@ -365,79 +370,79 @@ msgstr ""
|
||||
msgid "Up Rate"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366
|
||||
msgid "Stop all torrents and the I2P tunnel"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368
|
||||
msgid "Stop All"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377
|
||||
msgid "Start all torrents and the I2P tunnel"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379
|
||||
msgid "Start All"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398
|
||||
msgid "No torrents loaded."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403
|
||||
msgid "Totals"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405
|
||||
#, java-format
|
||||
msgid "1 torrent"
|
||||
msgid_plural "{0} torrents"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:408
|
||||
#, java-format
|
||||
msgid "1 connected peer"
|
||||
msgid_plural "{0} connected peers"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:497
|
||||
#, java-format
|
||||
msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:572
|
||||
#, java-format
|
||||
msgid "Magnet deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578
|
||||
#, java-format
|
||||
msgid "Torrent file deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594
|
||||
#, java-format
|
||||
msgid "Data file deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
|
||||
#, java-format
|
||||
msgid "Data file could not be deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605
|
||||
#, java-format
|
||||
msgid "Data dir deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638
|
||||
msgid "Error creating torrent - you must select a tracker"
|
||||
msgstr ""
|
||||
|
||||
@@ -888,22 +893,22 @@ msgstr ""
|
||||
msgid "Torrent fetched from {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988
|
||||
#, java-format
|
||||
msgid "Torrent already running: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990
|
||||
#, java-format
|
||||
msgid "Torrent already in the queue: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996
|
||||
#, java-format
|
||||
msgid "Torrent at {0} was not valid"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2003
|
||||
#, java-format
|
||||
msgid "Torrent was not retrieved from {0}"
|
||||
msgstr ""
|
||||
|
||||
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-03-03 18:28+0000\n"
|
||||
"PO-Revision-Date: 2011-04-03 01:46+0100\n"
|
||||
"POT-Creation-Date: 2011-06-17 20:12+0000\n"
|
||||
"PO-Revision-Date: 2011-06-05 10:36+0100\n"
|
||||
"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
|
||||
"Language-Team: Spanish (Castilian) <None>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -45,7 +45,9 @@ msgstr "Tiempo de espera al inicio fue cambiada a {0}."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:386
|
||||
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
|
||||
msgstr "Cambios de I2CP y del túnel tomarán efecto despues de detener todos los torrents."
|
||||
msgstr ""
|
||||
"Cambios de I2CP y del túnel tomarán efecto despues de detener todos los "
|
||||
"torrents."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:393
|
||||
msgid "Disconnecting old I2CP destination"
|
||||
@@ -57,8 +59,11 @@ msgid "I2CP settings changed to {0}"
|
||||
msgstr "Preferencias de I2CP cambiadas a {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:402
|
||||
msgid "Unable to connect with the new settings, reverting to the old I2CP settings"
|
||||
msgstr "Conectarse no fue posíble con las nuevas preferencias I2CP, utilizaré las anteriores."
|
||||
msgid ""
|
||||
"Unable to connect with the new settings, reverting to the old I2CP settings"
|
||||
msgstr ""
|
||||
"Conectarse no fue posíble con las nuevas preferencias I2CP, utilizaré las "
|
||||
"anteriores."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:406
|
||||
msgid "Unable to reconnect with the old settings!"
|
||||
@@ -83,20 +88,27 @@ msgstr "Arranque automático desactivado"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:437
|
||||
msgid "Enabled open trackers - torrent restart required to take effect."
|
||||
msgstr "Rastreadores abiertos activados - Para aplicar ello es necesario que reinicies los torrents."
|
||||
msgstr ""
|
||||
"Rastreadores abiertos activados - Para aplicar ello es necesario que "
|
||||
"reinicies los torrents."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:439
|
||||
msgid "Disabled open trackers - torrent restart required to take effect."
|
||||
msgstr "Rastreadores abiertos desactivados - Para aplicar ello es necesario que reinicies los torrents."
|
||||
msgstr ""
|
||||
"Rastreadores abiertos desactivados - Para aplicar ello es necesario que "
|
||||
"reinicies los torrents."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:447
|
||||
msgid "Open Tracker list changed - torrent restart required to take effect."
|
||||
msgstr "Lista de rastreadores abiertos cambiada - Para aplicar ello es necesario que reinicies los torrents."
|
||||
msgstr ""
|
||||
"Lista de rastreadores abiertos cambiada - Para aplicar ello es necesario que "
|
||||
"reinicies los torrents."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:454
|
||||
#, java-format
|
||||
msgid "{0} theme loaded, return to main i2psnark page to view."
|
||||
msgstr "Tema {0} cargado. ¡Vuelve a la página principal de i2psnark para verlo!"
|
||||
msgstr ""
|
||||
"Tema {0} cargado. ¡Vuelve a la página principal de i2psnark para verlo!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:461
|
||||
msgid "Configuration unchanged."
|
||||
@@ -126,152 +138,168 @@ msgstr "Error: No se ha podido añadir el torrent {0}."
|
||||
msgid "Cannot open \"{0}\""
|
||||
msgstr "No se puede abrir \"{0}\""
|
||||
|
||||
#. TODO - if the existing one is a magnet, delete it and add the metainfo
|
||||
#. instead?
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:586
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:661
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:716
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976
|
||||
#. TODO - if the existing one is a magnet, delete it and add the metainfo instead?
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:589
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:665
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:720
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1978
|
||||
#, java-format
|
||||
msgid "Torrent with this info hash is already running: {0}"
|
||||
msgstr "Ya hay un Torrent con este hash ejecutándose: {0}"
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P
|
||||
#. open trackers and DHT only.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:593
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:596
|
||||
#, java-format
|
||||
msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only."
|
||||
msgstr "Advertencia - No hay rastreadores de I2P en \"{0}\", se anunciará solamente a los rastreadores I2P abiertos."
|
||||
msgid ""
|
||||
"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers "
|
||||
"only."
|
||||
msgstr ""
|
||||
"Advertencia - No hay rastreadores de I2P en \"{0}\", se anunciará solamente "
|
||||
"a los rastreadores I2P abiertos."
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open
|
||||
#. trackers are disabled, you should enable open trackers or DHT before
|
||||
#. starting the torrent.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:598
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:601
|
||||
#, java-format
|
||||
msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent."
|
||||
msgstr "Advertencia - No se encuentran rastreadores de I2P en \"{0}\". Asegúrate de que OpenTracker esté activado antes de iniciar este torrent."
|
||||
msgid ""
|
||||
"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is "
|
||||
"enabled before starting this torrent."
|
||||
msgstr ""
|
||||
"Advertencia - No se encuentran rastreadores de I2P en \"{0}\". Asegúrate de "
|
||||
"que OpenTracker esté activado antes de iniciar este torrent."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:619
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:622
|
||||
#, java-format
|
||||
msgid "Torrent in \"{0}\" is invalid"
|
||||
msgstr "El archivo .torrent en \"{0}\" no es válido."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:624
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:627
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2000
|
||||
#, java-format
|
||||
msgid "ERROR - Out of memory, cannot create torrent from {0}"
|
||||
msgstr "ERROR - Falta de memoria, no se puede crear un torrent de {0}."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:635
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:639
|
||||
#, java-format
|
||||
msgid "Torrent added and started: \"{0}\""
|
||||
msgstr "Torrent añadido e iniciado: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:637
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:641
|
||||
#, java-format
|
||||
msgid "Torrent added: \"{0}\""
|
||||
msgstr "Torrent añadido: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:672
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:676
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
|
||||
#, java-format
|
||||
msgid "Fetching {0}"
|
||||
msgstr "Recogiendo {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:675
|
||||
#, java-format
|
||||
msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent."
|
||||
msgstr "No tenemos guardado ningún par y no se está activo ningún otro torrent. La obtención de {0} no tendrá éxito hasta que inicies otro torrent."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:679
|
||||
#, java-format
|
||||
msgid ""
|
||||
"We have no saved peers and no other torrents are running. Fetch of {0} will "
|
||||
"not succeed until you start another torrent."
|
||||
msgstr ""
|
||||
"No tenemos guardado ningún par y no se está activo ningún otro torrent. La "
|
||||
"obtención de {0} no tendrá éxito hasta que inicies otro torrent."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:683
|
||||
#, java-format
|
||||
msgid "Adding {0}"
|
||||
msgstr "Añadiendo {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:726
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:749
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1174
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:730
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:753
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1180
|
||||
#, java-format
|
||||
msgid "Failed to copy torrent file to {0}"
|
||||
msgstr "No se pudo copiar el torrent a {0}."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:972
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:976
|
||||
#, java-format
|
||||
msgid "Too many files in \"{0}\" ({1}), deleting it!"
|
||||
msgstr "Hay demasiados archivos en \"{0}\", se borrará ({1}). "
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:974
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:978
|
||||
#, java-format
|
||||
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
|
||||
msgstr "Archivo de datos del torrent \"{0}\" no puede terminar en \".torrent' y será borrado."
|
||||
msgstr ""
|
||||
"Archivo de datos del torrent \"{0}\" no puede terminar en \".torrent' y será "
|
||||
"borrado."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:976
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:980
|
||||
#, java-format
|
||||
msgid "No pieces in \"{0}\", deleting it!"
|
||||
msgstr "No hay partes en \"{0}\", se borrará."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:978
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:982
|
||||
#, java-format
|
||||
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
|
||||
msgstr "Hay demasiadas partes en \"{0}\" y el límite es {1}. Se borrarán."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:980
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:984
|
||||
#, java-format
|
||||
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
|
||||
msgstr "Partes en \"{0}\" son demasiado grandes ({1}B). Se borrarán."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:981
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:985
|
||||
#, java-format
|
||||
msgid "Limit is {0}B"
|
||||
msgstr "El límite es de \"{0}\"Bytes"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:989
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:987
|
||||
#, java-format
|
||||
msgid "Torrent \"{0}\" has no data, deleting it!"
|
||||
msgstr "El torrent \"{0}\" no contiene datos y será borrado."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:995
|
||||
#, java-format
|
||||
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
|
||||
msgstr "Torrents más grandes que \"{0}\"Bytes aún no funcionan, se borrará \"{1}\"."
|
||||
msgstr ""
|
||||
"Torrents más grandes que \"{0}\"Bytes aún no funcionan, se borrará \"{1}\"."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1005
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1011
|
||||
#, java-format
|
||||
msgid "Error: Could not remove the torrent {0}"
|
||||
msgstr "Error: No se pudo quitar el torrent \"{0}\"."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1026
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1044
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1032
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1050
|
||||
#, java-format
|
||||
msgid "Torrent stopped: \"{0}\""
|
||||
msgstr "Torrent detenido: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1065
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1071
|
||||
#, java-format
|
||||
msgid "Torrent removed: \"{0}\""
|
||||
msgstr "Torrent quitado: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1073
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1079
|
||||
#, java-format
|
||||
msgid "Adding torrents in {0}"
|
||||
msgstr "Añadiendo torrents en {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1122
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1128
|
||||
#, java-format
|
||||
msgid "Download finished: {0}"
|
||||
msgstr "Terminada la descarga de \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1170
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1176
|
||||
#, java-format
|
||||
msgid "Metainfo received for {0}"
|
||||
msgstr "Metainfo recibida para {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1171
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1177
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526
|
||||
#, java-format
|
||||
msgid "Starting up torrent {0}"
|
||||
msgstr "Iniciando el torrent {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1225
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
|
||||
msgid "Unable to connect to I2P!"
|
||||
msgstr "Imposible de conectarse con I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1237
|
||||
#, java-format
|
||||
msgid "Unable to add {0}"
|
||||
msgstr "Imposible de añadir {0}"
|
||||
@@ -299,7 +327,7 @@ msgid "Forum"
|
||||
msgstr "Foro"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
@@ -314,8 +342,8 @@ msgid "Show Peers"
|
||||
msgstr "mostrar pares"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1645
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661
|
||||
msgid "Torrent"
|
||||
msgstr "Torrent"
|
||||
|
||||
@@ -362,79 +390,79 @@ msgstr "Tasa"
|
||||
msgid "Up Rate"
|
||||
msgstr "Tasa de subida"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366
|
||||
msgid "Stop all torrents and the I2P tunnel"
|
||||
msgstr "Detener todos los torrents y el túnel I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368
|
||||
msgid "Stop All"
|
||||
msgstr "Detener todos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377
|
||||
msgid "Start all torrents and the I2P tunnel"
|
||||
msgstr "Iniciar todos los torrents y el túnel I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379
|
||||
msgid "Start All"
|
||||
msgstr "Arrancar todos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398
|
||||
msgid "No torrents loaded."
|
||||
msgstr "No está cargado ningún torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403
|
||||
msgid "Totals"
|
||||
msgstr "Total"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405
|
||||
#, java-format
|
||||
msgid "1 torrent"
|
||||
msgid_plural "{0} torrents"
|
||||
msgstr[0] "1 torrent"
|
||||
msgstr[1] "{0} torrents"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:408
|
||||
#, java-format
|
||||
msgid "1 connected peer"
|
||||
msgid_plural "{0} connected peers"
|
||||
msgstr[0] "1 par conectado"
|
||||
msgstr[1] "{0} pares conectados"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:497
|
||||
#, java-format
|
||||
msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
|
||||
msgstr "URL no válida: debe comenzar con \"http://\", \"{0}\", o \"{1}\"."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:572
|
||||
#, java-format
|
||||
msgid "Magnet deleted: {0}"
|
||||
msgstr "Magnet eliminado: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578
|
||||
#, java-format
|
||||
msgid "Torrent file deleted: {0}"
|
||||
msgstr "Borrado archivo torrent: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594
|
||||
#, java-format
|
||||
msgid "Data file deleted: {0}"
|
||||
msgstr "Borrado el archivo de datos: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
|
||||
#, java-format
|
||||
msgid "Data file could not be deleted: {0}"
|
||||
msgstr "No se pudo borrar el archivo de datos: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605
|
||||
#, java-format
|
||||
msgid "Data dir deleted: {0}"
|
||||
msgstr "Ha sido borrada la carpeta de datos: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638
|
||||
msgid "Error creating torrent - you must select a tracker"
|
||||
msgstr "Error al crear el torrents - Tienes que elegir un rastreador."
|
||||
|
||||
@@ -445,8 +473,12 @@ msgstr "Torrent creado para \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655
|
||||
#, java-format
|
||||
msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\""
|
||||
msgstr "Muchos rastreadores en I2P requieren que te registres, antes de que puedas subir el torrent. Por favor, ¡hazlo antes de iniciar \"{0}\"!"
|
||||
msgid ""
|
||||
"Many I2P trackers require you to register new torrents before seeding - "
|
||||
"please do so before starting \"{0}\""
|
||||
msgstr ""
|
||||
"Muchos rastreadores en I2P requieren que te registres, antes de que puedas "
|
||||
"subir el torrent. Por favor, ¡hazlo antes de iniciar \"{0}\"!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
|
||||
#, java-format
|
||||
@@ -460,7 +492,8 @@ msgstr "No se puede crear un torrent para datos inexistentes: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
|
||||
msgid "Error creating torrent - you must enter a file or directory"
|
||||
msgstr "Error al crear el torrent - Tienes que especificar un archivo o una carpeta."
|
||||
msgstr ""
|
||||
"Error al crear el torrent - Tienes que especificar un archivo o una carpeta."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
|
||||
msgid "Stopping all torrents and closing the I2P tunnel."
|
||||
@@ -500,8 +533,8 @@ msgid "Seeding"
|
||||
msgstr "sembrando"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772
|
||||
msgid "Complete"
|
||||
msgstr "completo"
|
||||
|
||||
@@ -529,7 +562,7 @@ msgid "Torrent details"
|
||||
msgstr "Detalles del torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1162
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
@@ -559,15 +592,21 @@ msgstr "Iniciar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982
|
||||
msgid "Remove the torrent from the active list, deleting the .torrent file"
|
||||
msgstr "Quita el torrent de la lista de los torrents activos borrando el archivo .torrent"
|
||||
msgstr ""
|
||||
"Quita el torrent de la lista de los torrents activos borrando el archivo ."
|
||||
"torrent"
|
||||
|
||||
#. Can't figure out how to escape double quotes inside the onclick string.
|
||||
#. Single quotes in translate strings with parameters must be doubled.
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
|
||||
#, java-format
|
||||
msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?"
|
||||
msgstr "¿Estás seguro de que quieres borrar el archivo \\''{0}.torrent\\''? (Datos bajados no se borrarán.)"
|
||||
msgid ""
|
||||
"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
|
||||
"data will not be deleted) ?"
|
||||
msgstr ""
|
||||
"¿Estás seguro de que quieres borrar el archivo \\''{0}.torrent\\''? (Datos "
|
||||
"bajados no se borrarán.)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990
|
||||
msgid "Remove"
|
||||
@@ -582,318 +621,330 @@ msgstr "Borrar el archivo torrent y el/los archivo(s) de datos pertenecientes"
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
|
||||
#, java-format
|
||||
msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?"
|
||||
msgstr "¿Estás seguro de que quieres borrar el archivo torrent \\''{0}\\'' y todos los datos descargados de este torrent?"
|
||||
msgid ""
|
||||
"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
|
||||
"data?"
|
||||
msgstr ""
|
||||
"¿Estás seguro de que quieres borrar el archivo torrent \\''{0}\\'' y todos "
|
||||
"los datos descargados de este torrent?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
|
||||
msgid "Delete"
|
||||
msgstr "Borrar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1044
|
||||
msgid "Unknown"
|
||||
msgstr "desconocido"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1056
|
||||
msgid "Seed"
|
||||
msgstr "Sembrador"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079
|
||||
msgid "Uninteresting (The peer has no pieces we need)"
|
||||
msgstr "no interesante (El par no tiene partes que nos interesen.)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
|
||||
msgid "Choked (The peer is not allowing us to request pieces)"
|
||||
msgstr "moderado (De momento el par no nos permite solicitar más partes)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
|
||||
msgid "Uninterested (We have no pieces the peer needs)"
|
||||
msgstr "desinteresado (No tenemos las partes que el par quiere.)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1103
|
||||
msgid "Choking (We are not allowing the peer to request pieces)"
|
||||
msgstr "moderando (De momento no se le permite al par solicitar más partes)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1161
|
||||
#, java-format
|
||||
msgid "Details at {0} tracker"
|
||||
msgstr "Detalles en el rastreador {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190
|
||||
msgid "Add Torrent"
|
||||
msgstr "Añadir un torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1192
|
||||
msgid "From URL"
|
||||
msgstr "URL fuente"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193
|
||||
msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link"
|
||||
msgstr "Introduce la URL de descarga de torrent (I2P solamente), enlace magnet o un enlace maggot"
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195
|
||||
msgid ""
|
||||
"Enter the torrent file download URL (I2P only), magnet link, or maggot link"
|
||||
msgstr ""
|
||||
"Introduce la URL de descarga de torrent (I2P solamente), enlace magnet o un "
|
||||
"enlace maggot"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1200
|
||||
msgid "Add torrent"
|
||||
msgstr "Añadir torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203
|
||||
#, java-format
|
||||
msgid "You can also copy .torrent files to: {0}."
|
||||
msgstr "También puedes copiar archivos torrent a {0}."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205
|
||||
msgid "Removing a .torrent will cause it to stop."
|
||||
msgstr "Quitar un archivo torrent resultará en que se detenga el torrent perteneciente."
|
||||
msgstr ""
|
||||
"Quitar un archivo torrent resultará en que se detenga el torrent "
|
||||
"perteneciente."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228
|
||||
msgid "Create Torrent"
|
||||
msgstr "Crear un torrent"
|
||||
|
||||
#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
|
||||
#. value=\"" + newFile + "\" /><br>\n");
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
|
||||
#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
|
||||
msgid "Data to seed"
|
||||
msgstr "Datos para sembrar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
|
||||
msgid "File or directory to seed (must be within the specified path)"
|
||||
msgstr "Archivo o carpeta para sembrar (tiene que estár en la carpeta especificada)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
|
||||
msgid "File or directory to seed (must be within the specified path)"
|
||||
msgstr ""
|
||||
"Archivo o carpeta para sembrar (tiene que estár en la carpeta especificada)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
|
||||
msgid "Tracker"
|
||||
msgstr "Rastreador"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239
|
||||
msgid "Select a tracker"
|
||||
msgstr "Selecciona un rastreador"
|
||||
|
||||
#. out.write(_("Open trackers and DHT only"));
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
|
||||
msgid "Open trackers only"
|
||||
msgstr "Sólo rastreadores abiertos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1259
|
||||
msgid "or"
|
||||
msgstr "o"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1262
|
||||
msgid "Specify custom tracker announce URL"
|
||||
msgstr "¡Especifica una URL para anunciar al rastreador!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1265
|
||||
msgid "Create torrent"
|
||||
msgstr "Crear torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1422
|
||||
msgid "Configuration"
|
||||
msgstr "Preferencias"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
|
||||
msgid "Data directory"
|
||||
msgstr "Carpeta de datos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1289
|
||||
msgid "Edit i2psnark.config and restart to change"
|
||||
msgstr "Para cambiar, ¡modifica el archivo i2psnark.config y reinicia!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1293
|
||||
msgid "Auto start"
|
||||
msgstr "Arranque automático"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297
|
||||
msgid "If checked, automatically start torrents that are added"
|
||||
msgstr "Si marcado, los torrents añadidos se iniciarán de forma automática."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
|
||||
msgid "Theme"
|
||||
msgstr "Tema"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314
|
||||
msgid "Startup delay"
|
||||
msgstr "Tiempo de espera al arrancar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1316
|
||||
msgid "minutes"
|
||||
msgstr "minutos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340
|
||||
msgid "Total uploader limit"
|
||||
msgstr "Límite global de subidores"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
|
||||
msgid "peers"
|
||||
msgstr "pares"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1347
|
||||
msgid "Up bandwidth limit"
|
||||
msgstr "Límite del ancho de banda para la subida"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350
|
||||
msgid "Half available bandwidth recommended."
|
||||
msgstr "Se recomienda la mitad del ancho de banda disponible."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352
|
||||
msgid "View or change router bandwidth"
|
||||
msgstr "Mostrar y cambiar preferencias del ancho de banda del enrutador"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
|
||||
msgid "Use open trackers also"
|
||||
msgstr "Usar también rastreadores abiertos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358
|
||||
msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"
|
||||
msgstr "Si está marcado, el torrent se anunciará a los rastreadores abiertos, además de a los rastreadores especificados."
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1360
|
||||
msgid ""
|
||||
"If checked, announce torrents to open trackers as well as the tracker listed "
|
||||
"in the torrent file"
|
||||
msgstr ""
|
||||
"Si está marcado, el torrent se anunciará a los rastreadores abiertos, además "
|
||||
"de a los rastreadores especificados."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
|
||||
msgid "Open tracker announce URLs"
|
||||
msgstr "URL(s) para anunciar a rastreadores abiertos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376
|
||||
msgid "Inbound Settings"
|
||||
msgstr "Preferencias de entrada"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1382
|
||||
msgid "Outbound Settings"
|
||||
msgstr "Preferencias de salida"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1390
|
||||
msgid "I2CP host"
|
||||
msgstr "Anfitrión I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1395
|
||||
msgid "I2CP port"
|
||||
msgstr "Puerto I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1408
|
||||
msgid "I2CP options"
|
||||
msgstr "Opciones I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1413
|
||||
msgid "Save configuration"
|
||||
msgstr "Guardar ajustes"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1438
|
||||
#, java-format
|
||||
msgid "Invalid magnet URL {0}"
|
||||
msgstr "URL de magnet no válida: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
|
||||
#, java-format
|
||||
msgid "Invalid info hash in magnet URL {0}"
|
||||
msgstr "Hash de información no válido en la URL magnet {0}"
|
||||
|
||||
#. * dummies for translation
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
|
||||
#, java-format
|
||||
msgid "1 hop"
|
||||
msgid_plural "{0} hops"
|
||||
msgstr[0] "1 salto"
|
||||
msgstr[1] "{0} saltos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
|
||||
#, java-format
|
||||
msgid "1 tunnel"
|
||||
msgid_plural "{0} tunnels"
|
||||
msgstr[0] "1 túnel"
|
||||
msgstr[1] "{0} túneles"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665
|
||||
msgid "Completion"
|
||||
msgstr "Completado"
|
||||
msgstr "Finalización"
|
||||
|
||||
#. else unknown
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1718
|
||||
msgid "Size"
|
||||
msgstr "Tamaño"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674
|
||||
msgid "Files"
|
||||
msgstr "Archivos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1676
|
||||
msgid "Pieces"
|
||||
msgstr "Partes"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1677
|
||||
msgid "Piece size"
|
||||
msgstr "Tamaño de las partes"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
|
||||
msgid "Magnet link"
|
||||
msgstr "Enlace de magnet"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1755
|
||||
msgid "Directory"
|
||||
msgstr "Carpeta"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1725
|
||||
msgid "Priority"
|
||||
msgstr "Prioridad"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
|
||||
msgid "Up to higher level directory"
|
||||
msgstr "Subir una herarquía"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1760
|
||||
msgid "Torrent not found?"
|
||||
msgstr "¿No se encotró el archivo torrent?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769
|
||||
msgid "File not found in torrent?"
|
||||
msgstr "¿Archivo no encontrado en el torrent?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782
|
||||
msgid "complete"
|
||||
msgstr "completo"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1783
|
||||
msgid "bytes remaining"
|
||||
msgstr "Bytes faltando"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1808
|
||||
msgid "Open"
|
||||
msgstr "abrir"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1834
|
||||
msgid "High"
|
||||
msgstr "alta"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1839
|
||||
msgid "Normal"
|
||||
msgstr "normal"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1844
|
||||
msgid "Skip"
|
||||
msgstr "dejar de lado"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1853
|
||||
msgid "Save priorities"
|
||||
msgstr "Guardar prioridades"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1969
|
||||
#, java-format
|
||||
msgid "Torrent fetched from {0}"
|
||||
msgstr "Torrent obtenido desde {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990
|
||||
#, java-format
|
||||
msgid "Torrent already running: {0}"
|
||||
msgstr "Torrent ya en marcha: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1992
|
||||
#, java-format
|
||||
msgid "Torrent already in the queue: {0}"
|
||||
msgstr "Torrent ya encolado: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998
|
||||
#, java-format
|
||||
msgid "Torrent at {0} was not valid"
|
||||
msgstr "Torrent en {0} no era válido"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2005
|
||||
#, java-format
|
||||
msgid "Torrent was not retrieved from {0}"
|
||||
msgstr "Torrent no se ha podido obtener de {0}"
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P i2psnark\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-03-25 12:48+0000\n"
|
||||
"PO-Revision-Date: 2011-04-11 15:45+0100\n"
|
||||
"POT-Creation-Date: 2011-05-02 11:08+0000\n"
|
||||
"PO-Revision-Date: 2011-05-19 07:39+0100\n"
|
||||
"Last-Translator: magma <magma@mail.i2p>\n"
|
||||
"Language-Team: foo <foo@bar>\n"
|
||||
"Language: \n"
|
||||
@@ -187,7 +187,7 @@ msgstr "Ajout {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:730
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:753
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1178
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1180
|
||||
#, java-format
|
||||
msgid "Failed to copy torrent file to {0}"
|
||||
msgstr "Impossible de copier le torrent vers {0}"
|
||||
@@ -222,53 +222,58 @@ msgstr "Les tronçons sont trop larges dans \"{0}\" ({1}B), suppression."
|
||||
msgid "Limit is {0}B"
|
||||
msgstr "La limite est de \"{0}\"octets"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:993
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:987
|
||||
#, java-format
|
||||
msgid "Torrent \"{0}\" has no data, deleting it!"
|
||||
msgstr "Le fichier torrent \"{0}\" n'a pas de données, suppression!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:995
|
||||
#, java-format
|
||||
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
|
||||
msgstr "Les torrents dont la taille est supérieure à \"{0}\"octets ne sont pas encore supportés, suppression \"{1}\"."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1009
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1011
|
||||
#, java-format
|
||||
msgid "Error: Could not remove the torrent {0}"
|
||||
msgstr "Erreur: Impossible de supprimer le torrent \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1030
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1048
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1032
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1050
|
||||
#, java-format
|
||||
msgid "Torrent stopped: \"{0}\""
|
||||
msgstr "Torrent arrêté:\"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1069
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1071
|
||||
#, java-format
|
||||
msgid "Torrent removed: \"{0}\""
|
||||
msgstr "Torrent supprimé:\"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1077
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1079
|
||||
#, java-format
|
||||
msgid "Adding torrents in {0}"
|
||||
msgstr "Ajout des torrents dans {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1126
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1128
|
||||
#, java-format
|
||||
msgid "Download finished: {0}"
|
||||
msgstr "Téléchargement terminé:\"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1174
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1176
|
||||
#, java-format
|
||||
msgid "Metainfo received for {0}"
|
||||
msgstr "Metainfo reçue pour {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1175
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1177
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526
|
||||
#, java-format
|
||||
msgid "Starting up torrent {0}"
|
||||
msgstr "Démarrage du torrent {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1229
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
|
||||
msgid "Unable to connect to I2P!"
|
||||
msgstr "Impossible de se connecter à I2P!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1235
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1237
|
||||
#, java-format
|
||||
msgid "Unable to add {0}"
|
||||
msgstr "Impossible d’ajouter {0}"
|
||||
@@ -897,47 +902,66 @@ msgstr "Le torrent n’a pas été reçu de {0}"
|
||||
|
||||
#~ msgid "Torrent file must originate from an I2P-based tracker"
|
||||
#~ msgstr "Le fichier torrent doit provenir d'un tracker I2P"
|
||||
|
||||
#~ msgid "size: {0}B"
|
||||
#~ msgstr "Taille: {0}Octets"
|
||||
|
||||
#~ msgid "Estimated Download Time"
|
||||
#~ msgstr "Temps estimé de téléchargement"
|
||||
|
||||
#~ msgid "Torrent file {0} does not exist"
|
||||
#~ msgstr "Le fichier torrent {0} n'existe pas"
|
||||
|
||||
#~ msgid "Copying torrent to {0}"
|
||||
#~ msgstr "Copie du torrent vers {0}"
|
||||
|
||||
#~ msgid "from {0}"
|
||||
#~ msgstr "depuis {0}"
|
||||
|
||||
#~ msgid "Downloading"
|
||||
#~ msgstr "Téléchargement en cours"
|
||||
|
||||
#~ msgid "FileSize"
|
||||
#~ msgstr "Taille du fichier"
|
||||
|
||||
#~ msgid "Download Status"
|
||||
#~ msgstr "État du téléchargement"
|
||||
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "Détails"
|
||||
|
||||
#~ msgid "Depuis l'URL"
|
||||
#~ msgstr "Quell-URL"
|
||||
|
||||
#~ msgid "Directory to store torrents and data"
|
||||
#~ msgstr "Répertoire de stockage des torrents et des données"
|
||||
|
||||
#~ msgid "Cannot change the I2CP settings while torrents are active"
|
||||
#~ msgstr ""
|
||||
#~ "On ne peut changer les paramètres I2CP pendant que des torrents sont "
|
||||
#~ "actifs"
|
||||
|
||||
#~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!"
|
||||
#~ msgstr ""
|
||||
#~ "Tracker non-i2p dans \"{0}\", suppression de notre liste de trackers!"
|
||||
|
||||
#~ msgid "{0} torrents"
|
||||
#~ msgstr "{0} Torrents"
|
||||
|
||||
#~ msgid "Uninteresting"
|
||||
#~ msgstr "Pas intéressant"
|
||||
|
||||
#~ msgid "Choked"
|
||||
#~ msgstr "Choked"
|
||||
|
||||
#~ msgid "Uninterested"
|
||||
#~ msgstr "Pas interessé"
|
||||
|
||||
#~ msgid "Choking"
|
||||
#~ msgstr "Choking"
|
||||
|
||||
#~ msgid "Custom tracker URL"
|
||||
#~ msgstr "URL tracker spécifique"
|
||||
|
||||
#~ msgid "Configure"
|
||||
#~ msgstr "Configurer"
|
||||
|
||||
|
||||
920
apps/i2psnark/locale/messages_it.po
Normal file
920
apps/i2psnark/locale/messages_it.po
Normal file
@@ -0,0 +1,920 @@
|
||||
# I2P
|
||||
# Copyright (C) 2009 The I2P Project
|
||||
# This file is distributed under the same license as the i2psnark package.
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-06-11 08:22+0000\n"
|
||||
"PO-Revision-Date: 2011-06-11 09:17+0000\n"
|
||||
"Last-Translator: duck <duck@mail.i2p>\n"
|
||||
"Language-Team: Italian (http://www.transifex.net/projects/p/I2P/team/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: it\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:307
|
||||
#, java-format
|
||||
msgid "Total uploaders limit changed to {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:309
|
||||
#, java-format
|
||||
msgid "Minimum total uploaders limit is {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:321
|
||||
#, java-format
|
||||
msgid "Up BW limit changed to {0}KBps"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:323
|
||||
#, java-format
|
||||
msgid "Minimum up bandwidth limit is {0}KBps"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:335
|
||||
#, java-format
|
||||
msgid "Startup delay changed to {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:386
|
||||
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:393
|
||||
msgid "Disconnecting old I2CP destination"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:397
|
||||
#, java-format
|
||||
msgid "I2CP settings changed to {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:402
|
||||
msgid ""
|
||||
"Unable to connect with the new settings, reverting to the old I2CP settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:406
|
||||
msgid "Unable to reconnect with the old settings!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:408
|
||||
msgid "Reconnected on the new I2CP destination"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:418
|
||||
#, java-format
|
||||
msgid "I2CP listener restarted for \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:429
|
||||
msgid "Enabled autostart"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:431
|
||||
msgid "Disabled autostart"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:437
|
||||
msgid "Enabled open trackers - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:439
|
||||
msgid "Disabled open trackers - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:447
|
||||
msgid "Open Tracker list changed - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:454
|
||||
#, java-format
|
||||
msgid "{0} theme loaded, return to main i2psnark page to view."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:461
|
||||
msgid "Configuration unchanged."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:471
|
||||
#, java-format
|
||||
msgid "Unable to save the config to {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:536
|
||||
msgid "Connecting to I2P"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:539
|
||||
msgid "Error connecting to I2P - check your I2CP settings!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:548
|
||||
#, java-format
|
||||
msgid "Error: Could not add the torrent {0}"
|
||||
msgstr ""
|
||||
|
||||
#. catch this here so we don't try do delete it below
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:570
|
||||
#, java-format
|
||||
msgid "Cannot open \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#. TODO - if the existing one is a magnet, delete it and add the metainfo
|
||||
#. instead?
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:589
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:665
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:720
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976
|
||||
#, java-format
|
||||
msgid "Torrent with this info hash is already running: {0}"
|
||||
msgstr ""
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P
|
||||
#. open trackers and DHT only.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:596
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers "
|
||||
"only."
|
||||
msgstr ""
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open
|
||||
#. trackers are disabled, you should enable open trackers or DHT before
|
||||
#. starting the torrent.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:601
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is "
|
||||
"enabled before starting this torrent."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:622
|
||||
#, java-format
|
||||
msgid "Torrent in \"{0}\" is invalid"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:627
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998
|
||||
#, java-format
|
||||
msgid "ERROR - Out of memory, cannot create torrent from {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:639
|
||||
#, java-format
|
||||
msgid "Torrent added and started: \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:641
|
||||
#, java-format
|
||||
msgid "Torrent added: \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:676
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
|
||||
#, java-format
|
||||
msgid "Fetching {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:679
|
||||
#, java-format
|
||||
msgid ""
|
||||
"We have no saved peers and no other torrents are running. Fetch of {0} will "
|
||||
"not succeed until you start another torrent."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:683
|
||||
#, java-format
|
||||
msgid "Adding {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:730
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:753
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1180
|
||||
#, java-format
|
||||
msgid "Failed to copy torrent file to {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:976
|
||||
#, java-format
|
||||
msgid "Too many files in \"{0}\" ({1}), deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:978
|
||||
#, java-format
|
||||
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:980
|
||||
#, java-format
|
||||
msgid "No pieces in \"{0}\", deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:982
|
||||
#, java-format
|
||||
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:984
|
||||
#, java-format
|
||||
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:985
|
||||
#, java-format
|
||||
msgid "Limit is {0}B"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:987
|
||||
#, java-format
|
||||
msgid "Torrent \"{0}\" has no data, deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:995
|
||||
#, java-format
|
||||
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1011
|
||||
#, java-format
|
||||
msgid "Error: Could not remove the torrent {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1032
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1050
|
||||
#, java-format
|
||||
msgid "Torrent stopped: \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1071
|
||||
#, java-format
|
||||
msgid "Torrent removed: \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1079
|
||||
#, java-format
|
||||
msgid "Adding torrents in {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1128
|
||||
#, java-format
|
||||
msgid "Download finished: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1176
|
||||
#, java-format
|
||||
msgid "Metainfo received for {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1177
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526
|
||||
#, java-format
|
||||
msgid "Starting up torrent {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
|
||||
msgid "Unable to connect to I2P!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1237
|
||||
#, java-format
|
||||
msgid "Unable to add {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205
|
||||
msgid "I2PSnark - Anonymous BitTorrent Client"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218
|
||||
msgid "Torrents"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028
|
||||
msgid "I2PSnark"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225
|
||||
msgid "Refresh page"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230
|
||||
msgid "Forum"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292
|
||||
msgid "Hide Peers"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299
|
||||
msgid "Show Peers"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659
|
||||
msgid "Torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310
|
||||
msgid "Estimated time remaining"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313
|
||||
msgid "ETA"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317
|
||||
msgid "Downloaded"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334
|
||||
msgid "RX"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324
|
||||
msgid "Uploaded"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344
|
||||
msgid "TX"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332
|
||||
msgid "Down Rate"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346
|
||||
msgid "Rate"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342
|
||||
msgid "Up Rate"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366
|
||||
msgid "Stop all torrents and the I2P tunnel"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368
|
||||
msgid "Stop All"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377
|
||||
msgid "Start all torrents and the I2P tunnel"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379
|
||||
msgid "Start All"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398
|
||||
msgid "No torrents loaded."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403
|
||||
msgid "Totals"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405
|
||||
#, java-format
|
||||
msgid "1 torrent"
|
||||
msgid_plural "{0} torrents"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:408
|
||||
#, java-format
|
||||
msgid "1 connected peer"
|
||||
msgid_plural "{0} connected peers"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:497
|
||||
#, java-format
|
||||
msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:572
|
||||
#, java-format
|
||||
msgid "Magnet deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578
|
||||
#, java-format
|
||||
msgid "Torrent file deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594
|
||||
#, java-format
|
||||
msgid "Data file deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
|
||||
#, java-format
|
||||
msgid "Data file could not be deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605
|
||||
#, java-format
|
||||
msgid "Data dir deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638
|
||||
msgid "Error creating torrent - you must select a tracker"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653
|
||||
#, java-format
|
||||
msgid "Torrent created for \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Many I2P trackers require you to register new torrents before seeding - "
|
||||
"please do so before starting \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
|
||||
#, java-format
|
||||
msgid "Error creating a torrent for \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660
|
||||
#, java-format
|
||||
msgid "Cannot create a torrent for the nonexistent data: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
|
||||
msgid "Error creating torrent - you must enter a file or directory"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
|
||||
msgid "Stopping all torrents and closing the I2P tunnel."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677
|
||||
msgid "I2P tunnel closed."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
|
||||
msgid "Opening the I2P tunnel and starting all torrents."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814
|
||||
msgid "Tracker Error"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847
|
||||
#, java-format
|
||||
msgid "1 peer"
|
||||
msgid_plural "{0} peers"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824
|
||||
msgid "Seeding"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770
|
||||
msgid "Complete"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845
|
||||
msgid "Stalled"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852
|
||||
msgid "No Peers"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
|
||||
msgid "Stopped"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886
|
||||
msgid "Torrent details"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
|
||||
msgid "Info"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913
|
||||
msgid "View files"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:915
|
||||
msgid "Open file"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957
|
||||
msgid "Stop the torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959
|
||||
msgid "Stop"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969
|
||||
msgid "Start the torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971
|
||||
msgid "Start"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982
|
||||
msgid "Remove the torrent from the active list, deleting the .torrent file"
|
||||
msgstr ""
|
||||
|
||||
#. Can't figure out how to escape double quotes inside the onclick string.
|
||||
#. Single quotes in translate strings with parameters must be doubled.
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
|
||||
"data will not be deleted) ?"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990
|
||||
msgid "Remove"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001
|
||||
msgid "Delete the .torrent file and the associated data file(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Can't figure out how to escape double quotes inside the onclick string.
|
||||
#. Single quotes in translate strings with parameters must be doubled.
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
|
||||
"data?"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054
|
||||
msgid "Seed"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077
|
||||
msgid "Uninteresting (The peer has no pieces we need)"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079
|
||||
msgid "Choked (The peer is not allowing us to request pieces)"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099
|
||||
msgid "Uninterested (We have no pieces the peer needs)"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
|
||||
msgid "Choking (We are not allowing the peer to request pieces)"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159
|
||||
#, java-format
|
||||
msgid "Details at {0} tracker"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188
|
||||
msgid "Add Torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190
|
||||
msgid "From URL"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193
|
||||
msgid ""
|
||||
"Enter the torrent file download URL (I2P only), magnet link, or maggot link"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198
|
||||
msgid "Add torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201
|
||||
#, java-format
|
||||
msgid "You can also copy .torrent files to: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203
|
||||
msgid "Removing a .torrent will cause it to stop."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226
|
||||
msgid "Create Torrent"
|
||||
msgstr ""
|
||||
|
||||
#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
|
||||
#. value=\"" + newFile + "\" /><br>\n");
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
|
||||
msgid "Data to seed"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
|
||||
msgid "File or directory to seed (must be within the specified path)"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
|
||||
msgid "Tracker"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
|
||||
msgid "Select a tracker"
|
||||
msgstr ""
|
||||
|
||||
#. out.write(_("Open trackers and DHT only"));
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
|
||||
msgid "Open trackers only"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260
|
||||
msgid "Specify custom tracker announce URL"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263
|
||||
msgid "Create torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285
|
||||
msgid "Data directory"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
|
||||
msgid "Edit i2psnark.config and restart to change"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291
|
||||
msgid "Auto start"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295
|
||||
msgid "If checked, automatically start torrents that are added"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299
|
||||
msgid "Theme"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312
|
||||
msgid "Startup delay"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314
|
||||
msgid "minutes"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338
|
||||
msgid "Total uploader limit"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341
|
||||
msgid "peers"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345
|
||||
msgid "Up bandwidth limit"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
|
||||
msgid "Half available bandwidth recommended."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350
|
||||
msgid "View or change router bandwidth"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354
|
||||
msgid "Use open trackers also"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358
|
||||
msgid ""
|
||||
"If checked, announce torrents to open trackers as well as the tracker listed"
|
||||
" in the torrent file"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362
|
||||
msgid "Open tracker announce URLs"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374
|
||||
msgid "Inbound Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380
|
||||
msgid "Outbound Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388
|
||||
msgid "I2CP host"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393
|
||||
msgid "I2CP port"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406
|
||||
msgid "I2CP options"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411
|
||||
msgid "Save configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436
|
||||
#, java-format
|
||||
msgid "Invalid magnet URL {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
|
||||
#, java-format
|
||||
msgid "Invalid info hash in magnet URL {0}"
|
||||
msgstr ""
|
||||
|
||||
#. * dummies for translation
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500
|
||||
#, java-format
|
||||
msgid "1 hop"
|
||||
msgid_plural "{0} hops"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501
|
||||
#, java-format
|
||||
msgid "1 tunnel"
|
||||
msgid_plural "{0} tunnels"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663
|
||||
msgid "Completion"
|
||||
msgstr ""
|
||||
|
||||
#. else unknown
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716
|
||||
msgid "Size"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672
|
||||
msgid "Files"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674
|
||||
msgid "Pieces"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675
|
||||
msgid "Piece size"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
|
||||
msgid "Magnet link"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753
|
||||
msgid "Directory"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723
|
||||
msgid "Priority"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728
|
||||
msgid "Up to higher level directory"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758
|
||||
msgid "Torrent not found?"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767
|
||||
msgid "File not found in torrent?"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780
|
||||
msgid "complete"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781
|
||||
msgid "bytes remaining"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832
|
||||
msgid "High"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837
|
||||
msgid "Normal"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842
|
||||
msgid "Skip"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851
|
||||
msgid "Save priorities"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967
|
||||
#, java-format
|
||||
msgid "Torrent fetched from {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988
|
||||
#, java-format
|
||||
msgid "Torrent already running: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990
|
||||
#, java-format
|
||||
msgid "Torrent already in the queue: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996
|
||||
#, java-format
|
||||
msgid "Torrent at {0} was not valid"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2003
|
||||
#, java-format
|
||||
msgid "Torrent was not retrieved from {0}"
|
||||
msgstr ""
|
||||
|
||||
|
||||
772
apps/i2psnark/locale/messages_pl.po
Normal file
772
apps/i2psnark/locale/messages_pl.po
Normal file
@@ -0,0 +1,772 @@
|
||||
# I2P
|
||||
# Copyright (C) 2009 The I2P Project
|
||||
# This file is distributed under the same license as the i2psnark package.
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
# foo <foo@bar>, 2009.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P i2psnark\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2010-06-26 21:02+0000\n"
|
||||
"PO-Revision-Date: 2011-01-13 17:43+0100\n"
|
||||
"Last-Translator: Polacco <polacco@mail.i2p>\n"
|
||||
"Language-Team: foo <foo@bar>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Polish\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"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:88
|
||||
#, java-format
|
||||
msgid "Adding torrents in {0} minutes"
|
||||
msgstr "Dodawanie torrentów w ciągu {0} minut"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:258
|
||||
#, java-format
|
||||
msgid "Total uploaders limit changed to {0}"
|
||||
msgstr "Ograniczenie liczby uploaderów zmieniono do {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:260
|
||||
#, java-format
|
||||
msgid "Minimum total uploaders limit is {0}"
|
||||
msgstr "Minimalny całkowity limit uploadera: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:272
|
||||
#, java-format
|
||||
msgid "Up BW limit changed to {0}KBps"
|
||||
msgstr "Ograniczenie pasma WY zmieniono na: {0} KB/s"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:274
|
||||
#, java-format
|
||||
msgid "Minimum up bandwidth limit is {0}KBps"
|
||||
msgstr "Minimalne pasmo WY to: {0} KB/s"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:286
|
||||
#, java-format
|
||||
msgid "Startup delay limit changed to {0} minutes"
|
||||
msgstr "Opóźnienie uruchomienia zmieniono do {0} minut"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:333
|
||||
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
|
||||
msgstr "Zmiany dotyczące I2CP i tuneli będą wprowadzone po zatrzymaniu wszystkich torrentów."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:339
|
||||
msgid "Disconnecting old I2CP destination"
|
||||
msgstr "Rozłączanie starych celów I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:343
|
||||
#, java-format
|
||||
msgid "I2CP settings changed to {0}"
|
||||
msgstr "Ustawienia I2CP zmienione do: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:347
|
||||
msgid "Unable to connect with the new settings, reverting to the old I2CP settings"
|
||||
msgstr "Nie można połączyć się z nowymi ustawieniami, powrót do starych ustawień I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:351
|
||||
msgid "Unable to reconnect with the old settings!"
|
||||
msgstr "Nie można się połączyć ze starymi ustawieniami!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:353
|
||||
msgid "Reconnected on the new I2CP destination"
|
||||
msgstr "Ponowne podłączanie do nowych celów I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:364
|
||||
#, java-format
|
||||
msgid "I2CP listener restarted for \"{0}\""
|
||||
msgstr "Nasłuch I2CP zrestartowany dla \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:375
|
||||
msgid "Enabled autostart"
|
||||
msgstr "Włącz automatycznie uruchamianie"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:377
|
||||
msgid "Disabled autostart"
|
||||
msgstr "Wyłącz automatycznie uruchamianie"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:383
|
||||
msgid "Enabled open trackers - torrent restart required to take effect."
|
||||
msgstr "Włączono otwarte trackery - wymagane ponowne uruchomienie torrenta."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:385
|
||||
msgid "Disabled open trackers - torrent restart required to take effect."
|
||||
msgstr "Wyłączono otwarte trackery - wymagane ponowne uruchomienie torrenta."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:392
|
||||
msgid "Open Tracker list changed - torrent restart required to take effect."
|
||||
msgstr "Zmieniła się lista otwartych trackerów - wymagane ponowne uruchomienie torrenta."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:399
|
||||
msgid "Configuration unchanged."
|
||||
msgstr "Ustawienia niezmienione."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:409
|
||||
#, java-format
|
||||
msgid "Unable to save the config to {0}"
|
||||
msgstr "Nie można zapisać konfiguracji do {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:445
|
||||
msgid "Connecting to I2P"
|
||||
msgstr "Łączenie z I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:448
|
||||
msgid "Error connecting to I2P - check your I2CP settings!"
|
||||
msgstr "Nie można się połączyć z I2P, sprawdź swoje ustawienia I2CP!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:457
|
||||
#, java-format
|
||||
msgid "Error: Could not add the torrent {0}"
|
||||
msgstr "Błąd: Nie można dodać torrenta {0}"
|
||||
|
||||
#. catch this here so we don't try do delete it below
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:479
|
||||
#, java-format
|
||||
msgid "Cannot open \"{0}\""
|
||||
msgstr "Nie można otworzyć \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:492
|
||||
#, java-format
|
||||
msgid "Warning - Ignoring non-i2p tracker in \"{0}\", will announce to i2p open trackers only"
|
||||
msgstr "Uwaga! Ignorowanie trackera spoza I2P w \"{0}\"; będzie anonsować tylko z trackerami I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:494
|
||||
#, java-format
|
||||
msgid "Warning - Ignoring non-i2p tracker in \"{0}\", and open trackers are disabled, you must enable open trackers before starting the torrent!"
|
||||
msgstr "Uwaga! Ignorowanie trackera spoza I2P w \"{0}\"; otwarty trackery wyłączone, musisz włączyć otwarte trackery zanim uruchomisz torrenta!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:513
|
||||
#, java-format
|
||||
msgid "Torrent in \"{0}\" is invalid"
|
||||
msgstr "Torrent w \"{0}\" jest niepoprawny"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:528
|
||||
#, java-format
|
||||
msgid "Torrent added and started: \"{0}\""
|
||||
msgstr "Torrent dodany i uruchomiony: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:530
|
||||
#, java-format
|
||||
msgid "Torrent added: \"{0}\""
|
||||
msgstr "Torrent dodany: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:627
|
||||
#, java-format
|
||||
msgid "Too many files in \"{0}\" ({1}), deleting it!"
|
||||
msgstr "Za dużo plików w \"{0}\" ({1}), usuwanie go!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:629
|
||||
#, java-format
|
||||
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
|
||||
msgstr "Torrent \"{0}\" nie może się kończyć w \".torrent\", usuwanie go!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:631
|
||||
#, java-format
|
||||
msgid "No pieces in \"{0}\", deleting it!"
|
||||
msgstr "W torrencie \"{0}\" nie ma piece'ów, usuwanie go!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:633
|
||||
#, java-format
|
||||
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
|
||||
msgstr "Za dużo piece''ów w \"{0}\" (limit to {1}), usuwanie go!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:635
|
||||
#, java-format
|
||||
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
|
||||
msgstr "Za duże piece''y w torrencie \"{0}\" ({1}B), usuwanie go."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:636
|
||||
#, java-format
|
||||
msgid "Limit is {0}B"
|
||||
msgstr "Granica to {0}B"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:644
|
||||
#, java-format
|
||||
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
|
||||
msgstr "Torrenty większe niż {0}B nie są jeszcze wspierane, usunięcie \"{1}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:660
|
||||
#, java-format
|
||||
msgid "Error: Could not remove the torrent {0}"
|
||||
msgstr "Błąd: nie można usunąć torrenta {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:681
|
||||
#, java-format
|
||||
msgid "Torrent stopped: \"{0}\""
|
||||
msgstr "Torrent zatrzymany: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:696
|
||||
#, java-format
|
||||
msgid "Torrent removed: \"{0}\""
|
||||
msgstr "Torrent usunięty: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:729
|
||||
#, java-format
|
||||
msgid "Download finished: \"{0}\""
|
||||
msgstr "Pobieranie zakończone: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:729
|
||||
#, java-format
|
||||
msgid "size: {0}B"
|
||||
msgstr "rozmiar: {0}B"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:757
|
||||
msgid "Unable to connect to I2P!"
|
||||
msgstr "Nie można podłączyć się do I2P!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:168
|
||||
msgid "I2PSnark - Anonymous BitTorrent Client"
|
||||
msgstr "I2PSnark – anonimowy klient BitTorrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:179
|
||||
msgid "Torrents"
|
||||
msgstr "Torrenty"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:181
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:187
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831
|
||||
msgid "I2PSnark"
|
||||
msgstr "I2PSnark"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:185
|
||||
msgid "Refresh page"
|
||||
msgstr "Odśwież stronę"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:189
|
||||
msgid "Forum"
|
||||
msgstr "Forum"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:234
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:240
|
||||
msgid "Hide Peers"
|
||||
msgstr "Ukryj peery"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:243
|
||||
msgid "Show Peers"
|
||||
msgstr "Pokaż peery"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:248
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1265
|
||||
msgid "Torrent"
|
||||
msgstr "Torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:250
|
||||
msgid "ETA"
|
||||
msgstr "Pozostało"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:252
|
||||
msgid "Downloaded"
|
||||
msgstr "Pobrano"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:254
|
||||
msgid "Uploaded"
|
||||
msgstr "Wysłano"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:256
|
||||
msgid "Down Rate"
|
||||
msgstr "Prędkość pobierania"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:258
|
||||
msgid "Up Rate"
|
||||
msgstr "Prędkość wysyłania"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:265
|
||||
msgid "Stop all torrents and the I2P tunnel"
|
||||
msgstr "Zatrzymaj wszystkie torrenty i tunel I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:267
|
||||
msgid "Stop All"
|
||||
msgstr "Zatrzymaj wszystkie"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:272
|
||||
msgid "Start all torrents and the I2P tunnel"
|
||||
msgstr "Uruchom wszystkie torrenty i tunel I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:274
|
||||
msgid "Start All"
|
||||
msgstr "Uruchom wszystkie"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:291
|
||||
msgid "No torrents loaded."
|
||||
msgstr "Nie załadowano torrentów."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:296
|
||||
msgid "Totals"
|
||||
msgstr "Łącznie"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:298
|
||||
#, java-format
|
||||
msgid "1 torrent"
|
||||
msgid_plural "{0} torrents"
|
||||
msgstr[0] "{0} torrent"
|
||||
msgstr[1] "{0} torrenty"
|
||||
msgstr[2] "{0} torrentów"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:301
|
||||
#, java-format
|
||||
msgid "1 connected peer"
|
||||
msgid_plural "{0} connected peers"
|
||||
msgstr[0] "{0} podłączony peer"
|
||||
msgstr[1] "{0} podłączone peery"
|
||||
msgstr[2] "{0} podłączonych peerów"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:330
|
||||
#, java-format
|
||||
msgid "Torrent file {0} does not exist"
|
||||
msgstr "Plik torrent {0} nie istnieje"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:340
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
|
||||
#, java-format
|
||||
msgid "Torrent already running: {0}"
|
||||
msgstr "Torrent już uruchomiony: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
|
||||
#, java-format
|
||||
msgid "Torrent already in the queue: {0}"
|
||||
msgstr "Torrent już w kolejce: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346
|
||||
#, java-format
|
||||
msgid "Copying torrent to {0}"
|
||||
msgstr "Kopiowanie torrenta do: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:349
|
||||
#, java-format
|
||||
msgid "Unable to copy the torrent to {0}"
|
||||
msgstr "Nie można skopiować torrenta do: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:349
|
||||
#, java-format
|
||||
msgid "from {0}"
|
||||
msgstr "od: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:357
|
||||
#, java-format
|
||||
msgid "Fetching {0}"
|
||||
msgstr "Pobieranie: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:361
|
||||
msgid "Invalid URL - must start with http://"
|
||||
msgstr "Niepoprawny URL - musi się zaczynać od http://"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:391
|
||||
#, java-format
|
||||
msgid "Starting up torrent {0}"
|
||||
msgstr "Uruchamianie torrenta: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:411
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:429
|
||||
#, java-format
|
||||
msgid "Torrent file deleted: {0}"
|
||||
msgstr "Plik torrenta usunięto: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:435
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:445
|
||||
#, java-format
|
||||
msgid "Data file deleted: {0}"
|
||||
msgstr "Pliki z danymi usunięte: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:437
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:447
|
||||
#, java-format
|
||||
msgid "Data file could not be deleted: {0}"
|
||||
msgstr "Nie można usunąć pliku z danymi: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:456
|
||||
#, java-format
|
||||
msgid "Data dir deleted: {0}"
|
||||
msgstr "Usunięto katalog z danymi: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:488
|
||||
msgid "Error creating torrent - you must select a tracker"
|
||||
msgstr "Błąd przy tworzeniu torrenta - musisz wybrać tracker"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:503
|
||||
#, java-format
|
||||
msgid "Torrent created for \"{0}\""
|
||||
msgstr "Utworzono torrent dla \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:506
|
||||
#, java-format
|
||||
msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\""
|
||||
msgstr "Wiele trackerów w I2P wymaga zarejestrowania torrenta przed seedowaniem - proszę, zrób tak przed uruchomieniem \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
|
||||
#, java-format
|
||||
msgid "Error creating a torrent for \"{0}\""
|
||||
msgstr "Błąd podczas tworzenia torrenta dla: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
|
||||
#, java-format
|
||||
msgid "Cannot create a torrent for the nonexistent data: {0}"
|
||||
msgstr "Nie można utworzyć torrenta dla nieistniejących danych: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:514
|
||||
msgid "Error creating torrent - you must enter a file or directory"
|
||||
msgstr "Błąd przy tworzeniu torrenta - musisz podać plik lub katalog"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:517
|
||||
msgid "Stopping all torrents and closing the I2P tunnel."
|
||||
msgstr "Zatrzymywanie wszystkich torrentów i zamykanie tunelu I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526
|
||||
msgid "I2P tunnel closed."
|
||||
msgstr "Zamknięto tunel I2P."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:529
|
||||
msgid "Opening the I2P tunnel and starting all torrents."
|
||||
msgstr "Otwieranie tunelu I2P i uruchamianie wszystkich torrentów."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:651
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845
|
||||
msgid "Unknown"
|
||||
msgstr "Nieznany"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664
|
||||
msgid "TrackerErr"
|
||||
msgstr "BładTrackera"
|
||||
|
||||
# TODO should replace "uploader limit NN peers" with "global number of upload slots: NN"
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:682
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:685
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:690
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:693
|
||||
#, java-format
|
||||
msgid "1 peer"
|
||||
msgid_plural "{0} peers"
|
||||
msgstr[0] "{0} peer"
|
||||
msgstr[1] "{0} peery"
|
||||
msgstr[2] "{0} peerów"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
|
||||
msgid "Seeding"
|
||||
msgstr "Seedowanie"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1321
|
||||
msgid "Complete"
|
||||
msgstr "Zakończono"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:692
|
||||
msgid "Stalled"
|
||||
msgstr "Utknięto"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
|
||||
msgid "No Peers"
|
||||
msgstr "Brak peerów"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:697
|
||||
msgid "Stopped"
|
||||
msgstr "Zatrzymany"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:712
|
||||
msgid "View files"
|
||||
msgstr "Zobacz pliki"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:714
|
||||
msgid "Open file"
|
||||
msgstr "Otwórz plik"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:744
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:961
|
||||
msgid "Tracker"
|
||||
msgstr "Tracker"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745
|
||||
msgid "Details"
|
||||
msgstr "Szczegóły"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:779
|
||||
msgid "Stop the torrent"
|
||||
msgstr "Zatrzymaj torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:781
|
||||
msgid "Stop"
|
||||
msgstr "Zatrzymaj"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787
|
||||
msgid "Start the torrent"
|
||||
msgstr "Uruchom torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789
|
||||
msgid "Start"
|
||||
msgstr "Uruchom"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794
|
||||
msgid "Remove the torrent from the active list, deleting the .torrent file"
|
||||
msgstr "Usuń torrent z aktywnej listy, usuwając plik .torrent"
|
||||
|
||||
#. Can't figure out how to escape double quotes inside the onclick string.
|
||||
#. Single quotes in translate strings with parameters must be doubled.
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:799
|
||||
#, java-format
|
||||
msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?"
|
||||
msgstr "Czy na pewno chcesz usunąć plik \\''{0}.torrent\\''? (pobrane dane nie zostaną usunięte)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801
|
||||
msgid "Remove"
|
||||
msgstr "Usuń"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805
|
||||
msgid "Delete the .torrent file and the associated data file(s)"
|
||||
msgstr "Usuń plik .torrent i związane z nim pliki z danymi"
|
||||
|
||||
#. Can't figure out how to escape double quotes inside the onclick string.
|
||||
#. Single quotes in translate strings with parameters must be doubled.
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810
|
||||
#, java-format
|
||||
msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?"
|
||||
msgstr "Czy na pewno chcesz usunąć plik \\''{0}.torrent\\'' oraz pobrane dane?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812
|
||||
msgid "Delete"
|
||||
msgstr "Usuń"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:855
|
||||
msgid "Seed"
|
||||
msgstr "Seed"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:873
|
||||
msgid "Uninteresting (The peer has no pieces we need)"
|
||||
msgstr "Uninteresting (peer nie ma piece'ów, które potrzebujemy)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:875
|
||||
msgid "Choked (The peer is not allowing us to request pieces)"
|
||||
msgstr "Choked (peer nie pozwala nam na prośbę o piece)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:889
|
||||
msgid "Uninterested (We have no pieces the peer needs)"
|
||||
msgstr "Uninterested (nie mamy piece'ów, których peer potrzebuje)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:891
|
||||
msgid "Choking (We are not allowing the peer to request pieces)"
|
||||
msgstr "Choking (nie pozwalamy peerowi na prośbę o piece)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:921
|
||||
msgid "Add Torrent"
|
||||
msgstr "Dodaj torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:923
|
||||
msgid "From URL"
|
||||
msgstr "Z adresu URL"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:928
|
||||
msgid "Add torrent"
|
||||
msgstr "Dodaj torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:931
|
||||
#, java-format
|
||||
msgid "Alternately, you can copy .torrent files to the directory {0}."
|
||||
msgstr "Albo możesz skopiować plik .torrent do katalogu {0}."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:933
|
||||
msgid "Removing a .torrent file will cause the torrent to stop."
|
||||
msgstr "Usunięcie pliku .torrent spowoduje zatrzymanie torrenta."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:952
|
||||
msgid "Create Torrent"
|
||||
msgstr "Utwórz torrent"
|
||||
|
||||
#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:955
|
||||
msgid "Data to seed"
|
||||
msgstr "Dane do seedowania"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959
|
||||
msgid "File or directory to seed (must be within the specified path)"
|
||||
msgstr "Plik lub katalog do seedowania (musi się znajdować wewnątrz podanej ścieżki)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:963
|
||||
msgid "Select a tracker"
|
||||
msgstr "Wybierz tracker"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:976
|
||||
msgid "or"
|
||||
msgstr "lub"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979
|
||||
msgid "Specify custom tracker announce URL"
|
||||
msgstr "Podaj własny adres announce trackera"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982
|
||||
msgid "Create torrent"
|
||||
msgstr "Utwórz torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1000
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1127
|
||||
msgid "Configuration"
|
||||
msgstr "Ustawienia"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1003
|
||||
msgid "Data directory"
|
||||
msgstr "Katalog z danymi"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
|
||||
msgid "Directory to store torrents and data"
|
||||
msgstr "Katalog, w którym znajdują się torrenty i dane"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1008
|
||||
msgid "Edit i2psnark.config and restart to change"
|
||||
msgstr "Edytuj plik i2psnark.config i uruchom ponownie by zmiany weszły w życie"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1012
|
||||
msgid "Auto start"
|
||||
msgstr "Automatyczne uruchamianie"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1016
|
||||
msgid "If checked, automatically start torrents that are added"
|
||||
msgstr "Jeśli zaznaczone - automatycznie uruchamiaj dodane torrenty"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1020
|
||||
msgid "Startup delay"
|
||||
msgstr "Opóźnienie uruchomienia"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
|
||||
msgid "minutes"
|
||||
msgstr "minuty"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1046
|
||||
msgid "Total uploader limit"
|
||||
msgstr "Całkowity limit uploaderów"
|
||||
|
||||
# TODO should replace "uploader limit NN peers" with "global number of upload slots: NN"
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
|
||||
msgid "peers"
|
||||
msgstr "peery"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
|
||||
msgid "Up bandwidth limit"
|
||||
msgstr "Ograniczenie pasma WY"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1056
|
||||
msgid "Half available bandwidth recommended."
|
||||
msgstr "Zalecana połowa dostępnego pasma."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1058
|
||||
msgid "View or change router bandwidth"
|
||||
msgstr "Zobacz lub zmień pasmo routera"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1062
|
||||
msgid "Use open trackers also"
|
||||
msgstr "Używaj również otwartych trackerów"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1066
|
||||
msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"
|
||||
msgstr "Jeśli zaznaczone, zgłaszaj torrenty do otwartych trackerów, jak również do trackerów podanych w pliku torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
|
||||
msgid "Open tracker announce URLs"
|
||||
msgstr "URL otwartego trackera"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1082
|
||||
msgid "Inbound Settings"
|
||||
msgstr "Tunele wejściowe"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1088
|
||||
msgid "Outbound Settings"
|
||||
msgstr "Tunele wyjściowe"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1095
|
||||
msgid "I2CP host"
|
||||
msgstr "Adres I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1100
|
||||
msgid "I2CP port"
|
||||
msgstr "Port I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1112
|
||||
msgid "I2CP options"
|
||||
msgstr "Parametry I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118
|
||||
msgid "Save configuration"
|
||||
msgstr "Zapisz ustawienia"
|
||||
|
||||
#. * dummies for translation
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1135
|
||||
#, java-format
|
||||
msgid "1 hop"
|
||||
msgid_plural "{0} hops"
|
||||
msgstr[0] "{0} skok"
|
||||
msgstr[1] "{0} skoki"
|
||||
msgstr[2] "{0} skoków"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1136
|
||||
#, java-format
|
||||
msgid "1 tunnel"
|
||||
msgid_plural "{0} tunnels"
|
||||
msgstr[0] "{0} tunel"
|
||||
msgstr[1] "{0} tunele"
|
||||
msgstr[2] "{0} tuneli"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277
|
||||
msgid "Up to higher level directory"
|
||||
msgstr "Do katalogu nadrzędnego"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1282
|
||||
msgid "File"
|
||||
msgstr "Plik"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1282
|
||||
msgid "Size"
|
||||
msgstr "Rozmiar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1305
|
||||
msgid "Directory"
|
||||
msgstr "Katalog"
|
||||
|
||||
# This debug error message intentionally left in English
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1310
|
||||
msgid "Torrent not found?"
|
||||
msgstr "Torrent not found?"
|
||||
|
||||
# This debug error message intentionally left in English
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1318
|
||||
msgid "File not found in torrent?"
|
||||
msgstr "File not found in torrent?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1324
|
||||
msgid "complete"
|
||||
msgstr "zakończono"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1325
|
||||
msgid "bytes remaining"
|
||||
msgstr "bajtów pozostało"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1450
|
||||
#, java-format
|
||||
msgid "Torrent fetched from {0}"
|
||||
msgstr "Torrent pobrano z {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1478
|
||||
#, java-format
|
||||
msgid "Torrent at {0} was not valid"
|
||||
msgstr "Torrent pobrany z {0} jest niepoprawny"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1483
|
||||
#, java-format
|
||||
msgid "Torrent was not retrieved from {0}"
|
||||
msgstr "Torrent nie był pobrany z: {0}"
|
||||
|
||||
@@ -8,14 +8,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P i2psnark\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-03-03 18:28+0000\n"
|
||||
"PO-Revision-Date: 2011-02-27 18:48+0100\n"
|
||||
"POT-Creation-Date: 2011-06-02 16:13+0000\n"
|
||||
"PO-Revision-Date: 2011-06-05 10:36+0100\n"
|
||||
"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
|
||||
"Language-Team: foo <foo@bar>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: \n"
|
||||
"X-Poedit-Language: Spanish\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
@@ -40,14 +40,13 @@ msgid "Minimum up bandwidth limit is {0}KBps"
|
||||
msgstr "O limite mínimo da largura de banda para a subida está em {0} kbyte/s."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:335
|
||||
#, fuzzy, java-format
|
||||
#, java-format
|
||||
msgid "Startup delay changed to {0}"
|
||||
msgstr "Demora do arranque mudado a {0} minutos"
|
||||
msgstr "Demora do arranque mudado a {0}."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:386
|
||||
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
|
||||
msgstr ""
|
||||
"Mudanças do I2CP e do túnel terão efeito depois de deter todos os torrentes"
|
||||
msgstr "Mudanças do I2CP e do túnel terão efeito depois de deter todos os torrentes"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:393
|
||||
msgid "Disconnecting old I2CP destination"
|
||||
@@ -59,11 +58,8 @@ msgid "I2CP settings changed to {0}"
|
||||
msgstr "Preferências de I2CP mudadas a {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:402
|
||||
msgid ""
|
||||
"Unable to connect with the new settings, reverting to the old I2CP settings"
|
||||
msgstr ""
|
||||
"Conectar-se não foi posível com as novas preferências I2CP, utilizarei as "
|
||||
"anteriores."
|
||||
msgid "Unable to connect with the new settings, reverting to the old I2CP settings"
|
||||
msgstr "Conectar-se não foi posível com as novas preferências I2CP, utilizarei as anteriores."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:406
|
||||
msgid "Unable to reconnect with the old settings!"
|
||||
@@ -88,21 +84,15 @@ msgstr "Desativado o iniciar automáticamente"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:437
|
||||
msgid "Enabled open trackers - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
"Uso de rastreadores abertos ativado - Para ter efeito é necesário reiniciar "
|
||||
"os torrentes."
|
||||
msgstr "Uso de rastreadores abertos ativado - Para ter efeito é necesário reiniciar os torrentes."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:439
|
||||
msgid "Disabled open trackers - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
"Uso dos rastreadores abertos desativado - Para ter efeito é necesário "
|
||||
"reiniciar os torrentes."
|
||||
msgstr "Uso dos rastreadores abertos desativado - Para ter efeito é necesário reiniciar os torrentes."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:447
|
||||
msgid "Open Tracker list changed - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
"Listado de rastreadores abertos mudado - Para ter efeito é necesário "
|
||||
"reiniciar os torrentes."
|
||||
msgstr "Listado de rastreadores abertos mudado - Para ter efeito é necesário reiniciar os torrentes."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:454
|
||||
#, java-format
|
||||
@@ -138,160 +128,152 @@ msgid "Cannot open \"{0}\""
|
||||
msgstr "Não pode se abrir \"{0}\""
|
||||
|
||||
#. TODO - if the existing one is a magnet, delete it and add the metainfo instead?
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:586
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:661
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:716
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:589
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:665
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:720
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976
|
||||
#, fuzzy, java-format
|
||||
#, java-format
|
||||
msgid "Torrent with this info hash is already running: {0}"
|
||||
msgstr "torrente já em marcha: {0}"
|
||||
msgstr "torrente com este info hash já em marcha: {0}"
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:593
|
||||
#, fuzzy, java-format
|
||||
msgid ""
|
||||
"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers "
|
||||
"only."
|
||||
msgstr ""
|
||||
"Aviso - Se ignorará rastreado não I2P no \"{0}\", anunciando só aos "
|
||||
"rastreadores abertos do I2P"
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:596
|
||||
#, java-format
|
||||
msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only."
|
||||
msgstr "Aviso - Se ignorarão rastreadores fora de I2P em \"{0}\", anunciando só aos rastreadores abertos do I2P."
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:598
|
||||
#, fuzzy, java-format
|
||||
msgid ""
|
||||
"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is "
|
||||
"enabled before starting this torrent."
|
||||
msgstr ""
|
||||
"Aviso - Se ignorará rastreador não I2P no \"{0}\", rastreadores abertos "
|
||||
"estão desativados. Tens que ativá-los antes de iniciar o torrente!"
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:601
|
||||
#, java-format
|
||||
msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent."
|
||||
msgstr "Aviso - Se ignorará rastreador não I2P no \"{0}\". Tens que ativá os rastreadores abertos antes de iniciar o torrente!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:619
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:622
|
||||
#, java-format
|
||||
msgid "Torrent in \"{0}\" is invalid"
|
||||
msgstr "O arquivo .torrent em \"{0}\" não é válido."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:624
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:627
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998
|
||||
#, java-format
|
||||
msgid "ERROR - Out of memory, cannot create torrent from {0}"
|
||||
msgstr ""
|
||||
msgstr "ERRO - Não ha espaço suficente, não se pode crear um torrente desde {0}."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:635
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:639
|
||||
#, java-format
|
||||
msgid "Torrent added and started: \"{0}\""
|
||||
msgstr "torrente adicionado e iniciado: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:637
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:641
|
||||
#, java-format
|
||||
msgid "Torrent added: \"{0}\""
|
||||
msgstr "torrente adicionado: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:672
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:676
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
|
||||
#, java-format
|
||||
msgid "Fetching {0}"
|
||||
msgstr "Buscando {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:675
|
||||
#, java-format
|
||||
msgid ""
|
||||
"We have no saved peers and no other torrents are running. Fetch of {0} will "
|
||||
"not succeed until you start another torrent."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:679
|
||||
#, fuzzy, java-format
|
||||
msgid "Adding {0}"
|
||||
msgstr "Buscando {0}"
|
||||
#, java-format
|
||||
msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent."
|
||||
msgstr "Não temos pare guardados nem estão ativo outros torrentes. Receber {0} não vai dar certo até começa outro torrente."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:726
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:749
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1174
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:683
|
||||
#, java-format
|
||||
msgid "Adding {0}"
|
||||
msgstr "Adicionando {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:730
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:753
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1180
|
||||
#, java-format
|
||||
msgid "Failed to copy torrent file to {0}"
|
||||
msgstr "Não se pode copiar o torrente para {0}."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:972
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:976
|
||||
#, java-format
|
||||
msgid "Too many files in \"{0}\" ({1}), deleting it!"
|
||||
msgstr "Ha arquivos demais no \"{0}\", se apagará ({1}). "
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:974
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:978
|
||||
#, java-format
|
||||
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
|
||||
msgstr ""
|
||||
"O arquivo de dados do torrente \"{0}\" não pode terminar em \".torrent' e "
|
||||
"será apagado."
|
||||
msgstr "O arquivo de dados do torrente \"{0}\" não pode terminar em \".torrent' e será apagado."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:976
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:980
|
||||
#, java-format
|
||||
msgid "No pieces in \"{0}\", deleting it!"
|
||||
msgstr "Não ha peças no \"{0}\", se apagará."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:978
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:982
|
||||
#, java-format
|
||||
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
|
||||
msgstr "Ha peças demais no \"{0}\" e o limite é {1}. Se apagarão."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:980
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:984
|
||||
#, java-format
|
||||
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
|
||||
msgstr "Peças no \"{0}\" são grandes demais ({1}B). Se apagarão."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:981
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:985
|
||||
#, java-format
|
||||
msgid "Limit is {0}B"
|
||||
msgstr "O limite são \"{0}\"Bytes"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:989
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:987
|
||||
#, java-format
|
||||
msgid "Torrent \"{0}\" has no data, deleting it!"
|
||||
msgstr "O torrente \"{0}\" não contem dados e será apagado."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:995
|
||||
#, java-format
|
||||
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
|
||||
msgstr ""
|
||||
"torrentes maiores que \"{0}\" Bytes ainda não funcionam, se apagará \"{1}\"."
|
||||
msgstr "torrentes maiores que \"{0}\" Bytes ainda não funcionam, se apagará \"{1}\"."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1005
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1011
|
||||
#, java-format
|
||||
msgid "Error: Could not remove the torrent {0}"
|
||||
msgstr "Erro: Não se pode quitar o torrente \"{0}\"."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1026
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1044
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1032
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1050
|
||||
#, java-format
|
||||
msgid "Torrent stopped: \"{0}\""
|
||||
msgstr "torrente detido: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1065
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1071
|
||||
#, java-format
|
||||
msgid "Torrent removed: \"{0}\""
|
||||
msgstr "torrente quitado: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1073
|
||||
#, fuzzy, java-format
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1079
|
||||
#, java-format
|
||||
msgid "Adding torrents in {0}"
|
||||
msgstr "Os torrentes serão adicionados em {0} minutos ..."
|
||||
msgstr "Os torrentes serão adicionados em {0} ..."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1122
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1128
|
||||
#, java-format
|
||||
msgid "Download finished: {0}"
|
||||
msgstr "Finalizada a descarga de \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1170
|
||||
#, fuzzy, java-format
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1176
|
||||
#, java-format
|
||||
msgid "Metainfo received for {0}"
|
||||
msgstr "Não se pode obter torrente de {0}"
|
||||
msgstr "Metainfo recibido para {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1171
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1177
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526
|
||||
#, java-format
|
||||
msgid "Starting up torrent {0}"
|
||||
msgstr "Iniciando o torrente {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1225
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
|
||||
msgid "Unable to connect to I2P!"
|
||||
msgstr "Impossível de se conectar com I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1237
|
||||
#, java-format
|
||||
msgid "Unable to add {0}"
|
||||
msgstr "Impossível de adicionar {0}"
|
||||
@@ -382,79 +364,79 @@ msgstr "Taça"
|
||||
msgid "Up Rate"
|
||||
msgstr "Taça de subida"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366
|
||||
msgid "Stop all torrents and the I2P tunnel"
|
||||
msgstr "Deter todos os torrentes e o túnel I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368
|
||||
msgid "Stop All"
|
||||
msgstr "Deter tudos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377
|
||||
msgid "Start all torrents and the I2P tunnel"
|
||||
msgstr "Iniciar todos os torrentes e o túnel I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379
|
||||
msgid "Start All"
|
||||
msgstr "Arrancar todos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398
|
||||
msgid "No torrents loaded."
|
||||
msgstr "Não carregado nenhum torrente"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403
|
||||
msgid "Totals"
|
||||
msgstr "Total"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405
|
||||
#, java-format
|
||||
msgid "1 torrent"
|
||||
msgid_plural "{0} torrents"
|
||||
msgstr[0] "1 torrente"
|
||||
msgstr[1] "{0} torrentes"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:408
|
||||
#, java-format
|
||||
msgid "1 connected peer"
|
||||
msgid_plural "{0} connected peers"
|
||||
msgstr[0] "1 parceiro conectado"
|
||||
msgstr[1] "{0} parceiros conectados"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496
|
||||
#, fuzzy, java-format
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:497
|
||||
#, java-format
|
||||
msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
|
||||
msgstr "Endereço não válido - tem que começar com http://"
|
||||
msgstr "Endereço não válido - tem que começar com \"http://\", \"{0}\", ou \"{1}\"."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571
|
||||
#, fuzzy, java-format
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:572
|
||||
#, java-format
|
||||
msgid "Magnet deleted: {0}"
|
||||
msgstr "Apagada a pasta de dados: {0}"
|
||||
msgstr "Apagada o magnet: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578
|
||||
#, java-format
|
||||
msgid "Torrent file deleted: {0}"
|
||||
msgstr "Apagado o arquivo torrente: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594
|
||||
#, java-format
|
||||
msgid "Data file deleted: {0}"
|
||||
msgstr "Apagado o arquivo de dados: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
|
||||
#, java-format
|
||||
msgid "Data file could not be deleted: {0}"
|
||||
msgstr "Não se pode apagar o arquivo de dados: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605
|
||||
#, java-format
|
||||
msgid "Data dir deleted: {0}"
|
||||
msgstr "Apagada a pasta de dados: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638
|
||||
msgid "Error creating torrent - you must select a tracker"
|
||||
msgstr "Erro ao criar o torrente - Tens que elegir um rastreador."
|
||||
|
||||
@@ -465,12 +447,8 @@ msgstr "torrente criado para \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Many I2P trackers require you to register new torrents before seeding - "
|
||||
"please do so before starting \"{0}\""
|
||||
msgstr ""
|
||||
"Muitos rastreadores no I2P exigem que você registre novos torrentes antes de "
|
||||
"poder semeá-los. Por favor, faça isto antes de iniciar \"{0}\"!"
|
||||
msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\""
|
||||
msgstr "Muitos rastreadores no I2P exigem que você registre novos torrentes antes de poder semeá-los. Por favor, faça isto antes de iniciar \"{0}\"!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
|
||||
#, java-format
|
||||
@@ -484,8 +462,7 @@ msgstr "Não se pode criar um torrente para dados que não existam: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
|
||||
msgid "Error creating torrent - you must enter a file or directory"
|
||||
msgstr ""
|
||||
"Erro ao criar o torrente - Tens que especificar um arquivo ou uma pasta."
|
||||
msgstr "Erro ao criar o torrente - Tens que especificar um arquivo ou uma pasta."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
|
||||
msgid "Stopping all torrents and closing the I2P tunnel."
|
||||
@@ -550,9 +527,8 @@ msgid "Stopped"
|
||||
msgstr "detenido"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886
|
||||
#, fuzzy
|
||||
msgid "Torrent details"
|
||||
msgstr "torrentes"
|
||||
msgstr "Detalhes do torrente"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
|
||||
@@ -592,12 +568,8 @@ msgstr "Retire o torrente da lista ativa, apagando o arquivo .torrent"
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
|
||||
"data will not be deleted) ?"
|
||||
msgstr ""
|
||||
"Está seguro de que quer apagar o arquivo \\''{0}.torrent\\''? (Dados "
|
||||
"baixados não se apagarão.)"
|
||||
msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?"
|
||||
msgstr "Está seguro de que quer apagar o arquivo \\''{0}.torrent\\''? (Dados baixados não se apagarão.)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990
|
||||
msgid "Remove"
|
||||
@@ -612,12 +584,8 @@ msgstr "Apagar o arquivo torrente e o(s) arquivo(s) de dados pertenecentes"
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
|
||||
"data?"
|
||||
msgstr ""
|
||||
"Está seguro de que quer apagar o arquivo torrente \\''{0}\\'' e todos os "
|
||||
"dados descarregados deste torrente?"
|
||||
msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?"
|
||||
msgstr "Está seguro de que quer apagar o arquivo torrente \\''{0}\\'' e todos os dados descarregados deste torrente?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
|
||||
msgid "Delete"
|
||||
@@ -637,8 +605,7 @@ msgstr "não interessante (O parceiro não tem peças que precisamos.)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079
|
||||
msgid "Choked (The peer is not allowing us to request pieces)"
|
||||
msgstr ""
|
||||
"sufocado (De momento o parceiro não está nos permitindo pedir mais peças.c)"
|
||||
msgstr "sufocado (De momento o parceiro não está nos permitindo pedir mais peças.c)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099
|
||||
msgid "Uninterested (We have no pieces the peer needs)"
|
||||
@@ -646,9 +613,7 @@ msgstr "desinteressado (Não temos as peças que o parceiro quer.)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
|
||||
msgid "Choking (We are not allowing the peer to request pieces)"
|
||||
msgstr ""
|
||||
"sufocando (De momento não estamos permitindo que os parceiros peçam mais "
|
||||
"peças)"
|
||||
msgstr "sufocando (De momento não estamos permitindo que os parceiros peçam mais peças)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159
|
||||
#, java-format
|
||||
@@ -664,9 +629,8 @@ msgid "From URL"
|
||||
msgstr "URL fonte:"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193
|
||||
msgid ""
|
||||
"Enter the torrent file download URL (I2P only), magnet link, or maggot link"
|
||||
msgstr ""
|
||||
msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link"
|
||||
msgstr "Entre aqui a URL do .torrent (só I2P), a URL magnet ou uma URL maggot."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198
|
||||
msgid "Add torrent"
|
||||
@@ -705,9 +669,8 @@ msgstr "Selecione um rastreador"
|
||||
|
||||
#. out.write(_("Open trackers and DHT only"));
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
|
||||
#, fuzzy
|
||||
msgid "Open trackers only"
|
||||
msgstr "usar também rastreadores abertos"
|
||||
msgstr "só rastreadores abertos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257
|
||||
msgid "or"
|
||||
@@ -779,12 +742,8 @@ msgid "Use open trackers also"
|
||||
msgstr "usar também rastreadores abertos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358
|
||||
msgid ""
|
||||
"If checked, announce torrents to open trackers as well as the tracker listed "
|
||||
"in the torrent file"
|
||||
msgstr ""
|
||||
"Se marcado, anunciar os torrentes aos rastreadores abertos, assim como aos "
|
||||
"rastreadores listados no arquivo torrente"
|
||||
msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"
|
||||
msgstr "Se marcado, anunciar os torrentes aos rastreadores abertos, assim como aos rastreadores listados no arquivo torrente"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362
|
||||
msgid "Open tracker announce URLs"
|
||||
@@ -817,12 +776,12 @@ msgstr "Guardar configuração"
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436
|
||||
#, java-format
|
||||
msgid "Invalid magnet URL {0}"
|
||||
msgstr ""
|
||||
msgstr "URL magnet {0} não válida"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
|
||||
#, java-format
|
||||
msgid "Invalid info hash in magnet URL {0}"
|
||||
msgstr ""
|
||||
msgstr "Info hash não válido na URL magnet {0}"
|
||||
|
||||
#. * dummies for translation
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500
|
||||
@@ -840,9 +799,8 @@ msgstr[0] "1 túnel"
|
||||
msgstr[1] "{0} túneles"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663
|
||||
#, fuzzy
|
||||
msgid "Completion"
|
||||
msgstr "completo"
|
||||
msgstr "Finalização"
|
||||
|
||||
#. else unknown
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667
|
||||
@@ -851,21 +809,20 @@ msgid "Size"
|
||||
msgstr "Tamanho"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672
|
||||
#, fuzzy
|
||||
msgid "Files"
|
||||
msgstr "Arquivo"
|
||||
msgstr "Arquivos"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674
|
||||
msgid "Pieces"
|
||||
msgstr ""
|
||||
msgstr "Peças"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675
|
||||
msgid "Piece size"
|
||||
msgstr ""
|
||||
msgstr "Tamanho das peças"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
|
||||
msgid "Magnet link"
|
||||
msgstr ""
|
||||
msgstr "URL magnet"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753
|
||||
@@ -921,105 +878,82 @@ msgstr "Guardar prioridades"
|
||||
msgid "Torrent fetched from {0}"
|
||||
msgstr "torrente obtido de {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988
|
||||
#, java-format
|
||||
msgid "Torrent already running: {0}"
|
||||
msgstr "torrente já em marcha: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990
|
||||
#, java-format
|
||||
msgid "Torrent already in the queue: {0}"
|
||||
msgstr "torrente já na cola: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996
|
||||
#, java-format
|
||||
msgid "Torrent at {0} was not valid"
|
||||
msgstr "torrente em {0} não foi válido"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2003
|
||||
#, java-format
|
||||
msgid "Torrent was not retrieved from {0}"
|
||||
msgstr "Não se pode obter torrente de {0}"
|
||||
|
||||
#~ msgid "Torrent file must originate from an I2P-based tracker"
|
||||
#~ msgstr "O arquivo torrente tem que incluir um rastreador I2P."
|
||||
|
||||
#~ msgid " theme locked and loaded."
|
||||
#~ msgstr "tema carregado"
|
||||
|
||||
#~ msgid "Hide All Attached Peers [connected/total in swarm]"
|
||||
#~ msgstr "Ocultar todos os pares [conectados/total neste torrente]"
|
||||
|
||||
#~ msgid "Show All Attached Peers [connected/total in swarm]"
|
||||
#~ msgstr "Mostrar todos os pares [conectados/total neste torrente]"
|
||||
|
||||
#~ msgid "Loaded Torrents"
|
||||
#~ msgstr "torrentes carregados"
|
||||
|
||||
#~ msgid "Estimated Download Time"
|
||||
#~ msgstr "tempo restante da descarga"
|
||||
|
||||
#~ msgid "1"
|
||||
#~ msgid_plural "{0}"
|
||||
#~ msgstr[0] "1"
|
||||
#~ msgstr[1] "{0}"
|
||||
|
||||
#~ msgid "Torrent file {0} does not exist"
|
||||
#~ msgstr "Arquivo do torrente {0} não existe"
|
||||
|
||||
#~ msgid "Copying torrent to {0}"
|
||||
#~ msgstr "Copiando torrente para {0}"
|
||||
|
||||
#~ msgid "from {0}"
|
||||
#~ msgstr "de {0}"
|
||||
|
||||
#~ msgid "Downloading"
|
||||
#~ msgstr "descarregando"
|
||||
|
||||
#~ msgid "FileSize"
|
||||
#~ msgstr "Tamanho do arquivo"
|
||||
|
||||
#~ msgid "Download Status"
|
||||
#~ msgstr "Estado"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "size: {0}B"
|
||||
#~ msgstr "Tamaño: {0}Bytes"
|
||||
|
||||
#~ msgid "Directory to store torrents and data"
|
||||
#~ msgstr "Carpeta para guardar os arquivos torrentes e os dados"
|
||||
|
||||
#~ msgid "Do not download"
|
||||
#~ msgstr "No descargues"
|
||||
|
||||
#~ msgid "Details"
|
||||
#~ msgstr "Detalles"
|
||||
|
||||
#~ msgid "Cannot change the I2CP settings while torrents are active"
|
||||
#~ msgstr ""
|
||||
#~ "No se puede cammbiar los ajustes I2CP mientras estén activos los torrents"
|
||||
|
||||
#~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!"
|
||||
#~ msgstr ""
|
||||
#~ "Rastreador fuera de I2P en \"{0}\", borrando de la lista de rastreadores"
|
||||
|
||||
#~ msgid "{0} torrents"
|
||||
#~ msgstr "{0} torrentes"
|
||||
|
||||
#~ msgid "Uninteresting"
|
||||
#~ msgstr "no interesante"
|
||||
|
||||
#~ msgid "Choked"
|
||||
#~ msgstr "frenado"
|
||||
|
||||
#~ msgid "Uninterested"
|
||||
#~ msgstr "desinteresado"
|
||||
|
||||
#~ msgid "Choking"
|
||||
#~ msgstr "frenando"
|
||||
|
||||
#~ msgid "Custom tracker URL"
|
||||
#~ msgstr "URL especial del rastreador"
|
||||
|
||||
#~ msgid "Configure"
|
||||
#~ msgstr "Ajustes"
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P i2psnark\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-03-03 18:28+0000\n"
|
||||
"PO-Revision-Date: 2011-02-15 22:27+0500\n"
|
||||
"POT-Creation-Date: 2011-06-18 14:07+0000\n"
|
||||
"PO-Revision-Date: 2011-06-18 20:17+0500\n"
|
||||
"Last-Translator: Hidden Z <hiddenz@mail.i2p>\n"
|
||||
"Language-Team: foo <foo@bar>\n"
|
||||
"Language: \n"
|
||||
@@ -17,8 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Russian\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"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:307
|
||||
#, java-format
|
||||
@@ -47,9 +46,7 @@ msgstr "Задержка запуска изменена на {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:386
|
||||
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
|
||||
msgstr ""
|
||||
"Изменения настроек I2CP и туннелей вступят в силу после остановки всех "
|
||||
"торрентов."
|
||||
msgstr "Изменения настроек I2CP и туннелей вступят в силу после остановки всех торрентов."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:393
|
||||
msgid "Disconnecting old I2CP destination"
|
||||
@@ -61,11 +58,8 @@ msgid "I2CP settings changed to {0}"
|
||||
msgstr "Новые параметры I2CP: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:402
|
||||
msgid ""
|
||||
"Unable to connect with the new settings, reverting to the old I2CP settings"
|
||||
msgstr ""
|
||||
"Не удалось соединиться с использованием новых настроек I2CP, возвращаемся к "
|
||||
"старым настройкам"
|
||||
msgid "Unable to connect with the new settings, reverting to the old I2CP settings"
|
||||
msgstr "Не удалось соединиться с использованием новых настроек I2CP, возвращаемся к старым настройкам"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:406
|
||||
msgid "Unable to reconnect with the old settings!"
|
||||
@@ -90,27 +84,20 @@ msgstr "Автостарт выключен"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:437
|
||||
msgid "Enabled open trackers - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
"Включено использование открытых трекеров. Требуется перезапуск торрента, "
|
||||
"чтобы изменения вступили в силу."
|
||||
msgstr "Включено использование открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:439
|
||||
msgid "Disabled open trackers - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
"Отключено использование открытых трекеров. Требуется перезапуск торрента, "
|
||||
"чтобы изменения вступили в силу."
|
||||
msgstr "Отключено использование открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:447
|
||||
msgid "Open Tracker list changed - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
"Изменен список открытых трекеров. Требуется перезапуск торрента, чтобы "
|
||||
"изменения вступили в силу."
|
||||
msgstr "Изменен список открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:454
|
||||
#, java-format
|
||||
msgid "{0} theme loaded, return to main i2psnark page to view."
|
||||
msgstr ""
|
||||
"{0} тема загружена, вернитесь на основную страницу i2psnark для просмотра."
|
||||
msgstr "{0} тема загружена, вернитесь на основную страницу i2psnark для просмотра."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:461
|
||||
msgid "Configuration unchanged."
|
||||
@@ -141,161 +128,152 @@ msgid "Cannot open \"{0}\""
|
||||
msgstr "Не удалось открыть \"{0}\""
|
||||
|
||||
#. TODO - if the existing one is a magnet, delete it and add the metainfo instead?
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:586
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:661
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:716
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:589
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:665
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:720
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1978
|
||||
#, java-format
|
||||
msgid "Torrent with this info hash is already running: {0}"
|
||||
msgstr "Торрент с таким info hash уже запущен: {0}"
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:593
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:596
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers "
|
||||
"only."
|
||||
msgstr ""
|
||||
"Внимание - в \"{0}\" не найдено I2P трекеров, анонсирование будет "
|
||||
"производиться только на открытых трекерах I2P."
|
||||
msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only."
|
||||
msgstr "Внимание - в \"{0}\" не найдено I2P трекеров, анонсирование будет производиться только на открытых трекерах I2P."
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:598
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:601
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is "
|
||||
"enabled before starting this torrent."
|
||||
msgstr ""
|
||||
"Внимание - в \"{0}\" не найдено I2P трекеров. Перед запуском торрента "
|
||||
"убедитесь, что использование открытых трекеров включено."
|
||||
msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent."
|
||||
msgstr "Внимание - в \"{0}\" не найдено I2P трекеров. Перед запуском торрента убедитесь, что использование открытых трекеров включено."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:619
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:622
|
||||
#, java-format
|
||||
msgid "Torrent in \"{0}\" is invalid"
|
||||
msgstr "Торрент в \"{0}\" некорректен"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:624
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:627
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2000
|
||||
#, java-format
|
||||
msgid "ERROR - Out of memory, cannot create torrent from {0}"
|
||||
msgstr "ОШИБКА - нехватка памяти, невозможно создать торрент из {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:635
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:639
|
||||
#, java-format
|
||||
msgid "Torrent added and started: \"{0}\""
|
||||
msgstr "Торрент добавлен и запущен: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:637
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:641
|
||||
#, java-format
|
||||
msgid "Torrent added: \"{0}\""
|
||||
msgstr "Торрент добавлен: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:672
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:676
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
|
||||
#, java-format
|
||||
msgid "Fetching {0}"
|
||||
msgstr "Получение торрента: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:675
|
||||
#, java-format
|
||||
msgid ""
|
||||
"We have no saved peers and no other torrents are running. Fetch of {0} will "
|
||||
"not succeed until you start another torrent."
|
||||
msgstr ""
|
||||
"Мы не имеем сохранённых пиров и нет других запущенных торрентов. Загрузка "
|
||||
"{0} не будет успешна пока вы не запустите другой торрент."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:679
|
||||
#, java-format
|
||||
msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent."
|
||||
msgstr "Мы не имеем сохранённых пиров и нет других запущенных торрентов. Загрузка {0} не будет успешна пока вы не запустите другой торрент."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:683
|
||||
#, java-format
|
||||
msgid "Adding {0}"
|
||||
msgstr "Добавление {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:726
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:749
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1174
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:730
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:753
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1180
|
||||
#, java-format
|
||||
msgid "Failed to copy torrent file to {0}"
|
||||
msgstr "Не удалось скопировать торрент в: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:972
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:976
|
||||
#, java-format
|
||||
msgid "Too many files in \"{0}\" ({1}), deleting it!"
|
||||
msgstr "Слишком много файлов в торренте \"{0}\" ({1}), удаляем его!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:974
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:978
|
||||
#, java-format
|
||||
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
|
||||
msgstr ""
|
||||
"Торрент \"{0}\" содержит единственный файл заканчивающийся на \".torrent\", "
|
||||
"удаляем его!"
|
||||
msgstr "Торрент \"{0}\" содержит единственный файл заканчивающийся на \".torrent\", удаляем его!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:976
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:980
|
||||
#, java-format
|
||||
msgid "No pieces in \"{0}\", deleting it!"
|
||||
msgstr "В торренте \"{0}\" не оказалось ни одной части, удаляем его!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:978
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:982
|
||||
#, java-format
|
||||
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
|
||||
msgstr "Слишком много частей в торренте \"{0}\" (наш предел {1}), удаляем его!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:980
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:984
|
||||
#, java-format
|
||||
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
|
||||
msgstr "Слишком крупные части в торренте \"{0}\" ({1}B), удаляем его."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:981
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:985
|
||||
#, java-format
|
||||
msgid "Limit is {0}B"
|
||||
msgstr "Наш предел {0}B"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:989
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:987
|
||||
#, java-format
|
||||
msgid "Torrent \"{0}\" has no data, deleting it!"
|
||||
msgstr "Торрент \"{0}\" не содержит данных, удаляем его!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:995
|
||||
#, java-format
|
||||
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
|
||||
msgstr "Торренты крупнее чем {0}B пока не поддерживается, удаляем \"{1}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1005
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1011
|
||||
#, java-format
|
||||
msgid "Error: Could not remove the torrent {0}"
|
||||
msgstr "Ошибка: Невозможно удалить торрент {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1026
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1044
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1032
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1050
|
||||
#, java-format
|
||||
msgid "Torrent stopped: \"{0}\""
|
||||
msgstr "Торрент остановлен: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1065
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1071
|
||||
#, java-format
|
||||
msgid "Torrent removed: \"{0}\""
|
||||
msgstr "Торрент удален: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1073
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1079
|
||||
#, java-format
|
||||
msgid "Adding torrents in {0}"
|
||||
msgstr "Добавление торрентов через {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1122
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1128
|
||||
#, java-format
|
||||
msgid "Download finished: {0}"
|
||||
msgstr "Закачка завершена: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1170
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1176
|
||||
#, java-format
|
||||
msgid "Metainfo received for {0}"
|
||||
msgstr "Метаданные получены для {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1171
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1177
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526
|
||||
#, java-format
|
||||
msgid "Starting up torrent {0}"
|
||||
msgstr "Запускаем торрент: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1225
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
|
||||
msgid "Unable to connect to I2P!"
|
||||
msgstr "Не удалось установить соединение с I2P!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1237
|
||||
#, java-format
|
||||
msgid "Unable to add {0}"
|
||||
msgstr "Не удаётся добавить {0}"
|
||||
@@ -323,7 +301,7 @@ msgid "Forum"
|
||||
msgstr "Форум"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
|
||||
msgid "Status"
|
||||
msgstr "Статус"
|
||||
|
||||
@@ -338,8 +316,8 @@ msgid "Show Peers"
|
||||
msgstr "показать список пиров"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1645
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1661
|
||||
msgid "Torrent"
|
||||
msgstr "Торрент"
|
||||
|
||||
@@ -386,31 +364,31 @@ msgstr "Скорость"
|
||||
msgid "Up Rate"
|
||||
msgstr "Скорость отдачи"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366
|
||||
msgid "Stop all torrents and the I2P tunnel"
|
||||
msgstr "Остановить все торренты и закрыть соединение с I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368
|
||||
msgid "Stop All"
|
||||
msgstr "Остановить все"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377
|
||||
msgid "Start all torrents and the I2P tunnel"
|
||||
msgstr "Запустить все торренты и открыть соединение с I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379
|
||||
msgid "Start All"
|
||||
msgstr "Запустить все"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398
|
||||
msgid "No torrents loaded."
|
||||
msgstr "Нет загруженных торрентов."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403
|
||||
msgid "Totals"
|
||||
msgstr "Всего"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405
|
||||
#, java-format
|
||||
msgid "1 torrent"
|
||||
msgid_plural "{0} torrents"
|
||||
@@ -418,7 +396,7 @@ msgstr[0] "{0} торрент"
|
||||
msgstr[1] "{0} торрента"
|
||||
msgstr[2] "{0} торрентов"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:408
|
||||
#, java-format
|
||||
msgid "1 connected peer"
|
||||
msgid_plural "{0} connected peers"
|
||||
@@ -426,42 +404,41 @@ msgstr[0] "{0} подсоединенный пир"
|
||||
msgstr[1] "{0} подсоединенных пиров"
|
||||
msgstr[2] "{0} подсоединенных пиров"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:497
|
||||
#, java-format
|
||||
msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
|
||||
msgstr ""
|
||||
"Некорректный URL: должен начинаться с \"http://\", \"{0}\", или \"{1}\""
|
||||
msgstr "Некорректный URL: должен начинаться с \"http://\", \"{0}\", или \"{1}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:572
|
||||
#, java-format
|
||||
msgid "Magnet deleted: {0}"
|
||||
msgstr "Magnet удален: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578
|
||||
#, java-format
|
||||
msgid "Torrent file deleted: {0}"
|
||||
msgstr "Удален торрент: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594
|
||||
#, java-format
|
||||
msgid "Data file deleted: {0}"
|
||||
msgstr "Файл удален: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
|
||||
#, java-format
|
||||
msgid "Data file could not be deleted: {0}"
|
||||
msgstr "Не удалось удалить файл: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605
|
||||
#, java-format
|
||||
msgid "Data dir deleted: {0}"
|
||||
msgstr "Директория удалена: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638
|
||||
msgid "Error creating torrent - you must select a tracker"
|
||||
msgstr "Торрент не создан — вы должны указать трекер"
|
||||
|
||||
@@ -472,12 +449,8 @@ msgstr "Создан торрент для \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Many I2P trackers require you to register new torrents before seeding - "
|
||||
"please do so before starting \"{0}\""
|
||||
msgstr ""
|
||||
"Многие I2P трекеры требуют зарегистрировать на них торрент перед началом "
|
||||
"раздачи — пожалуйста проверьте требуется ли это перед запуском \"{0}\""
|
||||
msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\""
|
||||
msgstr "Многие I2P трекеры требуют зарегистрировать на них торрент перед началом раздачи — пожалуйста проверьте требуется ли это перед запуском \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
|
||||
#, java-format
|
||||
@@ -487,8 +460,7 @@ msgstr "Ошибка при создании торрента для: \"{0}\""
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660
|
||||
#, java-format
|
||||
msgid "Cannot create a torrent for the nonexistent data: {0}"
|
||||
msgstr ""
|
||||
"Невозможно создать торрент для несуществующего файла или директории: {0}"
|
||||
msgstr "Невозможно создать торрент для несуществующего файла или директории: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
|
||||
msgid "Error creating torrent - you must enter a file or directory"
|
||||
@@ -534,8 +506,8 @@ msgid "Seeding"
|
||||
msgstr "Раздается"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1772
|
||||
msgid "Complete"
|
||||
msgstr "Завершен"
|
||||
|
||||
@@ -563,7 +535,7 @@ msgid "Torrent details"
|
||||
msgstr "Подробная информация"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1162
|
||||
msgid "Info"
|
||||
msgstr "Информация"
|
||||
|
||||
@@ -600,12 +572,8 @@ msgstr "Удалить торрент из списка и с диска"
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
|
||||
"data will not be deleted) ?"
|
||||
msgstr ""
|
||||
"Вы действительно хотите удалить \\''{0}.torrent\\''? (загруженные файлы "
|
||||
"удаляться НЕ будут)"
|
||||
msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?"
|
||||
msgstr "Вы действительно хотите удалить \\''{0}.torrent\\''? (загруженные файлы удаляться НЕ будут)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990
|
||||
msgid "Remove"
|
||||
@@ -620,222 +588,208 @@ msgstr "Удалить торрент и стереть загруженные
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
|
||||
"data?"
|
||||
msgstr ""
|
||||
"Вы действительно хотите удалить торрент \\''{0}\\'' и все загруженные файлы?"
|
||||
msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?"
|
||||
msgstr "Вы действительно хотите удалить торрент \\''{0}\\'' и все загруженные файлы?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
|
||||
msgid "Delete"
|
||||
msgstr "Стереть"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1044
|
||||
msgid "Unknown"
|
||||
msgstr "Неизвестный"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1056
|
||||
msgid "Seed"
|
||||
msgstr "Сид"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079
|
||||
msgid "Uninteresting (The peer has no pieces we need)"
|
||||
msgstr "Uninteresting (У пира нет нужных нам частей торрента)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
|
||||
msgid "Choked (The peer is not allowing us to request pieces)"
|
||||
msgstr "Choked (Этот пир не позволяет нам запрашивать части торрента)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
|
||||
msgid "Uninterested (We have no pieces the peer needs)"
|
||||
msgstr "Uninterested (У нас нужных этому пиру частей торрента)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1103
|
||||
msgid "Choking (We are not allowing the peer to request pieces)"
|
||||
msgstr "Choking (Мы не позволяем этому пиру запрашивать у нас части торрента)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1161
|
||||
#, java-format
|
||||
msgid "Details at {0} tracker"
|
||||
msgstr "Детали на трекере {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190
|
||||
msgid "Add Torrent"
|
||||
msgstr "Добавить Торрент"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1192
|
||||
msgid "From URL"
|
||||
msgstr "Из URL"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193
|
||||
msgid ""
|
||||
"Enter the torrent file download URL (I2P only), magnet link, or maggot link"
|
||||
msgstr ""
|
||||
"Введите URL (только I2P) для загрузки торрент-файла, magnet-ссылку, или "
|
||||
"maggot-ссылку"
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195
|
||||
msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link"
|
||||
msgstr "Введите URL (только I2P) для загрузки торрент-файла, magnet-ссылку, или maggot-ссылку"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1200
|
||||
msgid "Add torrent"
|
||||
msgstr "Добавить торрент"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203
|
||||
#, java-format
|
||||
msgid "You can also copy .torrent files to: {0}."
|
||||
msgstr "Либо вы можете просто скопировать .torrent-файлы в директорию {0}."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1205
|
||||
msgid "Removing a .torrent will cause it to stop."
|
||||
msgstr "Удаление .torrent-файла приведёт к остановке торрента."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1228
|
||||
msgid "Create Torrent"
|
||||
msgstr "Создать Торрент"
|
||||
|
||||
#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
|
||||
msgid "Data to seed"
|
||||
msgstr "Файлы для раздачи"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
|
||||
msgid "File or directory to seed (must be within the specified path)"
|
||||
msgstr ""
|
||||
"Файл или директория для раздачи (вводите только название файла или "
|
||||
"директории, указание абсолютных путей не поддерживается)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
|
||||
msgid "File or directory to seed (must be within the specified path)"
|
||||
msgstr "Файл или директория для раздачи (вводите только название файла или директории, указание абсолютных путей не поддерживается)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
|
||||
msgid "Tracker"
|
||||
msgstr "Трекер"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1239
|
||||
msgid "Select a tracker"
|
||||
msgstr "Выбрать трекер"
|
||||
|
||||
#. out.write(_("Open trackers and DHT only"));
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
|
||||
msgid "Open trackers only"
|
||||
msgstr "Только открытые трекеры"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1259
|
||||
msgid "or"
|
||||
msgstr "или"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1262
|
||||
msgid "Specify custom tracker announce URL"
|
||||
msgstr "Задать URL анонсера вручную"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1265
|
||||
msgid "Create torrent"
|
||||
msgstr "Создать торрент"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1422
|
||||
msgid "Configuration"
|
||||
msgstr "Настройки"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
|
||||
msgid "Data directory"
|
||||
msgstr "Директория для файлов"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1289
|
||||
msgid "Edit i2psnark.config and restart to change"
|
||||
msgstr ""
|
||||
"Для изменения отредактируйте файл i2psnark.config и перезагрузите I2PSnark"
|
||||
msgstr "Для изменения отредактируйте файл i2psnark.config и перезагрузите I2PSnark"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1293
|
||||
msgid "Auto start"
|
||||
msgstr "Автозапуск"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297
|
||||
msgid "If checked, automatically start torrents that are added"
|
||||
msgstr "Автоматически запускать торренты после добавления"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
|
||||
msgid "Theme"
|
||||
msgstr "Тема"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314
|
||||
msgid "Startup delay"
|
||||
msgstr "Задержка запуска"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1316
|
||||
msgid "minutes"
|
||||
msgstr "минут"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1340
|
||||
msgid "Total uploader limit"
|
||||
msgstr "Ограничение количества слотов отдачи"
|
||||
|
||||
# TODO should replace "uploader limit NN peers" with "global number of upload slots: NN"
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
|
||||
msgid "peers"
|
||||
msgstr "пиров"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1347
|
||||
msgid "Up bandwidth limit"
|
||||
msgstr "Ограничение скорости отдачи"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
|
||||
msgid "Half available bandwidth recommended."
|
||||
msgstr ""
|
||||
"Рекомендуется использовать половину от доступной пропускной способности."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350
|
||||
msgid "Half available bandwidth recommended."
|
||||
msgstr "Рекомендуется использовать половину от доступной пропускной способности."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352
|
||||
msgid "View or change router bandwidth"
|
||||
msgstr "Посмотреть/настроить ограничения скорости в маршрутизаторе I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
|
||||
msgid "Use open trackers also"
|
||||
msgstr "Дополнительно использовать открытые трекеры"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358
|
||||
msgid ""
|
||||
"If checked, announce torrents to open trackers as well as the tracker listed "
|
||||
"in the torrent file"
|
||||
msgstr ""
|
||||
"Анонсировать торренты на открытых трекерах, дополнительно к тем, что указаны "
|
||||
"внутри торрента"
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1360
|
||||
msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"
|
||||
msgstr "Анонсировать торренты на открытых трекерах, дополнительно к тем, что указаны внутри торрента"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
|
||||
msgid "Open tracker announce URLs"
|
||||
msgstr "URL открытых трекеров"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1376
|
||||
msgid "Inbound Settings"
|
||||
msgstr "Входящие туннели"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1382
|
||||
msgid "Outbound Settings"
|
||||
msgstr "Исходящие туннели"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1390
|
||||
msgid "I2CP host"
|
||||
msgstr "Адрес I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1395
|
||||
msgid "I2CP port"
|
||||
msgstr "Порт I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1408
|
||||
msgid "I2CP options"
|
||||
msgstr "Параметры I2CP"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1413
|
||||
msgid "Save configuration"
|
||||
msgstr "Сохранить настройки"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1438
|
||||
#, java-format
|
||||
msgid "Invalid magnet URL {0}"
|
||||
msgstr "Неправильный magnet URL {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
|
||||
#, java-format
|
||||
msgid "Invalid info hash in magnet URL {0}"
|
||||
msgstr "Неправильный info hash в magnet URL {0}"
|
||||
|
||||
#. * dummies for translation
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
|
||||
#, java-format
|
||||
msgid "1 hop"
|
||||
msgid_plural "{0} hops"
|
||||
@@ -843,7 +797,7 @@ msgstr[0] "{0} хоп"
|
||||
msgstr[1] "{0} хопа"
|
||||
msgstr[2] "{0} хопов"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
|
||||
#, java-format
|
||||
msgid "1 tunnel"
|
||||
msgid_plural "{0} tunnels"
|
||||
@@ -851,104 +805,104 @@ msgstr[0] "{0} туннель"
|
||||
msgstr[1] "{0} туннеля"
|
||||
msgstr[2] "{0} туннелей"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665
|
||||
msgid "Completion"
|
||||
msgstr "Загружено"
|
||||
|
||||
#. else unknown
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1718
|
||||
msgid "Size"
|
||||
msgstr "Размер"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674
|
||||
msgid "Files"
|
||||
msgstr "Файлов"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1676
|
||||
msgid "Pieces"
|
||||
msgstr "Части"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1677
|
||||
msgid "Piece size"
|
||||
msgstr "Размер части"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
|
||||
msgid "Magnet link"
|
||||
msgstr "Magnet ссылка"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1755
|
||||
msgid "Directory"
|
||||
msgstr "Директория"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1725
|
||||
msgid "Priority"
|
||||
msgstr "Приоритет"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
|
||||
msgid "Up to higher level directory"
|
||||
msgstr "Перейти в директорию уровнем выше"
|
||||
|
||||
# This debug error message intentionally left in English
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1760
|
||||
msgid "Torrent not found?"
|
||||
msgstr "Torrent not found?"
|
||||
|
||||
# This debug error message intentionally left in English
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1769
|
||||
msgid "File not found in torrent?"
|
||||
msgstr "File not found in torrent?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1782
|
||||
msgid "complete"
|
||||
msgstr "скачано"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1783
|
||||
msgid "bytes remaining"
|
||||
msgstr "байт осталось"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1808
|
||||
msgid "Open"
|
||||
msgstr "Открыть"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1834
|
||||
msgid "High"
|
||||
msgstr "Высокий"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1839
|
||||
msgid "Normal"
|
||||
msgstr "Нормальный"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1844
|
||||
msgid "Skip"
|
||||
msgstr "Пропустить"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1853
|
||||
msgid "Save priorities"
|
||||
msgstr "Сохранить приоритеты"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1969
|
||||
#, java-format
|
||||
msgid "Torrent fetched from {0}"
|
||||
msgstr "Получен торрент из: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990
|
||||
#, java-format
|
||||
msgid "Torrent already running: {0}"
|
||||
msgstr "Торрент уже запущен: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1992
|
||||
#, java-format
|
||||
msgid "Torrent already in the queue: {0}"
|
||||
msgstr "Торрент уже в очереди: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998
|
||||
#, java-format
|
||||
msgid "Torrent at {0} was not valid"
|
||||
msgstr "Торрент полученный из {0} некорректен"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2005
|
||||
#, java-format
|
||||
msgid "Torrent was not retrieved from {0}"
|
||||
msgstr "Не удалось получить торрент из: {0}"
|
||||
|
||||
948
apps/i2psnark/locale/messages_sv.po
Normal file
948
apps/i2psnark/locale/messages_sv.po
Normal file
@@ -0,0 +1,948 @@
|
||||
# I2P
|
||||
# Copyright (C) 2009 The I2P Project
|
||||
# This file is distributed under the same license as the i2psnark package.
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# <ducki2p@gmail.com>, 2011
|
||||
# <i2p@robertfoss.se>, 2011
|
||||
# hottuna <i2p@robertfoss.se>, 2011
|
||||
# 123hund123 <M8R-ra4r1r@mailinator.com>, 2011
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-05-24 06:00+0000\n"
|
||||
"PO-Revision-Date: 2011-06-05 14:52+0000\n"
|
||||
"Last-Translator: digitalmannen <digitalmannen@gmail.com>\n"
|
||||
"Language-Team: Swedish (Sweden) (http://www.transifex.net/projects/p/I2P/team/sv_SE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sv_SE\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:307
|
||||
#, java-format
|
||||
msgid "Total uploaders limit changed to {0}"
|
||||
msgstr "Gräns för totalt antal uppladdare är bytt till {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:309
|
||||
#, java-format
|
||||
msgid "Minimum total uploaders limit is {0}"
|
||||
msgstr "Gräns för totalt minsta antal uppladdare är bytt till {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:321
|
||||
#, java-format
|
||||
msgid "Up BW limit changed to {0}KBps"
|
||||
msgstr "Uppladdnings bandbredd bytt till {0}KBps"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:323
|
||||
#, java-format
|
||||
msgid "Minimum up bandwidth limit is {0}KBps"
|
||||
msgstr "Minsta uppladdnings bandbredd bytt till {0}KBps"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:335
|
||||
#, java-format
|
||||
msgid "Startup delay changed to {0}"
|
||||
msgstr "Fördröjning vid uppstart bytt till {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:386
|
||||
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
|
||||
msgstr ""
|
||||
"I2CP och tunnel förändringar kommer träda i kraft efter alla torrentar "
|
||||
"stoppats."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:393
|
||||
msgid "Disconnecting old I2CP destination"
|
||||
msgstr "Kopplat från gammal I2CP destination"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:397
|
||||
#, java-format
|
||||
msgid "I2CP settings changed to {0}"
|
||||
msgstr "I2CP-inställningar ändrade till {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:402
|
||||
msgid ""
|
||||
"Unable to connect with the new settings, reverting to the old I2CP settings"
|
||||
msgstr ""
|
||||
"Misslyckades med anslutningsförsök med nya inställningar, återställer de "
|
||||
"gamla I2CP inställningarna"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:406
|
||||
msgid "Unable to reconnect with the old settings!"
|
||||
msgstr "Misslyckades med anslutningsförsök med gamla inställningar!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:408
|
||||
msgid "Reconnected on the new I2CP destination"
|
||||
msgstr "Återanslöt mot den nya I2CP destinationen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:418
|
||||
#, java-format
|
||||
msgid "I2CP listener restarted for \"{0}\""
|
||||
msgstr "I2CP-lyssnar omstartad på grund av \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:429
|
||||
msgid "Enabled autostart"
|
||||
msgstr "Aktiverade automatisk start"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:431
|
||||
msgid "Disabled autostart"
|
||||
msgstr "Avaktiverade automatisk start"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:437
|
||||
msgid "Enabled open trackers - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
"Aktiverade öppna trackers - torrent måste startas om för att inställningen "
|
||||
"ska träda i kraft"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:439
|
||||
msgid "Disabled open trackers - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
"Avaktiverade öppna trackers - torrent måste startas om för att inställningen"
|
||||
" ska träda i kraft"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:447
|
||||
msgid "Open Tracker list changed - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
"Öppen tracker-lista förändrad - torrent måste startas om för att "
|
||||
"inställningen ska träda i kraft"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:454
|
||||
#, java-format
|
||||
msgid "{0} theme loaded, return to main i2psnark page to view."
|
||||
msgstr "{0} tema laddat, återgå till huvudvyn för i2psnark."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:461
|
||||
msgid "Configuration unchanged."
|
||||
msgstr "Inställningar oförändrade"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:471
|
||||
#, java-format
|
||||
msgid "Unable to save the config to {0}"
|
||||
msgstr "Misslyckades med att spara inställningar till {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:536
|
||||
msgid "Connecting to I2P"
|
||||
msgstr "Ansluter till I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:539
|
||||
msgid "Error connecting to I2P - check your I2CP settings!"
|
||||
msgstr ""
|
||||
"Problem vid anslutning till I2P - kontrollera dina I2CP-inställningar!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:548
|
||||
#, java-format
|
||||
msgid "Error: Could not add the torrent {0}"
|
||||
msgstr "Problem: Kunda in lägga till torrent {0}"
|
||||
|
||||
#. catch this here so we don't try do delete it below
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:570
|
||||
#, java-format
|
||||
msgid "Cannot open \"{0}\""
|
||||
msgstr "Kan inte öppna \"{0}\""
|
||||
|
||||
#. TODO - if the existing one is a magnet, delete it and add the metainfo
|
||||
#. instead?
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:589
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:665
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:720
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976
|
||||
#, java-format
|
||||
msgid "Torrent with this info hash is already running: {0}"
|
||||
msgstr "Torrent med denna infohash körs redan: {0}"
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P
|
||||
#. open trackers and DHT only.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:596
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers "
|
||||
"only."
|
||||
msgstr ""
|
||||
"Varning - Inga I2P trackers i \"{0}\", kommer enbart anmäla til öppna "
|
||||
"trackers i I2P."
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open
|
||||
#. trackers are disabled, you should enable open trackers or DHT before
|
||||
#. starting the torrent.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:601
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is "
|
||||
"enabled before starting this torrent."
|
||||
msgstr ""
|
||||
"Varning - Inga I2P trackers i \"{0}\". Kontrollera att öppna trackers är "
|
||||
"påslagna innan denhär torrenten startas."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:622
|
||||
#, java-format
|
||||
msgid "Torrent in \"{0}\" is invalid"
|
||||
msgstr "Torrent i \"{0}\" är ogiltig"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:627
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998
|
||||
#, java-format
|
||||
msgid "ERROR - Out of memory, cannot create torrent from {0}"
|
||||
msgstr "Problem: Minnet har tagit slut, kan inte skapa torrent från {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:639
|
||||
#, java-format
|
||||
msgid "Torrent added and started: \"{0}\""
|
||||
msgstr "Torrent tillagd och startad: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:641
|
||||
#, java-format
|
||||
msgid "Torrent added: \"{0}\""
|
||||
msgstr "Torrent tillagd: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:676
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
|
||||
#, java-format
|
||||
msgid "Fetching {0}"
|
||||
msgstr "Hämtar {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:679
|
||||
#, java-format
|
||||
msgid ""
|
||||
"We have no saved peers and no other torrents are running. Fetch of {0} will "
|
||||
"not succeed until you start another torrent."
|
||||
msgstr ""
|
||||
"Vi har inga sparade nerladdare och inga andra torrents kör. Hämtning av {0} "
|
||||
"kommer inte lyckas för en annan torrent startas."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:683
|
||||
#, java-format
|
||||
msgid "Adding {0}"
|
||||
msgstr "Lägger till {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:730
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:753
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1180
|
||||
#, java-format
|
||||
msgid "Failed to copy torrent file to {0}"
|
||||
msgstr "Misslyckades att kopiera torrentfil till {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:976
|
||||
#, java-format
|
||||
msgid "Too many files in \"{0}\" ({1}), deleting it!"
|
||||
msgstr "För många filer i \"{0}\" ({1}), tar bort den!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:978
|
||||
#, java-format
|
||||
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
|
||||
msgstr "Torrenten \"{0}\" får inte sluta med \".torrent\", tar bort den."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:980
|
||||
#, java-format
|
||||
msgid "No pieces in \"{0}\", deleting it!"
|
||||
msgstr "Inga delar i \"{0}\", tar bort den."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:982
|
||||
#, java-format
|
||||
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
|
||||
msgstr "För många delar i \"{0}\", gränden är {1}, raderar den!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:984
|
||||
#, java-format
|
||||
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
|
||||
msgstr "För stora delar i \"{0}\" ({1}B), raderar den."
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:985
|
||||
#, java-format
|
||||
msgid "Limit is {0}B"
|
||||
msgstr "Gränsen är {0}B"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:987
|
||||
#, java-format
|
||||
msgid "Torrent \"{0}\" has no data, deleting it!"
|
||||
msgstr "Torrenten \"{0}\" har ingen data, tar bort den!"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:995
|
||||
#, java-format
|
||||
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
|
||||
msgstr "Torrentar större än {0}B stöds ännu ej, tar bort \"{1}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1011
|
||||
#, java-format
|
||||
msgid "Error: Could not remove the torrent {0}"
|
||||
msgstr "Problem: Kunde ej ta bort torrent {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1032
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1050
|
||||
#, java-format
|
||||
msgid "Torrent stopped: \"{0}\""
|
||||
msgstr "Torrent stannad: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1071
|
||||
#, java-format
|
||||
msgid "Torrent removed: \"{0}\""
|
||||
msgstr "Torrent borttagen: \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1079
|
||||
#, java-format
|
||||
msgid "Adding torrents in {0}"
|
||||
msgstr "Torrents tillagda i {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1128
|
||||
#, java-format
|
||||
msgid "Download finished: {0}"
|
||||
msgstr "Nerladdning klar: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1176
|
||||
#, java-format
|
||||
msgid "Metainfo received for {0}"
|
||||
msgstr "Metainfo mottagen till {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1177
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526
|
||||
#, java-format
|
||||
msgid "Starting up torrent {0}"
|
||||
msgstr "Startar torrent {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
|
||||
msgid "Unable to connect to I2P!"
|
||||
msgstr "Misslyckades med att ansluta till I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1237
|
||||
#, java-format
|
||||
msgid "Unable to add {0}"
|
||||
msgstr "Misslyckades med att lägga till {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205
|
||||
msgid "I2PSnark - Anonymous BitTorrent Client"
|
||||
msgstr "I2PSnark - Anonym bittorrentklient"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218
|
||||
msgid "Torrents"
|
||||
msgstr "Torrents"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028
|
||||
msgid "I2PSnark"
|
||||
msgstr "I2PSnark"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225
|
||||
msgid "Refresh page"
|
||||
msgstr "Ladda om sida"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230
|
||||
msgid "Forum"
|
||||
msgstr "Forum"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292
|
||||
msgid "Hide Peers"
|
||||
msgstr "Göm nerladdare"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299
|
||||
msgid "Show Peers"
|
||||
msgstr "Visa nerladdare"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659
|
||||
msgid "Torrent"
|
||||
msgstr "Torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310
|
||||
msgid "Estimated time remaining"
|
||||
msgstr "Uppskattad återstående tid"
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313
|
||||
msgid "ETA"
|
||||
msgstr "UÅT"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317
|
||||
msgid "Downloaded"
|
||||
msgstr "Nerladdat"
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334
|
||||
msgid "RX"
|
||||
msgstr "RX"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324
|
||||
msgid "Uploaded"
|
||||
msgstr "Uppladdat"
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344
|
||||
msgid "TX"
|
||||
msgstr "TX"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332
|
||||
msgid "Down Rate"
|
||||
msgstr "Nerhastighet"
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346
|
||||
msgid "Rate"
|
||||
msgstr "Hastighet"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342
|
||||
msgid "Up Rate"
|
||||
msgstr "Upphastighet"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366
|
||||
msgid "Stop all torrents and the I2P tunnel"
|
||||
msgstr "Stoppa alla torrents och I2P-tunneln"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368
|
||||
msgid "Stop All"
|
||||
msgstr "Stoppa alla"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377
|
||||
msgid "Start all torrents and the I2P tunnel"
|
||||
msgstr "Starta alla torrents och I2P-tunneln"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379
|
||||
msgid "Start All"
|
||||
msgstr "Starta alla"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398
|
||||
msgid "No torrents loaded."
|
||||
msgstr "Inga torrents laddade."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403
|
||||
msgid "Totals"
|
||||
msgstr "Totalt"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405
|
||||
#, java-format
|
||||
msgid "1 torrent"
|
||||
msgid_plural "{0} torrents"
|
||||
msgstr[0] "{0} torrent"
|
||||
msgstr[1] "{0} torrents"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:408
|
||||
#, java-format
|
||||
msgid "1 connected peer"
|
||||
msgid_plural "{0} connected peers"
|
||||
msgstr[0] "{0} ansluten nerladdare"
|
||||
msgstr[1] "{0} anslutna nerladdare"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:497
|
||||
#, java-format
|
||||
msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
|
||||
msgstr "Ogiltig URL: Måste starta med \"http://\", \"{0}\" eller \"{1}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:572
|
||||
#, java-format
|
||||
msgid "Magnet deleted: {0}"
|
||||
msgstr "Magnet borttagen: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578
|
||||
#, java-format
|
||||
msgid "Torrent file deleted: {0}"
|
||||
msgstr "Torrentfil borttagen: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594
|
||||
#, java-format
|
||||
msgid "Data file deleted: {0}"
|
||||
msgstr "Datafil borttagen: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
|
||||
#, java-format
|
||||
msgid "Data file could not be deleted: {0}"
|
||||
msgstr "Datafil kunde inte tas bort: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605
|
||||
#, java-format
|
||||
msgid "Data dir deleted: {0}"
|
||||
msgstr "Datamapp borttagen: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638
|
||||
msgid "Error creating torrent - you must select a tracker"
|
||||
msgstr "Misslyckades med att skapa torrent - en tracker måste väljas"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653
|
||||
#, java-format
|
||||
msgid "Torrent created for \"{0}\""
|
||||
msgstr "Torrent skapad för \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Many I2P trackers require you to register new torrents before seeding - "
|
||||
"please do so before starting \"{0}\""
|
||||
msgstr ""
|
||||
"Många I2P trackers kräver att användare registrerar sig för uppladdning av "
|
||||
"torrent - gör det innan \"{0}\" startas"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
|
||||
#, java-format
|
||||
msgid "Error creating a torrent for \"{0}\""
|
||||
msgstr "Misslyckades med att skapa torrent för \"{0}\""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660
|
||||
#, java-format
|
||||
msgid "Cannot create a torrent for the nonexistent data: {0}"
|
||||
msgstr "Kan ej skapa torrent för data som ej finns: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
|
||||
msgid "Error creating torrent - you must enter a file or directory"
|
||||
msgstr "Misslyckades med att skapa torrent - en fil eller mapp måste anges"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
|
||||
msgid "Stopping all torrents and closing the I2P tunnel."
|
||||
msgstr "Stoppar alla torrents och stänger I2P-tunneln."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677
|
||||
msgid "I2P tunnel closed."
|
||||
msgstr "I2P-tunneln är stängd."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
|
||||
msgid "Opening the I2P tunnel and starting all torrents."
|
||||
msgstr "Öppnar I2P-tunneln och startar torrents."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814
|
||||
msgid "Tracker Error"
|
||||
msgstr "Tracker-fel"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847
|
||||
#, java-format
|
||||
msgid "1 peer"
|
||||
msgid_plural "{0} peers"
|
||||
msgstr[0] "{0} nerladdare"
|
||||
msgstr[1] "{0} nerladdare"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824
|
||||
msgid "Seeding"
|
||||
msgstr "Uppladdning"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770
|
||||
msgid "Complete"
|
||||
msgstr "Färdig"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836
|
||||
msgid "OK"
|
||||
msgstr "Ok"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845
|
||||
msgid "Stalled"
|
||||
msgstr "Avstannad"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852
|
||||
msgid "No Peers"
|
||||
msgstr "Inga källor"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
|
||||
msgid "Stopped"
|
||||
msgstr "Stoppad"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886
|
||||
msgid "Torrent details"
|
||||
msgstr "Torrentdetaljer"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
|
||||
msgid "Info"
|
||||
msgstr "Info"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913
|
||||
msgid "View files"
|
||||
msgstr "Se filer"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:915
|
||||
msgid "Open file"
|
||||
msgstr "Öppna fil"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957
|
||||
msgid "Stop the torrent"
|
||||
msgstr "Stoppa torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959
|
||||
msgid "Stop"
|
||||
msgstr "Stoppa"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969
|
||||
msgid "Start the torrent"
|
||||
msgstr "Starta torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971
|
||||
msgid "Start"
|
||||
msgstr "Starta"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982
|
||||
msgid "Remove the torrent from the active list, deleting the .torrent file"
|
||||
msgstr "Ta bort torrent från den aktiva listan, tar bort .torrent fil"
|
||||
|
||||
#. Can't figure out how to escape double quotes inside the onclick string.
|
||||
#. Single quotes in translate strings with parameters must be doubled.
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
|
||||
"data will not be deleted) ?"
|
||||
msgstr ""
|
||||
"Är du säker på att du vill ta bort filen \"{0}.torrent\" (nerladdad data "
|
||||
"kommer ej tas bort) ?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990
|
||||
msgid "Remove"
|
||||
msgstr "Ta bort"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001
|
||||
msgid "Delete the .torrent file and the associated data file(s)"
|
||||
msgstr "Ta bort .torrent filen och tillhörande datafil(er)"
|
||||
|
||||
#. Can't figure out how to escape double quotes inside the onclick string.
|
||||
#. Single quotes in translate strings with parameters must be doubled.
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
|
||||
"data?"
|
||||
msgstr ""
|
||||
"Är du säker på att du vill ta bort torrenten \"{0}\" och all nerladdad data?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
|
||||
msgid "Delete"
|
||||
msgstr "Ta bort"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042
|
||||
msgid "Unknown"
|
||||
msgstr "Okänd"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054
|
||||
msgid "Seed"
|
||||
msgstr "Källa"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077
|
||||
msgid "Uninteresting (The peer has no pieces we need)"
|
||||
msgstr "Ointressant (nerladdaren har inga delar vi behöver)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079
|
||||
msgid "Choked (The peer is not allowing us to request pieces)"
|
||||
msgstr "Spärra (nerladdaren låter oss inte be dom delar)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099
|
||||
msgid "Uninterested (We have no pieces the peer needs)"
|
||||
msgstr "Ointresserad (vi har inga delar nerladdaren behöver)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
|
||||
msgid "Choking (We are not allowing the peer to request pieces)"
|
||||
msgstr "Spärrar (vi låter inte nerladdaren be dom delar)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159
|
||||
#, java-format
|
||||
msgid "Details at {0} tracker"
|
||||
msgstr "Detaljer för {0} tracker"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188
|
||||
msgid "Add Torrent"
|
||||
msgstr "Lägg till torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190
|
||||
msgid "From URL"
|
||||
msgstr "Från URL"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193
|
||||
msgid ""
|
||||
"Enter the torrent file download URL (I2P only), magnet link, or maggot link"
|
||||
msgstr "Ange URL (inom I2P) till torrent, magnet länl eller maggot länk"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198
|
||||
msgid "Add torrent"
|
||||
msgstr "Lägg till torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201
|
||||
#, java-format
|
||||
msgid "You can also copy .torrent files to: {0}."
|
||||
msgstr "Du kan även kopiera .torrent filer till: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203
|
||||
msgid "Removing a .torrent will cause it to stop."
|
||||
msgstr "Borttagning av .torrent fil kommer stanna den."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226
|
||||
msgid "Create Torrent"
|
||||
msgstr "Skapa torrent"
|
||||
|
||||
#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
|
||||
#. value=\"" + newFile + "\" /><br>\n");
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
|
||||
msgid "Data to seed"
|
||||
msgstr "Data att ladda upp"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
|
||||
msgid "File or directory to seed (must be within the specified path)"
|
||||
msgstr "Fil eller mapp att ladda upp (måste finnas på angiven plats)"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
|
||||
msgid "Tracker"
|
||||
msgstr "Tracker"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
|
||||
msgid "Select a tracker"
|
||||
msgstr "Välj en tracker"
|
||||
|
||||
#. out.write(_("Open trackers and DHT only"));
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
|
||||
msgid "Open trackers only"
|
||||
msgstr "Enbart öppna trackers"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257
|
||||
msgid "or"
|
||||
msgstr "eller"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260
|
||||
msgid "Specify custom tracker announce URL"
|
||||
msgstr "Ange anpassad tracker URL"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263
|
||||
msgid "Create torrent"
|
||||
msgstr "Skapa torrent"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420
|
||||
msgid "Configuration"
|
||||
msgstr "Inställningar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285
|
||||
msgid "Data directory"
|
||||
msgstr "Datamapp"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
|
||||
msgid "Edit i2psnark.config and restart to change"
|
||||
msgstr "Förändra i2psnark.conig och starta om för att ändra"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291
|
||||
msgid "Auto start"
|
||||
msgstr "Automatisk start"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295
|
||||
msgid "If checked, automatically start torrents that are added"
|
||||
msgstr "Om ikryssad, startas automatiskt tillagda torrents"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299
|
||||
msgid "Theme"
|
||||
msgstr "Tema"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312
|
||||
msgid "Startup delay"
|
||||
msgstr "Fördröjning av uppstart"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314
|
||||
msgid "minutes"
|
||||
msgstr "minuter"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338
|
||||
msgid "Total uploader limit"
|
||||
msgstr "Gräns för totalt antal uppladdare"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341
|
||||
msgid "peers"
|
||||
msgstr "nerladdare"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345
|
||||
msgid "Up bandwidth limit"
|
||||
msgstr "Gräns för bandbredd uppåt"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
|
||||
msgid "Half available bandwidth recommended."
|
||||
msgstr "Hälften av tillgänglig bandbredd rekommenderas."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350
|
||||
msgid "View or change router bandwidth"
|
||||
msgstr "Se eller ändra routerns bandbredd"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354
|
||||
msgid "Use open trackers also"
|
||||
msgstr "Använd öppna trackers med"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358
|
||||
msgid ""
|
||||
"If checked, announce torrents to open trackers as well as the tracker listed"
|
||||
" in the torrent file"
|
||||
msgstr ""
|
||||
"Om ikryssad, anmäl torrents till öppna trackers och tracker angiven i "
|
||||
"torrentfilen"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362
|
||||
msgid "Open tracker announce URLs"
|
||||
msgstr "Öppna tracker-anmälnings URL:er"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374
|
||||
msgid "Inbound Settings"
|
||||
msgstr "Inkommande inställningar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380
|
||||
msgid "Outbound Settings"
|
||||
msgstr "Utgående inställningar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388
|
||||
msgid "I2CP host"
|
||||
msgstr "I2CP-värd"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393
|
||||
msgid "I2CP port"
|
||||
msgstr "I2CP-port"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406
|
||||
msgid "I2CP options"
|
||||
msgstr "I2CP-inställningar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411
|
||||
msgid "Save configuration"
|
||||
msgstr "Spara inställningar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436
|
||||
#, java-format
|
||||
msgid "Invalid magnet URL {0}"
|
||||
msgstr "Ogiltig magnet URL {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
|
||||
#, java-format
|
||||
msgid "Invalid info hash in magnet URL {0}"
|
||||
msgstr "Ogiltig infohash i magnet URL {0}"
|
||||
|
||||
#. * dummies for translation
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500
|
||||
#, java-format
|
||||
msgid "1 hop"
|
||||
msgid_plural "{0} hops"
|
||||
msgstr[0] "{0} hopp"
|
||||
msgstr[1] "{0} hopp"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501
|
||||
#, java-format
|
||||
msgid "1 tunnel"
|
||||
msgid_plural "{0} tunnels"
|
||||
msgstr[0] "{0} tunnel"
|
||||
msgstr[1] "{0} tunnlar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663
|
||||
msgid "Completion"
|
||||
msgstr "Färdiställning"
|
||||
|
||||
#. else unknown
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716
|
||||
msgid "Size"
|
||||
msgstr "Storlek"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672
|
||||
msgid "Files"
|
||||
msgstr "Filer"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674
|
||||
msgid "Pieces"
|
||||
msgstr "Delar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675
|
||||
msgid "Piece size"
|
||||
msgstr "Delstorlek"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
|
||||
msgid "Magnet link"
|
||||
msgstr "Magnet länk"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753
|
||||
msgid "Directory"
|
||||
msgstr "Mapp"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723
|
||||
msgid "Priority"
|
||||
msgstr "Prioritet"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728
|
||||
msgid "Up to higher level directory"
|
||||
msgstr "Up till högre mappnivå"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758
|
||||
msgid "Torrent not found?"
|
||||
msgstr "Torrent hittades ej?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767
|
||||
msgid "File not found in torrent?"
|
||||
msgstr "Fil hittades ej i torrent?"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780
|
||||
msgid "complete"
|
||||
msgstr "färdig"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781
|
||||
msgid "bytes remaining"
|
||||
msgstr "bytes kvar"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806
|
||||
msgid "Open"
|
||||
msgstr "Öppna"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832
|
||||
msgid "High"
|
||||
msgstr "Hög"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837
|
||||
msgid "Normal"
|
||||
msgstr "Normal"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842
|
||||
msgid "Skip"
|
||||
msgstr "Hoppa över"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851
|
||||
msgid "Save priorities"
|
||||
msgstr "Spara prioriteter"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967
|
||||
#, java-format
|
||||
msgid "Torrent fetched from {0}"
|
||||
msgstr "Torrent hämtad från {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988
|
||||
#, java-format
|
||||
msgid "Torrent already running: {0}"
|
||||
msgstr "Torrent kör redan: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990
|
||||
#, java-format
|
||||
msgid "Torrent already in the queue: {0}"
|
||||
msgstr "Torrent finns redan i kö: {0}"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996
|
||||
#, java-format
|
||||
msgid "Torrent at {0} was not valid"
|
||||
msgstr "Torrent vid {0} var inte giltig"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2003
|
||||
#, java-format
|
||||
msgid "Torrent was not retrieved from {0}"
|
||||
msgstr "Torrent kunde inte hämtas från {0}"
|
||||
|
||||
|
||||
916
apps/i2psnark/locale/messages_vi.po
Normal file
916
apps/i2psnark/locale/messages_vi.po
Normal file
@@ -0,0 +1,916 @@
|
||||
# I2P
|
||||
# Copyright (C) 2009 The I2P Project
|
||||
# This file is distributed under the same license as the i2psnark package.
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# dich_tran <tran.nathan@gmail.com>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-06-11 08:22+0000\n"
|
||||
"PO-Revision-Date: 2011-05-17 18:05+0000\n"
|
||||
"Last-Translator: ducki2p <ducki2p@gmail.com>\n"
|
||||
"Language-Team: Vietnamese (http://www.transifex.net/projects/p/I2P/team/vi/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: vi\n"
|
||||
"Plural-Forms: nplurals=1; plural=0\n"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:307
|
||||
#, java-format
|
||||
msgid "Total uploaders limit changed to {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:309
|
||||
#, java-format
|
||||
msgid "Minimum total uploaders limit is {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:321
|
||||
#, java-format
|
||||
msgid "Up BW limit changed to {0}KBps"
|
||||
msgstr "Giới hạn băng thông lên đổi thành {0}KBps"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:323
|
||||
#, java-format
|
||||
msgid "Minimum up bandwidth limit is {0}KBps"
|
||||
msgstr "Tối thiểu băng thông lên là {0}KBps"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:335
|
||||
#, java-format
|
||||
msgid "Startup delay changed to {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:386
|
||||
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:393
|
||||
msgid "Disconnecting old I2CP destination"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:397
|
||||
#, java-format
|
||||
msgid "I2CP settings changed to {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:402
|
||||
msgid ""
|
||||
"Unable to connect with the new settings, reverting to the old I2CP settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:406
|
||||
msgid "Unable to reconnect with the old settings!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:408
|
||||
msgid "Reconnected on the new I2CP destination"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:418
|
||||
#, java-format
|
||||
msgid "I2CP listener restarted for \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:429
|
||||
msgid "Enabled autostart"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:431
|
||||
msgid "Disabled autostart"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:437
|
||||
msgid "Enabled open trackers - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:439
|
||||
msgid "Disabled open trackers - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:447
|
||||
msgid "Open Tracker list changed - torrent restart required to take effect."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:454
|
||||
#, java-format
|
||||
msgid "{0} theme loaded, return to main i2psnark page to view."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:461
|
||||
msgid "Configuration unchanged."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:471
|
||||
#, java-format
|
||||
msgid "Unable to save the config to {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:536
|
||||
msgid "Connecting to I2P"
|
||||
msgstr "Nối kết vào I2P"
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:539
|
||||
msgid "Error connecting to I2P - check your I2CP settings!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:548
|
||||
#, java-format
|
||||
msgid "Error: Could not add the torrent {0}"
|
||||
msgstr ""
|
||||
|
||||
#. catch this here so we don't try do delete it below
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:570
|
||||
#, java-format
|
||||
msgid "Cannot open \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#. TODO - if the existing one is a magnet, delete it and add the metainfo
|
||||
#. instead?
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:589
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:665
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:720
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976
|
||||
#, java-format
|
||||
msgid "Torrent with this info hash is already running: {0}"
|
||||
msgstr ""
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P
|
||||
#. open trackers and DHT only.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:596
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers "
|
||||
"only."
|
||||
msgstr ""
|
||||
|
||||
#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open
|
||||
#. trackers are disabled, you should enable open trackers or DHT before
|
||||
#. starting the torrent.", info.getName()));
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:601
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is "
|
||||
"enabled before starting this torrent."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:622
|
||||
#, java-format
|
||||
msgid "Torrent in \"{0}\" is invalid"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:627
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998
|
||||
#, java-format
|
||||
msgid "ERROR - Out of memory, cannot create torrent from {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:639
|
||||
#, java-format
|
||||
msgid "Torrent added and started: \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:641
|
||||
#, java-format
|
||||
msgid "Torrent added: \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:676
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
|
||||
#, java-format
|
||||
msgid "Fetching {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:679
|
||||
#, java-format
|
||||
msgid ""
|
||||
"We have no saved peers and no other torrents are running. Fetch of {0} will "
|
||||
"not succeed until you start another torrent."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:683
|
||||
#, java-format
|
||||
msgid "Adding {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:730
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:753
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1180
|
||||
#, java-format
|
||||
msgid "Failed to copy torrent file to {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:976
|
||||
#, java-format
|
||||
msgid "Too many files in \"{0}\" ({1}), deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:978
|
||||
#, java-format
|
||||
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:980
|
||||
#, java-format
|
||||
msgid "No pieces in \"{0}\", deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:982
|
||||
#, java-format
|
||||
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:984
|
||||
#, java-format
|
||||
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:985
|
||||
#, java-format
|
||||
msgid "Limit is {0}B"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:987
|
||||
#, java-format
|
||||
msgid "Torrent \"{0}\" has no data, deleting it!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:995
|
||||
#, java-format
|
||||
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1011
|
||||
#, java-format
|
||||
msgid "Error: Could not remove the torrent {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1032
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1050
|
||||
#, java-format
|
||||
msgid "Torrent stopped: \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1071
|
||||
#, java-format
|
||||
msgid "Torrent removed: \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1079
|
||||
#, java-format
|
||||
msgid "Adding torrents in {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1128
|
||||
#, java-format
|
||||
msgid "Download finished: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1176
|
||||
#, java-format
|
||||
msgid "Metainfo received for {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1177
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526
|
||||
#, java-format
|
||||
msgid "Starting up torrent {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
|
||||
msgid "Unable to connect to I2P!"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/SnarkManager.java:1237
|
||||
#, java-format
|
||||
msgid "Unable to add {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:205
|
||||
msgid "I2PSnark - Anonymous BitTorrent Client"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:218
|
||||
msgid "Torrents"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:221
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:228
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028
|
||||
msgid "I2PSnark"
|
||||
msgstr "I2PSnark"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:225
|
||||
msgid "Refresh page"
|
||||
msgstr "Nạp lại trang"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:230
|
||||
msgid "Forum"
|
||||
msgstr "Diễn đàn"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1719
|
||||
msgid "Status"
|
||||
msgstr "Tình trạng"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:290
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:292
|
||||
msgid "Hide Peers"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:299
|
||||
msgid "Show Peers"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1643
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1659
|
||||
msgid "Torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310
|
||||
msgid "Estimated time remaining"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313
|
||||
msgid "ETA"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317
|
||||
msgid "Downloaded"
|
||||
msgstr "Đã tải xuống"
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:320
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:334
|
||||
msgid "RX"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:324
|
||||
msgid "Uploaded"
|
||||
msgstr "Đã tải lên"
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:327
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:344
|
||||
msgid "TX"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:332
|
||||
msgid "Down Rate"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: Please keep short or translate as " "
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:337
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346
|
||||
msgid "Rate"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342
|
||||
msgid "Up Rate"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366
|
||||
msgid "Stop all torrents and the I2P tunnel"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368
|
||||
msgid "Stop All"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377
|
||||
msgid "Start all torrents and the I2P tunnel"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379
|
||||
msgid "Start All"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398
|
||||
msgid "No torrents loaded."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403
|
||||
msgid "Totals"
|
||||
msgstr "Tổng cộng"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405
|
||||
#, java-format
|
||||
msgid "1 torrent"
|
||||
msgid_plural "{0} torrents"
|
||||
msgstr[0] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:408
|
||||
#, java-format
|
||||
msgid "1 connected peer"
|
||||
msgid_plural "{0} connected peers"
|
||||
msgstr[0] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:497
|
||||
#, java-format
|
||||
msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:572
|
||||
#, java-format
|
||||
msgid "Magnet deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578
|
||||
#, java-format
|
||||
msgid "Torrent file deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594
|
||||
#, java-format
|
||||
msgid "Data file deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
|
||||
#, java-format
|
||||
msgid "Data file could not be deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605
|
||||
#, java-format
|
||||
msgid "Data dir deleted: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638
|
||||
msgid "Error creating torrent - you must select a tracker"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653
|
||||
#, java-format
|
||||
msgid "Torrent created for \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Many I2P trackers require you to register new torrents before seeding - "
|
||||
"please do so before starting \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
|
||||
#, java-format
|
||||
msgid "Error creating a torrent for \"{0}\""
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660
|
||||
#, java-format
|
||||
msgid "Cannot create a torrent for the nonexistent data: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
|
||||
msgid "Error creating torrent - you must enter a file or directory"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
|
||||
msgid "Stopping all torrents and closing the I2P tunnel."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677
|
||||
msgid "I2P tunnel closed."
|
||||
msgstr "Đường hầm I2P đóng lại."
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
|
||||
msgid "Opening the I2P tunnel and starting all torrents."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:803
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:808
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:814
|
||||
msgid "Tracker Error"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:806
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:822
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:826
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:834
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:838
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:843
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:847
|
||||
#, java-format
|
||||
msgid "1 peer"
|
||||
msgid_plural "{0} peers"
|
||||
msgstr[0] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824
|
||||
msgid "Seeding"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:828
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1665
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1770
|
||||
msgid "Complete"
|
||||
msgstr "Hoàn tất"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:836
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:840
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845
|
||||
msgid "Stalled"
|
||||
msgstr "Khựng"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:849
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:852
|
||||
msgid "No Peers"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
|
||||
msgid "Stopped"
|
||||
msgstr "Ngưng"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886
|
||||
msgid "Torrent details"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
|
||||
msgid "Info"
|
||||
msgstr "Thông tin"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913
|
||||
msgid "View files"
|
||||
msgstr "Xem tập tin"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:915
|
||||
msgid "Open file"
|
||||
msgstr "Mở tập tin"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:957
|
||||
msgid "Stop the torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:959
|
||||
msgid "Stop"
|
||||
msgstr "Ngưng"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969
|
||||
msgid "Start the torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971
|
||||
msgid "Start"
|
||||
msgstr "Bắt đầu"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982
|
||||
msgid "Remove the torrent from the active list, deleting the .torrent file"
|
||||
msgstr ""
|
||||
|
||||
#. Can't figure out how to escape double quotes inside the onclick string.
|
||||
#. Single quotes in translate strings with parameters must be doubled.
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
|
||||
"data will not be deleted) ?"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990
|
||||
msgid "Remove"
|
||||
msgstr "Bỏ"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001
|
||||
msgid "Delete the .torrent file and the associated data file(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Can't figure out how to escape double quotes inside the onclick string.
|
||||
#. Single quotes in translate strings with parameters must be doubled.
|
||||
#. Then the remaining single quite must be escaped
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
|
||||
#, java-format
|
||||
msgid ""
|
||||
"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
|
||||
"data?"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
|
||||
msgid "Delete"
|
||||
msgstr "Xóa"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1042
|
||||
msgid "Unknown"
|
||||
msgstr "Không rõ"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1054
|
||||
msgid "Seed"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077
|
||||
msgid "Uninteresting (The peer has no pieces we need)"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079
|
||||
msgid "Choked (The peer is not allowing us to request pieces)"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099
|
||||
msgid "Uninterested (We have no pieces the peer needs)"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
|
||||
msgid "Choking (We are not allowing the peer to request pieces)"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159
|
||||
#, java-format
|
||||
msgid "Details at {0} tracker"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188
|
||||
msgid "Add Torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190
|
||||
msgid "From URL"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193
|
||||
msgid ""
|
||||
"Enter the torrent file download URL (I2P only), magnet link, or maggot link"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198
|
||||
msgid "Add torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1201
|
||||
#, java-format
|
||||
msgid "You can also copy .torrent files to: {0}."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203
|
||||
msgid "Removing a .torrent will cause it to stop."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226
|
||||
msgid "Create Torrent"
|
||||
msgstr ""
|
||||
|
||||
#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
|
||||
#. value=\"" + newFile + "\" /><br>\n");
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
|
||||
msgid "Data to seed"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
|
||||
msgid "File or directory to seed (must be within the specified path)"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
|
||||
msgid "Tracker"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
|
||||
msgid "Select a tracker"
|
||||
msgstr ""
|
||||
|
||||
#. out.write(_("Open trackers and DHT only"));
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
|
||||
msgid "Open trackers only"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257
|
||||
msgid "or"
|
||||
msgstr "hoặc"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260
|
||||
msgid "Specify custom tracker announce URL"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263
|
||||
msgid "Create torrent"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1420
|
||||
msgid "Configuration"
|
||||
msgstr "Cấu hình"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1285
|
||||
msgid "Data directory"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
|
||||
msgid "Edit i2psnark.config and restart to change"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291
|
||||
msgid "Auto start"
|
||||
msgstr "Tự động bắt đầu"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295
|
||||
msgid "If checked, automatically start torrents that are added"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299
|
||||
msgid "Theme"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312
|
||||
msgid "Startup delay"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314
|
||||
msgid "minutes"
|
||||
msgstr "phút"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338
|
||||
msgid "Total uploader limit"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1341
|
||||
msgid "peers"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1345
|
||||
msgid "Up bandwidth limit"
|
||||
msgstr "Giới hạn băng thông lên"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
|
||||
msgid "Half available bandwidth recommended."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1350
|
||||
msgid "View or change router bandwidth"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1354
|
||||
msgid "Use open trackers also"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358
|
||||
msgid ""
|
||||
"If checked, announce torrents to open trackers as well as the tracker listed"
|
||||
" in the torrent file"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362
|
||||
msgid "Open tracker announce URLs"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374
|
||||
msgid "Inbound Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1380
|
||||
msgid "Outbound Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1388
|
||||
msgid "I2CP host"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1393
|
||||
msgid "I2CP port"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1406
|
||||
msgid "I2CP options"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411
|
||||
msgid "Save configuration"
|
||||
msgstr "Lưu cấu hình"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436
|
||||
#, java-format
|
||||
msgid "Invalid magnet URL {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
|
||||
#, java-format
|
||||
msgid "Invalid info hash in magnet URL {0}"
|
||||
msgstr ""
|
||||
|
||||
#. * dummies for translation
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500
|
||||
#, java-format
|
||||
msgid "1 hop"
|
||||
msgid_plural "{0} hops"
|
||||
msgstr[0] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501
|
||||
#, java-format
|
||||
msgid "1 tunnel"
|
||||
msgid_plural "{0} tunnels"
|
||||
msgstr[0] ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663
|
||||
msgid "Completion"
|
||||
msgstr ""
|
||||
|
||||
#. else unknown
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1716
|
||||
msgid "Size"
|
||||
msgstr "Kích thước"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672
|
||||
msgid "Files"
|
||||
msgstr "Tập tin"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674
|
||||
msgid "Pieces"
|
||||
msgstr "Mảnh"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675
|
||||
msgid "Piece size"
|
||||
msgstr "Kích thước mảnh"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
|
||||
msgid "Magnet link"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753
|
||||
msgid "Directory"
|
||||
msgstr "Danh mục"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1723
|
||||
msgid "Priority"
|
||||
msgstr "Ưu tiên"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1728
|
||||
msgid "Up to higher level directory"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1758
|
||||
msgid "Torrent not found?"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767
|
||||
msgid "File not found in torrent?"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1780
|
||||
msgid "complete"
|
||||
msgstr "hoàn tất"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1781
|
||||
msgid "bytes remaining"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806
|
||||
msgid "Open"
|
||||
msgstr "Mở"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832
|
||||
msgid "High"
|
||||
msgstr "Cao"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1837
|
||||
msgid "Normal"
|
||||
msgstr "Thường"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842
|
||||
msgid "Skip"
|
||||
msgstr "Lờ"
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851
|
||||
msgid "Save priorities"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967
|
||||
#, java-format
|
||||
msgid "Torrent fetched from {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988
|
||||
#, java-format
|
||||
msgid "Torrent already running: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990
|
||||
#, java-format
|
||||
msgid "Torrent already in the queue: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996
|
||||
#, java-format
|
||||
msgid "Torrent at {0} was not valid"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2003
|
||||
#, java-format
|
||||
msgid "Torrent was not retrieved from {0}"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -20,7 +20,10 @@
|
||||
</classpath>
|
||||
</depend>
|
||||
</target>
|
||||
|
||||
<property name="javac.compilerargs" value="" />
|
||||
<property name="require.gettext" value="true" />
|
||||
|
||||
<target name="compile" depends="depend">
|
||||
<mkdir dir="./build" />
|
||||
<mkdir dir="./build/obj" />
|
||||
@@ -34,10 +37,7 @@
|
||||
</javac>
|
||||
</target>
|
||||
|
||||
<!-- TODO: Move the web classes from the jar to the war - they are not part of the API
|
||||
- This will require sponge to rewrite some seedless stuff that uses it.
|
||||
-->
|
||||
<target name="jar" depends="builddep, compile, jarUpToDate" unless="jar.uptodate" >
|
||||
<target name="listChangedFiles" depends="jarUpToDate" if="shouldListChanges" >
|
||||
<exec executable="mtn" outputproperty="workspace.changes.j" errorproperty="mtn.error2" failifexecutionfails="false" >
|
||||
<arg value="list" />
|
||||
<arg value="changed" />
|
||||
@@ -49,6 +49,15 @@
|
||||
<arg value="[:space:]" />
|
||||
<arg value="," />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
|
||||
<!-- TODO: Move the web classes from the jar to the war - they are not part of the API
|
||||
- This will require sponge to rewrite some seedless stuff that uses it.
|
||||
-->
|
||||
<target name="jar" depends="builddep, compile, jarUpToDate, listChangedFiles" unless="jar.uptodate" >
|
||||
<!-- set if unset -->
|
||||
<property name="workspace.changes.j.tr" value="" />
|
||||
<jar destfile="./build/i2ptunnel.jar" basedir="./build/obj" includes="**/*.class">
|
||||
<manifest>
|
||||
<attribute name="Main-Class" value="net.i2p.i2ptunnel.I2PTunnel" />
|
||||
@@ -64,15 +73,23 @@
|
||||
<uptodate property="jar.uptodate" targetfile="build/i2ptunnel.jar" >
|
||||
<srcfiles dir= "build/obj" includes="**/*.class" />
|
||||
</uptodate>
|
||||
<condition property="shouldListChanges" >
|
||||
<and>
|
||||
<not>
|
||||
<isset property="jar.uptodate" />
|
||||
</not>
|
||||
<isset property="mtn.available" />
|
||||
</and>
|
||||
</condition>
|
||||
</target>
|
||||
|
||||
<target name="bundle" depends="compile, precompilejsp">
|
||||
<!-- Update the messages_*.po files.
|
||||
We need to supply the bat file for windows, and then change the fail property to true -->
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="${require.gettext}" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
</exec>
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="${require.gettext}" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
</exec>
|
||||
<!-- multi-lang is optional -->
|
||||
@@ -83,21 +100,21 @@
|
||||
|
||||
<target name="poupdate" depends="compile, precompilejsp">
|
||||
<!-- Update the messages_*.po files. -->
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="true" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
<arg value="-p" />
|
||||
</exec>
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="true" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
<arg value="-p" />
|
||||
</exec>
|
||||
<exec executable="sh" osfamily="windows" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="windows" failifexecutionfails="true" failonerror="true" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
<arg value="-p" />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="war" depends="precompilejsp, bundle, warUpToDate" unless="war.uptodate" >
|
||||
<target name="listChangedFiles2" depends="warUpToDate" if="shouldListChanges2" >
|
||||
<exec executable="mtn" outputproperty="workspace.changes.w" errorproperty="mtn.error2" failifexecutionfails="false" >
|
||||
<arg value="list" />
|
||||
<arg value="changed" />
|
||||
@@ -109,6 +126,11 @@
|
||||
<arg value="[:space:]" />
|
||||
<arg value="," />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="war" depends="precompilejsp, bundle, warUpToDate, listChangedFiles2" unless="war.uptodate" >
|
||||
<!-- set if unset -->
|
||||
<property name="workspace.changes.w.tr" value="" />
|
||||
<war destfile="build/i2ptunnel.war" webxml="../jsp/web-out.xml"
|
||||
basedir="../jsp/" excludes="web.xml, web-fragment.xml, web-out.xml, **/*.java, *.jsp">
|
||||
<manifest>
|
||||
@@ -123,6 +145,14 @@
|
||||
<uptodate property="war.uptodate" targetfile="build/i2ptunnel.war" >
|
||||
<srcfiles dir= "../jsp" excludes="web.xml, web-fragment.xml, **/*.java, *.jsp" />
|
||||
</uptodate>
|
||||
<condition property="shouldListChanges2" >
|
||||
<and>
|
||||
<not>
|
||||
<isset property="war.uptodate" />
|
||||
</not>
|
||||
<isset property="mtn.available" />
|
||||
</and>
|
||||
</condition>
|
||||
</target>
|
||||
|
||||
<target name="precompilejsp" depends="jar" unless="precompilejsp.uptodate">
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
CLASS=net.i2p.i2ptunnel.web.messages
|
||||
TMPFILE=build/javafiles.txt
|
||||
export TZ=UTC
|
||||
RC=0
|
||||
|
||||
if [ "$1" = "-p" ]
|
||||
then
|
||||
@@ -69,15 +70,17 @@ do
|
||||
-o ${i}t
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo 'Warning - xgettext failed, not updating translations'
|
||||
echo "ERROR - xgettext failed on ${i}, not updating translations"
|
||||
rm -f ${i}t
|
||||
RC=1
|
||||
break
|
||||
fi
|
||||
msgmerge -U --backup=none $i ${i}t
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo 'Warning - msgmerge failed, not updating translations'
|
||||
echo "ERROR - msgmerge failed on ${i}, not updating translations"
|
||||
rm -f ${i}t
|
||||
RC=1
|
||||
break
|
||||
fi
|
||||
rm -f ${i}t
|
||||
@@ -94,11 +97,13 @@ do
|
||||
msgfmt --java --statistics -r $CLASS -l $LG -d ../jsp/WEB-INF/classes $i
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo 'Warning - msgfmt failed, not updating translations'
|
||||
echo "ERROR - msgfmt failed on ${i}, not updating translations"
|
||||
# msgfmt leaves the class file there so the build would work the next time
|
||||
find src/WEB-INF/classes -name messages_${LG}.class -exec rm -f {} \;
|
||||
RC=1
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
rm -f $TMPFILE
|
||||
# todo: return failure
|
||||
exit 0
|
||||
exit $RC
|
||||
|
||||
@@ -18,16 +18,20 @@ import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.I2PException;
|
||||
import net.i2p.client.naming.NamingService;
|
||||
import net.i2p.client.streaming.I2PSocket;
|
||||
import net.i2p.client.streaming.I2PSocketManager;
|
||||
import net.i2p.client.streaming.I2PSocketOptions;
|
||||
import net.i2p.data.Base32;
|
||||
import net.i2p.data.Base64;
|
||||
import net.i2p.data.DataFormatException;
|
||||
import net.i2p.data.DataHelper;
|
||||
import net.i2p.data.Destination;
|
||||
import net.i2p.util.EventDispatcher;
|
||||
@@ -62,7 +66,16 @@ import net.i2p.util.Translate;
|
||||
*/
|
||||
public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runnable {
|
||||
|
||||
private HashMap addressHelpers = new HashMap();
|
||||
/**
|
||||
* Map of host name to base64 destination for destinations collected
|
||||
* via address helper links
|
||||
*/
|
||||
private final ConcurrentHashMap<String, String> addressHelpers = new ConcurrentHashMap(8);
|
||||
|
||||
/**
|
||||
* Used to protect actions via http://proxy.i2p/
|
||||
*/
|
||||
private final String _proxyNonce;
|
||||
|
||||
/**
|
||||
* These are backups if the xxx.ht error page is missing.
|
||||
@@ -130,6 +143,18 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
"or naming one of them differently.<p>")
|
||||
.getBytes();
|
||||
|
||||
private final static byte[] ERR_AHELPER_NEW =
|
||||
("HTTP/1.1 409 New Address\r\n"+
|
||||
"Content-Type: text/html; charset=iso-8859-1\r\n"+
|
||||
"Cache-control: no-cache\r\n"+
|
||||
"\r\n"+
|
||||
"<html><body><H1>New Host Name with Address Helper</H1>"+
|
||||
"The address helper link you followed is for a new host name that is not in your address book. " +
|
||||
"You may either save the destination for this host name to your address book, or remember it only until your router restarts. " +
|
||||
"If you save it to your address book, you will not see this message again. " +
|
||||
"If you do not wish to visit this host, click the \"back\" button on your browser.")
|
||||
.getBytes();
|
||||
|
||||
private final static byte[] ERR_BAD_PROTOCOL =
|
||||
("HTTP/1.1 403 Bad Protocol\r\n"+
|
||||
"Content-Type: text/html; charset=iso-8859-1\r\n"+
|
||||
@@ -162,6 +187,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
|
||||
public I2PTunnelHTTPClient(int localPort, Logging l, I2PSocketManager sockMgr, I2PTunnel tunnel, EventDispatcher notifyThis, long clientId) {
|
||||
super(localPort, l, sockMgr, tunnel, notifyThis, clientId);
|
||||
_proxyNonce = Long.toString(_context.random().nextLong());
|
||||
// proxyList = new ArrayList();
|
||||
|
||||
setName("HTTP Proxy on " + getTunnel().listenHost + ':' + localPort);
|
||||
@@ -177,6 +203,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
String wwwProxy, EventDispatcher notifyThis,
|
||||
I2PTunnel tunnel) throws IllegalArgumentException {
|
||||
super(localPort, ownDest, l, notifyThis, "HTTP Proxy on " + tunnel.listenHost + ':' + localPort + " #" + (++__clientId), tunnel);
|
||||
_proxyNonce = Long.toString(_context.random().nextLong());
|
||||
|
||||
//proxyList = new ArrayList(); // We won't use outside of i2p
|
||||
if (waitEventValue("openBaseClientResult").equals("error")) {
|
||||
@@ -258,12 +285,14 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
return rv;
|
||||
}
|
||||
|
||||
private static final String LOCAL_SERVER = "proxy.i2p";
|
||||
private static final boolean DEFAULT_GZIP = true;
|
||||
// all default to false
|
||||
/** all default to false */
|
||||
public static final String PROP_REFERER = "i2ptunnel.httpclient.sendReferer";
|
||||
public static final String PROP_USER_AGENT = "i2ptunnel.httpclient.sendUserAgent";
|
||||
public static final String PROP_VIA = "i2ptunnel.httpclient.sendVia";
|
||||
public static final String PROP_JUMP_SERVERS = "i2ptunnel.httpclient.jumpServers";
|
||||
public static final String PROP_DISABLE_HELPER = "i2ptunnel.httpclient.disableAddressHelper";
|
||||
|
||||
protected void clientConnectionRun(Socket s) {
|
||||
InputStream in = null;
|
||||
@@ -278,7 +307,10 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
InputReader reader = new InputReader(s.getInputStream());
|
||||
String line, method = null, protocol = null, host = null, destination = null;
|
||||
StringBuilder newRequest = new StringBuilder();
|
||||
int ahelper = 0;
|
||||
boolean ahelperPresent = false;
|
||||
boolean ahelperNew = false;
|
||||
String ahelperKey = null;
|
||||
String userAgent = null;
|
||||
String authorization = null;
|
||||
while ((line = reader.readLine(method)) != null) {
|
||||
line = line.trim();
|
||||
@@ -334,6 +366,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
protocol = request.substring(0, pos + 2);
|
||||
request = request.substring(pos + 2);
|
||||
|
||||
// "foo.i2p/bar/baz HTTP/1.1", with any i2paddresshelper parameter removed
|
||||
targetRequest = request;
|
||||
|
||||
// pos is the start of the path
|
||||
@@ -380,21 +413,20 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
destination = host;
|
||||
host = getHostName(destination);
|
||||
line = method + ' ' + request.substring(pos);
|
||||
} else if (host.toLowerCase().equals("proxy.i2p")) {
|
||||
} else if (host.toLowerCase().equals(LOCAL_SERVER)) {
|
||||
// so we don't do any naming service lookups
|
||||
destination = host;
|
||||
usingInternalServer = true;
|
||||
} else if (host.toLowerCase().endsWith(".i2p")) {
|
||||
// Destination gets the host name
|
||||
destination = host;
|
||||
// Host becomes the destination key
|
||||
// Host becomes the destination's "{b32}.b32.i2p" string, or "i2p" on lookup failure
|
||||
host = getHostName(destination);
|
||||
|
||||
int pos2;
|
||||
if ((pos2 = request.indexOf("?")) != -1) {
|
||||
// Try to find an address helper in the fragments
|
||||
// and split the request into it's component parts for rebuilding later
|
||||
String ahelperKey = null;
|
||||
boolean ahelperConflict = false;
|
||||
|
||||
String fragments = request.substring(pos2 + 1);
|
||||
@@ -404,6 +436,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
String urlEncoding = "";
|
||||
fragments = fragments.substring(0, pos2);
|
||||
String initialFragments = fragments;
|
||||
// FIXME split on ';' also
|
||||
fragments = fragments + "&";
|
||||
String fragment;
|
||||
while(fragments.length() > 0) {
|
||||
@@ -412,35 +445,43 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
fragments = fragments.substring(pos2 + 1);
|
||||
|
||||
// Fragment looks like addresshelper key
|
||||
if (fragment.startsWith("i2paddresshelper=")) {
|
||||
if (fragment.startsWith("i2paddresshelper=") &&
|
||||
!Boolean.valueOf(getTunnel().getClientOptions().getProperty(PROP_DISABLE_HELPER)).booleanValue()) {
|
||||
pos2 = fragment.indexOf("=");
|
||||
ahelperKey = fragment.substring(pos2 + 1);
|
||||
|
||||
// Key contains data, lets not ignore it
|
||||
if (ahelperKey != null) {
|
||||
ahelperPresent = true;
|
||||
// ahelperKey will be validated later
|
||||
|
||||
// Host resolvable only with addresshelper
|
||||
if ( (host == null) || ("i2p".equals(host)) )
|
||||
{
|
||||
// Cannot check, use addresshelper key
|
||||
addressHelpers.put(destination,ahelperKey);
|
||||
} else {
|
||||
// Host resolvable from database, verify addresshelper key
|
||||
// Silently bypass correct keys, otherwise alert
|
||||
String destB64 = null;
|
||||
Destination _dest = _context.namingService().lookup(host);
|
||||
if (_dest != null)
|
||||
destB64 = _dest.toBase64();
|
||||
if (destB64 != null && !destB64.equals(ahelperKey))
|
||||
{
|
||||
if (host == null || "i2p".equals(host)) {
|
||||
// Host lookup failed - resolvable only with addresshelper
|
||||
// Store in local HashMap unless there is conflict
|
||||
String old = addressHelpers.putIfAbsent(destination.toLowerCase(), ahelperKey);
|
||||
ahelperNew = old == null;
|
||||
if ((!ahelperNew) && !old.equals(ahelperKey)) {
|
||||
// Conflict: handle when URL reconstruction done
|
||||
ahelperConflict = true;
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn(getPrefix(requestId) + "Addresshelper key conflict for site [" + destination + "], trusted key [" + destB64 + "], specified key [" + ahelperKey + "].");
|
||||
_log.warn(getPrefix(requestId) + "Addresshelper key conflict for site [" + destination +
|
||||
"], trusted key [" + old + "], specified key [" + ahelperKey + "].");
|
||||
}
|
||||
} else {
|
||||
// If the host is resolvable from database, verify addresshelper key
|
||||
// Silently bypass correct keys, otherwise alert
|
||||
Destination hostDest = _context.namingService().lookup(destination);
|
||||
if (hostDest != null) {
|
||||
String destB64 = hostDest.toBase64();
|
||||
if (destB64 != null && !destB64.equals(ahelperKey)) {
|
||||
// Conflict: handle when URL reconstruction done
|
||||
ahelperConflict = true;
|
||||
if (_log.shouldLog(Log.WARN))
|
||||
_log.warn(getPrefix(requestId) + "Addresshelper key conflict for site [" + destination +
|
||||
"], trusted key [" + destB64 + "], specified key [" + ahelperKey + "].");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} // ahelperKey
|
||||
} else {
|
||||
// Other fragments, just pass along
|
||||
// Append each fragment to urlEncoding
|
||||
@@ -453,11 +494,10 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
}
|
||||
// Reconstruct the request minus the i2paddresshelper GET var
|
||||
request = uriPath + urlEncoding + " " + protocolVersion;
|
||||
targetRequest = request;
|
||||
|
||||
// Did addresshelper key conflict?
|
||||
if (ahelperConflict)
|
||||
{
|
||||
|
||||
if (ahelperConflict) {
|
||||
if (out != null) {
|
||||
// convert ahelperKey to b32
|
||||
String alias = getHostName(ahelperKey);
|
||||
@@ -479,16 +519,15 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
s.close();
|
||||
return;
|
||||
}
|
||||
}
|
||||
} // end query processing
|
||||
|
||||
String addressHelper = (String) addressHelpers.get(destination);
|
||||
if (addressHelper != null) {
|
||||
destination = addressHelper;
|
||||
host = getHostName(destination);
|
||||
ahelper = 1;
|
||||
}
|
||||
String addressHelper = addressHelpers.get(destination);
|
||||
if (addressHelper != null)
|
||||
host = getHostName(addressHelper);
|
||||
|
||||
line = method + " " + request.substring(pos);
|
||||
// end of (host endsWith(".i2p"))
|
||||
|
||||
} else if (host.toLowerCase().equals("localhost") || host.equals("127.0.0.1") ||
|
||||
host.startsWith("192.168.")) {
|
||||
// if somebody is trying to get to 192.168.example.com, oh well
|
||||
@@ -584,10 +623,13 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
line = "Host: " + host;
|
||||
if (_log.shouldLog(Log.INFO))
|
||||
_log.info(getPrefix(requestId) + "Setting host = " + host);
|
||||
} else if (lowercaseLine.startsWith("user-agent: ") &&
|
||||
!Boolean.valueOf(getTunnel().getClientOptions().getProperty(PROP_USER_AGENT)).booleanValue()) {
|
||||
line = null;
|
||||
continue;
|
||||
} else if (lowercaseLine.startsWith("user-agent: ")) {
|
||||
// save for deciding whether to offer address book form
|
||||
userAgent = lowercaseLine.substring(12);
|
||||
if (!Boolean.valueOf(getTunnel().getClientOptions().getProperty(PROP_USER_AGENT)).booleanValue()) {
|
||||
line = null;
|
||||
continue;
|
||||
}
|
||||
} else if (lowercaseLine.startsWith("accept")) {
|
||||
// strip the accept-blah headers, as they vary dramatically from
|
||||
// browser to browser
|
||||
@@ -687,15 +729,6 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug(getPrefix(requestId) + "Destination: " + destination);
|
||||
|
||||
// Serve local proxy files (images, css linked from error pages)
|
||||
// Ignore all the headers
|
||||
// Allow without authorization
|
||||
if (usingInternalServer) {
|
||||
serveLocalFile(out, method, targetRequest);
|
||||
s.close();
|
||||
return;
|
||||
}
|
||||
|
||||
// Authorization
|
||||
if (!authorize(s, requestId, authorization)) {
|
||||
if (_log.shouldLog(Log.WARN)) {
|
||||
@@ -705,19 +738,41 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
_log.warn(getPrefix(requestId) + "Auth required, sending 407");
|
||||
}
|
||||
out.write(getErrorPage("auth", ERR_AUTH));
|
||||
writeFooter(out);
|
||||
s.close();
|
||||
return;
|
||||
}
|
||||
|
||||
// Serve local proxy files (images, css linked from error pages)
|
||||
// Ignore all the headers
|
||||
if (usingInternalServer) {
|
||||
// disable the add form if address helper is disabled
|
||||
if (targetRequest.startsWith(LOCAL_SERVER + "/add?") &&
|
||||
Boolean.valueOf(getTunnel().getClientOptions().getProperty(PROP_DISABLE_HELPER)).booleanValue()) {
|
||||
out.write(ERR_HELPER_DISABLED);
|
||||
} else {
|
||||
serveLocalFile(out, method, targetRequest, _proxyNonce);
|
||||
}
|
||||
s.close();
|
||||
return;
|
||||
}
|
||||
|
||||
// LOOKUP
|
||||
// If the host is "i2p", the getHostName() lookup failed, don't try to
|
||||
// look it up again as the naming service does not do negative caching
|
||||
// so it will be slow.
|
||||
|
||||
Destination clientDest;
|
||||
if ("i2p".equals(host))
|
||||
String addressHelper = addressHelpers.get(destination.toLowerCase());
|
||||
if (addressHelper != null) {
|
||||
clientDest = _context.namingService().lookup(addressHelper);
|
||||
// remove bad entries
|
||||
if (clientDest == null)
|
||||
addressHelpers.remove(destination.toLowerCase());
|
||||
} else if ("i2p".equals(host)) {
|
||||
clientDest = null;
|
||||
else
|
||||
} else {
|
||||
clientDest = _context.namingService().lookup(destination);
|
||||
}
|
||||
|
||||
if (clientDest == null) {
|
||||
//l.log("Could not resolve " + destination + ".");
|
||||
@@ -727,7 +782,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
String jumpServers = null;
|
||||
if (usingWWWProxy)
|
||||
header = getErrorPage("dnfp", ERR_DESTINATION_UNKNOWN);
|
||||
else if(ahelper != 0)
|
||||
else if (ahelperPresent)
|
||||
header = getErrorPage("dnfb", ERR_DESTINATION_UNKNOWN);
|
||||
else if (destination.length() == 60 && destination.endsWith(".b32.i2p"))
|
||||
header = getErrorPage("dnf", ERR_DESTINATION_UNKNOWN);
|
||||
@@ -741,7 +796,35 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
s.close();
|
||||
return;
|
||||
}
|
||||
String remoteID;
|
||||
|
||||
// Address helper response form
|
||||
// This will only load once - the second time it won't be "new"
|
||||
// Don't do this for eepget, which uses a user-agent of "Wget"
|
||||
if (ahelperNew && "GET".equals(method) &&
|
||||
(userAgent == null || !userAgent.startsWith("Wget")) &&
|
||||
!Boolean.valueOf(getTunnel().getClientOptions().getProperty(PROP_DISABLE_HELPER)).booleanValue()) {
|
||||
writeHelperSaveForm(out, destination, ahelperKey, protocol + targetRequest);
|
||||
s.close();
|
||||
return;
|
||||
}
|
||||
|
||||
// Redirect to non-addresshelper URL to not clog the browser address bar
|
||||
// and not pass the parameter to the eepsite.
|
||||
// This also prevents the not-found error page from looking bad
|
||||
// Syndie can't handle a redirect of a POST
|
||||
if (ahelperPresent && !"POST".equals(method)) {
|
||||
String uri = protocol + targetRequest;
|
||||
int spc = uri.indexOf(" ");
|
||||
if (spc >= 0)
|
||||
uri = uri.substring(0, spc);
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Auto redirecting to " + uri);
|
||||
out.write(("HTTP/1.1 301 Address Helper Accepted\r\n"+
|
||||
"Location: " + uri + "\r\n"+
|
||||
"\r\n").getBytes("UTF-8"));
|
||||
s.close();
|
||||
return;
|
||||
}
|
||||
|
||||
Properties opts = new Properties();
|
||||
//opts.setProperty("i2p.streaming.inactivityTimeout", ""+120*1000);
|
||||
@@ -779,6 +862,38 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
}
|
||||
}
|
||||
|
||||
/** @since 0.8.7 */
|
||||
private void writeHelperSaveForm(OutputStream out, String destination, String ahelperKey, String targetRequest) throws IOException {
|
||||
if (out == null)
|
||||
return;
|
||||
// strip HTTP/1.1
|
||||
int protopos = targetRequest.indexOf(" ");
|
||||
if (protopos >= 0)
|
||||
targetRequest = targetRequest.substring(0, protopos);
|
||||
byte[] header = getErrorPage("ahelper-new", ERR_AHELPER_NEW);
|
||||
out.write(header);
|
||||
out.write(("<table><tr><td class=\"mediumtags\" align=\"right\">" + _("Host") + "</td><td class=\"mediumtags\">" + destination + "</td></tr>\n" +
|
||||
"<tr><td class=\"mediumtags\" align=\"right\">" + _("Destination") + "</td><td>" +
|
||||
"<textarea rows=\"1\" style=\"height: 4em; min-width: 0; min-height: 0;\" cols=\"70\" wrap=\"off\" readonly=\"readonly\" >" +
|
||||
ahelperKey + "</textarea></td></tr></table>\n" +
|
||||
"<hr><div class=\"formaction\">"+
|
||||
"<form method=\"GET\" action=\"" + targetRequest + "\">" +
|
||||
"<button type=\"submit\">" + _("Continue to {0} without saving", destination) + "</button>" +
|
||||
"</form>\n<form method=\"GET\" action=\"http://" + LOCAL_SERVER + "/add\">" +
|
||||
"<input type=\"hidden\" name=\"host\" value=\"" + destination + "\">\n" +
|
||||
"<input type=\"hidden\" name=\"dest\" value=\"" + ahelperKey + "\">\n" +
|
||||
"<input type=\"hidden\" name=\"nonce\" value=\"" + _proxyNonce + "\">\n" +
|
||||
"<button type=\"submit\" name=\"router\" value=\"router\">" + _("Save {0} to router address book and continue to eepsite", destination) + "</button><br>\n").getBytes("UTF-8"));
|
||||
if (_context.namingService().getName().equals("BlockfileNamingService")) {
|
||||
// only blockfile supports multiple books
|
||||
out.write(("<button type=\"submit\" name=\"master\" value=\"master\">" + _("Save {0} to master address book and continue to eepsite", destination) + "</button><br>\n").getBytes("UTF-8"));
|
||||
out.write(("<button type=\"submit\" name=\"private\" value=\"private\">" + _("Save {0} to private address book and continue to eepsite", destination) + "</button>\n").getBytes("UTF-8"));
|
||||
}
|
||||
out.write(("<input type=\"hidden\" name=\"url\" value=\"" + targetRequest + "\">\n" +
|
||||
"</form></div></div>").getBytes());
|
||||
writeFooter(out);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the first line unbuffered.
|
||||
* After that, switch to a BufferedReader, unless the method is "POST".
|
||||
@@ -915,7 +1030,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
out.write(errMessage);
|
||||
if (targetRequest != null) {
|
||||
int protopos = targetRequest.indexOf(" ");
|
||||
String uri = null;
|
||||
String uri;
|
||||
if (protopos >= 0)
|
||||
uri = targetRequest.substring(0, protopos);
|
||||
else
|
||||
@@ -1022,6 +1137,20 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
"HTTP Proxy local file not found")
|
||||
.getBytes();
|
||||
|
||||
private final static byte[] ERR_ADD =
|
||||
("HTTP/1.1 409 Bad\r\n"+
|
||||
"Content-Type: text/plain\r\n"+
|
||||
"\r\n"+
|
||||
"Add to addressbook failed - bad parameters")
|
||||
.getBytes();
|
||||
|
||||
private final static byte[] ERR_HELPER_DISABLED =
|
||||
("HTTP/1.1 403 Disabled\r\n"+
|
||||
"Content-Type: text/plain\r\n"+
|
||||
"\r\n"+
|
||||
"Address helpers disabled")
|
||||
.getBytes();
|
||||
|
||||
/**
|
||||
* Very simple web server.
|
||||
*
|
||||
@@ -1043,9 +1172,10 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
*
|
||||
* @param targetRequest "proxy.i2p/themes/foo.png HTTP/1.1"
|
||||
*/
|
||||
private static void serveLocalFile(OutputStream out, String method, String targetRequest) {
|
||||
private static void serveLocalFile(OutputStream out, String method, String targetRequest, String proxyNonce) {
|
||||
//System.err.println("targetRequest: \"" + targetRequest + "\"");
|
||||
// a home page message for the curious...
|
||||
if (targetRequest.startsWith("proxy.i2p/ ")) {
|
||||
if (targetRequest.startsWith(LOCAL_SERVER + "/ ")) {
|
||||
try {
|
||||
out.write(("HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nCache-Control: max-age=86400\r\n\r\nI2P HTTP proxy OK").getBytes());
|
||||
out.flush();
|
||||
@@ -1053,12 +1183,12 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
return;
|
||||
}
|
||||
if ((method.equals("GET") || method.equals("HEAD")) &&
|
||||
targetRequest.startsWith("proxy.i2p/themes/") &&
|
||||
targetRequest.startsWith(LOCAL_SERVER + "/themes/") &&
|
||||
!targetRequest.contains("..")) {
|
||||
int space = targetRequest.indexOf(' ');
|
||||
String filename = null;
|
||||
try {
|
||||
filename = targetRequest.substring(17, space); // "proxy.i2p/themes/".length
|
||||
filename = targetRequest.substring(LOCAL_SERVER.length() + 8, space); // "/themes/".length
|
||||
} catch (IndexOutOfBoundsException ioobe) {}
|
||||
// theme hack
|
||||
if (filename.startsWith("console/default/"))
|
||||
@@ -1081,9 +1211,65 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
out.write(type.getBytes());
|
||||
out.write("\r\nCache-Control: max-age=86400\r\n\r\n".getBytes());
|
||||
FileUtil.readFile(filename, themesDir.getAbsolutePath(), out);
|
||||
} catch (IOException ioe) {}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Add to addressbook (form submit)
|
||||
// Parameters are url, host, dest, nonce, and master | router | private.
|
||||
// Do the add and redirect.
|
||||
if (targetRequest.startsWith(LOCAL_SERVER + "/add?")) {
|
||||
int spc = targetRequest.indexOf(' ');
|
||||
String query = targetRequest.substring(LOCAL_SERVER.length() + 5, spc); // "/add?".length()
|
||||
Map<String, String> opts = new HashMap(8);
|
||||
StringTokenizer tok = new StringTokenizer(query, "=&;");
|
||||
while (tok.hasMoreTokens()) {
|
||||
String k = tok.nextToken();
|
||||
if (!tok.hasMoreTokens())
|
||||
break;
|
||||
String v = tok.nextToken();
|
||||
opts.put(decode(k), decode(v));
|
||||
}
|
||||
|
||||
String url = opts.get("url");
|
||||
String host = opts.get("host");
|
||||
String b64Dest = opts.get("dest");
|
||||
String nonce = opts.get("nonce");
|
||||
String book = "privatehosts.txt";
|
||||
if (opts.get("master") != null)
|
||||
book = "userhosts.txt";
|
||||
else if (opts.get("router") != null)
|
||||
book = "hosts.txt";
|
||||
Destination dest = null;
|
||||
if (b64Dest != null) {
|
||||
try {
|
||||
dest = new Destination(b64Dest);
|
||||
} catch (DataFormatException dfe) {
|
||||
System.err.println("Bad dest to save?" + b64Dest);
|
||||
}
|
||||
}
|
||||
//System.err.println("url : \"" + url + "\"");
|
||||
//System.err.println("host : \"" + host + "\"");
|
||||
//System.err.println("b64dest : \"" + b64Dest + "\"");
|
||||
//System.err.println("book : \"" + book + "\"");
|
||||
//System.err.println("nonce : \"" + nonce + "\"");
|
||||
if (proxyNonce.equals(nonce) && url != null && host != null && dest != null) {
|
||||
try {
|
||||
NamingService ns = I2PAppContext.getGlobalContext().namingService();
|
||||
Properties nsOptions = new Properties();
|
||||
nsOptions.setProperty("list", book);
|
||||
nsOptions.setProperty("s", _("Added via address helper"));
|
||||
boolean success = ns.put(host, dest, nsOptions);
|
||||
writeRedirectPage(out, success, host, book, url);
|
||||
return;
|
||||
} catch (IOException ioe) {}
|
||||
}
|
||||
try {
|
||||
out.write(ERR_ADD);
|
||||
out.flush();
|
||||
} catch (IOException ioe) {}
|
||||
return;
|
||||
}
|
||||
try {
|
||||
out.write(ERR_404);
|
||||
@@ -1091,16 +1277,72 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
|
||||
} catch (IOException ioe) {}
|
||||
}
|
||||
|
||||
/** @since 0.8.7 */
|
||||
private static void writeRedirectPage(OutputStream out, boolean success, String host, String book, String url) throws IOException {
|
||||
out.write(("HTTP/1.1 200 OK\r\n"+
|
||||
"Content-Type: text/html; charset=UTF-8\r\n"+
|
||||
"\r\n"+
|
||||
"<html><head>"+
|
||||
"<title>" + _("Redirecting to {0}", host) + "</title>\n" +
|
||||
"<link rel=\"shortcut icon\" href=\"http://proxy.i2p/themes/console/images/favicon.ico\" >\n" +
|
||||
"<link href=\"http://proxy.i2p/themes/console/default/console.css\" rel=\"stylesheet\" type=\"text/css\" >\n" +
|
||||
"<meta http-equiv=\"Refresh\" content=\"1; url=" + url + "\">\n" +
|
||||
"</head><body>\n" +
|
||||
"<div class=logo>\n" +
|
||||
"<a href=\"http://127.0.0.1:7657/\" title=\"" + _("Router Console") + "\"><img src=\"http://proxy.i2p/themes/console/images/i2plogo.png\" alt=\"I2P Router Console\" border=\"0\"></a><hr>\n" +
|
||||
"<a href=\"http://127.0.0.1:7657/config\">" + _("Configuration") + "</a> <a href=\"http://127.0.0.1:7657/help.jsp\">" + _("Help") + "</a> <a href=\"http://127.0.0.1:7657/susidns/index.jsp\">" + _("Addressbook") + "</a>\n" +
|
||||
"</div>" +
|
||||
"<div class=warning id=warning>\n" +
|
||||
"<h3>" +
|
||||
(success ?
|
||||
_("Saved {0} to the {1} addressbook, redirecting now.", host, book) :
|
||||
_("Failed to save {0} to the {1} addressbook, redirecting now.", host, book)) +
|
||||
"</h3>\n<p><a href=\"" + url + "\">" +
|
||||
_("Click here if you are not redirected automatically.") +
|
||||
"</a></p></div>").getBytes("UTF-8"));
|
||||
writeFooter(out);
|
||||
out.flush();
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode %xx encoding
|
||||
* @since 0.8.7
|
||||
*/
|
||||
private static String decode(String s) {
|
||||
if (!s.contains("%"))
|
||||
return s;
|
||||
StringBuilder buf = new StringBuilder(s.length());
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
char c = s.charAt(i);
|
||||
if (c != '%') {
|
||||
buf.append(c);
|
||||
} else {
|
||||
try {
|
||||
buf.append((char) Integer.parseInt(s.substring(++i, (++i) + 1), 16));
|
||||
} catch (IndexOutOfBoundsException ioobe) {
|
||||
break;
|
||||
} catch (NumberFormatException nfe) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
private static final String BUNDLE_NAME = "net.i2p.i2ptunnel.web.messages";
|
||||
|
||||
/** lang in routerconsole.lang property, else current locale */
|
||||
public static String _(String key) {
|
||||
protected static String _(String key) {
|
||||
return Translate.getString(key, I2PAppContext.getGlobalContext(), BUNDLE_NAME);
|
||||
}
|
||||
|
||||
/** {0} */
|
||||
protected static String _(String key, Object o) {
|
||||
return Translate.getString(key, o, I2PAppContext.getGlobalContext(), BUNDLE_NAME);
|
||||
}
|
||||
|
||||
/** {0} and {1} */
|
||||
public static String _(String key, Object o, Object o2) {
|
||||
protected static String _(String key, Object o, Object o2) {
|
||||
return Translate.getString(key, o, o2, I2PAppContext.getGlobalContext(), BUNDLE_NAME);
|
||||
}
|
||||
|
||||
|
||||
@@ -116,11 +116,6 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
|
||||
// according to rfc2616 s14.3, this *should* force identity, even if
|
||||
// "identity;q=1, *;q=0" didn't.
|
||||
setEntry(headers, "Accept-encoding", "");
|
||||
String modifiedHeader = formatHeaders(headers, command);
|
||||
|
||||
//String modifiedHeader = getModifiedHeader(socket);
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Modified header: [" + modifiedHeader + "]");
|
||||
|
||||
socket.setReadTimeout(readTimeout);
|
||||
Socket s = new Socket(remoteHost, remotePort);
|
||||
@@ -143,6 +138,10 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
|
||||
// Don't pass this on, outproxies should strip so I2P traffic isn't so obvious but they probably don't
|
||||
if (alt)
|
||||
headers.remove("X-Accept-encoding");
|
||||
|
||||
String modifiedHeader = formatHeaders(headers, command);
|
||||
if (_log.shouldLog(Log.DEBUG))
|
||||
_log.debug("Modified header: [" + modifiedHeader + "]");
|
||||
|
||||
if (allowGZIP && useGZIP) {
|
||||
I2PAppThread req = new I2PAppThread(
|
||||
|
||||
@@ -395,7 +395,8 @@ public class I2PTunnelIRCClient extends I2PTunnelClientBase implements Runnable
|
||||
"HELPME",
|
||||
"RULES",
|
||||
"TOPIC",
|
||||
"ISON" // jIRCii uses this for a ping (response is 303)
|
||||
"ISON", // jIRCii uses this for a ping (response is 303)
|
||||
"INVITE"
|
||||
};
|
||||
|
||||
if(field[0].length()==0)
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P i2ptunnel\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
|
||||
"POT-Creation-Date: 2011-06-11 08:23+0000\n"
|
||||
"PO-Revision-Date: 2010-06-15 14:09+0100\n"
|
||||
"Last-Translator: duck <duck@mail.i2p>\n"
|
||||
"Language-Team: duck <duck@mail.i2p>\n"
|
||||
@@ -18,7 +18,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:514
|
||||
#, java-format
|
||||
msgid ""
|
||||
"To visit the destination in your host database, click <a href=\"{0}\">here</"
|
||||
@@ -26,11 +26,83 @@ msgid ""
|
||||
"\"{1}\">here</a>."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:875
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:876
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370
|
||||
msgid "Destination"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:881
|
||||
#, java-format
|
||||
msgid "Continue to {0} without saving"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:886
|
||||
#, java-format
|
||||
msgid "Save {0} to router address book and continue to eepsite"
|
||||
msgstr ""
|
||||
|
||||
#. only blockfile supports multiple books
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:889
|
||||
#, java-format
|
||||
msgid "Save {0} to master address book and continue to eepsite"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:890
|
||||
#, java-format
|
||||
msgid "Save {0} to private address book and continue to eepsite"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1046
|
||||
msgid ""
|
||||
"Click a link below to look for an address helper by using a \"jump\" service:"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1262
|
||||
msgid "Added via address helper"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1286
|
||||
#, java-format
|
||||
msgid "Redirecting to {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1292
|
||||
msgid "Router Console"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1293
|
||||
msgid "Addressbook"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1293
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1293
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1298
|
||||
#, java-format
|
||||
msgid "Saved {0} to the {1} addressbook, redirecting now."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1299
|
||||
#, java-format
|
||||
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1301
|
||||
msgid "Click here if you are not redirected automatically."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336
|
||||
msgid "internal"
|
||||
@@ -117,12 +189,12 @@ msgid "HTTP bidir"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293
|
||||
msgid "Host not set"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:275
|
||||
msgid "Port not set"
|
||||
msgstr ""
|
||||
|
||||
@@ -140,24 +212,24 @@ msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:242
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:110
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:124
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:245
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:260
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:249
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:282
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:229
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:389
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
@@ -392,17 +464,11 @@ msgstr ""
|
||||
msgid "Router I2CP Address"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:247
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:269
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
|
||||
@@ -650,131 +716,127 @@ msgstr ""
|
||||
msgid "Modify"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:71
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:74
|
||||
msgid "I2P Tunnel Manager - List"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:86
|
||||
msgid "Status Messages"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:87
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:90
|
||||
msgid "Refresh"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:91
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:94
|
||||
msgid "Stop All"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:98
|
||||
msgid "Start All"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:102
|
||||
msgid "Restart All"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:106
|
||||
msgid "Reload Config"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:108
|
||||
msgid "I2P Server Tunnels"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:133
|
||||
msgid "Points at"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:153
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:157
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:114
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:156
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:160
|
||||
msgid "Preview"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:180
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:300
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:166
|
||||
msgid "Base32 Address"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:174
|
||||
msgid "No Preview"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:187
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:307
|
||||
msgid "Starting..."
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:194
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:208
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:314
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:328
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:342
|
||||
msgid "Stop"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:201
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:335
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:215
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:349
|
||||
msgid "Stopped"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:222
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:356
|
||||
msgid "Start"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:237
|
||||
msgid "New server tunnel"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:239
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:399
|
||||
msgid "Standard"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:241
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:401
|
||||
msgid "Create"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:243
|
||||
msgid "I2P Client Tunnels"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:286
|
||||
msgid "Interface"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:321
|
||||
msgid "Standby"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366
|
||||
msgid "Outproxy"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367
|
||||
msgid "Destination"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:384
|
||||
msgid "none"
|
||||
msgstr ""
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:397
|
||||
msgid "New client tunnel"
|
||||
msgstr ""
|
||||
|
||||
@@ -7,9 +7,9 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
|
||||
"PO-Revision-Date: 2011-04-18 21:39+0100\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-06-02 16:13+0000\n"
|
||||
"PO-Revision-Date: 2011-06-24 09:44+0100\n"
|
||||
"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
|
||||
"Language-Team: Spanish (Castilian) <None>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -18,15 +18,87 @@ msgstr ""
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:514
|
||||
#, java-format
|
||||
msgid "To visit the destination in your host database, click <a href=\"{0}\">here</a>. To visit the conflicting addresshelper destination, click <a href=\"{1}\">here</a>."
|
||||
msgstr "Para visitar el destino en la base de datos de hosts, haga clic <a href=\"{0}\">aquí</a> . Para visitar el destino del ayudante de direcciones en conflicto, haga clic <a href=\"{1}\">aquí</a> ."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:875
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
|
||||
msgid "Host"
|
||||
msgstr "Host"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:876
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370
|
||||
msgid "Destination"
|
||||
msgstr "Destino"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:881
|
||||
#, java-format
|
||||
msgid "Continue to {0} without saving"
|
||||
msgstr "Acceder a {0} sin guardar"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:886
|
||||
#, java-format
|
||||
msgid "Save {0} to router address book and continue to eepsite"
|
||||
msgstr "Guardar {0} a la libreta de direcciones del router y acceder al sitio i2p."
|
||||
|
||||
#. only blockfile supports multiple books
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:889
|
||||
#, java-format
|
||||
msgid "Save {0} to master address book and continue to eepsite"
|
||||
msgstr "Guardar {0} a la libreta de direcciones principal y acceder al sitio i2p."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:890
|
||||
#, java-format
|
||||
msgid "Save {0} to private address book and continue to eepsite"
|
||||
msgstr "Guardar {0} a la libreta de direcciones privada y acceder al sitio i2p."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1046
|
||||
msgid "Click a link below to look for an address helper by using a \"jump\" service:"
|
||||
msgstr "Haga clic en un enlace de debajo para buscar un ayudante de direcciones mediante el uso de un servicio de \"salto\":"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1262
|
||||
msgid "Added via address helper"
|
||||
msgstr "Agregado por la ayuda a las direcciones."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1286
|
||||
#, java-format
|
||||
msgid "Redirecting to {0}"
|
||||
msgstr "Accediendo a {0}"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1292
|
||||
msgid "Router Console"
|
||||
msgstr "Consola del Router"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1293
|
||||
msgid "Addressbook"
|
||||
msgstr "Libreta de direcciones"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1293
|
||||
msgid "Configuration"
|
||||
msgstr "Ajustes"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1293
|
||||
msgid "Help"
|
||||
msgstr "Ayuda"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1298
|
||||
#, java-format
|
||||
msgid "Saved {0} to the {1} addressbook, redirecting now."
|
||||
msgstr "{0} ha sido guardada en la {1}, accediendo ahora."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1299
|
||||
#, java-format
|
||||
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
|
||||
msgstr "No se ha podido guardar {0} en la {1}, accediendo ahora."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1301
|
||||
msgid "Click here if you are not redirected automatically."
|
||||
msgstr "Haz click aquí si no estás siendo enviado automáticamente."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336
|
||||
msgid "internal"
|
||||
@@ -111,12 +183,12 @@ msgid "HTTP bidir"
|
||||
msgstr "HTTP bidir"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293
|
||||
msgid "Host not set"
|
||||
msgstr "Host no establecido"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:275
|
||||
msgid "Port not set"
|
||||
msgstr "Puerto no establecido"
|
||||
|
||||
@@ -134,24 +206,24 @@ msgstr "Nueva configuración de proxy"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:242
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:110
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:124
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:245
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:260
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:249
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:282
|
||||
msgid "Type"
|
||||
msgstr "Tipo"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:229
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:389
|
||||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
@@ -376,17 +448,11 @@ msgstr "para las conexiones de solicitud/respuesta"
|
||||
msgid "Router I2CP Address"
|
||||
msgstr "Dirección I2CP del router"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
|
||||
msgid "Host"
|
||||
msgstr "Host"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:247
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:269
|
||||
msgid "Port"
|
||||
msgstr "Puerto"
|
||||
|
||||
@@ -632,132 +698,128 @@ msgstr "Modificar Certificado"
|
||||
msgid "Modify"
|
||||
msgstr "Modificar"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:71
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:74
|
||||
msgid "I2P Tunnel Manager - List"
|
||||
msgstr "Gestor de túneles I2P - Lista"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:86
|
||||
msgid "Status Messages"
|
||||
msgstr "Mensajes de estado"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:87
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:90
|
||||
msgid "Refresh"
|
||||
msgstr "Actualizar"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:91
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:94
|
||||
msgid "Stop All"
|
||||
msgstr "Detener todos"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:98
|
||||
msgid "Start All"
|
||||
msgstr "Iniciar todos"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:102
|
||||
msgid "Restart All"
|
||||
msgstr "Reiniciar todos"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:106
|
||||
msgid "Reload Config"
|
||||
msgstr "Actualizar configuración"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:108
|
||||
msgid "I2P Server Tunnels"
|
||||
msgstr "Túneles de servidor I2P"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:133
|
||||
msgid "Points at"
|
||||
msgstr "Apunta a"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:153
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:157
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:114
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:156
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:160
|
||||
msgid "Preview"
|
||||
msgstr "Preview"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:180
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:300
|
||||
msgid "Status"
|
||||
msgstr "Estado"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:166
|
||||
msgid "Base32 Address"
|
||||
msgstr "Dirección Base32"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:174
|
||||
msgid "No Preview"
|
||||
msgstr "Sin vista previa"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:187
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:307
|
||||
msgid "Starting..."
|
||||
msgstr "Iniciando..."
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:194
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:208
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:314
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:328
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:342
|
||||
msgid "Stop"
|
||||
msgstr "Detener"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:201
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:335
|
||||
msgid "Running"
|
||||
msgstr "Ejecutándose"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:215
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:349
|
||||
msgid "Stopped"
|
||||
msgstr "Detenido"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:222
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:356
|
||||
msgid "Start"
|
||||
msgstr "Iniciar"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:237
|
||||
msgid "New server tunnel"
|
||||
msgstr "Nuevo servidor de túnel"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:239
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:399
|
||||
msgid "Standard"
|
||||
msgstr "Estándar"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:241
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:401
|
||||
msgid "Create"
|
||||
msgstr "Crear"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:243
|
||||
msgid "I2P Client Tunnels"
|
||||
msgstr "Túneles de cliente I2P"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:286
|
||||
msgid "Interface"
|
||||
msgstr "Interfaz"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:321
|
||||
msgid "Standby"
|
||||
msgstr "En espera"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366
|
||||
msgid "Outproxy"
|
||||
msgstr "Outproxy"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367
|
||||
msgid "Destination"
|
||||
msgstr "Destino"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:384
|
||||
msgid "none"
|
||||
msgstr "ninguno"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:397
|
||||
msgid "New client tunnel"
|
||||
msgstr "Nuevo túnel de cliente"
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P i2ptunnel\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-02-14 18:14+0000\n"
|
||||
"PO-Revision-Date: 2011-02-14 23:24+0500\n"
|
||||
"POT-Creation-Date: 2011-06-18 14:08+0000\n"
|
||||
"PO-Revision-Date: 2011-06-20 22:55+0500\n"
|
||||
"Last-Translator: Hidden Z <hiddenz@mail.i2p>\n"
|
||||
"Language-Team: foo <foo@bar>\n"
|
||||
"Language: \n"
|
||||
@@ -18,15 +18,87 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Russian\n"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:514
|
||||
#, java-format
|
||||
msgid "To visit the destination in your host database, click <a href=\"{0}\">here</a>. To visit the conflicting addresshelper destination, click <a href=\"{1}\">here</a>."
|
||||
msgstr "Для перехода по ссылке из локальной адресной книги, нажмите <a href=\"{0}\">здесь</a>. Для перехода по новой addresshelper-ссылке, нажмите <a href=\"{1}\">здесь</a>."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:875
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
|
||||
msgid "Host"
|
||||
msgstr "Адрес"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:876
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370
|
||||
msgid "Destination"
|
||||
msgstr "Адрес назначения"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:881
|
||||
#, java-format
|
||||
msgid "Continue to {0} without saving"
|
||||
msgstr "Продолжить переход к {0} без сохранения"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:886
|
||||
#, java-format
|
||||
msgid "Save {0} to router address book and continue to eepsite"
|
||||
msgstr "Сохранить {0} в адресную книгу роутера (router address book) и продолжить переход к eep-сайту"
|
||||
|
||||
#. only blockfile supports multiple books
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:889
|
||||
#, java-format
|
||||
msgid "Save {0} to master address book and continue to eepsite"
|
||||
msgstr "Сохранить {0} в основную (master) адресную книгу и продолжить переход к eep-сайту"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:890
|
||||
#, java-format
|
||||
msgid "Save {0} to private address book and continue to eepsite"
|
||||
msgstr "Сохранить {0} в приватную адресную книгу и продолжить переход к eep-сайту"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1046
|
||||
msgid "Click a link below to look for an address helper by using a \"jump\" service:"
|
||||
msgstr "Jump-сервисы, которые, возможно, знают нужную Вам addresshelper-ссылку:"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1262
|
||||
msgid "Added via address helper"
|
||||
msgstr "Добавлен через address helper"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1286
|
||||
#, java-format
|
||||
msgid "Redirecting to {0}"
|
||||
msgstr "Перенаправляем к {0}"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1292
|
||||
msgid "Router Console"
|
||||
msgstr "Консоль маршрутизатора I2P"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1293
|
||||
msgid "Addressbook"
|
||||
msgstr "Адресная книга"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1293
|
||||
msgid "Configuration"
|
||||
msgstr "Настройки"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1293
|
||||
msgid "Help"
|
||||
msgstr "Помощь"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1298
|
||||
#, java-format
|
||||
msgid "Saved {0} to the {1} addressbook, redirecting now."
|
||||
msgstr "{0} сохранён в {1}, перенаправляем."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1299
|
||||
#, java-format
|
||||
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
|
||||
msgstr "Не удалось сохранить {0} в {1} адресную книгу, перенаправляем."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1301
|
||||
msgid "Click here if you are not redirected automatically."
|
||||
msgstr "Нажмите сюда если автоматическое перенаправление не сработало"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336
|
||||
msgid "internal"
|
||||
@@ -111,12 +183,12 @@ msgid "HTTP bidir"
|
||||
msgstr "HTTP bidir (экспериментальный двунаправленный режим, инструкцию спрашивайте у sponge)"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293
|
||||
msgid "Host not set"
|
||||
msgstr "Хост не задан"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:275
|
||||
msgid "Port not set"
|
||||
msgstr "Порт не задан"
|
||||
|
||||
@@ -134,24 +206,24 @@ msgstr "Настройки нового клиентского туннеля"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:242
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:110
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:124
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:245
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:260
|
||||
msgid "Name"
|
||||
msgstr "Название"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:249
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:282
|
||||
msgid "Type"
|
||||
msgstr "Тип"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:229
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:389
|
||||
msgid "Description"
|
||||
msgstr "Описание"
|
||||
|
||||
@@ -376,17 +448,11 @@ msgstr "оптимизация для соединений, начинающих
|
||||
msgid "Router I2CP Address"
|
||||
msgstr "I2CP Адрес Роутера"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
|
||||
msgid "Host"
|
||||
msgstr "Адрес"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:247
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:269
|
||||
msgid "Port"
|
||||
msgstr "Порт"
|
||||
|
||||
@@ -632,133 +698,129 @@ msgstr "Изменить сертификат"
|
||||
msgid "Modify"
|
||||
msgstr "Изменить"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:71
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:74
|
||||
msgid "I2P Tunnel Manager - List"
|
||||
msgstr "Менеджер Туннелей I2P — Список"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:86
|
||||
msgid "Status Messages"
|
||||
msgstr "Сообщения о состоянии"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:87
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:90
|
||||
msgid "Refresh"
|
||||
msgstr "Обновить"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:91
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:94
|
||||
msgid "Stop All"
|
||||
msgstr "Остановить все"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:98
|
||||
msgid "Start All"
|
||||
msgstr "Запустить все"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:102
|
||||
msgid "Restart All"
|
||||
msgstr "Перезапустить все"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:106
|
||||
msgid "Reload Config"
|
||||
msgstr "Перезагрузить настройки"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:108
|
||||
msgid "I2P Server Tunnels"
|
||||
msgstr "Серверные I2P туннели"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:133
|
||||
msgid "Points at"
|
||||
msgstr "Указывает на"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:153
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:157
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:114
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:156
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:160
|
||||
msgid "Preview"
|
||||
msgstr "Предпросмотр"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:180
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:300
|
||||
msgid "Status"
|
||||
msgstr "Состояние"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:166
|
||||
msgid "Base32 Address"
|
||||
msgstr "Base32-адрес"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:174
|
||||
msgid "No Preview"
|
||||
msgstr "Предпросмотр недоступен"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:187
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:307
|
||||
msgid "Starting..."
|
||||
msgstr "Запускается..."
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:194
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:208
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:314
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:328
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:342
|
||||
msgid "Stop"
|
||||
msgstr "Остановить"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:201
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:335
|
||||
msgid "Running"
|
||||
msgstr "Запущен"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:215
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:349
|
||||
msgid "Stopped"
|
||||
msgstr "Остановлен"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:222
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:356
|
||||
msgid "Start"
|
||||
msgstr "Запустить"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:237
|
||||
msgid "New server tunnel"
|
||||
msgstr "Новый серверный туннель"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:239
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:399
|
||||
msgid "Standard"
|
||||
msgstr "Стандартный"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:241
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:401
|
||||
msgid "Create"
|
||||
msgstr "Создать"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:243
|
||||
msgid "I2P Client Tunnels"
|
||||
msgstr "Клиентские I2P туннели"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:286
|
||||
msgid "Interface"
|
||||
msgstr "Сетевой интерфейс"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:321
|
||||
msgid "Standby"
|
||||
msgstr "Режим ожидания"
|
||||
|
||||
# This term intentionally left in English
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366
|
||||
msgid "Outproxy"
|
||||
msgstr "Outproxy"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367
|
||||
msgid "Destination"
|
||||
msgstr "Адрес назначения"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:384
|
||||
msgid "none"
|
||||
msgstr "нет"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:397
|
||||
msgid "New client tunnel"
|
||||
msgstr "Новый клиентский туннель"
|
||||
|
||||
|
||||
806
apps/i2ptunnel/locale/messages_sv.po
Normal file
806
apps/i2ptunnel/locale/messages_sv.po
Normal file
@@ -0,0 +1,806 @@
|
||||
# I2P
|
||||
# Copyright (C) 2009 The I2P Project
|
||||
# This file is distributed under the same license as the i2ptunnel package.
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-05-24 06:00+0000\n"
|
||||
"PO-Revision-Date: 2011-06-03 17:14+0000\n"
|
||||
"Last-Translator: digitalmannen <digitalmannen@gmail.com>\n"
|
||||
"Language-Team: Swedish (Sweden) (http://www.transifex.net/projects/p/I2P/team/sv_SE/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sv_SE\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474
|
||||
#, java-format
|
||||
msgid ""
|
||||
"To visit the destination in your host database, click <a "
|
||||
"href=\"{0}\">here</a>. To visit the conflicting addresshelper destination, "
|
||||
"click <a href=\"{1}\">here</a>."
|
||||
msgstr ""
|
||||
"För att besöka målet i din värd databas href=\"{0}\"> klicka <a här </ a>. "
|
||||
"För att besöka de motstridiga hjälpaddresserna,<a href=\"{1}\"> klicka <a "
|
||||
"här </ a>."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
|
||||
msgid ""
|
||||
"Click a link below to look for an address helper by using a \"jump\" "
|
||||
"service:"
|
||||
msgstr ""
|
||||
"Klicka på en länk nedan för att söka efter en hjälpaddress genom att använda"
|
||||
" en \"hopp\" tjänst"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336
|
||||
msgid "internal"
|
||||
msgstr "Intern "
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171
|
||||
msgid ""
|
||||
"Invalid form submission, probably because you used the 'back' or 'reload' "
|
||||
"button on your browser. Please resubmit."
|
||||
msgstr ""
|
||||
"Ogiltigt formulärbegäran, beror troligtvis på attt du använde 'tillbaka' "
|
||||
"eller 'uppdatera' knappen. Försök att skicka igen"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218
|
||||
msgid "Configuration reloaded for all tunnels"
|
||||
msgstr "Konfigurationen uppdateras för alla tunnlar"
|
||||
|
||||
#. and give them something to look at in any case
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230
|
||||
msgid "Starting tunnel"
|
||||
msgstr "Startar tunnel"
|
||||
|
||||
#. and give them something to look at in any case
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243
|
||||
msgid "Stopping tunnel"
|
||||
msgstr "Stannar tunnel"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311
|
||||
msgid "Configuration changes saved"
|
||||
msgstr "Konfigurationsändringar sparas"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Det gick inte att spara konfigurationen"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398
|
||||
msgid "New Tunnel"
|
||||
msgstr "Ny tunnel"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418
|
||||
msgid "Standard client"
|
||||
msgstr "Standard klient"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419
|
||||
msgid "HTTP client"
|
||||
msgstr "HTTP-klient"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420
|
||||
msgid "IRC client"
|
||||
msgstr "IRC-klient"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421
|
||||
msgid "Standard server"
|
||||
msgstr "Standard server"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422
|
||||
msgid "HTTP server"
|
||||
msgstr "HTTP server"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423
|
||||
msgid "SOCKS 4/4a/5 proxy"
|
||||
msgstr "SOCKS 4/4a/5 proxy"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424
|
||||
msgid "SOCKS IRC proxy"
|
||||
msgstr "SOCKS IRC proxy"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425
|
||||
msgid "CONNECT/SSL/HTTPS proxy"
|
||||
msgstr "CONNECT/SSL/HTTPS proxy"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426
|
||||
msgid "IRC server"
|
||||
msgstr "IRC-server"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427
|
||||
msgid "Streamr client"
|
||||
msgstr "Klient för Streamr "
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428
|
||||
msgid "Streamr server"
|
||||
msgstr "Server för Streamr"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429
|
||||
msgid "HTTP bidir"
|
||||
msgstr "HTTP bidir"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293
|
||||
msgid "Host not set"
|
||||
msgstr "Ingen värd angiven"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:275
|
||||
msgid "Port not set"
|
||||
msgstr "Ingen port angiven"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73
|
||||
msgid "I2P Tunnel Manager - Edit Client Tunnel"
|
||||
msgstr "I2P Tunnelhanterare - Redigera klienttunnlar"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93
|
||||
msgid "Edit proxy settings"
|
||||
msgstr "Redigera proxyinställningar"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101
|
||||
msgid "New proxy settings"
|
||||
msgstr "Inställningar för ny proxy "
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:110
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:124
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:245
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:260
|
||||
msgid "Name"
|
||||
msgstr "Namn"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:249
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:282
|
||||
msgid "Type"
|
||||
msgstr "Typ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:229
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:389
|
||||
msgid "Description"
|
||||
msgstr "Beskrivning"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:126
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:136
|
||||
msgid "Target"
|
||||
msgstr "Mål"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:130
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:132
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162
|
||||
msgid "Access Point"
|
||||
msgstr "Anslutningspunkt"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213
|
||||
msgid "required"
|
||||
msgstr "krävs"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178
|
||||
msgid "Reachable by"
|
||||
msgstr "Nåbar via"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180
|
||||
msgid "Outproxies"
|
||||
msgstr "utgående proxy"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187
|
||||
msgid "Tunnel Destination"
|
||||
msgstr "Tunnel mål"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199
|
||||
msgid "name or destination"
|
||||
msgstr "namn eller mål"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202
|
||||
msgid "b32 not recommended"
|
||||
msgstr "b32 rekommenderas ej"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208
|
||||
msgid "Shared Client"
|
||||
msgstr "Delad klient"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212
|
||||
msgid ""
|
||||
"(Share tunnels with other clients and irc/httpclients? Change requires "
|
||||
"restart of client proxy)"
|
||||
msgstr ""
|
||||
"(Dela tunnlarna med andra klienter och irc/HTTP-klienter? Ändring kräver "
|
||||
"omstart av klientproxyn)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124
|
||||
msgid "Auto Start"
|
||||
msgstr "Starta automatiskt"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128
|
||||
msgid "(Check the Box for 'YES')"
|
||||
msgstr "(Markera i boxen för 'Ja')"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243
|
||||
msgid "Advanced networking options"
|
||||
msgstr "Avancerade nätverks instälningar"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224
|
||||
msgid ""
|
||||
"(NOTE: when this client proxy is configured to share tunnels, then these "
|
||||
"options are for all the shared proxy clients!)"
|
||||
msgstr ""
|
||||
"(OBS: när denna klientproxyn är konfigurerad för att dela tunnlar, då gäller"
|
||||
" dessa alternativ för alla delade proxyklienter!)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245
|
||||
msgid "Tunnel Options"
|
||||
msgstr "Tunnel alternativ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247
|
||||
msgid "Length"
|
||||
msgstr "Längd"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254
|
||||
msgid "0 hop tunnel (low anonymity, low latency)"
|
||||
msgstr " 0 tunnel hopp (låg anonymitet, ingen fördröjning)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258
|
||||
msgid "1 hop tunnel (medium anonymity, medium latency)"
|
||||
msgstr "1 tunnel hopp (medel anonymitet, medel fördröjning)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262
|
||||
msgid "2 hop tunnel (high anonymity, high latency)"
|
||||
msgstr "2 tunnel hopp (hög anonymitet, hög fördröjning)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266
|
||||
msgid "3 hop tunnel (very high anonymity, poor performance)"
|
||||
msgstr "3 tunnel hopp (mycket hög anonymitet, dålig prestanda)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275
|
||||
msgid "hop tunnel (very poor performance)"
|
||||
msgstr "Tunnel hopp (mycket låg prestanda)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280
|
||||
msgid "Variance"
|
||||
msgstr "Variation"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287
|
||||
msgid "0 hop variance (no randomisation, consistant performance)"
|
||||
msgstr "0 hopp variation (ingen slumpmässighet, konstant prestanda)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291
|
||||
msgid ""
|
||||
"+ 0-1 hop variance (medium additive randomisation, subtractive performance)"
|
||||
msgstr "+ 0-1 hopp variation (medel slumpmässighet, minskad prestanda)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295
|
||||
msgid ""
|
||||
"+ 0-2 hop variance (high additive randomisation, subtractive performance)"
|
||||
msgstr "+ 0-2 hopp variation (ökad slumpmässighet, minskad prestanda)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299
|
||||
msgid "+/- 0-1 hop variance (standard randomisation, standard performance)"
|
||||
msgstr "+/- 0-1 hopp variation (standard slumpmässighet, standardprestanda)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303
|
||||
msgid "+/- 0-2 hop variance (not recommended)"
|
||||
msgstr "+/- 0-2 hopp variation (inte rekommenderat)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315
|
||||
msgid "hop variance"
|
||||
msgstr "hopp variation"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320
|
||||
msgid "Count"
|
||||
msgstr "Antal"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327
|
||||
msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)"
|
||||
msgstr ""
|
||||
"1 inkommande, 1 utgående tunnlar (låg bandbreddsanvändning, låg "
|
||||
"tillförlitlighet)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331
|
||||
msgid ""
|
||||
"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard "
|
||||
"reliability)"
|
||||
msgstr ""
|
||||
"2 inkommande, 2 utgående tunnlar (normal bandbreddsanvändning, normal "
|
||||
"tillförlitlighet)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335
|
||||
msgid ""
|
||||
"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)"
|
||||
msgstr ""
|
||||
"3 inkommande, 3 utgående tunnlar (Högre bandbreddsanvändning, högre "
|
||||
"tillförlitlighet)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344
|
||||
msgid "tunnels"
|
||||
msgstr "tunnlar"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349
|
||||
msgid "Backup Count"
|
||||
msgstr "Antal reserver"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356
|
||||
msgid "0 backup tunnels (0 redundancy, no added resource usage)"
|
||||
msgstr ""
|
||||
"0 reserv tunnlar i varje riktning (ingen redundans, ingen resursanvändning)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360
|
||||
msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
|
||||
msgstr ""
|
||||
"1 reserv tunnel i varje riktning (låg redundans, låg resursanvändning)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364
|
||||
msgid ""
|
||||
"2 backup tunnels each direction (medium redundancy, medium resource usage)"
|
||||
msgstr ""
|
||||
"2 reserv tunnlar i varje riktning (medel hög redundans, medel hög "
|
||||
"resursanvändning)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368
|
||||
msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
|
||||
msgstr ""
|
||||
"3 reserv tunnlar i varje riktning (hög redundans, hög resursanvändning)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377
|
||||
msgid "backup tunnels"
|
||||
msgstr "reserv tunnlar"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384
|
||||
msgid "Profile"
|
||||
msgstr "Profil"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391
|
||||
msgid "interactive connection"
|
||||
msgstr "interaktiv anslutning"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395
|
||||
msgid "bulk connection (downloads/websites/BT)"
|
||||
msgstr "bulk-anslutning (hämtningar/webbplatser/BT)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378
|
||||
msgid "Delay Connect"
|
||||
msgstr "Fördröj anslutning"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382
|
||||
msgid "for request/response connections"
|
||||
msgstr "för förfrågan/svar-anslutningar"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399
|
||||
msgid "Router I2CP Address"
|
||||
msgstr "I2CP Routeradress"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
|
||||
msgid "Host"
|
||||
msgstr "Värd"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:247
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:269
|
||||
msgid "Port"
|
||||
msgstr "Port"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479
|
||||
msgid "Reduce tunnel quantity when idle"
|
||||
msgstr "Minska kvantitetn på tunnel vid inaktivitet"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481
|
||||
msgid "Enable"
|
||||
msgstr "Aktivera"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485
|
||||
msgid "Reduced tunnel count"
|
||||
msgstr "Minska antal tunnlar"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489
|
||||
msgid "Idle minutes"
|
||||
msgstr "Inaktiv i minuter"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420
|
||||
msgid "Close tunnels when idle"
|
||||
msgstr "Stäng tunnlar vid inaktivitet"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426
|
||||
msgid "New Keys on Reopen"
|
||||
msgstr "Nya nycklar vid återöppnade"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
|
||||
msgid "Disable"
|
||||
msgstr "Inaktivera"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440
|
||||
msgid "Delay tunnel open until required"
|
||||
msgstr "Avvakta med att öppna tunnlar tills de behövs"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450
|
||||
msgid "Persistent private key"
|
||||
msgstr "Beständig privat nyckel"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456
|
||||
msgid "File"
|
||||
msgstr "Fil"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220
|
||||
msgid "Local destination"
|
||||
msgstr "Lokalt mål"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464
|
||||
msgid "(if known)"
|
||||
msgstr "(om känd)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470
|
||||
msgid "Local Authorization"
|
||||
msgstr "Lokala tillstånd"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490
|
||||
msgid "Username"
|
||||
msgstr "Användarnamn"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494
|
||||
msgid "Password"
|
||||
msgstr "Lösenord"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484
|
||||
msgid "Outproxy Authorization"
|
||||
msgstr "Tillstånd för utproxy"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502
|
||||
msgid "Jump URL List"
|
||||
msgstr "Hopp lista för URLer"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525
|
||||
msgid "Custom options"
|
||||
msgstr "Anpassade alternativ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529
|
||||
msgid ""
|
||||
"NOTE: If tunnel is currently running, most changes will not take effect "
|
||||
"until tunnel is stopped and restarted."
|
||||
msgstr ""
|
||||
"OBS: Om tunneln är igång, kommer de flesta ändringarna inte att träda i "
|
||||
"kraft förrän tunneln stoppats och startats om."
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531
|
||||
msgid "Cancel"
|
||||
msgstr "Avbryt"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535
|
||||
msgid "Delete"
|
||||
msgstr "Radera"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537
|
||||
msgid "Save"
|
||||
msgstr "Spara"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73
|
||||
msgid "I2P Tunnel Manager - Edit Server Tunnel"
|
||||
msgstr "I2P tunnelhanterare - Redigera servertunneln"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93
|
||||
msgid "Edit server settings"
|
||||
msgstr "Redigera serverinställningar"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:101
|
||||
msgid "New server settings"
|
||||
msgstr "Inställningar för en ny server "
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199
|
||||
msgid "Website name"
|
||||
msgstr "Webbsidas namn"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203
|
||||
msgid "(leave blank for outproxies)"
|
||||
msgstr "(lämna tomt för utgående proxies)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208
|
||||
msgid "Private key file"
|
||||
msgstr "Privat nyckelfil"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230
|
||||
msgid "Add to local addressbook"
|
||||
msgstr "Lägg till i den lokala adressboken"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237
|
||||
msgid "Hostname Signature"
|
||||
msgstr "Värddatornamnets signatur"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417
|
||||
msgid "Encrypt Leaseset"
|
||||
msgstr "Kryptera Leaseset"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423
|
||||
msgid "Encryption Key"
|
||||
msgstr "Krypteringsnyckel"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427
|
||||
msgid "Generate New Key"
|
||||
msgstr "Skapa ny nyckel "
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
|
||||
msgid "Generate"
|
||||
msgstr "Skapa"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523
|
||||
msgid "(Tunnel must be stopped first)"
|
||||
msgstr "(Tunneln måste stoppas först)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433
|
||||
msgid "Restricted Access List"
|
||||
msgstr "Begränsad åtkomst lista"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
|
||||
msgid "Whitelist"
|
||||
msgstr "Lista över tillåtna"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
|
||||
msgid "Blacklist"
|
||||
msgstr "Svartlista"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
|
||||
msgid "Access List"
|
||||
msgstr "Åtkomstlista"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
|
||||
msgid "Inbound connection limits (0=unlimited)"
|
||||
msgstr "Begränsning av inkommande anslutningar (0 = obegränsat)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453
|
||||
msgid "Per client"
|
||||
msgstr "Per klient"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
|
||||
msgid "Per minute"
|
||||
msgstr "Per minut"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
|
||||
msgid "Per hour"
|
||||
msgstr "Per timme"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
|
||||
msgid "Per day"
|
||||
msgstr "Per dag"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
|
||||
msgid "Total"
|
||||
msgstr "Totalt"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
|
||||
msgid "Max concurrent connections (0=unlimited)"
|
||||
msgstr "Maximalt antal samtidiga anslutningar (0 = obegränsat)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
|
||||
msgid "New Certificate type"
|
||||
msgstr "Ny certifikatet typ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495
|
||||
msgid "None"
|
||||
msgstr "Ingen"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499
|
||||
msgid "Hashcash (effort)"
|
||||
msgstr "Hashcash (förmåga)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505
|
||||
msgid "Hashcash Calc Time"
|
||||
msgstr "Beräknings tid för Hashcash "
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
|
||||
msgid "Estimate"
|
||||
msgstr "Uppsaktta"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509
|
||||
msgid "Hidden"
|
||||
msgstr "Dold"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513
|
||||
msgid "Signed (signed by)"
|
||||
msgstr "Undertecknad (undertecknat av)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519
|
||||
msgid "Modify Certificate"
|
||||
msgstr "Ändra Certifikat"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
|
||||
msgid "Modify"
|
||||
msgstr "Ändra"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:74
|
||||
msgid "I2P Tunnel Manager - List"
|
||||
msgstr "I2P tunnelhanterare - Lista"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:86
|
||||
msgid "Status Messages"
|
||||
msgstr "Status meddelande "
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:90
|
||||
msgid "Refresh"
|
||||
msgstr "Uppdatera"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:94
|
||||
msgid "Stop All"
|
||||
msgstr "Stoppa alla"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:98
|
||||
msgid "Start All"
|
||||
msgstr "Starta alla"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:102
|
||||
msgid "Restart All"
|
||||
msgstr "Starta om alla"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:106
|
||||
msgid "Reload Config"
|
||||
msgstr "Uppdatera konfigurationen"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:108
|
||||
msgid "I2P Server Tunnels"
|
||||
msgstr "I2P Servertunnlel"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:133
|
||||
msgid "Points at"
|
||||
msgstr "Pekar på"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:114
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:156
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:160
|
||||
msgid "Preview"
|
||||
msgstr "förhandsvisning"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:180
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:300
|
||||
msgid "Status"
|
||||
msgstr "Status"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:166
|
||||
msgid "Base32 Address"
|
||||
msgstr "Bas32 adress"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:174
|
||||
msgid "No Preview"
|
||||
msgstr "Ingen förhandsvisning"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:187
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:307
|
||||
msgid "Starting..."
|
||||
msgstr "Startar..."
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:194
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:208
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:314
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:328
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:342
|
||||
msgid "Stop"
|
||||
msgstr "Stopp"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:201
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:335
|
||||
msgid "Running"
|
||||
msgstr "Kör"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:215
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:349
|
||||
msgid "Stopped"
|
||||
msgstr "Stoppad"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:222
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:356
|
||||
msgid "Start"
|
||||
msgstr "Start"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:237
|
||||
msgid "New server tunnel"
|
||||
msgstr "Ny severtunnel "
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:239
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:399
|
||||
msgid "Standard"
|
||||
msgstr "Standard"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:241
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:401
|
||||
msgid "Create"
|
||||
msgstr "Skapa"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:243
|
||||
msgid "I2P Client Tunnels"
|
||||
msgstr "I2P Klienttunnel"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:286
|
||||
msgid "Interface"
|
||||
msgstr "Gränssnitt "
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:321
|
||||
msgid "Standby"
|
||||
msgstr "Standby"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366
|
||||
msgid "Outproxy"
|
||||
msgstr "Utproxy"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370
|
||||
msgid "Destination"
|
||||
msgstr "Mål"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:384
|
||||
msgid "none"
|
||||
msgstr "Ingen"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:397
|
||||
msgid "New client tunnel"
|
||||
msgstr "Ny klienttunnel"
|
||||
|
||||
|
||||
860
apps/i2ptunnel/locale/messages_vi.po
Normal file
860
apps/i2ptunnel/locale/messages_vi.po
Normal file
@@ -0,0 +1,860 @@
|
||||
# I2P
|
||||
# Copyright (C) 2009 The I2P Project
|
||||
# This file is distributed under the same license as the i2ptunnel package.
|
||||
# To contribute translations, see http://www.i2p2.de/newdevelopers
|
||||
#
|
||||
# <tran.nathan@gmail.com>, 2011.
|
||||
# dich_tran <tran.nathan@gmail.com>, 2011.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P\n"
|
||||
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
|
||||
"POT-Creation-Date: 2011-06-11 08:23+0000\n"
|
||||
"PO-Revision-Date: 2011-06-11 08:42+0000\n"
|
||||
"Last-Translator: ducki2p <ducki2p@gmail.com>\n"
|
||||
"Language-Team: Vietnamese (http://www.transifex.net/projects/p/I2P/team/vi/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: vi\n"
|
||||
"Plural-Forms: nplurals=1; plural=0\n"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:514
|
||||
#, java-format
|
||||
msgid ""
|
||||
"To visit the destination in your host database, click <a "
|
||||
"href=\"{0}\">here</a>. To visit the conflicting addresshelper destination, "
|
||||
"click <a href=\"{1}\">here</a>."
|
||||
msgstr ""
|
||||
"Để truy cập vào điểm đến trong cơ sở dữ liệu máy chủ, bấm <a "
|
||||
"href=\"{0}\">vào đây</a>. Để truy cập vào địa chỉ giúp đỡ xung đột, bấm <a "
|
||||
"href=\"{1}\">vào đây</a>."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:875
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
|
||||
msgid "Host"
|
||||
msgstr "Máy chủ"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:876
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370
|
||||
msgid "Destination"
|
||||
msgstr "Đích đến"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:881
|
||||
#, java-format
|
||||
msgid "Continue to {0} without saving"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:886
|
||||
#, java-format
|
||||
msgid "Save {0} to router address book and continue to eepsite"
|
||||
msgstr ""
|
||||
|
||||
#. only blockfile supports multiple books
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:889
|
||||
#, java-format
|
||||
msgid "Save {0} to master address book and continue to eepsite"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:890
|
||||
#, java-format
|
||||
msgid "Save {0} to private address book and continue to eepsite"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1046
|
||||
msgid ""
|
||||
"Click a link below to look for an address helper by using a \"jump\" "
|
||||
"service:"
|
||||
msgstr "Bấm vào đường dẫn dưới đây để tìm địa chỉ giúp đỡ bằng dịch vụ \"nhảy\":"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1262
|
||||
msgid "Added via address helper"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1286
|
||||
#, java-format
|
||||
msgid "Redirecting to {0}"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1292
|
||||
msgid "Router Console"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1293
|
||||
msgid "Addressbook"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1293
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1293
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1298
|
||||
#, java-format
|
||||
msgid "Saved {0} to the {1} addressbook, redirecting now."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1299
|
||||
#, java-format
|
||||
msgid "Failed to save {0} to the {1} addressbook, redirecting now."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1301
|
||||
msgid "Click here if you are not redirected automatically."
|
||||
msgstr ""
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336
|
||||
msgid "internal"
|
||||
msgstr "nội bộ"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:171
|
||||
msgid ""
|
||||
"Invalid form submission, probably because you used the 'back' or 'reload' "
|
||||
"button on your browser. Please resubmit."
|
||||
msgstr ""
|
||||
"Mẫu đơn đệ nạp không đúng, có lẻ vì bạn dùng nút 'back' hay 'reload\" của "
|
||||
"trình duyệt. Xin vui lòng đệ nạp lại."
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218
|
||||
msgid "Configuration reloaded for all tunnels"
|
||||
msgstr "Nạp lại cấu hình cho mọi đường hầm"
|
||||
|
||||
#. and give them something to look at in any case
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230
|
||||
msgid "Starting tunnel"
|
||||
msgstr "Bắt đầu đường hầm"
|
||||
|
||||
#. and give them something to look at in any case
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243
|
||||
msgid "Stopping tunnel"
|
||||
msgstr "Ngưng đường hầm"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311
|
||||
msgid "Configuration changes saved"
|
||||
msgstr "Lưu giữ thay đổi cấu hình"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314
|
||||
msgid "Failed to save configuration"
|
||||
msgstr "Không lưu cấu hình được"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398
|
||||
msgid "New Tunnel"
|
||||
msgstr "Đường Hầm Mới"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418
|
||||
msgid "Standard client"
|
||||
msgstr "Khách thường"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419
|
||||
msgid "HTTP client"
|
||||
msgstr "Khách HTTP"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420
|
||||
msgid "IRC client"
|
||||
msgstr "Khách IRC"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421
|
||||
msgid "Standard server"
|
||||
msgstr "Máy chủ thường"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422
|
||||
msgid "HTTP server"
|
||||
msgstr "Máy chủ HTTP"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423
|
||||
msgid "SOCKS 4/4a/5 proxy"
|
||||
msgstr "Proxy SOCKS 4/4a/5"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424
|
||||
msgid "SOCKS IRC proxy"
|
||||
msgstr "Proxy SOCKS IRC"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425
|
||||
msgid "CONNECT/SSL/HTTPS proxy"
|
||||
msgstr "Proxy nối kết/SSL/HTTPS"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426
|
||||
msgid "IRC server"
|
||||
msgstr "Máy chủ IRC"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427
|
||||
msgid "Streamr client"
|
||||
msgstr "Khách Streamr"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428
|
||||
msgid "Streamr server"
|
||||
msgstr "Máy chủ Streamr"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429
|
||||
msgid "HTTP bidir"
|
||||
msgstr "HTTP hai chiều"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:293
|
||||
msgid "Host not set"
|
||||
msgstr "Máy chủ chưa cấu hình"
|
||||
|
||||
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:275
|
||||
msgid "Port not set"
|
||||
msgstr "Cổng chưa cấu hình"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73
|
||||
msgid "I2P Tunnel Manager - Edit Client Tunnel"
|
||||
msgstr "Quảng Lý Hầm I2P - Chỉnh đổi hầm khách"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93
|
||||
msgid "Edit proxy settings"
|
||||
msgstr "Chỉnh đổi cấu hình proxy"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101
|
||||
msgid "New proxy settings"
|
||||
msgstr "Cấu hình mới cho proxy"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:110
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:124
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:245
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:260
|
||||
msgid "Name"
|
||||
msgstr "Tên"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:249
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:282
|
||||
msgid "Type"
|
||||
msgstr "Loại"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:229
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:389
|
||||
msgid "Description"
|
||||
msgstr "Mô tả"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:126
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:136
|
||||
msgid "Target"
|
||||
msgstr "Điểm đến"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:130
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:132
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:162
|
||||
msgid "Access Point"
|
||||
msgstr "Điểm Truy Cập"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:192
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:153
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:213
|
||||
msgid "required"
|
||||
msgstr "cần có"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:159
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:178
|
||||
msgid "Reachable by"
|
||||
msgstr "Với được qua"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180
|
||||
msgid "Outproxies"
|
||||
msgstr "Proxy ra"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187
|
||||
msgid "Tunnel Destination"
|
||||
msgstr "Địa điểm Hầm đến"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199
|
||||
msgid "name or destination"
|
||||
msgstr "tên hay điểm đến"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202
|
||||
msgid "b32 not recommended"
|
||||
msgstr "không nên dùng b32"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208
|
||||
msgid "Shared Client"
|
||||
msgstr "Chia khách"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:212
|
||||
msgid ""
|
||||
"(Share tunnels with other clients and irc/httpclients? Change requires "
|
||||
"restart of client proxy)"
|
||||
msgstr ""
|
||||
"(Chia sẻ hầm với những khách khác hay khách irc/http? Chỉnh đổi yêu cầu khởi"
|
||||
" động lại proxy khách)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:216
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124
|
||||
msgid "Auto Start"
|
||||
msgstr "Tự động khởi động"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128
|
||||
msgid "(Check the Box for 'YES')"
|
||||
msgstr "Chọn YES trong ô"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:222
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:243
|
||||
msgid "Advanced networking options"
|
||||
msgstr "Tùy chọn mạng cao cấp "
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224
|
||||
msgid ""
|
||||
"(NOTE: when this client proxy is configured to share tunnels, then these "
|
||||
"options are for all the shared proxy clients!)"
|
||||
msgstr ""
|
||||
"(GHI CHÚ: khi proxy khách được cấu hình để chia sẻ hầm, thì những tùy chọn "
|
||||
"này cho tất cả khách proxy chia sẻ)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:226
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245
|
||||
msgid "Tunnel Options"
|
||||
msgstr "Tùy chọn hầm"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:247
|
||||
msgid "Length"
|
||||
msgstr "Độ dài"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:235
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:254
|
||||
msgid "0 hop tunnel (low anonymity, low latency)"
|
||||
msgstr "hầm 0 bước nhảy (độ ẩn danh thấp, độ trễ thấp)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:239
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:258
|
||||
msgid "1 hop tunnel (medium anonymity, medium latency)"
|
||||
msgstr "hầm 1 bước nhảy (độ ẩn danh vừa, độ trễ vừa)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:243
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:262
|
||||
msgid "2 hop tunnel (high anonymity, high latency)"
|
||||
msgstr "hầm 2 bước nhảy (độ ẩn danh cao, độ trễ cao"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:266
|
||||
msgid "3 hop tunnel (very high anonymity, poor performance)"
|
||||
msgstr "hầm 3 bước nhảy (độ ẩn danh rất cao, hiệu suất tệ)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275
|
||||
msgid "hop tunnel (very poor performance)"
|
||||
msgstr "hầm bước nhảy (hiệu xuất rất tệ)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:261
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:280
|
||||
msgid "Variance"
|
||||
msgstr "Độ khác biệt"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:287
|
||||
msgid "0 hop variance (no randomisation, consistant performance)"
|
||||
msgstr "Khác biệt 0 bước (không ngẫu nhiên, hiệu xuất vững)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:272
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:291
|
||||
msgid ""
|
||||
"+ 0-1 hop variance (medium additive randomisation, subtractive performance)"
|
||||
msgstr ""
|
||||
"Khác biệt + 0-1 bước (độ ngẫu nhiên bổ xung trung bình, hiệu xuất trừ)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:276
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:295
|
||||
msgid ""
|
||||
"+ 0-2 hop variance (high additive randomisation, subtractive performance)"
|
||||
msgstr "Khác biệt + 0-2 bước (độ ngẫu nhiên bổ xung cao, hiệu xuất trừ)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:299
|
||||
msgid "+/- 0-1 hop variance (standard randomisation, standard performance)"
|
||||
msgstr "Khác biệt +/- 0-1 bước (độ ngẫu nhiên chuẩn, hiệu xuất chuẩn)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:303
|
||||
msgid "+/- 0-2 hop variance (not recommended)"
|
||||
msgstr "Khác biệt +/- 0-2 bước (không nên)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:315
|
||||
msgid "hop variance"
|
||||
msgstr "khác biệt bước"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:301
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320
|
||||
msgid "Count"
|
||||
msgstr "Số lượng"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:327
|
||||
msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)"
|
||||
msgstr "1 đường vô, 1 đường hầm ra (dùng băng thông thấp, độ bền vững thấp)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:312
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:331
|
||||
msgid ""
|
||||
"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard "
|
||||
"reliability)"
|
||||
msgstr ""
|
||||
"2 đường vô, 2 đường hầm ra (dùng băng thông trung bình, độ bền vững trung "
|
||||
"bình)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:316
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:335
|
||||
msgid ""
|
||||
"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)"
|
||||
msgstr "3 đường vô, 3 đường hầm ra (dùng băng thông cao, độ bền vững cao)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:325
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:344
|
||||
msgid "tunnels"
|
||||
msgstr "đường hầm"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:349
|
||||
msgid "Backup Count"
|
||||
msgstr "Số lượng trừ bị"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:356
|
||||
msgid "0 backup tunnels (0 redundancy, no added resource usage)"
|
||||
msgstr "0 hầm trừ bị (độ dư 0, không thêm tài nguyên)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:341
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:360
|
||||
msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
|
||||
msgstr "1 hầm trừ bị mỗi hướng (độ dư thấp, dùng tài nguyên thấp)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:345
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:364
|
||||
msgid ""
|
||||
"2 backup tunnels each direction (medium redundancy, medium resource usage)"
|
||||
msgstr "2 hầm trừ bị mỗi hướng (độ dư trung bình, dùng tài nguyên trung bình)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:368
|
||||
msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
|
||||
msgstr "3 hầm trừ bị mỗi hướng (độ dư cao, dùng tài nguyên cao)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:358
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:377
|
||||
msgid "backup tunnels"
|
||||
msgstr "hầm trừ bị"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384
|
||||
msgid "Profile"
|
||||
msgstr "Hồ sơ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391
|
||||
msgid "interactive connection"
|
||||
msgstr "đường nối tương tác"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:376
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395
|
||||
msgid "bulk connection (downloads/websites/BT)"
|
||||
msgstr "đường nối khổ to"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378
|
||||
msgid "Delay Connect"
|
||||
msgstr "Chờ nối kết"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382
|
||||
msgid "for request/response connections"
|
||||
msgstr "cho nối kết yêu cầu/phản hồi"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:386
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399
|
||||
msgid "Router I2CP Address"
|
||||
msgstr "Địa chỉ Định Tuyến I2CP"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:247
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:269
|
||||
msgid "Port"
|
||||
msgstr "Cổng"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479
|
||||
msgid "Reduce tunnel quantity when idle"
|
||||
msgstr "Giảm số lượng hầm khi rổi"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:408
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:422
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:442
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:452
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:486
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:419
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:481
|
||||
msgid "Enable"
|
||||
msgstr "Mở"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485
|
||||
msgid "Reduced tunnel count"
|
||||
msgstr "Số lượng đường hầm giảm"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:436
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489
|
||||
msgid "Idle minutes"
|
||||
msgstr "Số phút rảnh rổi"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420
|
||||
msgid "Close tunnels when idle"
|
||||
msgstr "Đóng đường hầm khi rảnh rổi"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426
|
||||
msgid "New Keys on Reopen"
|
||||
msgstr "Chìa khóa mới khi mở lại"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:435
|
||||
msgid "Disable"
|
||||
msgstr "Tắt"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440
|
||||
msgid "Delay tunnel open until required"
|
||||
msgstr "Đợi mở đường hầm cho đến khi yêu cầu"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450
|
||||
msgid "Persistent private key"
|
||||
msgstr "Chìa khóa riêng bền dai"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456
|
||||
msgid "File"
|
||||
msgstr "Tập tin"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:220
|
||||
msgid "Local destination"
|
||||
msgstr "Điểm đến nội bộ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464
|
||||
msgid "(if known)"
|
||||
msgstr "(nếu biết)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470
|
||||
msgid "Local Authorization"
|
||||
msgstr "Cho phép nội bộ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:490
|
||||
msgid "Username"
|
||||
msgstr "Tên đăng nhập"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:480
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:494
|
||||
msgid "Password"
|
||||
msgstr "Mật khẩu"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484
|
||||
msgid "Outproxy Authorization"
|
||||
msgstr "Cho phép Outproxy"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502
|
||||
msgid "Jump URL List"
|
||||
msgstr "Danh sách đường dẫn nhảy"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:508
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:525
|
||||
msgid "Custom options"
|
||||
msgstr "Tùy chọn tùy ý"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:512
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:529
|
||||
msgid ""
|
||||
"NOTE: If tunnel is currently running, most changes will not take effect "
|
||||
"until tunnel is stopped and restarted."
|
||||
msgstr ""
|
||||
"GHI CHÚ: nếu đường hầm đang chạy thì những sửa đổi sẽ không có tác động cho "
|
||||
"đến khi đường hầm ngừng và khởi động lại."
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:514
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:531
|
||||
msgid "Cancel"
|
||||
msgstr "Hủy"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:518
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:535
|
||||
msgid "Delete"
|
||||
msgstr "Xóa"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:520
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:537
|
||||
msgid "Save"
|
||||
msgstr "Giữ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73
|
||||
msgid "I2P Tunnel Manager - Edit Server Tunnel"
|
||||
msgstr "Quản Lý Hầm I2P - Điều chỉnh Hầm Máy Chủ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93
|
||||
msgid "Edit server settings"
|
||||
msgstr "Chỉnh sửa cấu hình máy chủ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:101
|
||||
msgid "New server settings"
|
||||
msgstr "Cấu hình mới cho máy chủ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199
|
||||
msgid "Website name"
|
||||
msgstr "Tên trang web"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203
|
||||
msgid "(leave blank for outproxies)"
|
||||
msgstr "(để trống cho outproxies)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208
|
||||
msgid "Private key file"
|
||||
msgstr "Tập tin khóa riêng"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230
|
||||
msgid "Add to local addressbook"
|
||||
msgstr "Thêm vô sổ địa chỉ địa phương"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237
|
||||
msgid "Hostname Signature"
|
||||
msgstr "Chữ ký tên máy chủ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417
|
||||
msgid "Encrypt Leaseset"
|
||||
msgstr "Leaseset mã hóa"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423
|
||||
msgid "Encryption Key"
|
||||
msgstr "Khóa mã hóa"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427
|
||||
msgid "Generate New Key"
|
||||
msgstr "Tạo khóa mới"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
|
||||
msgid "Generate"
|
||||
msgstr "Kiến tạo"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:523
|
||||
msgid "(Tunnel must be stopped first)"
|
||||
msgstr "(Hầm phải ngưng trước)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433
|
||||
msgid "Restricted Access List"
|
||||
msgstr "Sổ truy cập giới hạn"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
|
||||
msgid "Whitelist"
|
||||
msgstr "Sổ trắng"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
|
||||
msgid "Blacklist"
|
||||
msgstr "Sổ đen"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
|
||||
msgid "Access List"
|
||||
msgstr "Sổ truy cập"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
|
||||
msgid "Inbound connection limits (0=unlimited)"
|
||||
msgstr "Giới hạn đường nối vào (0=không giới hạn)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453
|
||||
msgid "Per client"
|
||||
msgstr "Mỗi khách"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
|
||||
msgid "Per minute"
|
||||
msgstr "Mỗi phút"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
|
||||
msgid "Per hour"
|
||||
msgstr "Mỗi giờ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
|
||||
msgid "Per day"
|
||||
msgstr "Mỗi ngày"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
|
||||
msgid "Total"
|
||||
msgstr "Tổng cộng"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
|
||||
msgid "Max concurrent connections (0=unlimited)"
|
||||
msgstr "Số đường nối tối đa cùng lúc (0=không giới hạn)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
|
||||
msgid "New Certificate type"
|
||||
msgstr "Loại Chứng chỉ mới"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495
|
||||
msgid "None"
|
||||
msgstr "Không có"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499
|
||||
msgid "Hashcash (effort)"
|
||||
msgstr "Hashcash (nỗ lực)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505
|
||||
msgid "Hashcash Calc Time"
|
||||
msgstr "Hashcash (giờ tính toán)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
|
||||
msgid "Estimate"
|
||||
msgstr "Ước lượng"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509
|
||||
msgid "Hidden"
|
||||
msgstr "Dấu"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513
|
||||
msgid "Signed (signed by)"
|
||||
msgstr "Ký (ký bởi)"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519
|
||||
msgid "Modify Certificate"
|
||||
msgstr "Chứng chỉ Điều chỉnh"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
|
||||
msgid "Modify"
|
||||
msgstr "Điều chỉnh"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:74
|
||||
msgid "I2P Tunnel Manager - List"
|
||||
msgstr "Quản Lý Hầm I2P - Danh sách"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:86
|
||||
msgid "Status Messages"
|
||||
msgstr "Thông báo hiện trạng"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:90
|
||||
msgid "Refresh"
|
||||
msgstr "Nạp lại"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:94
|
||||
msgid "Stop All"
|
||||
msgstr "Ngưng tất cả"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:98
|
||||
msgid "Start All"
|
||||
msgstr "Bắt đầu tất cả"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:102
|
||||
msgid "Restart All"
|
||||
msgstr "Khởi động lại tất cả"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:106
|
||||
msgid "Reload Config"
|
||||
msgstr "Nạp lại cấu hình"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:108
|
||||
msgid "I2P Server Tunnels"
|
||||
msgstr "Đường hầm máy chủ I2P"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:112
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:133
|
||||
msgid "Points at"
|
||||
msgstr "Điểm ở"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:114
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:156
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:160
|
||||
msgid "Preview"
|
||||
msgstr "Xem trước"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:116
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:180
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:253
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:300
|
||||
msgid "Status"
|
||||
msgstr "Hiện trạng"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:166
|
||||
msgid "Base32 Address"
|
||||
msgstr "Địa chỉ Base32"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:174
|
||||
msgid "No Preview"
|
||||
msgstr "Không xem trước"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:187
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:307
|
||||
msgid "Starting..."
|
||||
msgstr "Bắt đầu..."
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:194
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:208
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:314
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:328
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:342
|
||||
msgid "Stop"
|
||||
msgstr "Ngưng"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:201
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:335
|
||||
msgid "Running"
|
||||
msgstr "Đang chạy"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:215
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:349
|
||||
msgid "Stopped"
|
||||
msgstr "Đã ngưng"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:222
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:356
|
||||
msgid "Start"
|
||||
msgstr "Bắt đầu"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:237
|
||||
msgid "New server tunnel"
|
||||
msgstr "Hầm chủ mới"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:239
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:399
|
||||
msgid "Standard"
|
||||
msgstr "Chuẩn"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:241
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:401
|
||||
msgid "Create"
|
||||
msgstr "Kiến tạo"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:243
|
||||
msgid "I2P Client Tunnels"
|
||||
msgstr "Hầm khách I2P"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:251
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:286
|
||||
msgid "Interface"
|
||||
msgstr "Giao diện"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:321
|
||||
msgid "Standby"
|
||||
msgstr "Chờ"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366
|
||||
msgid "Outproxy"
|
||||
msgstr "Outproxy"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:384
|
||||
msgid "none"
|
||||
msgstr "không có"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:397
|
||||
msgid "New client tunnel"
|
||||
msgstr "Đường hầm mới"
|
||||
|
||||
|
||||
@@ -67,20 +67,16 @@
|
||||
<gunzip src="${jetty.filename}" dest="jetty.tar" />
|
||||
<untar src="jetty.tar" dest="." />
|
||||
<mkdir dir="jettylib" />
|
||||
<copy todir="jettylib">
|
||||
<copy todir="jettylib" preservelastmodified="true" >
|
||||
<fileset dir="${jetty.base}/lib">
|
||||
<include name="*.jar" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy todir="jettylib">
|
||||
<fileset dir="${jetty.base}/ext">
|
||||
<include name="ant.jar" />
|
||||
<include name="commons-el.jar" />
|
||||
<include name="commons-logging.jar" />
|
||||
<include name="jasper-compiler.jar" />
|
||||
<include name="jasper-runtime.jar" />
|
||||
<include name="javax.servlet.jar" />
|
||||
<include name="org.mortbay.jetty.jar" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<delete file="jetty.tar" />
|
||||
@@ -102,7 +98,7 @@
|
||||
</javac>
|
||||
</target>
|
||||
|
||||
<target name="jar" depends="compile, jarUpToDate" unless="jar.uptodate" >
|
||||
<target name="listChangedFiles" depends="jarUpToDate" if="shouldListChanges" >
|
||||
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
|
||||
<arg value="list" />
|
||||
<arg value="changed" />
|
||||
@@ -114,6 +110,11 @@
|
||||
<arg value="[:space:]" />
|
||||
<arg value="," />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="jar" depends="compile, jarUpToDate, listChangedFiles" unless="jar.uptodate" >
|
||||
<!-- set if unset -->
|
||||
<property name="workspace.changes.tr" value="" />
|
||||
<jar destfile="./jettylib/org.mortbay.jetty.jar" basedir="./build/obj" includes="**/*.class" update="true" >
|
||||
<manifest>
|
||||
<attribute name="Build-Date" value="${build.timestamp}" />
|
||||
@@ -127,6 +128,14 @@
|
||||
<uptodate property="jar.uptodate" targetfile="jettylib/org.mortbay.jetty.jar" >
|
||||
<srcfiles dir= "build/obj" includes="**/*.class" />
|
||||
</uptodate>
|
||||
<condition property="shouldListChanges" >
|
||||
<and>
|
||||
<not>
|
||||
<isset property="jar.uptodate" />
|
||||
</not>
|
||||
<isset property="mtn.available" />
|
||||
</and>
|
||||
</condition>
|
||||
</target>
|
||||
|
||||
<target name="clean" >
|
||||
|
||||
Binary file not shown.
BIN
apps/jrobin/jrobin-1.5.9.1.jar
Normal file
BIN
apps/jrobin/jrobin-1.5.9.1.jar
Normal file
Binary file not shown.
@@ -31,7 +31,7 @@
|
||||
</javac>
|
||||
</target>
|
||||
|
||||
<target name="jar" depends="compile, jarUpToDate" unless="jar.uptodate" >
|
||||
<target name="listChangedFiles" depends="jarUpToDate" if="shouldListChanges" >
|
||||
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
|
||||
<arg value="list" />
|
||||
<arg value="changed" />
|
||||
@@ -43,6 +43,11 @@
|
||||
<arg value="[:space:]" />
|
||||
<arg value="," />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="jar" depends="compile, jarUpToDate, listChangedFiles" unless="jar.uptodate" >
|
||||
<!-- set if unset -->
|
||||
<property name="workspace.changes.tr" value="" />
|
||||
<jar destfile="./build/mstreaming.jar" basedir="./build/obj" includes="**/*.class" >
|
||||
<manifest>
|
||||
<attribute name="Build-Date" value="${build.timestamp}" />
|
||||
@@ -56,6 +61,14 @@
|
||||
<uptodate property="jar.uptodate" targetfile="build/mstreaming.jar" >
|
||||
<srcfiles dir= "." includes="build/obj/**/*.class" />
|
||||
</uptodate>
|
||||
<condition property="shouldListChanges" >
|
||||
<and>
|
||||
<not>
|
||||
<isset property="jar.uptodate" />
|
||||
</not>
|
||||
<isset property="mtn.available" />
|
||||
</and>
|
||||
</condition>
|
||||
</target>
|
||||
|
||||
<target name="javadoc">
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
<html><body>
|
||||
<p>Implements a TCP-like (reliable, authenticated, in order) set of sockets for
|
||||
communicating over the IP-like (unreliable, unauthenticated, unordered) I2P
|
||||
messages.</p>
|
||||
messages.
|
||||
Note that this class is split across two jars, streaming.jar and ministreaming.jar.
|
||||
The interfaces and some very old code are in ministreaming.jar, but the
|
||||
real work gets done in streaming.jar. Clients must have both jars
|
||||
in their classpath.
|
||||
Most clients will require (only) streaming.jar, ministreaming.jar, and i2p.jar
|
||||
in their classpath to communicate with the router.
|
||||
</p>
|
||||
|
||||
<p>When an application wants to use streams, it must fetch an {@link
|
||||
net.i2p.client.streaming.I2PSocketManager} from the {@link
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
<pathelement location="../../systray/java/build/obj" />
|
||||
<pathelement location="../../systray/java/lib/systray4j.jar" />
|
||||
<pathelement location="../../desktopgui/build" />
|
||||
<pathelement location="../../../installer/lib/wrapper/win32/wrapper.jar" /> <!-- we dont care if we're not on win32 -->
|
||||
<pathelement location="../../jrobin/jrobin-1.4.0.jar" />
|
||||
<pathelement location="../../../installer/lib/wrapper/all/wrapper.jar" />
|
||||
<pathelement location="../../jrobin/jrobin-1.5.9.1.jar" />
|
||||
</classpath>
|
||||
</depend>
|
||||
</target>
|
||||
@@ -57,8 +57,8 @@
|
||||
<pathelement location="../../systray/java/build/systray.jar" />
|
||||
<pathelement location="../../systray/java/lib/systray4j.jar" />
|
||||
<pathelement location="../../desktopgui/dist/desktopgui.jar" />
|
||||
<pathelement location="../../../installer/lib/wrapper/win32/wrapper.jar" /> <!-- we dont care if we're not on win32 -->
|
||||
<pathelement location="../../jrobin/jrobin-1.4.0.jar" />
|
||||
<pathelement location="../../../installer/lib/wrapper/all/wrapper.jar" />
|
||||
<pathelement location="../../jrobin/jrobin-1.5.9.1.jar" />
|
||||
</classpath>
|
||||
</javac>
|
||||
</target>
|
||||
@@ -67,7 +67,7 @@
|
||||
<target name="jar" depends="jar1, war, bundle" />
|
||||
|
||||
<!-- the jar without the latest message classes from the jsps -->
|
||||
<target name="jar1" depends="compile, jarUpToDate" unless="jar.uptodate" >
|
||||
<target name="listChangedFiles" depends="jarUpToDate" if="shouldListChanges" >
|
||||
<exec executable="mtn" outputproperty="workspace.changes.j" errorproperty="mtn.error2" failifexecutionfails="false" >
|
||||
<arg value="list" />
|
||||
<arg value="changed" />
|
||||
@@ -80,6 +80,11 @@
|
||||
<arg value="[:space:]" />
|
||||
<arg value="," />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<target name="jar1" depends="compile, jarUpToDate, listChangedFiles" unless="jar.uptodate" >
|
||||
<!-- set if unset -->
|
||||
<property name="workspace.changes.j.tr" value="" />
|
||||
<jar destfile="./build/routerconsole.jar" basedir="./build/obj" includes="**/*.class">
|
||||
<manifest>
|
||||
<!-- top level installer will rename to jrobin.jar -->
|
||||
@@ -90,22 +95,16 @@
|
||||
<attribute name="Workspace-Changes" value="${workspace.changes.j.tr}" />
|
||||
</manifest>
|
||||
</jar>
|
||||
<!-- jrobin taken out of routerconsole.jar in 0.7.12
|
||||
<delete dir="./tmpextract" />
|
||||
<unjar src="../../jrobin/jrobin-1.4.0.jar" dest="./tmpextract" />
|
||||
<jar destfile="./build/routerconsole.jar" basedir="./tmpextract" update="true" />
|
||||
<delete dir="./tmpextract" />
|
||||
-->
|
||||
</target>
|
||||
|
||||
<!-- this is tricky because the message classes go in the jar, not in the war -->
|
||||
<target name="bundle" depends="jar1, precompilejsp" >
|
||||
<!-- Update the messages_*.po files.
|
||||
We need to supply the bat file for windows, and then change the fail property to true -->
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="${require.gettext}" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
</exec>
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="${require.gettext}" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
</exec>
|
||||
<!-- multi-lang is optional -->
|
||||
@@ -121,27 +120,34 @@
|
||||
<uptodate property="jar.uptodate" targetfile="build/routerconsole.jar" >
|
||||
<srcfiles dir= "build/obj" includes="**/*.class" />
|
||||
</uptodate>
|
||||
<condition property="shouldListChanges" >
|
||||
<and>
|
||||
<not>
|
||||
<isset property="jar.uptodate" />
|
||||
</not>
|
||||
<isset property="mtn.available" />
|
||||
</and>
|
||||
</condition>
|
||||
</target>
|
||||
|
||||
<target name="poupdate" depends="precompilejsp">
|
||||
<!-- Update the messages_*.po files.
|
||||
We need to supply the bat file for windows, and then change the fail property to true -->
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="unix" failifexecutionfails="true" failonerror="true" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
<arg value="-p" />
|
||||
</exec>
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="mac" failifexecutionfails="true" failonerror="true" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
<arg value="-p" />
|
||||
</exec>
|
||||
<exec executable="sh" osfamily="windows" failifexecutionfails="true" >
|
||||
<exec executable="sh" osfamily="windows" failifexecutionfails="true" failonerror="true" >
|
||||
<arg value="./bundle-messages.sh" />
|
||||
<arg value="-p" />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<!-- does NOT update the message classes, as those go in the jar -->
|
||||
<target name="war" depends="precompilejsp, warUpToDate" unless="war.uptodate" >
|
||||
<target name="listChangedFiles2" depends="warUpToDate" if="shouldListChanges2" >
|
||||
<exec executable="mtn" outputproperty="workspace.changes.w" errorproperty="mtn.error2" failifexecutionfails="false" >
|
||||
<arg value="list" />
|
||||
<arg value="changed" />
|
||||
@@ -153,6 +159,12 @@
|
||||
<arg value="[:space:]" />
|
||||
<arg value="," />
|
||||
</exec>
|
||||
</target>
|
||||
|
||||
<!-- does NOT update the message classes, as those go in the jar -->
|
||||
<target name="war" depends="precompilejsp, warUpToDate, listChangedFiles2" unless="war.uptodate" >
|
||||
<!-- set if unset -->
|
||||
<property name="workspace.changes.w.tr" value="" />
|
||||
<!-- Don't include the css in the war, the main build.xml will copy it to docs/themes/console/ -->
|
||||
<war destfile="build/routerconsole.war" webxml="../jsp/web-out.xml"
|
||||
basedir="../jsp/" excludes="web.xml, *.css, **/*.java, *.jsp, *.jsi, web-fragment.xml, web-out.xml">
|
||||
@@ -168,6 +180,14 @@
|
||||
<uptodate property="war.uptodate" targetfile="build/routerconsole.war" >
|
||||
<srcfiles dir= "../jsp" excludes="web.xml, web-fragment.xml, *.css, **/*.java, *.jsp, *.jsi" />
|
||||
</uptodate>
|
||||
<condition property="shouldListChanges" >
|
||||
<and>
|
||||
<not>
|
||||
<isset property="jar.uptodate" />
|
||||
</not>
|
||||
<isset property="mtn.available" />
|
||||
</and>
|
||||
</condition>
|
||||
</target>
|
||||
|
||||
<target name="precompilejsp" depends="jar1" unless="precompilejsp.uptodate">
|
||||
@@ -217,7 +237,7 @@
|
||||
<pathelement location="../../systray/java/build/obj" />
|
||||
<pathelement location="../../systray/java/lib/systray4j.jar" />
|
||||
<pathelement location="../../desktopgui/dist/desktopgui.jar" />
|
||||
<pathelement location="../../../installer/lib/wrapper/win32/wrapper.jar" />
|
||||
<pathelement location="../../../installer/lib/wrapper/all/wrapper.jar" />
|
||||
<pathelement location="build/routerconsole.jar" />
|
||||
<pathelement location="build/" />
|
||||
<pathelement location="../../../router/java/build/router.jar" />
|
||||
@@ -249,7 +269,7 @@
|
||||
<pathelement location="../../systray/java/build/obj" />
|
||||
<pathelement location="../../systray/java/lib/systray4j.jar" />
|
||||
<pathelement location="../../desktopgui/dist/desktopgui.jar" />
|
||||
<pathelement location="../../../installer/lib/wrapper/win32/wrapper.jar" />
|
||||
<pathelement location="../../../installer/lib/wrapper/all/wrapper.jar" />
|
||||
<pathelement location="build/routerconsole.jar" />
|
||||
<pathelement location="build" />
|
||||
<pathelement location="../../../router/java/build/router.jar" />
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
CLASS=net.i2p.router.web.messages
|
||||
TMPFILE=build/javafiles.txt
|
||||
export TZ=UTC
|
||||
RC=0
|
||||
|
||||
if [ "$1" = "-p" ]
|
||||
then
|
||||
@@ -43,6 +44,7 @@ fi
|
||||
# list specific files in core/ and router/ here, so we don't scan the whole tree
|
||||
ROUTERFILES="\
|
||||
../../../core/java/src/net/i2p/data/DataHelper.java \
|
||||
../../../router/java/src/net/i2p/router/Router.java \
|
||||
../../../router/java/src/net/i2p/router/RouterThrottleImpl.java \
|
||||
../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java \
|
||||
../../../router/java/src/net/i2p/router/transport/TransportManager.java \
|
||||
@@ -105,15 +107,17 @@ do
|
||||
-o ${i}t
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo 'Warning - xgettext failed, not updating translations'
|
||||
echo "ERROR - xgettext failed on ${i}, not updating translations"
|
||||
rm -f ${i}t
|
||||
RC=1
|
||||
break
|
||||
fi
|
||||
msgmerge -U --backup=none $i ${i}t
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo 'Warning - msgmerge failed, not updating translations'
|
||||
echo "ERROR - msgmerge failed on ${i}, not updating translations"
|
||||
rm -f ${i}t
|
||||
RC=1
|
||||
break
|
||||
fi
|
||||
rm -f ${i}t
|
||||
@@ -130,11 +134,13 @@ do
|
||||
msgfmt --java --statistics -r $CLASS -l $LG -d build/obj $i
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo 'Warning - msgfmt failed, not updating translations'
|
||||
echo "ERROR - msgfmt failed on ${i}, not updating translations"
|
||||
# msgfmt leaves the class file there so the build would work the next time
|
||||
find build/obj -name messages_${LG}.class -exec rm -f {} \;
|
||||
RC=1
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
rm -f $TMPFILE
|
||||
# todo: return failure
|
||||
exit 0
|
||||
exit $RC
|
||||
|
||||
@@ -95,13 +95,22 @@ public class ConfigClientsHandler extends FormHandler {
|
||||
|
||||
// value
|
||||
if (_action.startsWith("Stop ")) {
|
||||
|
||||
String app = _action.substring(5);
|
||||
int appnum = -1;
|
||||
try {
|
||||
PluginStarter.stopPlugin(_context, app);
|
||||
addFormNotice(_("Stopped plugin {0}", app));
|
||||
} catch (Throwable e) {
|
||||
addFormError(_("Error stopping plugin {0}", app) + ": " + e);
|
||||
appnum = Integer.parseInt(app);
|
||||
} catch (NumberFormatException nfe) {}
|
||||
if (appnum >= 0) {
|
||||
stopClient(appnum);
|
||||
} else {
|
||||
try {
|
||||
PluginStarter.stopPlugin(_context, app);
|
||||
addFormNotice(_("Stopped plugin {0}", app));
|
||||
} catch (Throwable e) {
|
||||
addFormError(_("Error stopping plugin {0}", app) + ": " + e);
|
||||
_log.error("Error stopping plugin " + app, e);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -201,6 +210,20 @@ public class ConfigClientsHandler extends FormHandler {
|
||||
return arr[0].trim();
|
||||
}
|
||||
|
||||
// STUB for stopClient, not completed yet.
|
||||
private void stopClient(int i) {
|
||||
List<ClientAppConfig> clients = ClientAppConfig.getClientApps(_context);
|
||||
if (i >= clients.size()) {
|
||||
addFormError(_("Bad client index."));
|
||||
return;
|
||||
}
|
||||
ClientAppConfig ca = clients.get(i);
|
||||
//
|
||||
// What do we do here?
|
||||
//
|
||||
addFormNotice(_("Client") + ' ' + _(ca.clientName) + ' ' + _("stopped") + '.');
|
||||
}
|
||||
|
||||
private void startClient(int i) {
|
||||
List<ClientAppConfig> clients = ClientAppConfig.getClientApps(_context);
|
||||
if (i >= clients.size()) {
|
||||
|
||||
@@ -109,7 +109,12 @@ public class ConfigClientsHelper extends HelperBase {
|
||||
//"webConsole".equals(ca.clientName) || "Web console".equals(ca.clientName),
|
||||
false,
|
||||
ca.className + ((ca.args != null) ? " " + ca.args : ""), (""+cur).equals(_edit),
|
||||
true, false, false, true, ca.disabled);
|
||||
true, false,
|
||||
// Enable this one and comment out the false below once the stub is filled in.
|
||||
//!ca.disabled && !("webConsole".equals(ca.clientName) || "Web console".equals(ca.clientName)),
|
||||
false,
|
||||
|
||||
true, ca.disabled);
|
||||
}
|
||||
|
||||
if ("new".equals(_edit))
|
||||
|
||||
@@ -104,14 +104,21 @@ public class ConfigStatsHandler extends FormHandler {
|
||||
}
|
||||
|
||||
_context.router().setConfigSetting(StatManager.PROP_STAT_FILTER, stats.toString());
|
||||
boolean graphsChanged = !_graphs.equals(_context.getProperty("stat.summaries"));
|
||||
_context.router().setConfigSetting("stat.summaries", _graphs);
|
||||
boolean fullChanged = _context.getBooleanProperty(StatManager.PROP_STAT_FULL) != _isFull;
|
||||
_context.router().setConfigSetting(StatManager.PROP_STAT_FULL, "" + _isFull);
|
||||
boolean ok = _context.router().saveConfig();
|
||||
if (ok)
|
||||
_context.router().saveConfig();
|
||||
if (!_stats.isEmpty())
|
||||
addFormNotice(_("Stat filter and location updated successfully to") + ": " + stats.toString());
|
||||
else
|
||||
addFormError(_("Failed to update the stat filter and location"));
|
||||
addFormNotice(_("Graph list updated, may take up to 60s to be reflected here and on the <a href=\"graphs.jsp\">Graphs Page</a>"));
|
||||
if (fullChanged) {
|
||||
if (_isFull)
|
||||
addFormNotice(_("Full statistics enabled - restart required to take effect"));
|
||||
else
|
||||
addFormNotice(_("Full statistics disabled - restart required to take effect"));
|
||||
}
|
||||
if (graphsChanged)
|
||||
addFormNotice(_("Graph list updated, may take up to 60s to be reflected here and on the <a href=\"graphs.jsp\">Graphs Page</a>"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -46,12 +46,22 @@ public class ConfigUIHelper extends HelperBase {
|
||||
return rv;
|
||||
}
|
||||
|
||||
private static final String langs[] = {"ar", "de", "en", "es", "fr", "nl", "pt", "ru", "sv", "zh"};
|
||||
private static final String flags[] = {"lang_ar", "de", "us", "es", "fr", "nl", "pt", "ru", "se", "cn"};
|
||||
/**
|
||||
* Each language has the ISO code, the flag, and the name.
|
||||
* Alphabetical by the ISO code please.
|
||||
* See http://en.wikipedia.org/wiki/ISO_639-1 .
|
||||
* Any language-specific flag added to the icon set must be
|
||||
* added to the top-level build.xml for the updater.
|
||||
*/
|
||||
private static final String langs[] = {"ar", "de", "en", "es", "fi", "fr", "it", "nl", "pl", "pt", "ru",
|
||||
"sv", "vi", "zh"};
|
||||
private static final String flags[] = {"lang_ar", "de", "us", "es", "fi", "fr", "it", "nl", "pl", "pt", "ru",
|
||||
"se", "vn", "cn"};
|
||||
private static final String xlangs[] = {_x("Arabic"),
|
||||
_x("German"), _x("English"), _x("Spanish"),_x("French"),
|
||||
_x("Dutch"), _x("Portuguese"), _x("Russian"),
|
||||
_x("Swedish"), _x("Chinese")};
|
||||
_x("German"), _x("English"), _x("Spanish"),_x("Finnish"),
|
||||
_x("French"), _x("Italian"), _x("Dutch"), _x("Polish"),
|
||||
_x("Portuguese"), _x("Russian"), _x("Swedish"),
|
||||
_x("Vietnamese"), _x("Chinese")};
|
||||
|
||||
/** todo sort by translated string */
|
||||
public String getLangSettings() {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.crypto.TrustedUpdate;
|
||||
import net.i2p.data.DataHelper;
|
||||
import net.i2p.util.FileUtil;
|
||||
@@ -50,12 +49,14 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
*/
|
||||
private static final String PACK200_URLS =
|
||||
"http://echelon.i2p/i2p/i2pupdate.su2\r\n" +
|
||||
"http://inr.i2p/i2p/i2pupdate.su2\r\n" +
|
||||
"http://stats.i2p/i2p/i2pupdate.su2\r\n" +
|
||||
"http://www.i2p2.i2p/_static/i2pupdate.su2\r\n" +
|
||||
"http://update.postman.i2p/i2pupdate.su2" ;
|
||||
|
||||
private static final String NO_PACK200_URLS =
|
||||
"http://echelon.i2p/i2p/i2pupdate.sud\r\n" +
|
||||
"http://inr.i2p/i2p/i2pupdate.sud\r\n" +
|
||||
"http://stats.i2p/i2p/i2pupdate.sud\r\n" +
|
||||
"http://www.i2p2.i2p/_static/i2pupdate.sud\r\n" +
|
||||
"http://update.postman.i2p/i2pupdate.sud" ;
|
||||
@@ -76,7 +77,7 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
if (_action == null)
|
||||
return;
|
||||
if (_action.equals(_("Check for updates"))) {
|
||||
NewsFetcher fetcher = NewsFetcher.getInstance(I2PAppContext.getGlobalContext());
|
||||
NewsFetcher fetcher = NewsFetcher.getInstance(_context);
|
||||
fetcher.fetchNews();
|
||||
if (fetcher.shouldFetchUnsigned())
|
||||
fetcher.fetchUnsignedHead();
|
||||
@@ -98,6 +99,7 @@ public class ConfigUpdateHandler extends FormHandler {
|
||||
String oldURL = ConfigUpdateHelper.getNewsURL(_context);
|
||||
if ( (oldURL == null) || (!_newsURL.equals(oldURL)) ) {
|
||||
_context.router().setConfigSetting(PROP_NEWS_URL, _newsURL);
|
||||
NewsFetcher.getInstance(_context).invalidateNews();
|
||||
addFormNotice(_("Updating news URL to") + " " + _newsURL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,14 +17,15 @@ public class GraphHelper extends FormHandler {
|
||||
private int _width;
|
||||
private int _height;
|
||||
private int _refreshDelaySeconds;
|
||||
private boolean _persistent;
|
||||
|
||||
private static final String PROP_X = "routerconsole.graphX";
|
||||
private static final String PROP_Y = "routerconsole.graphY";
|
||||
private static final String PROP_REFRESH = "routerconsole.graphRefresh";
|
||||
private static final String PROP_PERIODS = "routerconsole.graphPeriods";
|
||||
private static final String PROP_EVENTS = "routerconsole.graphEvents";
|
||||
private static final int DEFAULT_X = 250;
|
||||
private static final int DEFAULT_Y = 100;
|
||||
public static final int DEFAULT_X = 250;
|
||||
public static final int DEFAULT_Y = 100;
|
||||
private static final int DEFAULT_REFRESH = 60;
|
||||
private static final int DEFAULT_PERIODS = 60;
|
||||
static final int MAX_X = 2048;
|
||||
@@ -39,9 +40,21 @@ public class GraphHelper extends FormHandler {
|
||||
_height = _context.getProperty(PROP_Y, DEFAULT_Y);
|
||||
_periodCount = _context.getProperty(PROP_PERIODS, DEFAULT_PERIODS);
|
||||
_refreshDelaySeconds = _context.getProperty(PROP_REFRESH, DEFAULT_REFRESH);
|
||||
_showEvents = Boolean.valueOf(_context.getProperty(PROP_EVENTS)).booleanValue();
|
||||
_showEvents = _context.getBooleanProperty(PROP_EVENTS);
|
||||
}
|
||||
|
||||
/**
|
||||
* This must be output in the jsp since <meta> must be in the <head>
|
||||
* @since 0.8.7
|
||||
*/
|
||||
public String getRefreshMeta() {
|
||||
if (_refreshDelaySeconds <= 8 ||
|
||||
ConfigRestartBean.getRestartTimeRemaining() < (1000 * (_refreshDelaySeconds + 30)))
|
||||
return "";
|
||||
// shorten the refresh by 3 seconds so we beat the iframe
|
||||
return "<meta http-equiv=\"refresh\" content=\"" + (_refreshDelaySeconds - 3) + "\">";
|
||||
}
|
||||
|
||||
/**
|
||||
* This was a HelperBase but now it's a FormHandler
|
||||
* @since 0.8.2
|
||||
@@ -51,13 +64,17 @@ public class GraphHelper extends FormHandler {
|
||||
public void setPeriodCount(String str) {
|
||||
try { _periodCount = Integer.parseInt(str); } catch (NumberFormatException nfe) {}
|
||||
}
|
||||
|
||||
public void setShowEvents(boolean b) { _showEvents = b; }
|
||||
|
||||
public void setHeight(String str) {
|
||||
try { _height = Math.min(Integer.parseInt(str), MAX_Y); } catch (NumberFormatException nfe) {}
|
||||
}
|
||||
|
||||
public void setWidth(String str) {
|
||||
try { _width = Math.min(Integer.parseInt(str), MAX_X); } catch (NumberFormatException nfe) {}
|
||||
}
|
||||
|
||||
public void setRefreshDelay(String str) {
|
||||
try {
|
||||
int rds = Integer.parseInt(str);
|
||||
@@ -67,8 +84,13 @@ public class GraphHelper extends FormHandler {
|
||||
_refreshDelaySeconds = -1;
|
||||
} catch (NumberFormatException nfe) {}
|
||||
}
|
||||
|
||||
/** @since 0.8.7 */
|
||||
public void setPersistent(String foo) { _persistent = true; }
|
||||
|
||||
public String getImages() {
|
||||
if (StatSummarizer.isDisabled())
|
||||
return "";
|
||||
try {
|
||||
List listeners = StatSummarizer.instance().getListeners();
|
||||
TreeSet ordered = new TreeSet(new AlphaComparator());
|
||||
@@ -91,12 +113,11 @@ public class GraphHelper extends FormHandler {
|
||||
+ "&height=" + (3 * _height)
|
||||
+ "\" target=\"_blank\">");
|
||||
String title = _("Combined bandwidth graph");
|
||||
_out.write("<img class=\"statimage\" width=\""
|
||||
+ (_width + 83) + "\" height=\"" + (_height + 92)
|
||||
+ "\" src=\"viewstat.jsp?stat=bw.combined"
|
||||
_out.write("<img class=\"statimage\""
|
||||
+ " src=\"viewstat.jsp?stat=bw.combined"
|
||||
+ "&periodCount=" + _periodCount
|
||||
+ "&width=" + _width
|
||||
+ "&height=" + (_height - 14)
|
||||
+ "&height=" + (_height - 13)
|
||||
+ "\" alt=\"" + title + "\" title=\"" + title + "\"></a>\n");
|
||||
}
|
||||
|
||||
@@ -113,9 +134,8 @@ public class GraphHelper extends FormHandler {
|
||||
+ "&width=" + (3 * _width)
|
||||
+ "&height=" + (3 * _height)
|
||||
+ "\" target=\"_blank\">");
|
||||
_out.write("<img class=\"statimage\" border=\"0\" width=\""
|
||||
+ (_width + 83) + "\" height=\"" + (_height + 92)
|
||||
+ "\" src=\"viewstat.jsp?stat="
|
||||
_out.write("<img class=\"statimage\" border=\"0\""
|
||||
+ " src=\"viewstat.jsp?stat="
|
||||
+ r.getRateStat().getName()
|
||||
+ "&showEvents=" + _showEvents
|
||||
+ "&period=" + r.getPeriod()
|
||||
@@ -125,10 +145,9 @@ public class GraphHelper extends FormHandler {
|
||||
+ "\" alt=\"" + title
|
||||
+ "\" title=\"" + title + "\"></a>\n");
|
||||
}
|
||||
if (_refreshDelaySeconds > 0)
|
||||
// shorten the refresh by 3 seconds so we beat the iframe
|
||||
_out.write("<meta http-equiv=\"refresh\" content=\"" + (_refreshDelaySeconds - 3) + "\">\n");
|
||||
|
||||
// FIXME jrobin doesn't support setting the timezone, will have to mod TimeAxis.java
|
||||
_out.write("<p><i>" + _("All times are UTC.") + "</i></p>\n");
|
||||
} catch (IOException ioe) {
|
||||
ioe.printStackTrace();
|
||||
}
|
||||
@@ -138,6 +157,8 @@ public class GraphHelper extends FormHandler {
|
||||
private static final int[] times = { 60, 2*60, 5*60, 10*60, 30*60, 60*60, -1 };
|
||||
|
||||
public String getForm() {
|
||||
if (StatSummarizer.isDisabled())
|
||||
return "";
|
||||
String prev = System.getProperty("net.i2p.router.web.GraphHelper.nonce");
|
||||
if (prev != null) System.setProperty("net.i2p.router.web.GraphHelper.noncePrev", prev);
|
||||
String nonce = "" + _context.random().nextLong();
|
||||
@@ -147,11 +168,11 @@ public class GraphHelper extends FormHandler {
|
||||
_out.write("<form action=\"graphs\" method=\"POST\">\n" +
|
||||
"<input type=\"hidden\" name=\"action\" value=\"foo\">\n" +
|
||||
"<input type=\"hidden\" name=\"nonce\" value=\"" + nonce + "\" >\n");
|
||||
_out.write(_("Periods") + ": <input size=\"3\" type=\"text\" name=\"periodCount\" value=\"" + _periodCount + "\"><br>\n");
|
||||
_out.write(_("Periods") + ": <input size=\"5\" style=\"text-align: right;\" type=\"text\" name=\"periodCount\" value=\"" + _periodCount + "\"><br>\n");
|
||||
_out.write(_("Plot averages") + ": <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"false\" " + (_showEvents ? "" : "checked=\"true\" ") + "> ");
|
||||
_out.write(_("or")+ " " +_("plot events") + ": <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"true\" "+ (_showEvents ? "checked=\"true\" " : "") + "><br>\n");
|
||||
_out.write(_("Image sizes") + ": " + _("width") + ": <input size=\"4\" type=\"text\" name=\"width\" value=\"" + _width
|
||||
+ "\"> " + _("pixels") + ", " + _("height") + ": <input size=\"4\" type=\"text\" name=\"height\" value=\"" + _height
|
||||
_out.write(_("Image sizes") + ": " + _("width") + ": <input size=\"4\" style=\"text-align: right;\" type=\"text\" name=\"width\" value=\"" + _width
|
||||
+ "\"> " + _("pixels") + ", " + _("height") + ": <input size=\"4\" style=\"text-align: right;\" type=\"text\" name=\"height\" value=\"" + _height
|
||||
+ "\"> " + _("pixels") + "<br>\n");
|
||||
_out.write(_("Refresh delay") + ": <select name=\"refreshDelay\">");
|
||||
for (int i = 0; i < times.length; i++) {
|
||||
@@ -168,13 +189,40 @@ public class GraphHelper extends FormHandler {
|
||||
_out.write("</option>\n");
|
||||
}
|
||||
_out.write("</select><br>\n" +
|
||||
"<hr><div class=\"formaction\"><input type=\"submit\" value=\"" + _("Redraw") + "\"></div></form>");
|
||||
_("Store graph data on disk?") +
|
||||
" <input type=\"checkbox\" class=\"optbox\" value=\"true\" name=\"persistent\"");
|
||||
boolean persistent = _context.getBooleanPropertyDefaultTrue(SummaryListener.PROP_PERSISTENT);
|
||||
if (persistent)
|
||||
_out.write(" checked=\"true\"");
|
||||
_out.write(">" +
|
||||
"<hr><div class=\"formaction\"><input type=\"submit\" value=\"" + _("Save settings and redraw graphs") + "\"></div></form>");
|
||||
} catch (IOException ioe) {
|
||||
ioe.printStackTrace();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* We have to do this here because processForm() isn't called unless the nonces are good
|
||||
* @since 0.8.7
|
||||
*/
|
||||
@Override
|
||||
public String getAllMessages() {
|
||||
if (StatSummarizer.isDisabled()) {
|
||||
addFormError("Graphing not supported with this JVM: " +
|
||||
System.getProperty("java.vendor") + ' ' +
|
||||
System.getProperty("java.version") + " (" +
|
||||
System.getProperty("java.runtime.name") + ' ' +
|
||||
System.getProperty("java.runtime.version") + ')');
|
||||
if (_context.getProperty(PROP_REFRESH, 0) >= 0) {
|
||||
// force no refresh, save silently
|
||||
_context.router().setConfigSetting(PROP_REFRESH, "-1");
|
||||
_context.router().saveConfig();
|
||||
}
|
||||
}
|
||||
return super.getAllMessages();
|
||||
}
|
||||
|
||||
/**
|
||||
* This was a HelperBase but now it's a FormHandler
|
||||
* @since 0.8.2
|
||||
@@ -193,26 +241,27 @@ public class GraphHelper extends FormHandler {
|
||||
_height != _context.getProperty(PROP_Y, DEFAULT_Y) ||
|
||||
_periodCount != _context.getProperty(PROP_PERIODS, DEFAULT_PERIODS) ||
|
||||
_refreshDelaySeconds != _context.getProperty(PROP_REFRESH, DEFAULT_REFRESH) ||
|
||||
_showEvents != Boolean.valueOf(_context.getProperty(PROP_EVENTS)).booleanValue()) {
|
||||
_showEvents != _context.getBooleanProperty(PROP_EVENTS) ||
|
||||
_persistent != _context.getBooleanPropertyDefaultTrue(SummaryListener.PROP_PERSISTENT)) {
|
||||
_context.router().setConfigSetting(PROP_X, "" + _width);
|
||||
_context.router().setConfigSetting(PROP_Y, "" + _height);
|
||||
_context.router().setConfigSetting(PROP_PERIODS, "" + _periodCount);
|
||||
_context.router().setConfigSetting(PROP_REFRESH, "" + _refreshDelaySeconds);
|
||||
_context.router().setConfigSetting(PROP_EVENTS, "" + _showEvents);
|
||||
_context.router().setConfigSetting(SummaryListener.PROP_PERSISTENT, "" + _persistent);
|
||||
_context.router().saveConfig();
|
||||
addFormNotice(_("Graph settings saved"));
|
||||
}
|
||||
}
|
||||
|
||||
/** inner class, don't bother reindenting */
|
||||
private static class AlphaComparator implements Comparator {
|
||||
public int compare(Object lhs, Object rhs) {
|
||||
SummaryListener l = (SummaryListener)lhs;
|
||||
SummaryListener r = (SummaryListener)rhs;
|
||||
String lName = l.getRate().getRateStat().getName() + "." + l.getRate().getPeriod();
|
||||
String rName = r.getRate().getRateStat().getName() + "." + r.getRate().getPeriod();
|
||||
return lName.compareTo(rName);
|
||||
private static class AlphaComparator implements Comparator<SummaryListener> {
|
||||
public int compare(SummaryListener l, SummaryListener r) {
|
||||
String lName = l.getRate().getRateStat().getName();
|
||||
String rName = r.getRate().getRateStat().getName();
|
||||
int rv = lName.compareTo(rName);
|
||||
if (rv != 0)
|
||||
return rv;
|
||||
return (int) (l.getRate().getPeriod() - r.getRate().getPeriod());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
|
||||
private String _updateVersion;
|
||||
private String _unsignedUpdateVersion;
|
||||
private String _lastModified;
|
||||
private boolean _invalidated;
|
||||
private File _newsFile;
|
||||
private File _tempFile;
|
||||
private static NewsFetcher _instance;
|
||||
@@ -134,6 +135,8 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
|
||||
}
|
||||
|
||||
private boolean shouldFetchNews() {
|
||||
if (_invalidated)
|
||||
return true;
|
||||
updateLastFetched();
|
||||
String freq = _context.getProperty(ConfigUpdateHandler.PROP_REFRESH_FREQUENCY,
|
||||
ConfigUpdateHandler.DEFAULT_REFRESH_FREQUENCY);
|
||||
@@ -155,6 +158,16 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Call this when changing news URLs to force an update next time the timer fires.
|
||||
* @since 0.8.7
|
||||
*/
|
||||
void invalidateNews() {
|
||||
_lastModified = null;
|
||||
_invalidated = true;
|
||||
}
|
||||
|
||||
public void fetchNews() {
|
||||
String newsURL = ConfigUpdateHelper.getNewsURL(_context);
|
||||
boolean shouldProxy = Boolean.valueOf(_context.getProperty(ConfigUpdateHandler.PROP_SHOULD_PROXY, ConfigUpdateHandler.DEFAULT_SHOULD_PROXY)).booleanValue();
|
||||
@@ -172,6 +185,7 @@ public class NewsFetcher implements Runnable, EepGet.StatusListener {
|
||||
get.addStatusListener(this);
|
||||
if (get.fetch()) {
|
||||
_lastModified = get.getLastModified();
|
||||
_invalidated = false;
|
||||
} else {
|
||||
// backup news location - always proxied
|
||||
_tempFile.delete();
|
||||
|
||||
@@ -1,16 +1,25 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.StringTokenizer;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.concurrent.Semaphore;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.imageio.stream.ImageOutputStream;
|
||||
import javax.imageio.stream.MemoryCacheImageOutputStream;
|
||||
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.stat.Rate;
|
||||
import net.i2p.stat.RateStat;
|
||||
import net.i2p.util.FileUtil;
|
||||
import net.i2p.util.Log;
|
||||
|
||||
import org.jrobin.core.RrdException;
|
||||
@@ -18,7 +27,17 @@ import org.jrobin.graph.RrdGraph;
|
||||
import org.jrobin.graph.RrdGraphDef;
|
||||
|
||||
/**
|
||||
* A thread started by RouterConsoleRunner that
|
||||
* checks the configuration for stats to be tracked via jrobin,
|
||||
* and adds or deletes RRDs as necessary.
|
||||
*
|
||||
* This also contains methods to generate xml or png image output.
|
||||
* The actual png rendering code is here for the special dual-rate graph;
|
||||
* the rendering for standard graphs is in SummaryRenderer.
|
||||
*
|
||||
* To control memory, the number of simultaneous renderings is limited.
|
||||
*
|
||||
* @since 0.6.1.13
|
||||
*/
|
||||
public class StatSummarizer implements Runnable {
|
||||
private final RouterContext _context;
|
||||
@@ -28,25 +47,52 @@ public class StatSummarizer implements Runnable {
|
||||
private static StatSummarizer _instance;
|
||||
private static final int MAX_CONCURRENT_PNG = 3;
|
||||
private final Semaphore _sem;
|
||||
private volatile boolean _isRunning = true;
|
||||
private boolean _isDisabled;
|
||||
private Thread _thread;
|
||||
|
||||
public StatSummarizer() {
|
||||
_context = (RouterContext)RouterContext.listContexts().get(0); // fuck it, only summarize one per jvm
|
||||
_log = _context.logManager().getLog(getClass());
|
||||
_listeners = new ArrayList(16);
|
||||
_listeners = new CopyOnWriteArrayList();
|
||||
_instance = this;
|
||||
_sem = new Semaphore(MAX_CONCURRENT_PNG, true);
|
||||
_context.addShutdownTask(new Shutdown());
|
||||
}
|
||||
|
||||
public static StatSummarizer instance() { return _instance; }
|
||||
|
||||
public void run() {
|
||||
// JRobin 1.5.9 crashes these JVMs
|
||||
String vendor = System.getProperty("java.vendor");
|
||||
if (vendor.startsWith("Apache") || // Harmony
|
||||
vendor.startsWith("GNU Classpath") || // JamVM
|
||||
vendor.startsWith("Free Software Foundation")) { // gij
|
||||
_log.logAlways(Log.WARN, "Graphing not supported with this JVM: " +
|
||||
vendor + ' ' +
|
||||
System.getProperty("java.version") + " (" +
|
||||
System.getProperty("java.runtime.name") + ' ' +
|
||||
System.getProperty("java.runtime.version") + ')');
|
||||
_isDisabled = true;
|
||||
_isRunning = false;
|
||||
return;
|
||||
}
|
||||
boolean isPersistent = _context.getBooleanPropertyDefaultTrue(SummaryListener.PROP_PERSISTENT);
|
||||
if (!isPersistent)
|
||||
deleteOldRRDs();
|
||||
_thread = Thread.currentThread();
|
||||
String specs = "";
|
||||
while (_context.router().isAlive()) {
|
||||
while (_isRunning && _context.router().isAlive()) {
|
||||
specs = adjustDatabases(specs);
|
||||
try { Thread.sleep(60*1000); } catch (InterruptedException ie) {}
|
||||
}
|
||||
}
|
||||
|
||||
/** @since 0.8.7 */
|
||||
static boolean isDisabled() {
|
||||
return _instance == null || _instance._isDisabled;
|
||||
}
|
||||
|
||||
/** list of SummaryListener instances */
|
||||
List<SummaryListener> getListeners() { return _listeners; }
|
||||
|
||||
@@ -105,10 +151,10 @@ public class StatSummarizer implements Runnable {
|
||||
}
|
||||
|
||||
private void removeDb(Rate r) {
|
||||
for (int i = 0; i < _listeners.size(); i++) {
|
||||
SummaryListener lsnr = _listeners.get(i);
|
||||
for (SummaryListener lsnr : _listeners) {
|
||||
if (lsnr.getRate().equals(r)) {
|
||||
_listeners.remove(i);
|
||||
// no iter.remove() in COWAL
|
||||
_listeners.remove(lsnr);
|
||||
lsnr.stopListening();
|
||||
return;
|
||||
}
|
||||
@@ -116,13 +162,17 @@ public class StatSummarizer implements Runnable {
|
||||
}
|
||||
private void addDb(Rate r) {
|
||||
SummaryListener lsnr = new SummaryListener(r);
|
||||
_listeners.add(lsnr);
|
||||
lsnr.startListening();
|
||||
boolean success = lsnr.startListening();
|
||||
if (success)
|
||||
_listeners.add(lsnr);
|
||||
else
|
||||
_log.error("Failed to add RRD for rate " + r.getRateStat().getName() + '.' + r.getPeriod());
|
||||
//System.out.println("Start listening for " + r.getRateStat().getName() + ": " + r.getPeriod());
|
||||
}
|
||||
|
||||
public boolean renderPng(Rate rate, OutputStream out) throws IOException {
|
||||
return renderPng(rate, out, -1, -1, false, false, false, false, -1, true);
|
||||
return renderPng(rate, out, GraphHelper.DEFAULT_X, GraphHelper.DEFAULT_Y,
|
||||
false, false, false, false, -1, true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -141,7 +191,7 @@ public class StatSummarizer implements Runnable {
|
||||
return locked_renderPng(rate, out, width, height, hideLegend, hideGrid, hideTitle, showEvents,
|
||||
periodCount, showCredit);
|
||||
} finally {
|
||||
_sem.release();
|
||||
_sem.release();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,10 +200,13 @@ public class StatSummarizer implements Runnable {
|
||||
boolean showCredit) throws IOException {
|
||||
if (width > GraphHelper.MAX_X)
|
||||
width = GraphHelper.MAX_X;
|
||||
else if (width <= 0)
|
||||
width = GraphHelper.DEFAULT_X;
|
||||
if (height > GraphHelper.MAX_Y)
|
||||
height = GraphHelper.MAX_Y;
|
||||
for (int i = 0; i < _listeners.size(); i++) {
|
||||
SummaryListener lsnr = _listeners.get(i);
|
||||
else if (height <= 0)
|
||||
height = GraphHelper.DEFAULT_Y;
|
||||
for (SummaryListener lsnr : _listeners) {
|
||||
if (lsnr.getRate().equals(rate)) {
|
||||
lsnr.renderPng(out, width, height, hideLegend, hideGrid, hideTitle, showEvents, periodCount, showCredit);
|
||||
return true;
|
||||
@@ -162,14 +215,25 @@ public class StatSummarizer implements Runnable {
|
||||
return false;
|
||||
}
|
||||
|
||||
/** @deprecated unused */
|
||||
public boolean renderPng(OutputStream out, String templateFilename) throws IOException {
|
||||
SummaryRenderer.render(_context, out, templateFilename);
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean getXML(Rate rate, OutputStream out) throws IOException {
|
||||
for (int i = 0; i < _listeners.size(); i++) {
|
||||
SummaryListener lsnr = _listeners.get(i);
|
||||
try {
|
||||
try {
|
||||
_sem.acquire();
|
||||
} catch (InterruptedException ie) {}
|
||||
return locked_getXML(rate, out);
|
||||
} finally {
|
||||
_sem.release();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean locked_getXML(Rate rate, OutputStream out) throws IOException {
|
||||
for (SummaryListener lsnr : _listeners) {
|
||||
if (lsnr.getRate().equals(rate)) {
|
||||
lsnr.getData().exportXml(out);
|
||||
out.write(("<!-- Rate: " + lsnr.getRate().getRateStat().getName() + " for period " + lsnr.getRate().getPeriod() + " -->\n").getBytes());
|
||||
@@ -196,68 +260,93 @@ public class StatSummarizer implements Runnable {
|
||||
return locked_renderRatePng(out, width, height, hideLegend, hideGrid, hideTitle, showEvents,
|
||||
periodCount, showCredit);
|
||||
} finally {
|
||||
_sem.release();
|
||||
_sem.release();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean locked_renderRatePng(OutputStream out, int width, int height, boolean hideLegend,
|
||||
boolean hideGrid, boolean hideTitle, boolean showEvents,
|
||||
int periodCount, boolean showCredit) throws IOException {
|
||||
long end = _context.clock().now() - 60*1000;
|
||||
|
||||
// go to some trouble to see if we have the data for the combined bw graph
|
||||
SummaryListener txLsnr = null;
|
||||
SummaryListener rxLsnr = null;
|
||||
for (SummaryListener lsnr : StatSummarizer.instance().getListeners()) {
|
||||
String title = lsnr.getRate().getRateStat().getName();
|
||||
if (title.equals("bw.sendRate"))
|
||||
txLsnr = lsnr;
|
||||
else if (title.equals("bw.recvRate"))
|
||||
rxLsnr = lsnr;
|
||||
}
|
||||
if (txLsnr == null || rxLsnr == null)
|
||||
throw new IOException("no rates for combined graph");
|
||||
|
||||
long end = _context.clock().now() - 75*1000;
|
||||
if (width > GraphHelper.MAX_X)
|
||||
width = GraphHelper.MAX_X;
|
||||
else if (width <= 0)
|
||||
width = GraphHelper.DEFAULT_X;
|
||||
if (height > GraphHelper.MAX_Y)
|
||||
height = GraphHelper.MAX_Y;
|
||||
if (periodCount <= 0) periodCount = SummaryListener.PERIODS;
|
||||
if (periodCount > SummaryListener.PERIODS)
|
||||
periodCount = SummaryListener.PERIODS;
|
||||
else if (height <= 0)
|
||||
height = GraphHelper.DEFAULT_Y;
|
||||
if (periodCount <= 0 || periodCount > txLsnr.getRows())
|
||||
periodCount = txLsnr.getRows();
|
||||
long period = 60*1000;
|
||||
long start = end - period*periodCount;
|
||||
//long begin = System.currentTimeMillis();
|
||||
try {
|
||||
RrdGraphDef def = new RrdGraphDef();
|
||||
def.setTimePeriod(start/1000, 0);
|
||||
def.setLowerLimit(0d);
|
||||
def.setBaseValue(1024);
|
||||
// Note to translators: all runtime zh translation disabled in this file, no font available in RRD
|
||||
def.setTimeSpan(start/1000, end/1000);
|
||||
def.setMinValue(0d);
|
||||
def.setBase(1024);
|
||||
String title = _("Bandwidth usage");
|
||||
if (!hideTitle)
|
||||
def.setTitle(title);
|
||||
long started = _context.router().getWhenStarted();
|
||||
if (started > start && started < end)
|
||||
def.vrule(started / 1000, SummaryRenderer.RESTART_BAR_COLOR, null, 4.0f); // no room for legend
|
||||
String sendName = SummaryListener.createName(_context, "bw.sendRate.60000");
|
||||
String recvName = SummaryListener.createName(_context, "bw.recvRate.60000");
|
||||
def.datasource(sendName, sendName, sendName, "AVERAGE", "MEMORY");
|
||||
def.datasource(recvName, recvName, recvName, "AVERAGE", "MEMORY");
|
||||
def.area(sendName, Color.BLUE, _("Outbound bytes/sec"));
|
||||
def.datasource(sendName, txLsnr.getData().getPath(), sendName, SummaryListener.CF, txLsnr.getBackendName());
|
||||
def.datasource(recvName, rxLsnr.getData().getPath(), recvName, SummaryListener.CF, rxLsnr.getBackendName());
|
||||
def.area(sendName, Color.BLUE, _("Outbound Bytes/sec"));
|
||||
//def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3);
|
||||
def.line(recvName, Color.RED, _("Inbound bytes/sec") + "@r", 3);
|
||||
def.line(recvName, Color.RED, _("Inbound Bytes/sec") + "\\r", 3);
|
||||
//def.area(recvName, Color.RED, "Inbound bytes/sec@r");
|
||||
if (!hideLegend) {
|
||||
def.gprint(sendName, "AVERAGE", _("out average") + ": @2@s" + _("bytes/sec"));
|
||||
def.gprint(sendName, "MAX", ' ' + _("max") + ": @2@s" + _("bytes/sec") + "@r");
|
||||
def.gprint(recvName, "AVERAGE", _("in average") + ": @2@s" + _("bytes/sec"));
|
||||
def.gprint(recvName, "MAX", ' ' + _("max") + ": @2@s" + _("bytes/sec") + "@r");
|
||||
def.gprint(sendName, SummaryListener.CF, _("Out average") + ": %.2f %s" + _("Bps"));
|
||||
def.gprint(sendName, "MAX", ' ' + _("max") + ": %.2f %S" + _("Bps") + "\\r");
|
||||
def.gprint(recvName, SummaryListener.CF, _("In average") + ": %.2f %S" + _("Bps"));
|
||||
def.gprint(recvName, "MAX", ' ' + _("max") + ": %.2f %S" + _("Bps") + "\\r");
|
||||
}
|
||||
if (!showCredit)
|
||||
def.setShowSignature(false);
|
||||
if (hideLegend)
|
||||
def.setShowLegend(false);
|
||||
def.setNoLegend(true);
|
||||
if (hideGrid) {
|
||||
def.setGridX(false);
|
||||
def.setGridY(false);
|
||||
def.setDrawXGrid(false);
|
||||
def.setDrawYGrid(false);
|
||||
}
|
||||
//System.out.println("rendering: path=" + path + " dsNames[0]=" + dsNames[0] + " dsNames[1]=" + dsNames[1] + " lsnr.getName=" + _listener.getName());
|
||||
def.setAntiAliasing(false);
|
||||
//System.out.println("Rendering: \n" + def.exportXmlTemplate());
|
||||
//System.out.println("*****************\nData: \n" + _listener.getData().dump());
|
||||
def.setWidth(width);
|
||||
def.setHeight(height);
|
||||
def.setImageFormat("PNG");
|
||||
def.setLazy(true);
|
||||
|
||||
RrdGraph graph = new RrdGraph(def);
|
||||
//System.out.println("Graph created");
|
||||
byte data[] = null;
|
||||
if ( (width <= 0) || (height <= 0) )
|
||||
data = graph.getPNGBytes();
|
||||
else
|
||||
data = graph.getPNGBytes(width, height);
|
||||
//long timeToPlot = System.currentTimeMillis() - begin;
|
||||
out.write(data);
|
||||
int totalWidth = graph.getRrdGraphInfo().getWidth();
|
||||
int totalHeight = graph.getRrdGraphInfo().getHeight();
|
||||
BufferedImage img = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_USHORT_565_RGB);
|
||||
Graphics gfx = img.getGraphics();
|
||||
graph.render(gfx);
|
||||
ImageOutputStream ios = new MemoryCacheImageOutputStream(out);
|
||||
ImageIO.write(img, "png", ios);
|
||||
|
||||
//File t = File.createTempFile("jrobinData", ".xml");
|
||||
//_listener.getData().dumpXml(new FileOutputStream(t));
|
||||
//System.out.println("plotted: " + (data != null ? data.length : 0) + " bytes in " + timeToPlot
|
||||
@@ -303,11 +392,40 @@ public class StatSummarizer implements Runnable {
|
||||
return rv;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete the old rrd dir if we are no longer persistent
|
||||
* @since 0.8.7
|
||||
*/
|
||||
private void deleteOldRRDs() {
|
||||
File rrdDir = new File(_context.getRouterDir(), SummaryListener.RRD_DIR);
|
||||
FileUtil.rmdir(rrdDir, false);
|
||||
}
|
||||
|
||||
private static final boolean IS_WIN = System.getProperty("os.name").startsWith("Win");
|
||||
|
||||
/** translate a string */
|
||||
private String _(String s) {
|
||||
// the RRD font doesn't have zh chars, at least on my system
|
||||
if ("zh".equals(Messages.getLanguage(_context)))
|
||||
// Works on 1.5.9 except on windows
|
||||
if (IS_WIN && "zh".equals(Messages.getLanguage(_context)))
|
||||
return s;
|
||||
return Messages.getString(s, _context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Make sure any persistent RRDs are closed
|
||||
* @since 0.8.7
|
||||
*/
|
||||
private class Shutdown implements Runnable {
|
||||
public void run() {
|
||||
_isRunning = false;
|
||||
if (_thread != null)
|
||||
_thread.interrupt();
|
||||
for (SummaryListener lsnr : _listeners) {
|
||||
// FIXME could cause exceptions if rendering?
|
||||
lsnr.stopListening();
|
||||
}
|
||||
_listeners.clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ public class SummaryBarRenderer {
|
||||
.append(_("Health Report"))
|
||||
.append("\">")
|
||||
.append(_("Logs"))
|
||||
.append("</a>\n" +
|
||||
.append("</a>\n");
|
||||
|
||||
// "<a href=\"/jobs.jsp\" target=\"_top\" title=\"")
|
||||
// .append(_("Show the router's workload, and how it's performing"))
|
||||
@@ -131,13 +131,15 @@ public class SummaryBarRenderer {
|
||||
// .append(_("Jobs"))
|
||||
// .append("</a>\n" +
|
||||
|
||||
"<a href=\"/graphs\" target=\"_top\" title=\"")
|
||||
if (!StatSummarizer.isDisabled()) {
|
||||
buf.append("<a href=\"/graphs\" target=\"_top\" title=\"")
|
||||
.append(_("Graph router performance"))
|
||||
.append("\">")
|
||||
.append(_("Graphs"))
|
||||
.append("</a>\n" +
|
||||
.append("</a>\n");
|
||||
}
|
||||
|
||||
"<a href=\"/stats\" target=\"_top\" title=\"")
|
||||
buf.append("<a href=\"/stats\" target=\"_top\" title=\"")
|
||||
.append(_("Textual router performance statistics"))
|
||||
.append("\">")
|
||||
.append(_("Stats"))
|
||||
|
||||
@@ -384,7 +384,7 @@ public class SummaryHelper extends HelperBase {
|
||||
buf.append("client.png\" alt=\"Client\" title=\"" + _("Client") + "\">");
|
||||
buf.append("</td><td align=\"left\"><b><a href=\"tunnels#").append(h.toBase64().substring(0,4));
|
||||
buf.append("\" target=\"_top\" title=\"" + _("Show tunnels") + "\">");
|
||||
if (name.length() < 16)
|
||||
if (name.length() < 18)
|
||||
buf.append(name);
|
||||
else
|
||||
buf.append(name.substring(0,15)).append("…");
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
@@ -10,42 +10,59 @@ import net.i2p.stat.Rate;
|
||||
import net.i2p.stat.RateStat;
|
||||
import net.i2p.stat.RateSummaryListener;
|
||||
import net.i2p.util.Log;
|
||||
import net.i2p.util.SecureFile;
|
||||
import net.i2p.util.SecureFileOutputStream;
|
||||
|
||||
import org.jrobin.core.Archive;
|
||||
import org.jrobin.core.RrdBackendFactory;
|
||||
import org.jrobin.core.RrdDb;
|
||||
import org.jrobin.core.RrdDef;
|
||||
import org.jrobin.core.RrdException;
|
||||
import org.jrobin.core.RrdMemoryBackendFactory;
|
||||
import org.jrobin.core.RrdNioBackendFactory;
|
||||
import org.jrobin.core.Sample;
|
||||
import org.jrobin.graph.RrdGraph;
|
||||
import org.jrobin.graph.RrdGraphDef;
|
||||
import org.jrobin.graph.RrdGraphDefTemplate;
|
||||
|
||||
/**
|
||||
* Creates and updates the in-memory or on-disk RRD database,
|
||||
* and provides methods to generate graphs of the data
|
||||
*
|
||||
* @since 0.6.1.13
|
||||
*/
|
||||
class SummaryListener implements RateSummaryListener {
|
||||
private I2PAppContext _context;
|
||||
private Log _log;
|
||||
private Rate _rate;
|
||||
static final String PROP_PERSISTENT = "routerconsole.graphPersistent";
|
||||
/** note that .jrb files are NOT compatible with .rrd files */
|
||||
static final String RRD_DIR = "rrd";
|
||||
private static final String RRD_PREFIX = "rrd-";
|
||||
private static final String RRD_SUFFIX = ".jrb";
|
||||
static final String CF = "AVERAGE";
|
||||
private static final double XFF = 0.9d;
|
||||
private static final int STEPS = 1;
|
||||
|
||||
private final I2PAppContext _context;
|
||||
private final Log _log;
|
||||
private final Rate _rate;
|
||||
private final boolean _isPersistent;
|
||||
private String _name;
|
||||
private String _eventName;
|
||||
private RrdDb _db;
|
||||
private Sample _sample;
|
||||
private RrdMemoryBackendFactory _factory;
|
||||
private SummaryRenderer _renderer;
|
||||
private int _rows;
|
||||
|
||||
static final int PERIODS = 1440;
|
||||
|
||||
static {
|
||||
try {
|
||||
RrdBackendFactory.setDefaultFactory("MEMORY");
|
||||
} catch (RrdException re) {
|
||||
re.printStackTrace();
|
||||
}
|
||||
}
|
||||
static final int PERIODS = 60 * 24; // 1440
|
||||
private static final int MIN_ROWS = PERIODS;
|
||||
private static final int MAX_ROWS = 91 * MIN_ROWS;
|
||||
private static final long THREE_MONTHS = 91l * 24 * 60 * 60 * 1000;
|
||||
|
||||
public SummaryListener(Rate r) {
|
||||
_context = I2PAppContext.getGlobalContext();
|
||||
_rate = r;
|
||||
_log = _context.logManager().getLog(SummaryListener.class);
|
||||
_isPersistent = _context.getBooleanPropertyDefaultTrue(PROP_PERSISTENT);
|
||||
}
|
||||
|
||||
public void add(double totalValue, long eventCount, double totalEventTime, long period) {
|
||||
@@ -86,34 +103,73 @@ class SummaryListener implements RateSummaryListener {
|
||||
}
|
||||
|
||||
public Rate getRate() { return _rate; }
|
||||
public void startListening() {
|
||||
|
||||
/**
|
||||
* @return success
|
||||
*/
|
||||
public boolean startListening() {
|
||||
RateStat rs = _rate.getRateStat();
|
||||
long period = _rate.getPeriod();
|
||||
String baseName = rs.getName() + "." + period;
|
||||
_name = createName(_context, baseName);
|
||||
_eventName = createName(_context, baseName + ".events");
|
||||
try {
|
||||
RrdDef def = new RrdDef(_name, now()/1000, period/1000);
|
||||
// for info on the heartbeat, xff, steps, etc, see the rrdcreate man page, aka
|
||||
// http://www.jrobin.org/support/man/rrdcreate.html
|
||||
long heartbeat = period*10/1000;
|
||||
def.addDatasource(_name, "GAUGE", heartbeat, Double.NaN, Double.NaN);
|
||||
def.addDatasource(_eventName, "GAUGE", heartbeat, 0, Double.NaN);
|
||||
double xff = 0.9;
|
||||
int steps = 1;
|
||||
int rows = PERIODS;
|
||||
def.addArchive("AVERAGE", xff, steps, rows);
|
||||
_factory = (RrdMemoryBackendFactory)RrdBackendFactory.getDefaultFactory();
|
||||
_db = new RrdDb(def, _factory);
|
||||
RrdBackendFactory factory = RrdBackendFactory.getFactory(getBackendName());
|
||||
String rrdDefName;
|
||||
if (_isPersistent) {
|
||||
// generate full path for persistent RRD files
|
||||
File rrdDir = new SecureFile(_context.getRouterDir(), RRD_DIR);
|
||||
File rrdFile = new File(rrdDir, RRD_PREFIX + _name + RRD_SUFFIX);
|
||||
rrdDefName = rrdFile.getAbsolutePath();
|
||||
if (rrdFile.exists()) {
|
||||
_db = new RrdDb(rrdDefName, factory);
|
||||
Archive arch = _db.getArchive(CF, STEPS);
|
||||
if (arch == null)
|
||||
throw new IOException("No average CF in " + rrdDefName);
|
||||
_rows = arch.getRows();
|
||||
if (_log.shouldLog(Log.INFO))
|
||||
_log.info("Existing RRD " + baseName + " (" + rrdDefName + ") with " + _rows + " rows consuming " + _db.getRrdBackend().getLength() + " bytes");
|
||||
} else {
|
||||
rrdDir.mkdir();
|
||||
}
|
||||
} else {
|
||||
rrdDefName = _name;
|
||||
}
|
||||
if (_db == null) {
|
||||
// not persistent or not previously existing
|
||||
RrdDef def = new RrdDef(rrdDefName, now()/1000, period/1000);
|
||||
// for info on the heartbeat, xff, steps, etc, see the rrdcreate man page, aka
|
||||
// http://www.jrobin.org/support/man/rrdcreate.html
|
||||
long heartbeat = period*10/1000;
|
||||
def.addDatasource(_name, "GAUGE", heartbeat, Double.NaN, Double.NaN);
|
||||
def.addDatasource(_eventName, "GAUGE", heartbeat, 0, Double.NaN);
|
||||
int steps = 1;
|
||||
if (_isPersistent) {
|
||||
_rows = (int) Math.max(MIN_ROWS, Math.min(MAX_ROWS, THREE_MONTHS / period));
|
||||
} else {
|
||||
_rows = MIN_ROWS;
|
||||
}
|
||||
def.addArchive(CF, XFF, STEPS, _rows);
|
||||
_db = new RrdDb(def, factory);
|
||||
if (_isPersistent)
|
||||
SecureFileOutputStream.setPerms(new File(rrdDefName));
|
||||
if (_log.shouldLog(Log.INFO))
|
||||
_log.info("New RRD " + baseName + " (" + rrdDefName + ") with " + _rows + " rows consuming " + _db.getRrdBackend().getLength() + " bytes");
|
||||
}
|
||||
_sample = _db.createSample();
|
||||
_renderer = new SummaryRenderer(_context, this);
|
||||
_rate.setSummaryListener(this);
|
||||
return true;
|
||||
} catch (OutOfMemoryError oom) {
|
||||
_log.error("Error starting RRD for stat " + baseName, oom);
|
||||
} catch (RrdException re) {
|
||||
_log.error("Error starting", re);
|
||||
_log.error("Error starting RRD for stat " + baseName, re);
|
||||
} catch (IOException ioe) {
|
||||
_log.error("Error starting", ioe);
|
||||
_log.error("Error starting RRD for stat " + baseName, ioe);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void stopListening() {
|
||||
if (_db == null) return;
|
||||
try {
|
||||
@@ -122,23 +178,50 @@ class SummaryListener implements RateSummaryListener {
|
||||
_log.error("Error closing", ioe);
|
||||
}
|
||||
_rate.setSummaryListener(null);
|
||||
_factory.delete(_db.getPath());
|
||||
if (!_isPersistent) {
|
||||
// close() does not release resources for memory backend
|
||||
try {
|
||||
((RrdMemoryBackendFactory)RrdBackendFactory.getFactory(RrdMemoryBackendFactory.NAME)).delete(_db.getPath());
|
||||
} catch (RrdException re) {}
|
||||
}
|
||||
_db = null;
|
||||
}
|
||||
|
||||
public void renderPng(OutputStream out, int width, int height, boolean hideLegend, boolean hideGrid, boolean hideTitle, boolean showEvents, int periodCount, boolean showCredit) throws IOException {
|
||||
if (_renderer == null || _db == null)
|
||||
throw new IOException("No RRD, check logs for previous errors");
|
||||
_renderer.render(out, width, height, hideLegend, hideGrid, hideTitle, showEvents, periodCount, showCredit);
|
||||
}
|
||||
public void renderPng(OutputStream out) throws IOException { _renderer.render(out); }
|
||||
|
||||
public void renderPng(OutputStream out) throws IOException {
|
||||
if (_renderer == null || _db == null)
|
||||
throw new IOException("No RRD, check logs for previous errors");
|
||||
_renderer.render(out);
|
||||
}
|
||||
|
||||
String getName() { return _name; }
|
||||
|
||||
String getEventName() { return _eventName; }
|
||||
|
||||
RrdDb getData() { return _db; }
|
||||
|
||||
long now() { return _context.clock().now(); }
|
||||
|
||||
/** @since 0.8.7 */
|
||||
String getBackendName() {
|
||||
return _isPersistent ? RrdNioBackendFactory.NAME : RrdMemoryBackendFactory.NAME;
|
||||
}
|
||||
|
||||
/** @since 0.8.7 */
|
||||
int getRows() {
|
||||
return _rows;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return ((obj instanceof SummaryListener) && ((SummaryListener)obj)._rate.equals(_rate));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() { return _rate.hashCode(); }
|
||||
}
|
||||
|
||||
@@ -1,30 +1,40 @@
|
||||
package net.i2p.router.web;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.imageio.stream.ImageOutputStream;
|
||||
import javax.imageio.stream.MemoryCacheImageOutputStream;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.data.DataHelper;
|
||||
import net.i2p.router.RouterContext;
|
||||
import net.i2p.stat.Rate;
|
||||
import net.i2p.stat.RateStat;
|
||||
import net.i2p.stat.RateSummaryListener;
|
||||
import net.i2p.util.Log;
|
||||
|
||||
import org.jrobin.core.RrdBackendFactory;
|
||||
import org.jrobin.core.RrdDb;
|
||||
import org.jrobin.core.RrdDef;
|
||||
import org.jrobin.core.RrdException;
|
||||
import org.jrobin.core.RrdMemoryBackendFactory;
|
||||
import org.jrobin.core.Sample;
|
||||
import org.jrobin.graph.RrdGraph;
|
||||
import org.jrobin.graph.RrdGraphDef;
|
||||
import org.jrobin.graph.RrdGraphDefTemplate;
|
||||
|
||||
/**
|
||||
* Generate the RRD graph png images,
|
||||
* except for the combined rate graph, which is
|
||||
* generated in StatSummarizer.
|
||||
*
|
||||
* @since 0.6.1.13
|
||||
*/
|
||||
class SummaryRenderer {
|
||||
private Log _log;
|
||||
private SummaryListener _listener;
|
||||
private I2PAppContext _context;
|
||||
private final Log _log;
|
||||
private final SummaryListener _listener;
|
||||
private final I2PAppContext _context;
|
||||
static final Color RESTART_BAR_COLOR = new Color(255, 144, 0, 224);
|
||||
|
||||
public SummaryRenderer(I2PAppContext ctx, SummaryListener lsnr) {
|
||||
_log = ctx.logManager().getLog(SummaryRenderer.class);
|
||||
@@ -38,6 +48,7 @@ class SummaryRenderer {
|
||||
* DOM level 3 load and store support. Perhaps we can bundle that, or
|
||||
* specify who can get it from where, etc.
|
||||
*
|
||||
* @deprecated unsed
|
||||
*/
|
||||
public static synchronized void render(I2PAppContext ctx, OutputStream out, String filename) throws IOException {
|
||||
long end = ctx.clock().now() - 60*1000;
|
||||
@@ -45,10 +56,21 @@ class SummaryRenderer {
|
||||
try {
|
||||
RrdGraphDefTemplate template = new RrdGraphDefTemplate(filename);
|
||||
RrdGraphDef def = template.getRrdGraphDef();
|
||||
def.setTimePeriod(start/1000, end/1000); // ignore the periods in the template
|
||||
def.setTimeSpan(start/1000, end/1000); // ignore the periods in the template
|
||||
// FIXME not clear how to get the height and width from the template
|
||||
int width = GraphHelper.DEFAULT_X;
|
||||
int height = GraphHelper.DEFAULT_Y;
|
||||
def.setWidth(width);
|
||||
def.setHeight(height);
|
||||
|
||||
RrdGraph graph = new RrdGraph(def);
|
||||
byte img[] = graph.getPNGBytes();
|
||||
out.write(img);
|
||||
int totalWidth = graph.getRrdGraphInfo().getWidth();
|
||||
int totalHeight = graph.getRrdGraphInfo().getHeight();
|
||||
BufferedImage img = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_USHORT_565_RGB);
|
||||
Graphics gfx = img.getGraphics();
|
||||
graph.render(gfx);
|
||||
ImageOutputStream ios = new MemoryCacheImageOutputStream(out);
|
||||
ImageIO.write(img, "png", ios);
|
||||
} catch (RrdException re) {
|
||||
//_log.error("Error rendering " + filename, re);
|
||||
throw new IOException("Error plotting: " + re.getMessage());
|
||||
@@ -58,34 +80,33 @@ class SummaryRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
public void render(OutputStream out) throws IOException { render(out, -1, -1, false, false, false, false, -1, false); }
|
||||
public void render(OutputStream out) throws IOException { render(out, GraphHelper.DEFAULT_X, GraphHelper.DEFAULT_Y,
|
||||
false, false, false, false, -1, false); }
|
||||
|
||||
public void render(OutputStream out, int width, int height, boolean hideLegend, boolean hideGrid, boolean hideTitle, boolean showEvents, int periodCount, boolean showCredit) throws IOException {
|
||||
long end = _listener.now() - 60*1000;
|
||||
if (periodCount <= 0) periodCount = SummaryListener.PERIODS;
|
||||
if (periodCount > SummaryListener.PERIODS)
|
||||
periodCount = SummaryListener.PERIODS;
|
||||
long end = _listener.now() - 75*1000;
|
||||
if (periodCount <= 0 || periodCount > _listener.getRows())
|
||||
periodCount = _listener.getRows();
|
||||
long start = end - _listener.getRate().getPeriod()*periodCount;
|
||||
//long begin = System.currentTimeMillis();
|
||||
try {
|
||||
RrdGraphDef def = new RrdGraphDef();
|
||||
def.setTimePeriod(start/1000, 0);
|
||||
def.setLowerLimit(0d);
|
||||
def.setTimeSpan(start/1000, end/1000);
|
||||
def.setMinValue(0d);
|
||||
String name = _listener.getRate().getRateStat().getName();
|
||||
// heuristic to set K=1024
|
||||
if ((name.startsWith("bw.") || name.indexOf("Size") >= 0 || name.indexOf("Bps") >= 0 || name.indexOf("memory") >= 0)
|
||||
&& !showEvents)
|
||||
def.setBaseValue(1024);
|
||||
def.setBase(1024);
|
||||
if (!hideTitle) {
|
||||
String title;
|
||||
String p;
|
||||
// we want the formatting and translation of formatDuration2(), except not zh, and not the
|
||||
if ("zh".equals(Messages.getLanguage(_context)))
|
||||
if (IS_WIN && "zh".equals(Messages.getLanguage(_context)))
|
||||
p = DataHelper.formatDuration(_listener.getRate().getPeriod());
|
||||
else
|
||||
p = DataHelper.formatDuration2(_listener.getRate().getPeriod()).replace(" ", " ");
|
||||
if (showEvents)
|
||||
// Note to translators: all runtime zh translation disabled in this file, no font available in RRD
|
||||
title = name + ' ' + _("events in {0}", p);
|
||||
else
|
||||
title = name + ' ' + _("averaged for {0}", p);
|
||||
@@ -108,12 +129,18 @@ class SummaryRenderer {
|
||||
// Strings.java
|
||||
descr = _(_listener.getRate().getRateStat().getDescription());
|
||||
}
|
||||
def.datasource(plotName, path, plotName, "AVERAGE", "MEMORY");
|
||||
def.area(plotName, Color.BLUE, descr + "@r");
|
||||
long started = ((RouterContext)_context).router().getWhenStarted();
|
||||
if (started > start && started < end)
|
||||
def.vrule(started / 1000, RESTART_BAR_COLOR, _("Restart"), 4.0f);
|
||||
def.datasource(plotName, path, plotName, SummaryListener.CF, _listener.getBackendName());
|
||||
if (descr.length() > 0)
|
||||
def.area(plotName, Color.BLUE, descr + "\\r");
|
||||
else
|
||||
def.area(plotName, Color.BLUE);
|
||||
if (!hideLegend) {
|
||||
def.gprint(plotName, "AVERAGE", _("avg") + ": @2@s");
|
||||
def.gprint(plotName, "MAX", ' ' + _("max") + ": @2@s");
|
||||
def.gprint(plotName, "LAST", ' ' + _("now") + ": @2@s@r");
|
||||
def.gprint(plotName, SummaryListener.CF, _("avg") + ": %.2f %s");
|
||||
def.gprint(plotName, "MAX", ' ' + _("max") + ": %.2f %S");
|
||||
def.gprint(plotName, "LAST", ' ' + _("now") + ": %.2f %S\\r");
|
||||
}
|
||||
if (!showCredit)
|
||||
def.setShowSignature(false);
|
||||
@@ -126,24 +153,30 @@ class SummaryRenderer {
|
||||
def.line(dsNames[1], Color.RED, "Events per period");
|
||||
*/
|
||||
if (hideLegend)
|
||||
def.setShowLegend(false);
|
||||
def.setNoLegend(true);
|
||||
if (hideGrid) {
|
||||
def.setGridX(false);
|
||||
def.setGridY(false);
|
||||
def.setDrawXGrid(false);
|
||||
def.setDrawYGrid(false);
|
||||
}
|
||||
//System.out.println("rendering: path=" + path + " dsNames[0]=" + dsNames[0] + " dsNames[1]=" + dsNames[1] + " lsnr.getName=" + _listener.getName());
|
||||
def.setAntiAliasing(false);
|
||||
//System.out.println("Rendering: \n" + def.exportXmlTemplate());
|
||||
//System.out.println("*****************\nData: \n" + _listener.getData().dump());
|
||||
def.setWidth(width);
|
||||
def.setHeight(height);
|
||||
def.setImageFormat("PNG");
|
||||
def.setLazy(true);
|
||||
|
||||
RrdGraph graph = new RrdGraph(def);
|
||||
int totalWidth = graph.getRrdGraphInfo().getWidth();
|
||||
int totalHeight = graph.getRrdGraphInfo().getHeight();
|
||||
BufferedImage img = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_USHORT_565_RGB);
|
||||
Graphics gfx = img.getGraphics();
|
||||
graph.render(gfx);
|
||||
ImageOutputStream ios = new MemoryCacheImageOutputStream(out);
|
||||
ImageIO.write(img, "png", ios);
|
||||
//System.out.println("Graph created");
|
||||
byte data[] = null;
|
||||
if ( (width <= 0) || (height <= 0) )
|
||||
data = graph.getPNGBytes();
|
||||
else
|
||||
data = graph.getPNGBytes(width, height);
|
||||
//long timeToPlot = System.currentTimeMillis() - begin;
|
||||
out.write(data);
|
||||
|
||||
//File t = File.createTempFile("jrobinData", ".xml");
|
||||
//_listener.getData().dumpXml(new FileOutputStream(t));
|
||||
//System.out.println("plotted: " + (data != null ? data.length : 0) + " bytes in " + timeToPlot
|
||||
@@ -160,10 +193,13 @@ class SummaryRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
private static final boolean IS_WIN = System.getProperty("os.name").startsWith("Win");
|
||||
|
||||
/** translate a string */
|
||||
private String _(String s) {
|
||||
// the RRD font doesn't have zh chars, at least on my system
|
||||
if ("zh".equals(Messages.getLanguage(_context)))
|
||||
// Works on 1.5.9 except on windows
|
||||
if (IS_WIN && "zh".equals(Messages.getLanguage(_context)))
|
||||
return s;
|
||||
return Messages.getString(s, _context);
|
||||
}
|
||||
@@ -173,7 +209,8 @@ class SummaryRenderer {
|
||||
*/
|
||||
private String _(String s, String o) {
|
||||
// the RRD font doesn't have zh chars, at least on my system
|
||||
if ("zh".equals(Messages.getLanguage(_context)))
|
||||
// Works on 1.5.9 except on windows
|
||||
if (IS_WIN && "zh".equals(Messages.getLanguage(_context)))
|
||||
return s.replace("{0}", o);
|
||||
return Messages.getString(s, o, _context);
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.util.FileUtil;
|
||||
import net.i2p.util.Log;
|
||||
import net.i2p.util.SecureDirectory;
|
||||
|
||||
import org.mortbay.http.HttpContext;
|
||||
@@ -36,6 +37,12 @@ import org.mortbay.jetty.servlet.WebApplicationContext;
|
||||
public class WebAppStarter {
|
||||
|
||||
static final Map<String, Long> warModTimes = new ConcurrentHashMap();
|
||||
static private Log _log;
|
||||
|
||||
static {
|
||||
_log = ContextHelper.getContext(null).logManager().getLog(WebAppStarter.class); ;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* adds and starts
|
||||
@@ -43,7 +50,8 @@ public class WebAppStarter {
|
||||
*/
|
||||
static void startWebApp(I2PAppContext ctx, Server server, String appName, String warPath) throws Exception {
|
||||
File tmpdir = new SecureDirectory(ctx.getTempDir(), "jetty-work-" + appName + ctx.random().nextInt());
|
||||
WebApplicationContext wac = addWebApp(ctx, server, appName, warPath, tmpdir);
|
||||
WebApplicationContext wac = addWebApp(ctx, server, appName, warPath, tmpdir);
|
||||
_log.debug("Loading war from: " + warPath);
|
||||
wac.start();
|
||||
}
|
||||
|
||||
@@ -89,6 +97,8 @@ public class WebAppStarter {
|
||||
// this does the passwords...
|
||||
RouterConsoleRunner.initialize(wac);
|
||||
|
||||
|
||||
|
||||
// see WebAppConfiguration for info
|
||||
String[] classNames = server.getWebApplicationConfigurationClassNames();
|
||||
String[] newClassNames = new String[classNames.length + 1];
|
||||
|
||||
@@ -95,13 +95,5 @@ class Dummy {
|
||||
_("itag0");
|
||||
_("itag1");
|
||||
_("itag2");
|
||||
|
||||
// Descriptions for the stats that are graphed by default
|
||||
// There are over 500 stats currently defined, we aren't going to tag them all
|
||||
_("Low-level bandwidth receive rate"); // bw.recvRate
|
||||
_("Low-level bandwidth send rate"); // bw.sendRate
|
||||
_("How many peers we are actively talking with"); // router.activePeers
|
||||
// router.memoryUsed currently has the max size in the description so it can't be tagged
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,7 +165,7 @@
|
||||
<input type="radio" class="optbox" name="ntcpAutoPort" value="1" <%=nethelper.getTcpAutoPortChecked(1) %> >
|
||||
<%=intl._("Specify Port")%>:
|
||||
<input name ="ntcpport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="ntcpport" />" ><br>
|
||||
</p><p><b><%=intl._("Note")%>: <%=intl._("Changing these settings will restart your router.")%></b></p>
|
||||
</p><p><b><%=intl._("Notes")%>: <%=intl._("a) Do not reveal your port numbers to anyone! b) Changing these settings will restart your router.")%></b></p>
|
||||
<hr><div class="formaction">
|
||||
<input type="reset" value="<%=intl._("Cancel")%>" >
|
||||
<input type="submit" name="save" value="<%=intl._("Save changes")%>" >
|
||||
|
||||
@@ -26,10 +26,17 @@
|
||||
<input type="hidden" name="nonce" value="<jsp:getProperty name="formhandler" property="newNonce" />" >
|
||||
<% /* set hidden default */ %>
|
||||
<input type="submit" name="action" value="" style="display:none" >
|
||||
<% if (updatehelper.canInstall()) { %>
|
||||
<h3><%=intl._("Check for I2P and news updates")%></h3>
|
||||
<div class="wideload"><table border="0" cellspacing="5">
|
||||
<tr><td colspan="2"></tr>
|
||||
<tr><td class= "mediumtags" align="right"><b><%=intl._("News & I2P Updates")%>:</b></td>
|
||||
<% } else { %>
|
||||
<h3><%=intl._("Check for news updates")%></h3>
|
||||
<div class="wideload"><table border="0" cellspacing="5">
|
||||
<tr><td colspan="2"></tr>
|
||||
<tr><td class= "mediumtags" align="right"><b><%=intl._("News Updates")%>:</b></td>
|
||||
<% } // if canInstall %>
|
||||
<td> <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <i><%=intl._("Update In Progress")%></i><br> <% } else { %> <input type="submit" name="action" value="<%=intl._("Check for updates")%>" />
|
||||
<% } %></td></tr>
|
||||
<tr><td colspan="2"><br></td></tr>
|
||||
@@ -39,14 +46,16 @@
|
||||
<td><jsp:getProperty name="updatehelper" property="refreshFrequencySelectBox" /></td></tr>
|
||||
<% if (updatehelper.canInstall()) { %>
|
||||
<tr><td class= "mediumtags" align="right"><b><%=formhandler._("Update policy")%>:</b></td>
|
||||
<td><jsp:getProperty name="updatehelper" property="updatePolicySelectBox" /></td>
|
||||
<td><jsp:getProperty name="updatehelper" property="updatePolicySelectBox" /></td></tr>
|
||||
<% } // if canInstall %>
|
||||
<tr><td class= "mediumtags" align="right"><b><%=intl._("Update through the eepProxy?")%></b></td>
|
||||
<td><jsp:getProperty name="updatehelper" property="updateThroughProxy" /></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b><%=intl._("eepProxy host")%>:</b></td>
|
||||
<td><input type="text" size="10" name="proxyHost" value="<jsp:getProperty name="updatehelper" property="proxyHost" />" /></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b><%=intl._("eepProxy port")%>:</b></td>
|
||||
<td><input type="text" size="4" name="proxyPort" value="<jsp:getProperty name="updatehelper" property="proxyPort" />" /></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b><%=intl._("Update URLs")%>:</b></td>
|
||||
<td><input type="text" size="4" name="proxyPort" value="<jsp:getProperty name="updatehelper" property="proxyPort" />" /></td></tr>
|
||||
<% if (updatehelper.canInstall()) { %>
|
||||
<tr><td class= "mediumtags" align="right"><b><%=intl._("Update URLs")%>:</b></td>
|
||||
<td><textarea name="updateURL" wrap="off" spellcheck="false"><jsp:getProperty name="updatehelper" property="updateURL" /></textarea></td>
|
||||
</tr><tr><td class= "mediumtags" align="right"><b><%=intl._("Trusted keys")%>:</b></td>
|
||||
<td><textarea name="trustedKeys" wrap="off" spellcheck="false"><jsp:getProperty name="updatehelper" property="trustedKeys" /></textarea></td>
|
||||
@@ -55,7 +64,7 @@
|
||||
</tr><tr><td class= "mediumtags" align="right"><b><%=intl._("Unsigned Build URL")%>:</b></td>
|
||||
<td><input type="text" size="60" name="zipURL" value="<jsp:getProperty name="updatehelper" property="zipURL" />"></td></tr>
|
||||
<% } else { %>
|
||||
<tr><td class= "mediumtags" align="center" colspan="2"><b><%=intl._("I2P updates are disabled because you do not have write permission for the install directory.")%></b></td></tr>
|
||||
<tr><td class= "mediumtags" align="center" colspan="2"><b><%=intl._("Updates will be dispatched via your package manager.")%></b></td></tr>
|
||||
<% } // if canInstall %>
|
||||
<tr class="tablefooter"><td colspan="2">
|
||||
<div class="formaction">
|
||||
|
||||
@@ -36,10 +36,15 @@
|
||||
%>
|
||||
<link href="<%=intl.getTheme(request.getHeader("User-Agent"))%>console.css" rel="stylesheet" type="text/css">
|
||||
<%
|
||||
// make the fonts bigger for chinese
|
||||
if (intl.getLang().equals("zh")) {
|
||||
// make the fonts bigger for chinese
|
||||
%>
|
||||
<link href="<%=intl.getTheme(request.getHeader("User-Agent"))%>console_big.css" rel="stylesheet" type="text/css">
|
||||
<%
|
||||
} else if (intl.getLang().equals("ar")) {
|
||||
// Use RTL theme for Arabic
|
||||
%>
|
||||
<link href="<%=intl.getTheme(request.getHeader("User-Agent"))%>console_ar.css" rel="stylesheet" type="text/css">
|
||||
<%
|
||||
}
|
||||
%>
|
||||
|
||||
@@ -5,19 +5,26 @@
|
||||
<html><head>
|
||||
<%@include file="css.jsi" %>
|
||||
<%=intl.title("graphs")%>
|
||||
</head><body>
|
||||
|
||||
<%@include file="summary.jsi" %>
|
||||
<h1><%=intl._("I2P Performance Graphs")%></h1>
|
||||
<div class="main" id="main">
|
||||
<div class="graphspanel">
|
||||
<div class="widepanel">
|
||||
<jsp:useBean class="net.i2p.router.web.GraphHelper" id="graphHelper" scope="request" />
|
||||
<% graphHelper.storeMethod(request.getMethod()); %>
|
||||
<jsp:setProperty name="graphHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
|
||||
<% /* GraphHelper sets the defaults in setContextId, so setting the properties must be after the context */ %>
|
||||
<jsp:setProperty name="graphHelper" property="*" />
|
||||
<% graphHelper.storeWriter(out); %>
|
||||
<%
|
||||
graphHelper.storeWriter(out);
|
||||
graphHelper.storeMethod(request.getMethod());
|
||||
// meta must be inside the head
|
||||
boolean allowRefresh = intl.allowIFrame(request.getHeader("User-Agent"));
|
||||
if (allowRefresh) {
|
||||
out.print(graphHelper.getRefreshMeta());
|
||||
}
|
||||
%>
|
||||
</head><body>
|
||||
<%@include file="summary.jsi" %>
|
||||
<h1><%=intl._("I2P Performance Graphs")%></h1>
|
||||
<div class="main" id="main">
|
||||
<div class="graphspanel">
|
||||
<div class="widepanel">
|
||||
<jsp:getProperty name="graphHelper" property="allMessages" />
|
||||
<jsp:getProperty name="graphHelper" property="images" />
|
||||
<jsp:getProperty name="graphHelper" property="form" />
|
||||
|
||||
@@ -10,17 +10,17 @@
|
||||
<%@include file="css.jsi" %>
|
||||
</head><body>
|
||||
<%@include file="summary.jsi" %>
|
||||
<h1>I2P Router Help & Support</h1>
|
||||
<h1>I2P Router Help & Support</h1>
|
||||
<div class="main" id="main"><p>
|
||||
If you'd like to help improve or translate the documentation, or
|
||||
help with other aspects of the project, please see the documentation for
|
||||
<a href="http://www.i2p2.i2p/getinvolved.html">volunteers.</a>
|
||||
</p><p>Further assistance is available here:
|
||||
</p><p>Further assistance is available here:</p>
|
||||
<ul class="links">
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq.html">FAQ on www.i2p2.i2p</a>
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq_de.html">Deutsch FAQ</a>.</ul>
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq.html">FAQ on www.i2p2.i2p</a></li>
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq_de.html">Deutsch FAQ</a>.</li></ul>
|
||||
<br>You may also try the <a href="http://forum.i2p/">I2P forum</a>
|
||||
or IRC.</p>
|
||||
or IRC.
|
||||
|
||||
<h2>Summary Bar Information</h2><p>
|
||||
Many of the stats on the summary bar may be
|
||||
@@ -30,37 +30,37 @@ Many of the stats on the summary bar may be
|
||||
<li class="tidylist"><b>Ident:</b>
|
||||
The first four characters (24 bits) of your 44-character (256-bit) Base64 router hash.
|
||||
The full hash is shown on your <a href="netdb.jsp?r=.">router info page</a>.
|
||||
Never reveal this to anyone, as your router info contains your IP.
|
||||
Never reveal this to anyone, as your router info contains your IP.</li>
|
||||
<li class="tidylist"><b>Version:</b>
|
||||
The version of the I2P software you are running.
|
||||
The version of the I2P software you are running.</li>
|
||||
<li class="tidylist"><b>Now:</b>
|
||||
The current time (UTC) and the skew, if any. I2P requires your computer's time be accurate.
|
||||
If the skew is more than a few seconds, please correct the problem by adjusting
|
||||
your computer's time.
|
||||
your computer's time.</li>
|
||||
<li class="tidylist"><b>Reachability:</b>
|
||||
The router's view of whether it can be contacted by other routers.
|
||||
Further information is on the <a href="config.jsp#help">configuration page</a>.
|
||||
</ul><h3>Peers</h3><ul>
|
||||
</li></ul><h3>Peers</h3><ul>
|
||||
<li class="tidylist"><b>Active:</b>
|
||||
The first number is the number of peers you've sent or received a message from in the last few minutes.
|
||||
This may range from 8-10 to several hundred, depending on your total bandwidth,
|
||||
shared bandwidth, and locally-generated traffic.
|
||||
The second number is the number of peers seen in the last hour or so.
|
||||
Do not be concerned if these numbers vary widely.
|
||||
First enable all stats to <a href="configstats.jsp#router.activePeers">[Enable graphing]</a>.
|
||||
First enable all stats to <a href="configstats.jsp#router.activePeers">[Enable graphing]</a>.</li>
|
||||
<li class="tidylist"><b>Fast:</b>
|
||||
This is the number of peers you use for building client tunnels. It is generally in the
|
||||
range 8-30. Your fast peers are shown on the <a href="profiles.jsp">profiles page</a>.
|
||||
<a href="configstats.jsp#router.fastPeers">[Enable graphing]</a>.
|
||||
<a href="configstats.jsp#router.fastPeers">[Enable graphing]</a>.</li>
|
||||
<li class="tidylist"><b>High Capacity:</b>
|
||||
This is the number of peers you use for building some of your exploratory tunnels. It is generally in the
|
||||
range 8-75. The fast peers are included in the high capacity tier.
|
||||
Your high capacity peers are shown on the <a href="profiles.jsp">profiles page</a>.
|
||||
First enable all stats to <a href="configstats.jsp#router.highCapacityPeers">[Enable graphing]</a>.
|
||||
First enable all stats to <a href="configstats.jsp#router.highCapacityPeers">[Enable graphing]</a>.</li>
|
||||
<li class="tidylist"><b>Well Integrated:</b>
|
||||
This is the number of peers you use for network database inquiries.
|
||||
These are usually the "floodfill" peers.
|
||||
Your well integrated peers are shown on the bottom of the <a href="profiles.jsp">profiles page</a>.
|
||||
Your well integrated peers are shown on the bottom of the <a href="profiles.jsp">profiles page</a>.</li>
|
||||
<li class="tidylist"><b>Known:</b>
|
||||
This is the total number of routers you know about.
|
||||
They are listed on the <a href="netdb.jsp">network database page</a>.
|
||||
@@ -68,7 +68,7 @@ This may range from under 100 to 1000 or more.
|
||||
This number is not the total size of the network;
|
||||
it may vary widely depending on your total bandwidth,
|
||||
shared bandwidth, and locally-generated traffic.
|
||||
I2P does not require a router to know every other router.
|
||||
I2P does not require a router to know every other router.</li>
|
||||
</ul><h3>Bandwidth in/out</h3><div align="justify">
|
||||
Should be self-explanatory. All values are in bytes per second, not bits per second.
|
||||
Change your bandwidth limits on the <a href="config.jsp#help">configuration page</a>.
|
||||
@@ -82,9 +82,9 @@ or external programs connecting through SAM, BOB, or directly to I2CP.
|
||||
The actual tunnels are shown on the <a href="tunnels.jsp">the tunnels page</a>.</div><ul>
|
||||
<li class="tidylist"><div align="justify"><b>Exploratory:</b>
|
||||
Tunnels built by your router and used for communication with the floodfill peers,
|
||||
building new tunnels, and testing existing tunnels.</div>
|
||||
building new tunnels, and testing existing tunnels.</div></li>
|
||||
<li class="tidylist"><b>Client:</b>
|
||||
Tunnels built by your router for each client's use.
|
||||
Tunnels built by your router for each client's use.</li>
|
||||
<li class="tidylist"><b>Participating:</b>
|
||||
Tunnels built by other routers through your router.
|
||||
This may vary widely depending on network demand, your
|
||||
@@ -92,11 +92,11 @@ shared bandwidth, and amount of locally-generated traffic.
|
||||
The recommended method for limiting participating tunnels is
|
||||
to change your share percentage on the <a href="config.jsp#help">configuration page</a>.
|
||||
You may also limit the total number by setting <tt>router.maxParticipatingTunnels=nnn</tt> on
|
||||
the <a href="configadvanced.jsp">advanced configuration page</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[Enable graphing]</a>.
|
||||
the <a href="configadvanced.jsp">advanced configuration page</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[Enable graphing]</a>.</li>
|
||||
<li class="tidylist"><b>Share ratio:</b>
|
||||
The number of participating tunnels you route for others, divided by the total number of hops in
|
||||
all your exploratory and client tunnels.
|
||||
A number greater than 1.00 means you are contributing more tunnels to the network than you are using.
|
||||
A number greater than 1.00 means you are contributing more tunnels to the network than you are using.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Congestion</h3><div align="justify">
|
||||
@@ -108,27 +108,27 @@ and their status is not available in the router console.
|
||||
The job lag should generally be zero.
|
||||
If it is consistently higher than 500ms, your computer is very slow, or the
|
||||
router has serious problems.
|
||||
<a href="configstats.jsp#jobQueue.jobLag">[Enable graphing]</a>.
|
||||
<a href="configstats.jsp#jobQueue.jobLag">[Enable graphing]</a>.</li>
|
||||
<li class="tidylist"><b>Message delay:</b>
|
||||
How long an outbound message waits in the queue.
|
||||
This should generally be a few hundred milliseconds or less.
|
||||
If it is consistently higher than 1000ms, your computer is very slow,
|
||||
or you should adjust your bandwidth limits, or your (bittorrent?) clients
|
||||
may be sending too much data and should have their transmit bandwidth limit reduced.
|
||||
<a href="configstats.jsp#transport.sendProcessingTime">[Enable graphing]</a> (transport.sendProcessingTime).
|
||||
<a href="configstats.jsp#transport.sendProcessingTime">[Enable graphing]</a> (transport.sendProcessingTime).</li>
|
||||
<li class="tidylist"><b>Tunnel lag:</b>
|
||||
This is the round trip time for a tunnel test, which sends a single message
|
||||
out a client tunnel and in an exploratory tunnel, or vice versa.
|
||||
It should usually be less than 5 seconds.
|
||||
If it is consistently higher than that, your computer is very slow,
|
||||
or you should adjust your bandwidth limits, or there are network problems.
|
||||
<a href="configstats.jsp#tunnel.testSuccessTime">[Enable graphing]</a> (tunnel.testSuccessTime).
|
||||
<a href="configstats.jsp#tunnel.testSuccessTime">[Enable graphing]</a> (tunnel.testSuccessTime).</li>
|
||||
<li class="tidylist"><b>Handle backlog:</b>
|
||||
This is the number of pending requests from other routers to build a
|
||||
participating tunnel through your router.
|
||||
It should usually be close to zero.
|
||||
If it is consistently high, your computer is too slow,
|
||||
and you should reduce your share bandwidth limits.
|
||||
and you should reduce your share bandwidth limits.</li>
|
||||
<li class="tidylist"><b>Accepting/Rejecting:</b>
|
||||
Your router's status on accepting or rejecting
|
||||
requests from other routers to build a
|
||||
@@ -136,7 +136,7 @@ participating tunnel through your router.
|
||||
Your router may accept all requests, accept or reject a percentage of requests,
|
||||
or reject all requests for a number of reasons, to control
|
||||
the bandwidth and CPU demands and maintain capacity for
|
||||
local clients.</ul>
|
||||
local clients.</li></ul>
|
||||
|
||||
<h2>Legal stuff</h2><p>The I2P router (router.jar) and SDK (i2p.jar) are almost entirely public domain, with
|
||||
a few notable exceptions:</p><ul>
|
||||
@@ -155,7 +155,7 @@ instance (trimmed down, as in, we do not include the demo apps or other add-ons,
|
||||
allowing you to deploy standard JSP/Servlet web applications into your router. Jetty in turn makes use of
|
||||
Apache's javax.servlet (javax.servlet.jar) implementation.
|
||||
This product includes software developed by the Apache Software Foundation
|
||||
(http://www.apache.org/). </p>
|
||||
(http://www.apache.org/).</p>
|
||||
|
||||
<p>Another application you can see on this webpage is <a href="http://www.i2p2.i2p/i2ptunnel">I2PTunnel</a>
|
||||
(your <a href="i2ptunnel/" target="_blank">web interface</a>) - a GPL'ed application written by mihi that
|
||||
@@ -168,7 +168,9 @@ more information).</p>
|
||||
<p>The router by default also includes human's public domain <a href="http://www.i2p2.i2p/sam">SAM</a> bridge,
|
||||
which other client applications (such the <a href="http://duck.i2p/i2p-bt/">bittorrent port</a>) can use.
|
||||
There is also an optimized library for doing large number calculations - jbigi - which in turn uses the
|
||||
LGPL licensed <a href="http://swox.com/gmp/">GMP</a> library, tuned for various PC architectures. Launchers for windows users are built with <a href="http://launch4j.sourceforge.net/">Launch4J</a>, and the installer is built with <a href="http://www.izforge.com/izpack/">IzPack</a>. For
|
||||
LGPL licensed <a href="http://swox.com/gmp/">GMP</a> library, tuned for various PC architectures. Launchers for windows users
|
||||
are built with <a href="http://launch4j.sourceforge.net/">Launch4J</a>, and the installer is built with
|
||||
<a href="http://www.izforge.com/izpack/">IzPack</a>. For
|
||||
details on other applications available, as well as their licenses, please see the
|
||||
<a href="http://www.i2p2.i2p/licenses">license policy</a>. Source for the I2P code and most bundled
|
||||
client applications can be found on our <a href="http://www.i2p2.i2p/download">download page</a>.
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
اذا رغبت في المساعدة أو ترجمة الوثائق، أو المساعدة في أشياء أخرى، انظر اسفله
|
||||
|
||||
<a href="http://www.i2p2.i2p/getinvolved.html">تطوع</a>
|
||||
</p><p>المزيد من المساعدة هنا:
|
||||
</p>المزيد من المساعدة هنا:
|
||||
<ul class="links">
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq.html">ابئلة شائعة www.i2p2.i2p</a>
|
||||
<br>يمكن ايضا<a href="http://forum.i2p/">I2P منتدى</a>
|
||||
او بالدردشة على IRC.</p>
|
||||
او بالدردشة على IRC.</li></ul>
|
||||
|
||||
<h2>شريط المعلومات</h2><p>
|
||||
يمكن للاحصائات أن
|
||||
@@ -29,14 +29,14 @@
|
||||
<li class="tidylist"><b>:هوية</b>
|
||||
الحروف الأولى (24 bits) من 44-حرف (256-) Base64 hash.
|
||||
The full hash is shown on your <a href="netdb.jsp?r=.">صفحة معلومات الموجه</a>.
|
||||
هذا لا يكشف عن عنوان IP الخاص بك لأحد.
|
||||
هذا لا يكشف عن عنوان IP الخاص بك لأحد.</li>
|
||||
<li class="tidylist"><b>الاصدار</b>
|
||||
اصدار I2P المستعمل
|
||||
اصدار I2P المستعمل</li>
|
||||
<li class="tidylist"><b>الآن</b>
|
||||
الوقت الحالي (UTC)والانحراف الممكن. يحتاج I2P الى ساعة مضبوطة. اذا كان انحراف الساعة اكثر من بضع ثواني، قم بتصحيح الخلل.
|
||||
الوقت الحالي (UTC)والانحراف الممكن. يحتاج I2P الى ساعة مضبوطة. اذا كان انحراف الساعة اكثر من بضع ثواني، قم بتصحيح الخلل.</li>
|
||||
<li class="tidylist"><b>إمكانية الوصول</b>
|
||||
امكانية الاتصال الخارجي بالموجه
|
||||
المزيد من التفاصيل في <a href="config.jsp#help">صفحة الاعدادات</a>.
|
||||
المزيد من التفاصيل في <a href="config.jsp#help">صفحة الاعدادات</a>.</li>
|
||||
</ul><h3>النظائر</h3><ul>
|
||||
<li class="tidylist"><b>مفعل</b>
|
||||
هذا هو عدد النظائر التي تم إرسال أو تلقيها رسالة في الدقائق القليلة الماضية.
|
||||
@@ -44,25 +44,25 @@ The full hash is shown on your <a href="netdb.jsp?r=.">صفحة معلومات
|
||||
تقاسم عرض النطاق الترددي ، وحركة المرور المولدة محليا.
|
||||
والرقم الثاني هو عدد من نظرائه ينظر في آخر ساعة أو نحو ذلك.
|
||||
لا تشعر بالقلق إذا كانت هذه الأرقام تختلف على نطاق واسع.
|
||||
<a href="configstats.jsp#router.activePeers">[تفعيل الرسم البياني]</a>.
|
||||
<a href="configstats.jsp#router.activePeers">[تفعيل الرسم البياني]</a>.</li>
|
||||
<li class="tidylist"><b>سريع</b>
|
||||
هذا هو عدد النظائر التي تستعملها لانشاء أنفاق جديدة. هي في نطاق 8-30. النظائر السريعة في
|
||||
<a href="profiles.jsp">صفحة البروفايل</a>.
|
||||
<a href="configstats.jsp#router.fastPeers">[تفعيل الرسم البياني]</a>.
|
||||
<a href="configstats.jsp#router.fastPeers">[تفعيل الرسم البياني]</a>.</li>
|
||||
<li class="tidylist"><b>قدرة عالية</b>
|
||||
هذا هو عدد النظائر التي تستعملها لانشاء أنفاق الاكتشاف. هي في نطاق 8-75. النظائر السريعة. النظائر القدرة عالية تظهر هنا.
|
||||
<a href="profiles.jsp">صفحة البروفايل</a>.
|
||||
<a href="configstats.jsp#router.highCapacityPeers">[تفعيل الرسم البياني]</a>.
|
||||
<a href="configstats.jsp#router.highCapacityPeers">[تفعيل الرسم البياني]</a>.</li>
|
||||
<li class="tidylist"><b>المندمجة جيدا</b>
|
||||
هذا هو عدد النظائر المستعملة في الاتصال بقاعدة البيانات. النظائر المندمجة جيدا موجودة في أسفل
|
||||
<a href="profiles.jsp">صفحة البروفايل</a>.
|
||||
<a href="profiles.jsp">صفحة البروفايل</a>.</li>
|
||||
<li class="tidylist"><b>المعروفة</b>
|
||||
هذا هو عدد الموجهات المعروفة.
|
||||
والظاهرة في صفحة <a href="netdb.jsp">قاعدة البيانات</a>
|
||||
هي مابين 100 الى 1000 او أكثر.
|
||||
هذا العدد ليس حجم الاجمالي للشبكة،
|
||||
يمكنه ان بتغيير حسب سرعة الاتصال.
|
||||
|
||||
</li>
|
||||
</ul><h3>سرعة الاتصال الداخلي/خارجي</h3><div align="justify">
|
||||
السرعة ب بايت في الثانية
|
||||
غير السرعة في <a href="config.jsp#help">صفحة الاعدادات</a>.
|
||||
@@ -76,18 +76,18 @@ The full hash is shown on your <a href="netdb.jsp?r=.">صفحة معلومات
|
||||
الأنفاق الحالية موجودة في <a href="tunnels.jsp">صفحة الأنفاق</a>.</div><ul>
|
||||
<li class="tidylist"><div align="justify"><b>تصفح</b>
|
||||
الأنفاق المستخدمة من طرف الموجه تستعمل في الاتصال مع النظائر، انشاء انفاق جديدة.
|
||||
</div>
|
||||
</div></li>
|
||||
<li class="tidylist"><b>المستخدمين</b>
|
||||
الأنفاق المستخدمة من طرف الموجه
|
||||
الأنفاق المستخدمة من طرف الموجه </li>
|
||||
<li class="tidylist"><b>المشاركة</b>
|
||||
الأنفاق المنشئة من طرف موجهات أخرى عبر موجهك.
|
||||
هذا ينبني على درجة استخدام الشبكة، مقدار المشاركة...
|
||||
يمكنك تغيير درجة المشاركة بـ <a href="config.jsp#help">صفحة الاعدادات</a>.
|
||||
You may also limit the total number by setting <tt>router.maxParticipatingTunnels=nnn</tt> on
|
||||
the <a href="configadvanced.jsp">صفحة الاعدادات المتقدمة</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[تفعيل الرسم البياني]</a>.
|
||||
the <a href="configadvanced.jsp">صفحة الاعدادات المتقدمة</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[تفعيل الرسم البياني]</a>.</li>
|
||||
<li class="tidylist"><b>نسبة المشاركة</b>
|
||||
عدد الانفاق المشاركة، مقسوما على عدد اجمالي الانفاق.
|
||||
عدد أكبر من 1.00 يعني انك تساهم في الشبكة بعدد اكبر مما تستهلك.
|
||||
عدد أكبر من 1.00 يعني انك تساهم في الشبكة بعدد اكبر مما تستهلك.</li>
|
||||
</ul>
|
||||
|
||||
<h3>ازدحام</h3><div align="justify">
|
||||
@@ -99,27 +99,27 @@ and their status is not available in the router console.
|
||||
The job lag should generally be zero.
|
||||
If it is consistently higher than 500ms, your computer is very slow, or the
|
||||
router has serious problems.
|
||||
<a href="configstats.jsp#jobQueue.jobLag">[تفعيل الرسم البياني]</a>.
|
||||
<a href="configstats.jsp#jobQueue.jobLag">[تفعيل الرسم البياني]</a>.</li>
|
||||
<li class="tidylist"><b>Message delay:</b>
|
||||
How long an outbound message waits in the queue.
|
||||
This should generally be a few hundred milliseconds or less.
|
||||
If it is consistently higher than 1000ms, your computer is very slow,
|
||||
or you should adjust your bandwidth limits, or your (bittorrent?) clients
|
||||
may be sending too much data and should have their transmit bandwidth limit reduced.
|
||||
<a href="configstats.jsp#transport.sendProcessingTime">[تفعيل الرسم البياني]</a> (transport.sendProcessingTime).
|
||||
<a href="configstats.jsp#transport.sendProcessingTime">[تفعيل الرسم البياني]</a> (transport.sendProcessingTime).</li>
|
||||
<li class="tidylist"><b>Tunnel lag:</b>
|
||||
This is the round trip time for a tunnel test, which sends a single message
|
||||
out a client tunnel and in an exploratory tunnel, or vice versa.
|
||||
It should usually be less than 5 seconds.
|
||||
If it is consistently higher than that, your computer is very slow,
|
||||
or you should adjust your bandwidth limits, or there are network problems.
|
||||
<a href="configstats.jsp#tunnel.testSuccessTime">[تفعيل الرسم البياني]</a> (tunnel.testSuccessTime).
|
||||
<a href="configstats.jsp#tunnel.testSuccessTime">[تفعيل الرسم البياني]</a> (tunnel.testSuccessTime).</li>
|
||||
<li class="tidylist"><b>Handle backlog:</b>
|
||||
This is the number of pending requests from other routers to build a
|
||||
participating tunnel through your router.
|
||||
It should usually be close to zero.
|
||||
If it is consistently high, your computer is too slow,
|
||||
and you should reduce your share bandwidth limits.
|
||||
and you should reduce your share bandwidth limits.</li>
|
||||
<li class="tidylist"><b>Accepting/Rejecting:</b>
|
||||
Your router's status on accepting or rejecting
|
||||
requests from other routers to build a
|
||||
@@ -127,7 +127,7 @@ participating tunnel through your router.
|
||||
Your router may accept all requests, accept or reject a percentage of requests,
|
||||
or reject all requests for a number of reasons, to control
|
||||
the bandwidth and CPU demands and maintain capacity for
|
||||
local clients.</ul>
|
||||
local clients.</li></ul>
|
||||
|
||||
<h2>Legal stuff</h2><p>The I2P router (router.jar) and SDK (i2p.jar) are almost entirely public domain, with
|
||||
a few notable exceptions:</p><ul>
|
||||
@@ -146,7 +146,7 @@ instance (trimmed down, as in, we do not include the demo apps or other add-ons,
|
||||
allowing you to deploy standard JSP/Servlet web applications into your router. Jetty in turn makes use of
|
||||
Apache's javax.servlet (javax.servlet.jar) implementation.
|
||||
This product includes software developed by the Apache Software Foundation
|
||||
(http://www.apache.org/). </p>
|
||||
(http://www.apache.org/).</p>
|
||||
|
||||
<p>Another application you can see on this webpage is <a href="http://www.i2p2.i2p/i2ptunnel">I2PTunnel</a>
|
||||
(your <a href="i2ptunnel/" target="_blank">web interface</a>) - a GPL'ed application written by mihi that
|
||||
@@ -159,7 +159,9 @@ more information).</p>
|
||||
<p>The router by default also includes human's public domain <a href="http://www.i2p2.i2p/sam">SAM</a> bridge,
|
||||
which other client applications (such the <a href="http://duck.i2p/i2p-bt/">bittorrent port</a>) can use.
|
||||
There is also an optimized library for doing large number calculations - jbigi - which in turn uses the
|
||||
LGPL licensed <a href="http://swox.com/gmp/">GMP</a> library, tuned for various PC architectures. Launchers for windows users are built with <a href="http://launch4j.sourceforge.net/">Launch4J</a>, and the installer is built with <a href="http://www.izforge.com/izpack/">IzPack</a>. For
|
||||
LGPL licensed <a href="http://swox.com/gmp/">GMP</a> library, tuned for various PC architectures.
|
||||
Launchers for windows users are built with <a href="http://launch4j.sourceforge.net/">Launch4J</a>, and
|
||||
the installer is built with <a href="http://www.izforge.com/izpack/">IzPack</a>. For
|
||||
details on other applications available, as well as their licenses, please see the
|
||||
<a href="http://www.i2p2.i2p/licenses">license policy</a>. Source for the I2P code and most bundled
|
||||
client applications can be found on our <a href="http://www.i2p2.i2p/download">download page</a>.
|
||||
|
||||
@@ -15,12 +15,12 @@ Traduction de mars 2011 (magma@mail.i2p)
|
||||
<div class="main" id="main"><p>
|
||||
Si vous souhaitez améliorer ou traduire la documentation ou d'autres versants du projet, merci de vous reporter à
|
||||
la page consacrée aux <a href="http://www.i2p2.i2p/getinvolved_fr.html">volontaires</a>.
|
||||
</p><p>D'autres détails sont disponibles ici:
|
||||
</p>D'autres détails sont disponibles ici:
|
||||
<ul class="links">
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq.html">FAQ en anglais sur www.i2p2.i2p</a>
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq_fr.html">les FAQ en français</a>.</ul>
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq.html">FAQ en anglais sur www.i2p2.i2p</a></li>
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq_fr.html">les FAQ en français</a>.</li></ul>
|
||||
<br>Il y a aussi le <a href="http://forum.i2p/">forum I2P</a>
|
||||
et l'IRC.</p>
|
||||
et l'IRC.
|
||||
|
||||
<h2>Informations du panneau de surveillance</h2><p>
|
||||
Plusieurs des statistiques affichées dans le panneau de surveillance peuvent être
|
||||
@@ -30,40 +30,40 @@ analyse sur la durée.
|
||||
<li class="tidylist"><b>Identité locale:</b>
|
||||
Cliquez sur "Afficher" pour voir l'empreinte Base64 à 44 caractères (256 bits) de votre routeur. Le hachage
|
||||
complet est affiché sur votre <a href="netdb.jsp?r=.">page d'infos routeur</a>. Ne la divulguez jamais à personne,
|
||||
car l'info routeur contient votre adresse IP.
|
||||
car l'info routeur contient votre adresse IP.</li>
|
||||
<li class="tidylist"><b>Version:</b>
|
||||
La version d'I2P qui vous affiche actuellement cette page.
|
||||
La version d'I2P qui vous affiche actuellement cette page.</li>
|
||||
<li class="tidylist"><b>Lancé depuis:</b>
|
||||
Indique depuis combien de temps le routeur tourne.
|
||||
Indique depuis combien de temps le routeur tourne.</li>
|
||||
<li class="tidylist"><b>Réseau:</b>
|
||||
Statut de joignabilité du routeur par les autres routeurs.
|
||||
Plus d'infos sur la page de <a href="config.jsp#help">configuration</a>.
|
||||
</ul><h3>Pairs</h3><ul>
|
||||
</li></ul><h3>Pairs</h3><ul>
|
||||
<li class="tidylist"><b>Actifs:</b>
|
||||
le premier nombre est celui des routeurs avec qui le votre a communiqué dans les dernières minutes. Ça peut varier de
|
||||
8-10 à plusieurs centaines, selon votre bande passante et son rapport de partage, et le trafic généré localement. Le
|
||||
second est celui des pairs vus dans les dernières heures. Ces nombres penvent varier sensiblement sans conséquence.
|
||||
<a href="configstats.jsp#router.activePeers">[Activer le graphique]</a> (activer auparavant "toutes
|
||||
les statistiques").
|
||||
les statistiques").</li>
|
||||
<li class="tidylist"><b>Rapides:</b>
|
||||
le nombre de pairs que vous mettez à contribution pour construire vos tunnels clients. En général dans une tranche de
|
||||
8 à 30. Vos pairs rapides sont détaillés sur la page <a href="profiles.jsp">profils</a>.
|
||||
<a href="configstats.jsp#router.fastPeers">[Activer le graphique]</a>.
|
||||
<a href="configstats.jsp#router.fastPeers">[Activer le graphique]</a>.</li>
|
||||
<li class="tidylist"><b>Hautes capacités:</b>
|
||||
nombre des pairs que vous utilisez pour construire quelques uns de vos tunnels exploratoires. Habituellement de 8 à 75.
|
||||
Les pairs rapides font partie du groupe des "Hautes capacités". Vos pairs à hautes capacités sont aussi listés sur
|
||||
la page <a href="profiles.jsp">profils</a>.
|
||||
<a href="configstats.jsp#router.highCapacityPeers">[Activer le graphique]</a> (activer auparavant "toutes les
|
||||
statistiques").
|
||||
statistiques").</li>
|
||||
<li class="tidylist"><b>Bien intégrés:</b>
|
||||
vous utilisez ce groupe pour vos requêtes à la base de données du réseau. Ils sont souvent des pairs de remplissage par
|
||||
diffusion ("floodfill"). Vos pairs "bien intégrés" sont affichés en bas de la même page
|
||||
<a href="profiles.jsp">profils</a>.
|
||||
<a href="profiles.jsp">profils</a>.</li>
|
||||
<li class="tidylist"><b>Connus:</b> c'est tous les routeurs dont vous connaissez l'existance. Il sont listés sur la
|
||||
page <a href="netdb.jsp">base de données du réseau</a>. De moins de 100 à 1000 ou plus. Ce nombre ne représente pas la
|
||||
taille totale du réseau; il varie en fonction de votre bande passante totale et son rapport de partage, et du trafic
|
||||
local. I2P n'a pas besoin que chaque routeur connaisse tous les autres.
|
||||
</ul><h3>Bande passante entrée/sortie</h3><div align="justify">
|
||||
</li></ul><h3>Bande passante entrée/sortie</h3><div align="justify">
|
||||
Ça parle tout seul. Toutes les valeurs sont en octets par seconde (o/s), pas en bits par seconde (b/s). Modifiez vos
|
||||
limites de bande passante sur la page de <a href="config.jsp#help">configuration</a>.
|
||||
Le <a href="graphs.jsp">graphique de bande passante</a> est activé par défaut.</div>
|
||||
@@ -75,18 +75,18 @@ I2CP.
|
||||
</div><h3>TUNNELS:</h3><div align="justify">
|
||||
Les tunnels actuels sont affichés sur la page <a href="tunnels.jsp">tunnels</a>.</div><ul>
|
||||
<li class="tidylist"><div align="justify"><b>Exploratoires:</b> tunnels créés par votre routeur et utilisés avec les
|
||||
pairs diffuseurs pour la création des nouveaux tunnels et le test des tunnels existants.</div>
|
||||
<li class="tidylist"><b>Clients:</b> tunnels créés par votre routeur pour chaque utilisation cliente.
|
||||
pairs diffuseurs pour la création des nouveaux tunnels et le test des tunnels existants.</div></li>
|
||||
<li class="tidylist"><b>Clients:</b> tunnels créés par votre routeur pour chaque utilisation cliente.</li>
|
||||
<li class="tidylist"><b>Participants:</b> les tunnels créés par d'autres routeurs et qui passent par le votre. Leur
|
||||
nombre dépend largement de la demande du réseau, de votre part de bande passante partagée, et du trafic local.
|
||||
La méthode recommandée pour limiter leur nombre est de diminuer le rapport de bande passante partagée dans la
|
||||
<a href="config.jsp#help">configuration</a>. Vous pouvez également limiter ce nombre en définissant la variable
|
||||
<tt>router.maxParticipatingTunnels=nnn</tt> dans la <a href="configadvanced.jsp">configuration avancée</a>.
|
||||
<a href="configstats.jsp#tunnel.participatingTunnels">[Activer le graphique]</a>.
|
||||
<a href="configstats.jsp#tunnel.participatingTunnels">[Activer le graphique]</a>.</li>
|
||||
<li class="tidylist"><b>Rapport de partage:</b> le nombre de tunnels participants que vous routez pour les autres,
|
||||
divisé par le nombre total de sauts dans tous vos tunnels exploratoires et clients. S'il est supérieur à 1, cela
|
||||
signifie que vous contribuez à plus de tunnels que vous n'en utilisez.
|
||||
</ul>
|
||||
</li></ul>
|
||||
|
||||
<h3>ENCOMBREMENT</h3><div align="justify">
|
||||
Indications de base sur la charge du routeur:</div><ul>
|
||||
@@ -94,23 +94,23 @@ Indications de base sur la charge du routeur:</div><ul>
|
||||
présentée la pages des <a href="jobs.jsp">tâches</a>. Malheureusement, il y a dans le routeur plusieurs autres files
|
||||
d'attentes qui ne peuvent être affichées dans la console. Le retard de tâches devrait rester à zéro en permamence. s'il
|
||||
régulièrement supérieur à 500ms, soit votre PC est très lent, soit le routeur a de sérieux problèmes.
|
||||
<a href="configstats.jsp#jobQueue.jobLag">[Activer le graphique]</a>.
|
||||
<a href="configstats.jsp#jobQueue.jobLag">[Activer le graphique]</a>.</li>
|
||||
<li class="tidylist"><b>Retard de messages:</b> temps de rétention des messages en file d'attente d'envois, normalement
|
||||
quelques centaines de ms ou moins. Au dessus d'une seconde, votre PC est très lent, vous devriez fignoler vos réglages
|
||||
de bande passante, ou vos clients (bittorrent, iMule...?) envoient trop de données et il faudrait voir à leur tenir
|
||||
la bride. <a href="configstats.jsp#transport.sendProcessingTime">[Activer le graphique]</a>
|
||||
(transport.sendProcessingTime).
|
||||
(transport.sendProcessingTime).</li>
|
||||
<li class="tidylist"><b>Retard de tunnels:</b> le temps d'aller-retour pour un test de tunnel (envoi d'un seul message
|
||||
par un tunnel client et dans un tunnel exploratoire ou vice versa. Normalement inférieur à 5s. Si c'est constamment
|
||||
supérieur, votre PC est très lent, vous devriez retoucher vos limites de bande passante, ou il y a un problème réseau.
|
||||
<a href="configstats.jsp#tunnel.testSuccessTime">[Activer le graphique]</a> (tunnel.testSuccessTime).
|
||||
<a href="configstats.jsp#tunnel.testSuccessTime">[Activer le graphique]</a> (tunnel.testSuccessTime).</li>
|
||||
<li class="tidylist"><b>En attente:</b> nombre de requêtes de création de tunnels participants en attente provenant
|
||||
d'autres routeurs. Normalement proche de zéro. Sinon, votre ordinateur est trop lent et vous devriez diminuer votre
|
||||
limite de bande passante partagée.
|
||||
limite de bande passante partagée.</li>
|
||||
<li class="tidylist"><b>Accepte/Refuse:</b> c'est le statut de votre routeur au regard de son comportement vis à vis
|
||||
des demandes de création de tunnels participants provenant d'autres routeurs. Votre routeur peut accepter ou refuser
|
||||
tout ou partie des requêtes, ou les refuser en totalité pour des raisons prévues telles que le contrôle de la bande
|
||||
passante et des ressources CPU en vue de préserver les performances des clients locaux.</ul>
|
||||
passante et des ressources CPU en vue de préserver les performances des clients locaux.</li></ul>
|
||||
|
||||
<h2>Informations légales</h2><p>Le routeur I2P (router.jar) et le SDK (i2p.jar) sont presque entièrement dans le
|
||||
domaine public, à quelques notobles exceptions près:</p><ul>
|
||||
@@ -128,7 +128,7 @@ qui est une version allégée d'une instance <a href="http://jetty.mortbay.com/j
|
||||
ce que nous n'avons pas inclus les applications de démo et autres compléments, et que nous avons simplifié la
|
||||
configuration), vous permettant de déployer dans votre routeur des applications web JSP/Servlet standards. De son côté
|
||||
Jetty fait usage de l'implémentation javax.servlet d'Apache. Ce dispositif inclus du logiciel développé par la
|
||||
fondation Apache Software (http://www.apache.org/). </p>
|
||||
fondation Apache Software (http://www.apache.org/).</p>
|
||||
|
||||
<p>Une autre application visible sur cette page: <a href="http://www.i2p2.i2p/i2ptunnel">I2PTunnel</a>
|
||||
(votre <a href="i2ptunnel/" target="_blank">interface web</a>) sous licence GPL écrite par mihi qui vous permet de
|
||||
|
||||
@@ -15,12 +15,12 @@
|
||||
Als je wilt helpen om de documentatie te verbeteren of vertalen, of wilt helpen
|
||||
met andere aspecten van het project, zie dan de documentatie voor
|
||||
<a href="http://www.i2p2.i2p/getinvolved.html">vrijwilligers.</a>
|
||||
</p><p>Verdere ondersteuning is hier beschikbaar:
|
||||
</p>Verdere ondersteuning is hier beschikbaar:
|
||||
<ul class="links">
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq.html">FAQ op www.i2p2.i2p</a>
|
||||
<li class="tidylist"><a href="http://www.i2p2.i2p/faq.html">FAQ op www.i2p2.i2p</a></li>
|
||||
</ul>
|
||||
<br>Je kunt ook het <a href="http://forum.i2p/">I2P forum</a>
|
||||
of IRC proberen.</p>
|
||||
of IRC proberen.
|
||||
|
||||
<h2>Informatie over de Summary Bar</h2><p>
|
||||
Veel van de statistieken op de summary bar kunnen
|
||||
@@ -32,14 +32,14 @@ Veel van de statistieken op de summary bar kunnen
|
||||
<li class="tidylist"><b>Lokale Identiteit:</b>
|
||||
De eerste vier karakters (24 bits) van je 44-karakter (256-bit) Base64 router hash.
|
||||
De volledige hash is getoond op je <a href="netdb.jsp?r=.">router info pagina</a>.
|
||||
Vertel deze aan niemand, want de router info bevat je IP.
|
||||
Vertel deze aan niemand, want de router info bevat je IP.</li>
|
||||
<li class="tidylist"><b>Versie:</b>
|
||||
De versie van de I2P software die je nu gebruikt.
|
||||
De versie van de I2P software die je nu gebruikt.</li>
|
||||
<li class="tidylist"><b>Uptime:</b>
|
||||
Hoe lang je I2P router al draait.
|
||||
Hoe lang je I2P router al draait.</li>
|
||||
<li class="tidylist"><b>Netwerk Bereikbaarheid:</b>
|
||||
De bereikbaarheid van je router door andere routers.
|
||||
Meer informatie is te vinden op de <a href="config.jsp#help">configuratie pagina</a>.
|
||||
Meer informatie is te vinden op de <a href="config.jsp#help">configuratie pagina</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3>Peers</h3><ul>
|
||||
@@ -51,21 +51,21 @@ en lokaal gegenereerd verkeer. Het tweede nummer is het aantal peers dat je in
|
||||
het laatste uur hebt gezien. Wees niet ongerust wanneer deze aantallen erg
|
||||
variëren.
|
||||
|
||||
<a href="configstats.jsp#router.activePeers">[Grafieken inschakelen]</a>.
|
||||
<a href="configstats.jsp#router.activePeers">[Grafieken inschakelen]</a>.</li>
|
||||
<li class="tidylist"><b>Snel:</b>
|
||||
Dit is het aantal peers dat je gebruikt om client tunnels mee te bouwen. Het ligt over
|
||||
het algemeen tussen 8 en 30.
|
||||
Je snelle peers worden getoond op de <a href="profiles.jsp">profielen pagina</a>.
|
||||
<a href="configstats.jsp#router.fastPeers">[Grafieken inschakelen]</a>.
|
||||
<a href="configstats.jsp#router.fastPeers">[Grafieken inschakelen]</a>.</li>
|
||||
<li class="tidylist"><b>Grote capaciteit:</b>
|
||||
Dit is het aantal peers dat je gebruikt om sommige van de onderzoekende tunnels mee te maken.
|
||||
Het ligt over het algemeen tussen de 8 en 75. De snelle peers zijn inbegrepen in de categorie grote capaciteit.
|
||||
De grote capaciteits peers worden getoond op de <a href="profiles.jsp">profielen pagina</a>.
|
||||
<a href="configstats.jsp#router.highCapacityPeers">[Grafieken inschakelen]</a>.
|
||||
<a href="configstats.jsp#router.highCapacityPeers">[Grafieken inschakelen]</a>.</li>
|
||||
<li class="tidylist"><b>Geïntegreerd:</b>
|
||||
Dit is het aantal peers dat je gebruikt bij het opzoeken in de network database.
|
||||
Dit zijn gebruikelijk de "floodfill" peers.
|
||||
Je goed geïntegreerde peers worden getoond aan de onderkant van de <a href="profiles.jsp">profielen pagina</a>.
|
||||
Je goed geïntegreerde peers worden getoond aan de onderkant van de <a href="profiles.jsp">profielen pagina</a>.</li>
|
||||
<li class="tidylist"><b>Bekend:</b>
|
||||
Dit is het aantal routers dat bekend is bij je router.
|
||||
Ze worden getoond op de <a href="netdb.jsp">netwerk database pagina</a>.
|
||||
@@ -74,7 +74,7 @@ Dit aantal is niet de totale grootte van het netwerk;
|
||||
het kan erg variëren afhankelijk van je totale bandbreedte,
|
||||
gedeelde bandbreedte en lokaal gegenereerd verkeer.
|
||||
Voor I2P is het niet nodig dat een router alle andere routers kent.
|
||||
</ul>
|
||||
</li></ul>
|
||||
|
||||
<h3>Bandbreedte in/out</h3><div align="justify">
|
||||
Dit zou zichzelf moeten verklaren. Alle waarden zijn in bytes per seconde, niet in bits per seconde.
|
||||
@@ -85,9 +85,9 @@ Bandbreedte wordt standaard <a href="graphs.jsp">geplot</a>.</div>
|
||||
De tunnels zelf worden getoond op de <a href="tunnels.jsp">tunnels pagina</a>.</div><ul>
|
||||
<li class="tidylist"><div align="justify"><b>Onderzoekend:</b>
|
||||
Tunnels gebouwd door je router en gebruikt om te communiceren met de floodfill peers,
|
||||
voor het bouwen van nieuwe tunnels en testen van bestaande tunnels.</div>
|
||||
voor het bouwen van nieuwe tunnels en testen van bestaande tunnels.</div></li>
|
||||
<li class="tidylist"><b>Client:</b>
|
||||
Tunnels gebouwd door je router voor het gebruik door elke client.
|
||||
Tunnels gebouwd door je router voor het gebruik door elke client.</li>
|
||||
<li class="tidylist"><b>Deelnemend:</b>
|
||||
Tunnels gebouwd door andere routers die door je eigen router heen lopen.
|
||||
Dit kan erg variëren afhankelijk van de vraag vanuit het netwerk,
|
||||
@@ -95,11 +95,11 @@ je gedeelde bandbreedte en hoeveelheid lokaal gegenereerd verkeer.
|
||||
De aanbevolen methode om het aantal deelnemende tunnels te beperken
|
||||
is door het share percentage te wijzigen op de <a href="config.jsp#help">configuratie pagina</a>.
|
||||
Je kan het totale aantal ook beperken met de instelling <tt>router.maxParticipatingTunnels=nnn</tt> op
|
||||
de <a href="configadvanced.jsp">geavanceerde configuratie pagina</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[Grafieken inschakelen]</a>.
|
||||
de <a href="configadvanced.jsp">geavanceerde configuratie pagina</a>. <a href="configstats.jsp#tunnel.participatingTunnels">[Grafieken inschakelen]</a>.</li>
|
||||
<li class="tidylist"><b>Share rato:</b>
|
||||
Het aantal deelnemende tunnels dat je voor andere routeert, gedeeld door het totale aantal hops in al je onderzoekende en client tunnels.
|
||||
Een aantal groter dan 1.00 betekent dat je meer tunnels aan het netwerk bijdraagt dan je gebruikt.
|
||||
</ul>
|
||||
</li></ul>
|
||||
|
||||
<h3>Verstopping</h3><div align="justify">
|
||||
Een aantal basis indicatoren voor een router overbelasting:</div><ul>
|
||||
@@ -110,33 +110,33 @@ hun status is niet beschikbaar in de router console.
|
||||
De taak vertraging zou over het algemeen nul moeten zijn.
|
||||
Indien dit consequent hoger is dan 500ms, dan is of je computer erg traag of
|
||||
heeft de router een serieus probleem.
|
||||
<a href="configstats.jsp#jobQueue.jobLag">[Grafieken inschakelen]</a>.
|
||||
<a href="configstats.jsp#jobQueue.jobLag">[Grafieken inschakelen]</a>.</li>
|
||||
<li class="tidylist"><b>Bericht vertraging:</b>
|
||||
Hoe lang een uitgaand bericht wacht in de wachtrij.
|
||||
Dit zou over het algemeen een aantal honderd milliseconden of minder moeten zijn.
|
||||
Indien dit consequent hoger is dan 1000ms, dan is of je computer erg traag
|
||||
of moet je je bandbreedte instellingen aanpassen, of je (bittorrent?) clients
|
||||
versturen mogelijk teveel data en moeten hun transmissie bandbreedte beperkt hebben.
|
||||
<a href="configstats.jsp#transport.sendProcessingTime">[Grafieken inschakelen]</a> (transport.sendProcessingTime).
|
||||
<a href="configstats.jsp#transport.sendProcessingTime">[Grafieken inschakelen]</a> (transport.sendProcessingTime).</li>
|
||||
<li class="tidylist"><b>Tunnel vertraging:</b>
|
||||
Dit is de rondgangstijd voor een tunnel test, welke een enkel bericht verstuurt
|
||||
vanuit een client tunnel dat dan bij een onderzoekende tunnel naar binnen gaat, of omgekeerd.
|
||||
Dit zou over het algemeen minder dan 5 seconden moeten zijn.
|
||||
Indien dit consequent hoger is, dan is of je computer erg traag of
|
||||
moet je je bandbreedte instellingen aanpassen of zijn er netwerk problemen.
|
||||
<a href="configstats.jsp#tunnel.testSuccessTime">[Grafieken inschakelen]</a> (tunnel.testSuccessTime).
|
||||
<a href="configstats.jsp#tunnel.testSuccessTime">[Grafieken inschakelen]</a> (tunnel.testSuccessTime).</li>
|
||||
<li class="tidylist"><b>Achterstand:</b>
|
||||
Dit is het aantal wachtende aanvragen van andere routers om een deelnemende
|
||||
tunnel door je eigen router te bouwen.
|
||||
Dit zou over het algemeen dicht bij de nul moeten zijn.
|
||||
Indien dit consequent hoog is, dan is of je computer te traag of
|
||||
moet je je bandbreedte instellingen aanpassen.
|
||||
moet je je bandbreedte instellingen aanpassen.</li>
|
||||
<li class="tidylist"><b>Accepteren / Weigeren:</b>
|
||||
De status van de router voor het accepteren of weigeren
|
||||
van verzoeken van andere routers om een deelnemende tunnel door je router te bouwen.
|
||||
Je router kan alle aanvragen accepteren, een percentage accepteren of weigeren,
|
||||
of alle aanvragen weigeren om verschillende redenen, om de bandbreedte en CPU
|
||||
gebruik te beheren en capaciteit te houden voor lokale clients.</ul>
|
||||
gebruik te beheren en capaciteit te houden voor lokale clients.</li></ul>
|
||||
|
||||
<h3>Lokale bestemmingen</h3><div align="justify">
|
||||
De lokale applicaties die door je router verbinden.
|
||||
|
||||
@@ -34,19 +34,19 @@
|
||||
|
||||
Первые 4 символа (24 бита) из Вашего 44-символьного (256-битного) Base64 хеша маршрутизатора. Полный хеш показывается на странице <a href="netdb.jsp?r=.">информации о маршрутизаторе</a>. Никогда никому не показывайте хеш своего маршрутизатора, так как в нем содержится информация о Вашем IP-адресе.
|
||||
|
||||
|
||||
</li>
|
||||
<li class="tidylist"><b>Версия:</b>
|
||||
|
||||
Версия Вашего I2P маршрутизатора.
|
||||
Версия Вашего I2P маршрутизатора. </li>
|
||||
|
||||
<li class="tidylist"><b>Время:</b>
|
||||
|
||||
Текущее время (UTC) и величина рассинхронизации времени (если есть). Для правильной работы I2P нужно точное системное время. Пожалуйста, поправьте системное время, если расхождение приближается к 1-ой минуте.
|
||||
|
||||
</li>
|
||||
<li class="tidylist"><b>Доступность:</b>
|
||||
|
||||
Результат проверки Вашим маршрутизатором, насколько он открыт для входящих соединений от маршрутизаторов других пользователей. Подробнее смотрите на <a href="config.jsp#help">странице сетевых настроек</a>.
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3>Пиры</h3><ul>
|
||||
@@ -54,23 +54,23 @@
|
||||
<li class="tidylist"><b>Активные:</b>
|
||||
|
||||
Первое число — это количество пиров, с которыми происходил обмен сообщениями за последние несколько минут. Значение может меняться от 8-10 до нескольких сотен в зависимости от Вашего общего трафика, доли транзитного трафика, локально создаваемого трафика. Второе число — это количество пиров, наблюдавшихся за последний час. Не волнуйтесь, если эти числа сильно меняются. Это нормально. <a href="configstats.jsp#router.activePeers">[Включить построение графика]</a>.
|
||||
|
||||
</li>
|
||||
<li class="tidylist"><b>Быстрые:</b>
|
||||
|
||||
Количество пиров, которые используются Вашим маршрутизатором для построения клиентских туннелей. В общем случае это значение будет в диапазоне 8-30. Список быстрых пиров можно посмотреть на странице <a href="profiles.jsp">профили</a>. <a href="configstats.jsp#router.fastPeers">[Включить построение графика]</a>.
|
||||
|
||||
</li>
|
||||
<li class="tidylist"><b>Высокоёмкие:</b>
|
||||
|
||||
Количество пиров, которые используются Вашим маршрутизатором для построения части зондирующих туннелей. В общем случае это значение будет в диапазоне 8-75. Быстрые пиры входят в группу высокоёмких. Список высокоёмких пиров можно посмотреть на странице <a href="profiles.jsp">профили</a>. <a href="configstats.jsp#router.highCapacityPeers">[Включить построение графика]</a>.
|
||||
|
||||
</li>
|
||||
<li class="tidylist"><b>Хорошо интегрированные:</b>
|
||||
|
||||
Количество пиров, которые используются Вашим маршрутизатором для запросов к сетевой базе данных. Обычно в таком качестве выступают «floodfill» пиры. Список хорошо интегрированных пиров можно посмотреть в конце страницы <a href="profiles.jsp">профили</a>.
|
||||
|
||||
</li>
|
||||
<li class="tidylist"><b>Известные:</b>
|
||||
|
||||
Это общее количество пиров известных Вашему маршрутизатору. Их список показывается на странице <a href="netdb.jsp">обзор сетевой базы данных</a>. Это значение может варьироваться от десятков до тысяч. Значение не соответствует реальному полному размеру сети, так как маршрутизатору в сети I2P достаточно знать лишь часть других маршрутизаторов. Значение зависит от Вашего общего трафика, доли транзитного трафика, локально создаваемого трафика.
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3>Трафик (входящий/исходящий)</h3>
|
||||
@@ -94,20 +94,20 @@
|
||||
|
||||
<li class="tidylist"><div align="justify"><b>Зондирующие:</b>
|
||||
Туннели, созданные Вашим маршрутизатором для связи с floodfill-пирами, тестирования уже существующих туннелей и построения новых.</div>
|
||||
|
||||
</li>
|
||||
<li class="tidylist"><b>Клиентские:</b>
|
||||
Туннели, созданные Вашим маршрутизатором для каждого локального клиента.
|
||||
|
||||
</li>
|
||||
<li class="tidylist"><b>Транзитные:</b>
|
||||
|
||||
Туннели, построенные другими маршрутизаторами, проходящие через Ваш маршрутизатор. Их количество может сильно варьироваться в зависимости от потребностей сети, настроенной доли транзитного трафика и объема локально создаваемого трафика. Рекомендуемый способ ограничения количества транзитных туннелей — настроить долю транзитного трафика на странице <a href="config.jsp#help">сетевых настроек</a>. Также можно задать точный ограничитель количества через параметр <tt>router.maxParticipatingTunnels=nnn</tt> на странице <a href="configadvanced.jsp">дополнительных настроек</a>.
|
||||
|
||||
<a href="configstats.jsp#tunnel.participatingTunnels">[Включить построение графика]</a>.
|
||||
|
||||
</li>
|
||||
<li class="tidylist"><b>Доля транзита:</b>
|
||||
|
||||
Количество транзитных туннелей, проходящих через Ваш маршрутизатор, поделенное на суммарное количество хопов в Ваших зондирующих и клиентских туннелях. Значение больше 1.00 означает, что Вы предоставляете для сети больше туннелей, чем используете сами.
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3>Занятость</h3>
|
||||
@@ -120,27 +120,27 @@
|
||||
Как долго задания ожидают выполнения. Содержимое очереди можно посмотреть на странице <a href="jobs.jsp">очередь заданий</a>. К сожалению, есть ещё несколько внутренних очередей, статус которых в консоли не показывается. Задержка заданий в нормальной ситуации должна быть нулевой. Если она систематически выше 500ms, то либо Ваш компьютер слишком медленный, либо с Вашим маршрутизатором проблемы.
|
||||
|
||||
<a href="configstats.jsp#jobQueue.jobLag">[Включить построение графика]</a>.
|
||||
|
||||
</li>
|
||||
<li class="tidylist"><b>Задержка сообщений:</b>
|
||||
|
||||
Как долго исходящие сообщения находятся в очереди. В нормальном случае эта задержка должна быть не выше нескольких сотен миллисекунд. Если она систематически выше 1000ms, то либо Ваш компьютер слишком медленный, либо Вам следует перенастроить ограничение скорости, либо локальные клиенты (чаще всего bittorrent) посылают слишком много данных. Для таких клиентов имеет смысл ограничить скорость.
|
||||
|
||||
<a href="configstats.jsp#transport.sendProcessingTime">[Включить построение графика]</a> (transport.sendProcessingTime).
|
||||
|
||||
</li>
|
||||
<li class="tidylist"><b>Задержка туннелей:</b>
|
||||
|
||||
Время прохождения сигнала при проверке туннеля (сообщение посылается от клиентского туннеля до зондирующего или в обратном направлении). Это значение в нормальном случае должно быть ниже 5 секунд. Если оно систематически выше, то либо Ваш компьютер слишком медленный, либо Вам следует перенастроить ограничение скорости, либо с сетью что-то не в порядке.
|
||||
|
||||
<a href="configstats.jsp#tunnel.testSuccessTime">[Включить построение графика]</a> (tunnel.testSuccessTime).
|
||||
|
||||
</li>
|
||||
<li class="tidylist"><b>Очередь запросов:</b>
|
||||
|
||||
Количество пока необработанных запросов от других маршрутизаторов о построении транзитных туннелей через Ваш маршрутизатор. В нормальном случае это значение должно быть около нуля. Если оно систематически выше, то Ваш компьютер слишком медленный и Вам следует настроить меньшую долю транзитного трафика.
|
||||
|
||||
</li>
|
||||
<li class="tidylist"><b>Принимаем/Не принимаем туннели:</b>
|
||||
|
||||
Состояние Вашего маршрутизатора по приему или отклонению запросов от других маршрутизаторов о построении туннелей. Ваш маршрутизатор может принимать все запросы, принимать/отклонять часть запросов или отклонять все запросы, в зависимости от сетевой загрузки, нагрузки на процессор и необходимости резервировать полосу пропускания для локальных клиентов.
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>Лицензии</h2>
|
||||
|
||||
@@ -34,12 +34,16 @@
|
||||
<a href="/?lang=ar&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
|
||||
<a href="/?lang=zh&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
|
||||
<a href="/?lang=de&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
|
||||
<a href="/?lang=fr&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a>
|
||||
<a href="/?lang=es&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=es" title="Español" alt="Español"></a>
|
||||
<a href="/?lang=pt&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
|
||||
<a href="/?lang=fi&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=fi" title="Suomi" alt="Suomi"></a>
|
||||
<a href="/?lang=fr&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a><br/>
|
||||
<a href="/?lang=it&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=it" title="Italiano" alt="Italiano"></a>
|
||||
<a href="/?lang=nl&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
|
||||
<a href="/?lang=pl&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=pl" title="Polski" alt="Polski"></a>
|
||||
<a href="/?lang=pt&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
|
||||
<a href="/?lang=ru&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
|
||||
<a href="/?lang=sv&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
|
||||
<a href="/?lang=vi&consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=vn" title="Tiếng Việt" alt="Tiếng Việt"></a>
|
||||
</div>
|
||||
<a name="top"></a>
|
||||
<h2><%=intl._("Welcome to I2P")%></h2>
|
||||
|
||||
@@ -8,17 +8,21 @@
|
||||
*/
|
||||
|
||||
boolean rendered = false;
|
||||
/**** unused
|
||||
String templateFile = request.getParameter("template");
|
||||
if (templateFile != null) {
|
||||
java.io.OutputStream cout = response.getOutputStream();
|
||||
response.setContentType("image/png");
|
||||
rendered = net.i2p.router.web.StatSummarizer.instance().renderPng(cout, templateFile);
|
||||
}
|
||||
****/
|
||||
net.i2p.stat.Rate rate = null;
|
||||
String stat = request.getParameter("stat");
|
||||
String period = request.getParameter("period");
|
||||
boolean fakeBw = (stat != null && ("bw.combined".equals(stat)));
|
||||
net.i2p.stat.RateStat rs = net.i2p.I2PAppContext.getGlobalContext().statManager().getRate(stat);
|
||||
net.i2p.stat.RateStat rs = null;
|
||||
if (stat != null)
|
||||
rs = net.i2p.I2PAppContext.getGlobalContext().statManager().getRate(stat);
|
||||
if ( !rendered && ((rs != null) || fakeBw) ) {
|
||||
long per = -1;
|
||||
try {
|
||||
@@ -38,6 +42,8 @@ if ( !rendered && ((rs != null) || fakeBw) ) {
|
||||
}
|
||||
} else {
|
||||
response.setContentType("image/png");
|
||||
// very brief 45 sec expire
|
||||
response.setDateHeader("Expires", net.i2p.I2PAppContext.getGlobalContext().clock().now() + (45*1000));
|
||||
int width = -1;
|
||||
int height = -1;
|
||||
int periodCount = -1;
|
||||
@@ -71,6 +77,9 @@ if ( !rendered && ((rs != null) || fakeBw) ) {
|
||||
* a huge load for a page full of graphs if there's a problem
|
||||
*/
|
||||
if (!rendered) {
|
||||
response.sendError(403, "That stat is not available");
|
||||
if (stat != null)
|
||||
response.sendError(403, "The stat " + stat + " is not available, it must be enabled for graphing on the stats configuration page.");
|
||||
else
|
||||
response.sendError(403, "No stat specified");
|
||||
}
|
||||
%>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
5915
apps/routerconsole/locale/messages_fi.po
Normal file
5915
apps/routerconsole/locale/messages_fi.po
Normal file
File diff suppressed because it is too large
Load Diff
@@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: I2P routerconsole\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2011-04-11 08:20+0000\n"
|
||||
"PO-Revision-Date: 2011-05-02 13:21+0100\n"
|
||||
"POT-Creation-Date: 2011-05-18 10:29+0000\n"
|
||||
"PO-Revision-Date: 2011-05-18 13:35+0100\n"
|
||||
"Last-Translator: magma <magma@mail.i2p>\n"
|
||||
"Language-Team: I2P Project <foo@bar>\n"
|
||||
"Language: \n"
|
||||
@@ -378,6 +378,120 @@ msgstr "RX dupl."
|
||||
msgid "The total number of duplicate packets received from the peer"
|
||||
msgstr "Nombre de paquets en double reçus du pair"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:402
|
||||
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
|
||||
msgid "Service"
|
||||
msgstr "Service"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:404
|
||||
msgid "WAN Common Interface Configuration"
|
||||
msgstr "Configuration de l'interface commune Internet"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:405
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:411
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:421
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:426
|
||||
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:86
|
||||
msgid "Status"
|
||||
msgstr "État"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:406
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:412
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:422
|
||||
msgid "Type"
|
||||
msgstr "Type"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:407
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:413
|
||||
msgid "Upstream"
|
||||
msgstr "Montant"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:408
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:414
|
||||
msgid "Downstream"
|
||||
msgstr "Descendant"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:410
|
||||
msgid "WAN PPP Connection"
|
||||
msgstr "Connexion Internet PPP"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:415
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:423
|
||||
msgid "External IP"
|
||||
msgstr "Adresse IP externe"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:417
|
||||
msgid "Layer 3 Forwarding"
|
||||
msgstr "Transfert niveau 3"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:418
|
||||
msgid "Default Connection Service"
|
||||
msgstr "Service de connexion par défaut"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:420
|
||||
msgid "WAN IP Connection"
|
||||
msgstr "Connexion IP Internet"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:425
|
||||
msgid "WAN Ethernet Link Configuration"
|
||||
msgstr "Configuration du lien Ethernet Internet"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:438
|
||||
msgid "Found Device"
|
||||
msgstr "Appareil détecté"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:440
|
||||
msgid "Subdevice"
|
||||
msgstr "Service"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:461
|
||||
msgid "UPnP Status"
|
||||
msgstr "État d'UPnP"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:464
|
||||
msgid "UPnP has been disabled; Do you have more than one UPnP Internet Gateway Device on your LAN ?"
|
||||
msgstr "UPnP a été désactivé; peut-être avez-vous plus d'une passerelle Internet avec UPnP activé sur votre réseau local."
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:467
|
||||
msgid "UPnP has not found any UPnP-aware, compatible device on your LAN."
|
||||
msgstr "UPnP n'a pas trouvé de passerelle compatible sur votre réseau local."
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:475
|
||||
#, java-format
|
||||
msgid "The current external IP address reported by UPnP is {0}"
|
||||
msgstr "Adresse IP externe détectée par UPnP : {0}"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:477
|
||||
msgid "The current external IP address is not available."
|
||||
msgstr "L'adresse IP externe n'est pas disponible."
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:481
|
||||
#, java-format
|
||||
msgid "UPnP reports the maximum downstream bit rate is {0}bits/sec"
|
||||
msgstr "UPnP indique un débit descendant maximum de {0}b/s"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:483
|
||||
#, java-format
|
||||
msgid "UPnP reports the maximum upstream bit rate is {0}bits/sec"
|
||||
msgstr "UPnP indique un débit montant maximum de {0}b/s"
|
||||
|
||||
#. {0} is TCP or UDP
|
||||
#. {1,number,#####} prevents 12345 from being output as 12,345 in the English locale.
|
||||
#. If you want the digit separator in your locale, translate as {1}.
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:492
|
||||
#, java-format
|
||||
msgid "{0} port {1,number,#####} was successfully forwarded by UPnP."
|
||||
msgstr "Le port {0} {1,number,#####} est correctement transféré par UPnP."
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnP.java:494
|
||||
#, java-format
|
||||
msgid "{0} port {1,number,#####} was not forwarded by UPnP."
|
||||
msgstr "Le port {0} {1,number,#####} n'est pas transféré par UPnP."
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:161
|
||||
msgid "UPnP is not enabled"
|
||||
msgstr "UPnP n'est pas activé"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:409
|
||||
#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:627
|
||||
#, java-format
|
||||
@@ -535,24 +649,24 @@ msgid "Dropping tunnel requests: Too slow"
|
||||
msgstr "Perte de demandes de tunnels: Trop lent"
|
||||
|
||||
#. don't even bother, since we are so overloaded locally
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:267
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:270
|
||||
msgid "Dropping tunnel requests: Overloaded"
|
||||
msgstr "Perte de demandes de tunnnels: Surchargé"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:470
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:473
|
||||
msgid "Rejecting tunnels: Request overload"
|
||||
msgstr "Rejet de tunnels: Surcharge de requêtes "
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:495
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:498
|
||||
msgid "Rejecting tunnels: Connection limit"
|
||||
msgstr "Rejet de tunnels: Limite de connexions"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:695
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:716
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:719
|
||||
msgid "Dropping tunnel requests: High load"
|
||||
msgstr "Perte de tunnels: Forte charge"
|
||||
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:708
|
||||
#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:711
|
||||
msgid "Dropping tunnel requests: Queue time"
|
||||
msgstr "Demandes de fermeture de tunnel: temps en file d'attente"
|
||||
|
||||
@@ -1727,7 +1841,7 @@ msgid "Stop"
|
||||
msgstr "Arrêt"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:80
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331
|
||||
msgid "Check for updates"
|
||||
msgstr "Vérifier les mises à jour"
|
||||
@@ -1843,10 +1957,6 @@ msgstr "Choisissez une classe à ajouter"
|
||||
msgid "Network"
|
||||
msgstr "Réseau"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
|
||||
msgid "Service"
|
||||
msgstr "Service"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:101
|
||||
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
|
||||
@@ -2364,47 +2474,47 @@ msgstr "Chinois"
|
||||
msgid "Swedish"
|
||||
msgstr "Suédois"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:85
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87
|
||||
msgid "Update available, attempting to download now"
|
||||
msgstr "Mise à jour disponible, essai de téléchargement en cours"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:87
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:89
|
||||
msgid "Update available, click button on left to download"
|
||||
msgstr "Mise à jour disponible, cliquez sur le bouton de gauche pour la télécharger"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:95
|
||||
msgid "No update available"
|
||||
msgstr "Pas de mise à jour disponible"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:103
|
||||
msgid "Updating news URL to"
|
||||
msgstr "Mise à jour de l'URL de news vers "
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:109
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:111
|
||||
msgid "Updating proxy host to"
|
||||
msgstr "Mise à jour de l'hôte mandataire vers"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:117
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:119
|
||||
msgid "Updating proxy port to"
|
||||
msgstr "Mise à jour du port mandataire vers"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:132
|
||||
msgid "Updating refresh frequency to"
|
||||
msgstr "Mise à jour de la fréquence de rafraîchissement vers"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:137
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:139
|
||||
msgid "Updating update policy to"
|
||||
msgstr "Mise à jour de la stratégie de mises à jour vers"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:146
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:148
|
||||
msgid "Updating update URLs."
|
||||
msgstr "Mise à jour de l'URL de mises à jour."
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:155
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:157
|
||||
msgid "Updating trusted keys."
|
||||
msgstr "Mise à jour des clefs de confiance."
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:163
|
||||
#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
|
||||
msgid "Updating unsigned update URL to"
|
||||
msgstr "Mise à jour de l'URL de mises à jour non signées vers"
|
||||
|
||||
@@ -2897,10 +3007,6 @@ msgstr "Capacité"
|
||||
msgid "Integration"
|
||||
msgstr "Intégration"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:86
|
||||
msgid "Status"
|
||||
msgstr "État"
|
||||
|
||||
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:126
|
||||
msgid "Fast, High Capacity"
|
||||
msgstr "Rapide, haute capacité"
|
||||
@@ -4365,14 +4471,12 @@ msgid "Specify Port"
|
||||
msgstr "Saisir le port"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:357
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:348
|
||||
msgid "Note"
|
||||
msgstr "Note"
|
||||
msgid "Notes"
|
||||
msgstr "Remarques"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:530
|
||||
msgid "Changing these settings will restart your router."
|
||||
msgstr "Un changement de cette configuration entraînera un redémarrage du routeur"
|
||||
msgid "a) Do not reveal your port numbers to anyone! b) Changing these settings will restart your router."
|
||||
msgstr "a)Ne révélez vos n° de ports à personne! b)La modification de ces réglages redémarrera votre routeur. "
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536
|
||||
msgid "Configuration Help"
|
||||
@@ -5051,6 +5155,11 @@ msgstr "Vous pouvez contrôler si I2P est lancé ou pas au démarrage en choisis
|
||||
msgid "If you prefer the command line, you can also run the "
|
||||
msgstr "Si vous préférez la ligne commande, vous pouvez aussi exécuter la"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:357
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:348
|
||||
msgid "Note"
|
||||
msgstr "Note"
|
||||
|
||||
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:359
|
||||
msgid "If you are running I2P as service right now, removing it will shut down your router immediately."
|
||||
msgstr "Si vous exécutez actuellement I2P en tant que service, l'enlever arrêtera le routeur immédiatement."
|
||||
|
||||
5857
apps/routerconsole/locale/messages_it.po
Normal file
5857
apps/routerconsole/locale/messages_it.po
Normal file
File diff suppressed because it is too large
Load Diff
5870
apps/routerconsole/locale/messages_pl.po
Normal file
5870
apps/routerconsole/locale/messages_pl.po
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
6032
apps/routerconsole/locale/messages_sv.po
Normal file
6032
apps/routerconsole/locale/messages_sv.po
Normal file
File diff suppressed because it is too large
Load Diff
5823
apps/routerconsole/locale/messages_vi.po
Normal file
5823
apps/routerconsole/locale/messages_vi.po
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user