propagate from branch 'i2p.i2p' (head ea4e5cdef1ba51f6eb24828f05dd7ef66d5188ae)

to branch 'i2p.i2p.zzz.android' (head 03199a42adae7400f4627e7391fe3768493fd65f)
This commit is contained in:
zzz
2011-06-14 18:48:26 +00:00
197 changed files with 32864 additions and 3027 deletions

View File

@ -8,6 +8,7 @@ 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]
@ -16,10 +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]
@ -29,10 +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]
@ -43,6 +51,7 @@ 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
@ -53,10 +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]
@ -67,6 +80,9 @@ 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

View File

@ -127,8 +127,8 @@ 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

View File

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.i2p.android.router"
android.versionCode="0"
android.versionName="0.0.0"
android:installLocation="preferExternal"
>
<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 -->
<!-- 3 required for NDK -->
<uses-sdk android:minSdkVersion="3" />
<application android:label="@string/app_name"
android:icon="@drawable/ic_launcher_itoopie" >
<service android:name=".service.RouterService"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher_itoopie" />
<activity android:name=".activity.MainActivity"
android:label="@string/app_name"
android:icon="@drawable/ic_launcher_itoopie"
android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

View File

@ -1,58 +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.
These instructions were last updated for SDK Tools Version 11 with
SDK Platform-tools Version 5, June 2011.
#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/
#
# Run the GUI updater, which you must do to get an SDK Platform:
../../android-sdk-linux_86/tools/android &
# 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.
# To run the debugger (ddms) you also need to download the
# "Android SDK Platform-Tools" package from the GUI updater.
# create a file local.properties with the following line (without the leading # of course):
# sdk.dir=/path/to/your/android-sdk-linux_86
# The old property was sdk-location=/path/to/your/android-sdk-linux_86
# but it changed in more recent tools.
# DO NOT create a new project or anything. It's all set up right here for you.
# Create the android 1.5 (API 3) 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 3
#then run the emulator:
../../android-sdk-linux_86/tools/emulator -avd i2p &
# or to talk to a real phone in debug mode:
adb kill-server
sudo adb start-server
adb devices
#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 or phone:
ant reinstall
# Now click on the I2P icon on your phone!
#other helpful commands
../../android-sdk-linux_86/platform-tools/adb shell
../../android-sdk-linux_86/platform-tools/adb pull /some/file/on/emulator some-local-dir/

View File

@ -1 +0,0 @@
application-package=net.i2p.router

View File

@ -1,210 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Portions copied and modified from Android SDK
- Copyright (c) 2005-2008, The Android Open Source Project
- Apache 2.0 license
- See ../licenses/LICENSE-Apache2.0.txt
-->
<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"/>
<!-- set the old name to the new name -->
<property name="sdk-location" value="${sdk.dir}" />
<!-- 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="true" />
<echo>Ignore warning about SDK version</echo>
<!--
================================================================================
New I2P rules
================================================================================
-->
<!-- overrides of those in main_rules.xml -->
<target name="-pre-build" depends="copy-i2p-resources, incrementBuild" />
<target name="-pre-compile" depends="buildrouter" />
<target name="-post-compile" depends="hackcleanup, jbigi" />
<!-- new rules -->
<target name="buildrouter" depends="-dirs" >
<!-- build router and core -->
<ant dir=".." target="buildrouter" />
<!-- router -->
<copy file="../build/router.jar" todir="${jar.libs.dir}" />
<!-- core -->
<!-- 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="${jar.libs.dir}/crypto.jar" >
<zipfileset src="../build/i2p.jar" >
<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" />
</zipfileset >
</jar>
<!-- lots of unneeded stuff could be deleted here -->
<jar destfile="${jar.libs.dir}/i2p.jar" >
<zipfileset src="../build/i2p.jar" >
<exclude name="net/i2p/util/LogWriter.class" />
<exclude name="net/i2p/util/SecureDirectory.class" />
<exclude name="net/i2p/util/SecureFile.class" />
<exclude name="net/i2p/util/SecureFileOutputStream.class" />
<exclude name="org/bouncycastle/crypto/Digest.class" />
<exclude name="org/bouncycastle/crypto/Mac.class" />
<exclude name="org/bouncycastle/crypto/digests/GeneralDigest.class" />
<exclude name="org/bouncycastle/crypto/digests/MD5Digest.class" />
</zipfileset >
</jar>
</target>
<!-- some resources -->
<target name="copy-i2p-resources" depends="-dirs" >
<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="${jar.libs.dir}/crypto.jar" />
</target>
<target name="jbigi">
<exec executable="sh" osfamily="unix" failonerror="true">
<arg value="-c" />
<arg value="jni/build.sh" />
</exec>
<copy file="jni/libjbigi.so" todir="${native.libs.dir}/armeabi" />
</target>
<target name="incrementBuild">
<buildnumber file="scripts/build.number" />
<exec executable="sh" osfamily="unix" failonerror="true">
<arg value="-c" />
<arg value="scripts/setversion.sh" />
</exec>
<!-- this loads my.version.code and my.version.name -->
<property file="scripts/version.properties" />
</target>
<!-- install now does both -->
<target name="reinstall" depends="install" />
<target name="distclean" depends="clean">
<delete dir="${jar.libs.dir}" verbose="${verbose}" />
<delete file="res/drawable/i2plogo.png" verbose="${verbose}"/>
<delete file="res/raw/blocklist_txt" verbose="${verbose}" />
<delete dir="jni/build/" verbose="${verbose}" />
<delete file="jni/libjbigi.so" verbose="${verbose}" />
<delete file="scripts/build.number" verbose="${verbose}" />
<delete file="scripts/version.properties" verbose="${verbose}" />
</target>
<!--
================================================================================
From here down copied from SDK tools/ant/main_rules.xml from Tools version 11
and then modified
================================================================================
-->
<!-- not necessary to copy if setup import="true" -->
<!--
override this because the ant task com.android.ant.AaptExecLoopTask has issues:
a) it uses version.code which main_rules sets to "" and
b) it can't set versionName via the aapt task, have to use the aapt command line
-->
<!-- Puts 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>
<exec executable="${aapt}" failonerror="true" >
<arg value="package" />
<arg value="--version-code" />
<arg value="${my.version.code}" />
<arg value="--version-name" />
<arg value="${my.version.name}" />
<arg value="-f" />
<arg value="-m" />
<arg value="-M" />
<arg value="AndroidManifest.xml" />
<arg value="-I" />
<arg value="${android.jar}" />
<arg value="-S" />
<arg value="${resource.absolute.dir}" />
<arg value="-J" />
<arg value="${gen.absolute.dir}" />
<arg value="-F" />
<arg value="${out.absolute.dir}/${resource.package.file.name}" />
</exec>
</target>
</project>

View File

@ -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-8

View File

@ -1,83 +0,0 @@
#
# build GMP and libjbigi.so using the Android tools directly
#
# uncomment to skip
# exit 0
THISDIR=$(realpath $(dirname $(which $0)))
cd $THISDIR
export NDK=$(realpath ../../../android-ndk-r5b/)
#
# API level, must match that in ../AndroidManifest.xml
#
LEVEL=3
ARCH=arm
export SYSROOT=$NDK/platforms/android-$LEVEL/arch-$ARCH/
export AABI=arm-linux-androideabi-4.4.3
export SYSTEM=linux-x86
export BINPREFIX=arm-linux-androideabi-
export CC="$NDK/toolchains/$AABI/prebuilt/$SYSTEM/bin/${BINPREFIX}gcc --sysroot=$SYSROOT"
#echo "CC is $CC"
JBIGI=$(realpath ../../core/c/jbigi)
GMPVER=4.3.2
GMP=$JBIGI/gmp-$GMPVER
if [ ! -d $GMP ]
then
echo "Source dir for GMP version $GMPVER not found in $GMP"
echo "Install it there or change GMPVER and/or GMP in this script"
exit 1
fi
LIBFILE=$PWD/libjbigi.so
if [ -f $LIBFILE ]
then
echo "$LIBFILE exists, nothing to do here"
echo "If you wish to force a recompile, delete it"
exit 0
fi
mkdir -p build
cd build
# we must set both build and host, so that the configure
# script will set cross_compile=yes, so that it
# won't attempt to run the a.out files
if [ ! -f config.status ]
then
echo "Configuring GMP..."
$GMP/configure --with-pic --build=x86-none-linux --host=armv5-eabi-linux || exit 1
fi
echo "Building GMP..."
make || exit 1
export JAVA_HOME=$(dirname $(dirname $(realpath $(which javac))))
if [ ! -f "$JAVA_HOME/include/jni.h" ]; then
echo "Cannot find jni.h! Looked in '$JAVA_HOME/include/jni.h'"
echo "Please set JAVA_HOME to a java home that has the JNI"
exit 1
fi
COMPILEFLAGS="-fPIC -Wall"
INCLUDES="-I. -I$JBIGI/jbigi/include -I$JAVA_HOME/include -I$JAVA_HOME/include/linux"
LINKFLAGS="-shared -Wl,-soname,libjbigi.so,--fix-cortex-a8"
echo "Building jbigi lib that is statically linked to GMP"
STATICLIBS=".libs/libgmp.a"
echo "Compiling C code..."
rm -f jbigi.o $LIBFILE
echo "$CC -c $COMPILEFLAGS $INCLUDES $JBIGI/jbigi/src/jbigi.c"
$CC -c $COMPILEFLAGS $INCLUDES $JBIGI/jbigi/src/jbigi.c || exit 1
echo "$CC $LINKFLAGS $INCLUDES $INCLUDELIBS -o $LIBFILE jbigi.o $STATICLIBS"
$CC $LINKFLAGS $INCLUDES $INCLUDELIBS -o $LIBFILE jbigi.o $STATICLIBS || exit 1
ls -l $LIBFILE || exit 1
echo 'Built successfully'

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -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>

View File

@ -1,8 +0,0 @@
logger.defaultLevel=INFO
logger.record.net.i2p.router.peerManager.ProfileOrganizer=WARN
logger.record.net.i2p.router.transport=WARN
logger.record.net.i2p.router.transport.FIFOBandwidthRefiller=ERROR
logger.record.net.i2p.stat.Rate=ERROR
logger.record.net.i2p.util.LogManager=WARN
logger.record.net.i2p.util.LogWriter=WARN
logger.record.net.i2p.util.NativeBigInteger=DEBUG

View File

@ -1,52 +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
#
# Don't run NTP client, the phone should have a valid time
#
time.disabled=true
#
# no I2CP
#
i2p.dummyClientFacade=true
i2cp.disableInterface=true
#
##### Tunnels
#
router.inboundPool.backupQuantity=0
router.inboundPool.length=2
router.inboundPool.lengthVariance=0
router.inboundPool.quantity=2
router.outboundPool.backupQuantity=0
router.outboundPool.length=2
router.outboundPool.lengthVariance=0
router.outboundPool.quantity=2
router.maxParticipatingTunnels=0
router.sharePercentage=10
#
##### Transport
#
i2np.bandwidth.inboundKBytesPerSecond=100
i2np.bandwidth.outboundKBytesPerSecond=30
#
# NTCP
#
#i2np.ntcp.enable=false
i2np.ntcp.maxConnections=12
#
# UDP disabled for now
#
i2np.udp.enable=false
i2np.udp.maxConnections=12
#
# no COMM at all!!!
#i2p.vmCommSystem=true
#
# not on android
i2np.upnp.enable=false
routerconsole.geoip.enable=false

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">I2P</string>
</resources>

View File

@ -1,59 +0,0 @@
#
# Get the version number and fix up AndroidManifest.xml
# Public domain
#
THISDIR=$(realpath $(dirname $(which $0)))
cd $THISDIR
MANIFEST=../AndroidManifest.xml
TMP=AndroidManifest.xml.tmp
CORE=`grep 'public final static String VERSION' ../../core/java/src/net/i2p/CoreVersion.java | \
cut -d '"' -f 2`
MAJOR=`echo $CORE | cut -d '.' -f 1`
MINOR=`echo $CORE | cut -d '.' -f 2`
RELEASE=`echo $CORE | cut -d '.' -f 3`
ROUTERBUILD=$((`grep 'public final static long BUILD' ../../router/java/src/net/i2p/router/RouterVersion.java | \
cut -d '=' -f 2 | \
cut -d ';' -f 1`))
ANDROIDBUILD=`grep 'build.number' build.number | \
cut -d '=' -f 2`
SDK=`grep 'android:minSdkVersion' $MANIFEST | \
cut -d '"' -f 2`
# don't let build number get too long
VERSIONSTRING="${CORE}-${ROUTERBUILD}_b$(($ANDROIDBUILD % 256))-SDK$SDK"
#
# Android version code is an integer.
# So we have 31 bits.
# MAJOR 4 bits 0-15
# MINOR 8 bits 0-255
# RELEASE 8 bits 0-255
# ROUTERBUILD 8 bits 0-255
# ANDROIDBUILD 3 bits 0-7
#
# Note that ANDROIDBUILD is modded % 8, it will wrap,
# beware of that if you release multiple builds using the
# same ROUTERBUILD, or clear it if you update ROUTERBUILD
#
VERSIONINT=$(( \
(($MAJOR % 16) << 27) + \
(($MINOR % 256) << 19) + \
(($RELEASE % 256) << 11) + \
(($ROUTERBUILD % 256) << 3) + \
($ANDROIDBUILD % 8) \
))
echo "Android version: '$VERSIONSTRING' (${VERSIONINT})"
echo "my.version.name=${VERSIONSTRING}" > version.properties
echo "my.version.code=${VERSIONINT}" >> version.properties
SUBST='s/android.versionCode="[0-9]"/android.versionCode="'${VERSIONINT}'"/'
sed "$SUBST" < $MANIFEST > $TMP
SUBST='s/android.versionName="[^"]*"/android.versionName="'${VERSIONSTRING}'"/'
sed "$SUBST" < $TMP > $MANIFEST
rm -f $TMP

View File

@ -1,65 +0,0 @@
package net.i2p.android.router.activity;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
public abstract class I2PActivityBase extends Activity {
protected String _myDir;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
_myDir = getFilesDir().getAbsolutePath();
}
@Override
public void onRestart()
{
System.err.println(this + " onRestart called");
super.onRestart();
}
@Override
public void onStart()
{
System.err.println(this + " onStart called");
super.onStart();
Intent intent = new Intent();
intent.setClassName(this, "net.i2p.android.router.service.RouterService");
System.err.println(this + " calling startService");
ComponentName name = startService(intent);
System.err.println(this + " got from startService: " + name);
}
@Override
public void onResume()
{
System.err.println(this + " onResume called");
super.onResume();
}
@Override
public void onPause()
{
System.err.println(this + " onPause called");
super.onPause();
}
@Override
public void onStop()
{
System.err.println(this + " onStop called");
super.onStop();
}
@Override
public void onDestroy()
{
System.err.println(this + "onDestroy called");
super.onDestroy();
}
}

View File

@ -1,16 +0,0 @@
package net.i2p.android.router.activity;
import android.os.Bundle;
import net.i2p.android.router.R;
public class MainActivity extends I2PActivityBase {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}

View File

@ -1,134 +0,0 @@
package net.i2p.android.router.service;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.content.res.Resources.NotFoundException;
import android.os.Build;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.IOException;
import java.util.List;
import java.util.Properties;
import net.i2p.android.router.R;
import net.i2p.data.DataHelper;
import net.i2p.router.Router;
import net.i2p.router.RouterContext;
import net.i2p.router.RouterLaunch;
import net.i2p.util.OrderedProperties;
import net.i2p.util.NativeBigInteger;
class Init {
private final Context ctx;
private final String myDir;
public Init(Context c) {
ctx = c;
myDir = c.getFilesDir().getAbsolutePath();
}
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"));
System.err.println("getFilesDir()" + ": " + myDir);
System.err.println("Package" + ": " + ctx.getPackageName());
System.err.println("Version" + ": " + getOurVersion());
System.err.println("MODEL" + ": " + Build.MODEL);
System.err.println("DISPLAY" + ": " + Build.DISPLAY);
System.err.println("VERSION" + ": " + Build.VERSION.RELEASE);
System.err.println("SDK" + ": " + Build.VERSION.SDK);
}
private String getOurVersion() {
PackageManager pm = ctx.getPackageManager();
String us = ctx.getPackageName();
try {
PackageInfo pi = pm.getPackageInfo(us, 0);
System.err.println("VersionCode" + ": " + pi.versionCode);
if (pi.versionName != null)
return pi.versionName;
} catch (Exception e) {}
return "??";
}
void initialize() {
mergeResourceToFile(R.raw.router_config, "router.config");
mergeResourceToFile(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", myDir);
System.setProperty("i2p.dir.config", myDir);
System.setProperty("wrapper.logfile", myDir + "/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 = ctx.getResources().openRawResource(resID);
out = ctx.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) {}
}
}
/**
* Load defaults from resource,
* then add props from file,
* and write back
*/
private void mergeResourceToFile(int resID, String f) {
InputStream in = null;
InputStream fin = null;
byte buf[] = new byte[4096];
try {
Properties props = new OrderedProperties();
in = ctx.getResources().openRawResource(resID);
DataHelper.loadProps(props, in);
try {
fin = ctx.openFileInput(f);
DataHelper.loadProps(props, fin);
System.err.println("Merging resource into file " + f);
} catch (IOException ioe) {
System.err.println("Creating file " + f + " from resource");
} finally {
if (fin != null) try { fin.close(); } catch (IOException ioe) {}
}
DataHelper.storeProps(props, ctx.getFileStreamPath(f));
} catch (IOException ioe) {
} catch (Resources.NotFoundException nfe) {
} finally {
if (in != null) try { in.close(); } catch (IOException ioe) {}
if (fin != null) try { fin.close(); } catch (IOException ioe) {}
}
}
}

View File

@ -1,137 +0,0 @@
package net.i2p.android.router.service;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import java.util.List;
import net.i2p.android.router.R;
import net.i2p.router.Router;
import net.i2p.router.RouterContext;
import net.i2p.router.RouterLaunch;
import net.i2p.util.NativeBigInteger;
/**
* Runs the router
*/
public class RouterService extends Service {
private RouterContext _context;
private String _myDir;
private int _state;
private Thread _starterThread;
private StatusBar _statusBar;
private final Object _stateLock = new Object();
private static final int STATE_INIT = 0;
private static final int STATE_STARTING = 1;
private static final int STATE_RUNNING = 2;
private static final int STATE_STOPPING = 3;
private static final int STATE_STOPPED = 4;
private static final String MARKER = "************************************** ";
@Override
public void onCreate() {
System.err.println(this + " onCreate called" +
" Current state is: " + _state);
_myDir = getFilesDir().getAbsolutePath();
Init init = new Init(this);
init.debugStuff();
init.initialize();
_statusBar = new StatusBar(this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
System.err.println(this + " onStart called" +
"Current state is: " + _state);
synchronized (_stateLock) {
if (_state != STATE_INIT)
return START_STICKY;
_statusBar.update("I2P is starting up");
_state = STATE_STARTING;
_starterThread = new Thread(new Starter());
_starterThread.start();
}
return START_STICKY;
}
private class Starter implements Runnable {
public void run() {
System.err.println(MARKER + this + " starter thread");
NativeBigInteger.main(null);
RouterLaunch.main(null);
synchronized (_stateLock) {
if (_state != STATE_STARTING)
return;
_state = STATE_RUNNING;
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.");
_statusBar.update("I2P is running");
_context = (RouterContext)contexts.get(0);
_context.router().setKillVMOnEnd(false);
_context.addShutdownTask(new ShutdownHook());
_starterThread = null;
}
System.err.println("Router.main finished");
}
}
@Override
public IBinder onBind(Intent intent)
{
System.err.println("onBind called" +
"Current state is: " + _state);
return null;
}
@Override
public void onDestroy() {
System.err.println("onDestroy called" +
"Current state is: " + _state);
synchronized (_stateLock) {
if (_state == STATE_STARTING)
_starterThread.interrupt();
if (_state == STATE_STARTING || _state == STATE_RUNNING) {
_state = STATE_STOPPING;
// should this be in a thread?
_statusBar.update("I2P is stopping");
Thread stopperThread = new Thread(new Stopper());
stopperThread.start();
} else if (_state != STATE_STOPPING) {
_statusBar.off(this);
}
}
}
private class Stopper implements Runnable {
public void run() {
System.err.println(MARKER + this + " stopper thread");
_context.router().shutdown(Router.EXIT_HARD);
_statusBar.off(RouterService.this);
System.err.println("shutdown complete");
synchronized (_stateLock) {
_state = STATE_STOPPED;
}
}
}
private class ShutdownHook implements Runnable {
public void run() {
System.err.println(this + " shutdown hook" +
"Current state is: " + _state);
synchronized (_stateLock) {
if (_state == STATE_STARTING || _state == STATE_RUNNING) {
_state = STATE_STOPPED;
_statusBar.off(RouterService.this);
stopSelf();
}
}
}
}
}

View File

@ -1,45 +0,0 @@
package net.i2p.android.router.service;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import net.i2p.android.router.R;
import net.i2p.android.router.activity.MainActivity;
public class StatusBar {
private final Context ctx;
private final Intent intent;
private final Notification notif;
private final NotificationManager mgr;
private static final int ID = 1;
StatusBar(Context cx) {
ctx = cx;
String ns = Context.NOTIFICATION_SERVICE;
mgr = (NotificationManager)ctx.getSystemService(ns);
int icon = R.drawable.ic_launcher_itoopie;
String text = "Starting I2P";
long now = System.currentTimeMillis();
notif = new Notification(icon, text, now);
notif.flags |= Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;
intent = new Intent(ctx, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
public void update(String details) {
String title = "I2P Status";
PendingIntent pi = PendingIntent.getActivity(ctx, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
notif.setLatestEventInfo(ctx, title, details, pi);
mgr.notify(ID, notif);
}
public void off(Context ctx) {
mgr.cancel(ID);
}
}

View File

@ -1,174 +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;
import java.util.Queue;
/**
* 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 {
// zero copy, drain the manager queue directly
Queue<LogRecord> records = _manager.getQueue();
if (records == null) return;
if (!records.isEmpty()) {
LogRecord rec;
while ((rec = records.poll()) != null) {
writeRecord(rec);
}
try {
if (_currentOut != null)
_currentOut.flush();
} catch (IOException ioe) {
//if (++_diskFullMessageCount < MAX_DISKFULL_MESSAGES)
System.err.println("Error writing the router log - disk full? " + ioe);
}
}
} 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();
}
}

View File

@ -1,22 +0,0 @@
package net.i2p.util;
import java.io.File;
/**
* setXXX() not available until API level 9 (Platform Version 2.3)
* @since 0.8.7
*/
public class SecureDirectory extends File {
public SecureDirectory(String pathname) {
super(pathname);
}
public SecureDirectory(String parent, String child) {
super(parent, child);
}
public SecureDirectory(File parent, String child) {
super(parent, child);
}
}

View File

@ -1,22 +0,0 @@
package net.i2p.util;
import java.io.File;
/**
* setXXX() not available until API level 9 (Platform Version 2.3)
* @since 0.8.7
*/
public class SecureFile extends SecureDirectory {
public SecureFile(String pathname) {
super(pathname);
}
public SecureFile(String parent, String child) {
super(parent, child);
}
public SecureFile(File parent, String child) {
super(parent, child);
}
}

View File

@ -1,53 +0,0 @@
package net.i2p.util;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import net.i2p.I2PAppContext;
/**
* setXXX() not available until API level 9 (Platform Version 2.3)
* @since 0.8.7
*/
public class SecureFileOutputStream extends FileOutputStream {
/**
* super()
*/
public SecureFileOutputStream(String file) throws FileNotFoundException {
super(file);
}
/**
* super()
*/
public SecureFileOutputStream(String file, boolean append) throws FileNotFoundException {
super(file, append);
}
/**
* super()
*/
public SecureFileOutputStream(File file) throws FileNotFoundException {
super(file);
}
/**
* super()
*/
public SecureFileOutputStream(File file, boolean append) throws FileNotFoundException {
super(file, append);
}
/** @return false */
static boolean canSetPerms() {
return false;
}
/**
* noop
*/
public static void setPerms(File f) {
}
}

View File

@ -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" />

View File

@ -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>

View File

@ -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

View 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?"

View 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?"

View 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?"

View File

@ -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>

View File

@ -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

View File

@ -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 + "&nbsp;&nbsp;<tt>" + peer.toString().substring(5, 9)+ "</tt>");

View File

@ -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 ""

View 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 ""

View 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}"

View 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 ""

View File

@ -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">

View File

@ -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

View File

@ -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 ""

View 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"

View File

@ -98,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" />
@ -110,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}" />
@ -123,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" >

View File

@ -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">

View File

@ -25,7 +25,7 @@
<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="../../../installer/lib/wrapper/all/wrapper.jar" />
<pathelement location="../../jrobin/jrobin-1.5.9.1.jar" />
</classpath>
</depend>
@ -57,7 +57,7 @@
<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="../../../installer/lib/wrapper/all/wrapper.jar" />
<pathelement location="../../jrobin/jrobin-1.5.9.1.jar" />
</classpath>
</javac>
@ -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 -->
@ -96,10 +101,10 @@
<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 -->
@ -115,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" />
@ -147,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">
@ -162,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">
@ -211,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" />
@ -243,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" />

View File

@ -12,6 +12,7 @@
CLASS=net.i2p.router.web.messages
TMPFILE=build/javafiles.txt
export TZ=UTC
RC=0
if [ "$1" = "-p" ]
then
@ -106,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
@ -131,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

View File

@ -46,12 +46,15 @@ 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"};
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() {

View File

@ -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
@ -44,6 +51,7 @@ 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);
_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];

View File

@ -34,12 +34,16 @@
<a href="/?lang=ar&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
<a href="/?lang=zh&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=cn" title="中文" alt="中文"></a>
<a href="/?lang=de&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=de" title="Deutsch" alt="Deutsch"></a>
<a href="/?lang=fr&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a>
<a href="/?lang=es&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=es" title="Español" alt="Español"></a>
<a href="/?lang=pt&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
<a href="/?lang=fi&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=fi" title="Suomi" alt="Suomi"></a>
<a href="/?lang=fr&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=fr" title="Français" alt="Français"></a><br/>
<a href="/?lang=it&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=it" title="Italiano" alt="Italiano"></a>
<a href="/?lang=nl&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=nl" title="Nederlands" alt="Nederlands"></a>
<a href="/?lang=pl&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=pl" title="Polski" alt="Polski"></a>
<a href="/?lang=pt&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=pt" title="Português" alt="Português"></a>
<a href="/?lang=ru&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=ru" title="Русский" alt="Русский"></a>
<a href="/?lang=sv&amp;consoleNonce=<%=consoleNonce%>"><img src="/flags.jsp?c=se" title="Svenska" alt="Svenska"></a>
<a href="/?lang=vi&amp;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>

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -45,7 +45,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" />
@ -57,6 +57,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/sam.jar" basedir="./build/obj" includes="**/*.class">
<manifest>
<attribute name="Main-Class" value="net.i2p.sam.SAMBridge" />
@ -72,6 +77,14 @@
<uptodate property="jar.uptodate" targetfile="build/sam.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="jarTest" depends="jar, compileTest">

View File

@ -44,7 +44,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" />
@ -56,6 +56,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/streaming.jar" basedir="./build/obj" includes="**/*.class" >
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />
@ -69,6 +74,14 @@
<uptodate property="jar.uptodate" targetfile="build/streaming.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="jarTest" depends="jar, compileTest">

View File

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P susidns\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2011-02-25 18:40-0000\n"
"POT-Creation-Date: 2011-06-14 12:01+0000\n"
"PO-Revision-Date: 2011-06-14 13:47-0000\n"
"Last-Translator: hamada <hamada@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
@ -18,123 +18,203 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197
msgid "Search"
msgstr "بحث"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204
msgid "Search within filtered list"
msgstr "بحث ضمن القائمة"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206
msgid "Filtered list"
msgstr "قائمة الترشيح"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210
msgid "no matches"
msgstr "لا يوجد شبيه"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213
msgid "Addressbook"
msgstr "دفتر العناوين"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215
msgid "contains no entries"
msgstr "لايحتوي على بيانات"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217
msgid "contains 1 entry"
msgstr "يحتوي على واحدة"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219
#: ../src/java/src/i2p/susi/dns/AddressBean.java:130
#, java-format
msgid "contains {0} entries"
msgstr "يحتوي على {0} "
msgid "Host name \"{0}\" contains illegal character {1}"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229
#: ../src/java/src/i2p/susi/dns/AddressBean.java:143
#: ../src/java/src/i2p/susi/dns/AddressBean.java:145
#: ../src/java/src/i2p/susi/dns/AddressBean.java:152
#, java-format
msgid "Host name cannot start with \"{0}\""
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:147
#: ../src/java/src/i2p/susi/dns/AddressBean.java:149
#, java-format
msgid "Host name cannot end with \"{0}\""
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:154
#, java-format
msgid "Host name cannot contain \"{0}\""
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:157
#, java-format
msgid "Host name \"{0}\" requires conversion to ASCII but the conversion library is unavailable in this JVM"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:209
msgid "None"
msgstr "لاشيئ"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:217
msgid "Hashcash"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:219
msgid "Hidden"
msgstr "مختفي"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:221
msgid "Signed"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:223
#, java-format
msgid "Type {0}"
msgstr "نوع {0}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:232
#, fuzzy, java-format
msgid "One result for search within filtered list."
msgid_plural "{0} results for search within filtered list."
msgstr[0] "بحث ضمن القائمة"
msgstr[1] "بحث ضمن القائمة"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:236
#, fuzzy, java-format
msgid "Filtered list contains 1 entry."
msgid_plural "Fltered list contains {0} entries."
msgstr[0] "يحتوي على واحدة"
msgstr[1] "يحتوي على واحدة"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:241
#, java-format
msgid "One result for search."
msgid_plural "{0} results for search."
msgstr[0] ""
msgstr[1] ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:250
#, fuzzy, java-format
msgid "Address book contains 1 entry."
msgid_plural "Address book contains {0} entries."
msgstr[0] "يحتوي على واحدة"
msgstr[1] "يحتوي على واحدة"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266
#, java-format
msgid "Showing {0} of {1}"
msgstr "اظهار {0} من {1}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:231
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:392
msgid "Add"
msgstr "أضف"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:298
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:231
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:243
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:390
msgid "Replace"
msgstr "عوض"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264
#, java-format
msgid "Host name {0} is already in addressbook, unchanged."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:297
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:242
#, fuzzy, java-format
msgid "Host name {0} is already in address book, unchanged."
msgstr "اسم مضيف {0} موجود في دفتر العناوين."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266
#, java-format
msgid ""
"Host name {0} is already in addressbook with a different destination. Click "
"\"Replace\" to overwrite."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:299
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:244
#, fuzzy, java-format
msgid "Host name {0} is already in address book with a different destination. Click \"Replace\" to overwrite."
msgstr "اسم المضيف {0} موجود مسبقا في دفتر العناوين. أنقر \"عوض\" يتعويضه."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:257
#, java-format
msgid "Destination added for {0}."
msgstr "تم اضافة الوجهة الى {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:313
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:259
#, java-format
msgid "Destination changed for {0}."
msgstr "تم تغيير الوجهة الى {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:315
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:261
msgid "Warning - host name does not end with \".i2p\""
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:320
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:269
msgid "Invalid Base 64 destination."
msgstr "باطلة Base 64 وجهة."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:275
#, java-format
msgid "Invalid host name \"{0}\"."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:329
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
msgid "Please enter a host name and destination"
msgstr "قم بادخال اسم المضيف والوجهة"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314
#. clear search when deleting
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:333
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:354
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:282
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:307
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:261
msgid "Delete Entry"
msgstr "حذف العنصر"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:333
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:282
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:334
msgid "Delete Selected"
msgstr "حذف"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303
#, java-format
#. parameter is a host name
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:347
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:299
#, fuzzy, java-format
msgid "Destination {0} deleted."
msgstr "وجهة {0} محذوفة."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305
#, java-format
msgid "{0} destinations deleted."
msgstr "{0} وجهة محذوفة."
#. parameter will always be >= 2
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:350
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:302
#, fuzzy, java-format
msgid "1 destination deleted."
msgid_plural "{0} destinations deleted."
msgstr[0] "{0} وجهة محذوفة."
msgstr[1] "{0} وجهة محذوفة."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311
msgid "Addressbook saved."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:352
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:304
msgid "No entries selected to delete."
msgstr "لم يتم اختيار عنصر للحذف"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:360
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:311
msgid "Address book saved."
msgstr "تم حفظ دفتر العناوين"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:363
msgid "ERROR: Could not write addressbook file."
msgstr "خطأ: لم يتم حفظ دفتر العناوين"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:368
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
msgid ""
"Invalid form submission, probably because you used the \"back\" or \"reload"
"\" button on your browser. Please resubmit."
msgstr ""
"فشل في الارسال، ربما لاستعمال زر \"رجوع\" او \"أنعش\". قم بالارسال مرة أخرى."
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:315
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:156
msgid "Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit."
msgstr "فشل في الارسال، ربما لاستعمال زر \"رجوع\" او \"أنعش\". قم بالارسال مرة أخرى."
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
msgid "Save"
msgstr "حفظ"
@ -143,9 +223,9 @@ msgid "Configuration saved."
msgstr "حفظ الخيارات"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:150
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130
msgid "Reload"
msgstr "أعد تشغيل"
@ -153,235 +233,328 @@ msgstr "أعد تشغيل"
msgid "Configuration reloaded."
msgstr "اعادة تحميل الاعدادات"
#. Yes this is a hack.
#. No it doesn't work on a text-mode browser.
#. Fetching from the addressbook servlet
#. with the correct parameters will kick off a
#. config reload and fetch.
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139
msgid ""
"Subscriptions saved, updating addressbook from subscription sources now."
msgstr "تم حفظ الاشتراكات وتحديث دفتر العناوين من مصادر اشتراك الآن."
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:105
#, java-format
msgid "{0} address book in {1} database"
msgstr "{0} دفتر عناوين في {1} قاعدة البيانات"
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:252
msgid "Manually added via SusiDNS"
msgstr "محذوف يدويا عن طريق SusiDNS"
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:266
#, java-format
msgid "Failed to add Destination for {0} to naming service {1}"
msgstr ""
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:290
#, java-format
msgid "Failed to delete Destination for {0} from naming service {1}"
msgstr ""
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
msgid "Subscriptions saved, updating addressbook from subscription sources now."
msgstr "تم حفظ الاشتراكات وتحديث دفتر العناوين من مصادر اشتراك الآن."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:148
msgid "Subscriptions saved."
msgstr "تم حفظ الاشتراك."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:152
msgid "Subscriptions reloaded."
msgstr "تم اعادة تحميل الاشتراك."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
msgid "addressbook"
msgid "address book"
msgstr "دفتر العناوين"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:104
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:93
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:107
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:104
msgid "addressbooks"
msgstr "دفتر العناوين"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:120
msgid "Overview"
msgstr "نظرة عامة"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:106
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:95
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:93
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:106
msgid "private"
msgstr "خاص"
msgid "Address books"
msgstr "دفتر العناوين"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:97
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:95
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:108
msgid "master"
msgstr "رئيسي"
msgid "private"
msgstr "خاص"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:99
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:97
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:110
msgid "router"
msgstr "موجه"
msgid "master"
msgstr "رئيسي"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:101
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:99
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:112
msgid "published"
msgstr "منشور"
msgid "router"
msgstr "موجه"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:103
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:101
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:114
msgid "subscriptions"
msgstr "اشتراك"
msgid "published"
msgstr "منشور"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:105
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:103
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:116
msgid "configuration"
msgstr "خيارات"
msgid "Subscriptions"
msgstr "اشتراك"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:107
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:105
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:118
msgid "overview"
msgstr "نظرة عامة"
msgid "Configuration"
msgstr "خيارات"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
msgid "Address book"
msgstr "دفتر العناوين"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:150
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:131
msgid "Storage"
msgstr "تخزين"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:169
msgid "Filter"
msgstr "ترشيح"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:172
msgid "other"
msgstr "أخر"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:174
msgid "all"
msgstr "جمبع"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:185
msgid "Current filter"
msgstr "الترشيح الحالي"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:190
msgid "clear filter"
msgstr "الغاء الترشيح"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:201
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:205
msgid "Search"
msgstr "بحث"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:238
msgid "Name"
msgstr "الإسم"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:240
msgid "Links"
msgstr "وصلة"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:242
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:384
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:253
msgid "Destination"
msgstr "الوجهة"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:273
msgid "Mark for deletion"
msgstr "اختر للحذف"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279
msgid "address helper link"
msgstr "وصلة مساعدة"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:292
msgid "Base 32 address"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:296
msgid "More information on this entry"
msgstr "المزيد من المعلومات حول هذا العنصر"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:299
msgid "details"
msgstr "تفاصيل"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:332
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:388
msgid "Cancel"
msgstr "الغاء"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
msgid "This addressbook is empty."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:365
msgid "This address book is empty."
msgstr "هذا دفتر العناوين فارغ"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:378
msgid "Add new destination"
msgstr "أضف وجهة جديدة"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358
msgid "Hostname"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:380
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:158
msgid "Host Name"
msgstr "اسم مضيف"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:102
msgid "configuration"
msgstr "خيارات"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134
msgid "Hints"
msgstr "إشارة"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
"\\addressbook\\ (Windows)."
msgstr ""
"عنوان الملف والمجلد نسبي الى مجلد دفتر العناوين، الذي عادة هو ~/.i2p/"
"addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136
msgid ""
"If you want to manually add lines to an addressbook, add them to the private "
"or master addressbooks."
msgstr ""
"اذا اردت اضافة العناوين الى دفتر العناوين، اضفها مباشرة الى دفتر العناوين "
"الرئيسي."
msgid "File and directory paths here are relative to the addressbook's working directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)."
msgstr "عنوان الملف والمجلد نسبي الى مجلد دفتر العناوين، الذي عادة هو ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows)."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
msgstr ""
"يتم تحديث دفتر العناوين الخاص و دفتر العناوين العمومي من طرف تطبيق دفتر "
"العناوين."
msgid "If you want to manually add lines to an addressbook, add them to the private or master addressbooks."
msgstr "اذا اردت اضافة العناوين الى دفتر العناوين، اضفها مباشرة الى دفتر العناوين الرئيسي."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
msgstr "عندما تنشر دفتر العناوين، ستظهر جميع المواقع هنا."
msgid "The router addressbook and the published addressbook are updated by the addressbook application."
msgstr "يتم تحديث دفتر العناوين الخاص و دفتر العناوين العمومي من طرف تطبيق دفتر العناوين."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
msgstr "استعمل دفتر العناوين الخاص من أجل العناوين الخاصة التي لن يتم نشرها."
msgid "When you publish your addressbook, ALL destinations from the master and router addressbooks appear there."
msgstr "عندما تنشر دفتر العناوين، ستظهر جميع المواقع هنا."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144
msgid "Use the private addressbook for private destinations, these are not published."
msgstr "استعمل دفتر العناوين الخاص من أجل العناوين الخاصة التي لن يتم نشرها."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
msgid "Options"
msgstr "خيارات"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr "ملف يحتوي على قائمة الاشتراكات"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
msgid "Update interval in hours"
msgstr "تحديث الفاصل الزمني في ساعات"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152
msgid "Your public hosts.txt file (choose a path within your webserver document root)"
msgstr "hosts.txt ملف"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154
msgid "Your hosts.txt (don't change)"
msgstr "hosts.txt (ﻻتغير)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156
msgid "Your personal addressbook, these hosts will be published"
msgstr "سيتم نشر هذه العناوين"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
msgid "Your private addressbook, it is never published"
msgstr "دفتر عناوينك الخاص، لن يتم نشره"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
msgid "Port for your eepProxy (no need to change)"
msgstr "رقم منفذ eepProxy (ﻻ حاجة للتغيير)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
msgid "Hostname for your eepProxy (no need to change)"
msgstr "عنوان لـ eepProxy"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164
msgid "Whether to update the published addressbook"
msgstr "تعديل دفتر العناوين المنشور"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164
msgid ""
"File containing the etags header from the fetched subscription URLs (no need "
"to change)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166
msgid "File containing the etags header from the fetched subscription URLs (no need to change)"
msgstr "ملف يحتوي على قائمة عناوين الاشتراك"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166
msgid ""
"File containing the modification timestamp for each fetched subscription URL "
"(no need to change)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
msgid "File containing the modification timestamp for each fetched subscription URL (no need to change)"
msgstr "ملف يحتوي على تاريخ التحديث"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:170
msgid "File to log activity to (change to /dev/null if you like)"
msgstr "ملف لحفظ الأخطاء"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:106
msgid "addressbook"
msgstr "دفتر العناوين"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:174
msgid "Encoded Name"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:190
msgid "Base 32 Address"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:200
msgid "Address Helper"
msgstr "وصلة مساعدة"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:207
msgid "link"
msgstr "وصلة"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:211
msgid "Public Key"
msgstr "مفتاح علني"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:213
msgid "ElGamal 2048 bit"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:217
msgid "Signing Key"
msgstr "مفتاح التوقيع"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:219
msgid "DSA 1024 bit"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:223
msgid "Certificate"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:229
msgid "Added Date"
msgstr "التاريخ"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:235
msgid "Source"
msgstr "المصدر"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:241
msgid "Last Modified"
msgstr "أخر تحديث"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:247
msgid "Notes"
msgstr " 1. مسودة"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91
msgid "Introduction"
msgstr "تقديم"
@ -391,111 +564,92 @@ msgid "What is the addressbook?"
msgstr "ماهو دفتر العناوين؟"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111
msgid "The addressbook application is part of your i2p installation."
msgid "The addressbook application is part of your I2P installation."
msgstr "تطبيق دفتر العناوين هو ضمن مجموعة برامج i2p"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113
msgid ""
"It regularly updates your hosts.txt file from distributed sources or "
"\"subscriptions\"."
msgid "It regularly updates your hosts.txt file from distributed sources or \"subscriptions\"."
msgstr "يقوم بتحديث ملف hosts.txt من عدة مصادر"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
msgid ""
"In the default configuration, the addressbook is only subscribed to www.i2p2."
"i2p."
msgid "In the default configuration, the address book is only subscribed to www.i2p2.i2p."
msgstr "في الاعدادت العادية، دفتر العناوين مرتبط ب www.i2p2.i2p."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117
msgid ""
"Subscribing to additional sites is easy, just add them to your <a href="
"\"subscriptions.jsp\">subscriptions</a> file."
msgstr ""
"من السهل الانخراط في باقي المواقع فقط أضفه الى <a href=\"subscriptions.jsp"
"\">الانخراط</a>"
msgid "Subscribing to additional sites is easy, just add them to your <a href=\"subscriptions.jsp\">subscriptions</a> file."
msgstr "من السهل الانخراط في باقي المواقع فقط أضفه الى <a href=\"subscriptions.jsp\">الانخراط</a>"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119
msgid ""
"For more information on naming in i2p, see <a href=\"http://www.i2p2.i2p/"
"naming.html\">the overview on www.i2p2.i2p</a>."
msgstr ""
"للمزيد من المعلومات حول التسمية<a href=\"http://www.i2p2.i2p/naming.html"
"\">لمحة عامة www.i2p2.i2p</a>."
msgid "For more information on naming in I2P, see <a href=\"http://www.i2p2.i2p/naming.html\">the overview on www.i2p2.i2p</a>."
msgstr "للمزيد من المعلومات حول التسمية<a href=\"http://www.i2p2.i2p/naming.html\">لمحة عامة www.i2p2.i2p</a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
msgid "How does the addressbook work?"
msgid "How does the addressbook application work?"
msgstr "كيف يشتغل دفتر العناوين؟"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" addressbook, stored in the hosts.txt file."
msgstr ""
"دفتر العناوين الخاص بك يقوم بستمرار من الحصول على الاشتراكات و حفظ العناولن "
"الجديدة في ملف hosts.txt."
msgid "The addressbook application regularly polls your subscriptions and merges their content into your \"router\" address book."
msgstr "دفتر العناوين الخاص بك يقوم بستمرار من الحصول على الاشتراكات و حفظ العناولن الجديدة في ملف hosts.txt."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
msgid ""
"Then it merges your \"master\" addressbook (userhosts.txt) into the router "
"addressbook as well."
msgstr "ثم اضافة العناوين الى دفتر العناوين أيضا."
msgid "Then it merges your \"master\" address book into the router address book as well."
msgstr "ثم اضافة العناوين الى دفتر العناوين الرئيسي أيضا."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127
msgid ""
"If configured, the router addressbook is now written to the \"published\" "
"addressbook, which will be publicly available if you are running an eepsite."
msgstr "اذا قمت بالاختيار لن تتم نشر دفتر العناوين "
msgid "If configured, the router address book is now written to the \"published\" address book, which will be publicly available if you are running an eepsite."
msgstr "اذا قمت بالاختيار، سيتم نشر دفتر العناوين العام الذي يستطيع الأخرون الوصول اليه."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129
msgid ""
"The router also uses a private addressbook (privatehosts.txt, not shown in "
"the picture), which is not merged or published."
msgstr "الموجه يستعمل ايضا دفتر عناوين خاص الذ لا يتم نشره"
msgid "The router also uses a private address book (not shown in the picture), which is not merged or published."
msgstr "الموجه يستعمل ايضا دفتر عناوين خاص الذي لا يتم نشره"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131
msgid ""
"Hosts in the private addressbook can be accessed by you but their addresses "
"are never distributed to others."
msgstr ""
"يمكنك الإطلاع على المواقع في دفتر العناوينك الخاص توزيع أبدا لكم ولكن "
"عناوينهم للآخرين."
msgid "Hosts in the private address book can be accessed by you but their addresses are never distributed to others."
msgstr "العناوين في دفتر العناوين الخاص لايمكن الوصول اليها من طرف الآخرين. "
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
msgid ""
"The private addressbook can also be used for aliases of hosts in your other "
"addressbooks."
msgstr ""
"ويمكن أيضا أن تستعمل دفتر العناوين الخاص لأجل الأسماء المستعارة لأخرى "
"الخاصة بك."
msgid "The private address book can also be used for aliases of hosts in your other address books."
msgstr "ويمكن أيضا أن تستعمل دفتر العناوين الخاص لأجل الأسماء المستعارة لأخرى الخاصة بك."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:102
msgid "subscriptions"
msgstr "اشتراك"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
msgid "The subscription file contains a list of i2p URLs."
msgstr "ملف الاشتراك يحتوي على قائمة مواقع i2p."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
msgid ""
"The addressbook application regularly checks this list for new eepsites."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
msgid "The addressbook application regularly checks this list for new eepsites."
msgstr "دفتر العناوين تقوم يستمرار بالتحقق من قائمة eepsites."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138
msgid "Those URLs refer to published hosts.txt files."
msgstr "هذه العناوين لملف hosts.txt."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138
msgid ""
"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
"updated infrequently."
msgstr ""
"الاشتراك العادي هو لملف hosts.txt from www.i2p2.i2p الذي يتم ترقيته باستمرار."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
msgstr ""
"انها فكرة جيدة لإضافة اشتراكات إضافية إلى المواقع التي تحتوي على أحدث "
"العناوين."
msgid "The default subscription is the hosts.txt from www.i2p2.i2p, which is updated infrequently."
msgstr "الاشتراك العادي هو لملف hosts.txt from www.i2p2.i2p الذي يتم ترقيته باستمرار."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
msgid "So it is a good idea to add additional subscriptions to sites that have the latest addresses."
msgstr "انها فكرة جيدة لإضافة اشتراكات إضافية إلى المواقع التي تحتوي على أحدث العناوين."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:144
msgid "See the FAQ for a list of subscription URLs."
msgstr "أنظر الأسئلة الشائعة للخصول على قائمة بالعناوين"
#~ msgid "Filtered list"
#~ msgstr "قائمة الترشيح"
#~ msgid "no matches"
#~ msgstr "لا يوجد شبيه"
#~ msgid "contains no entries"
#~ msgstr "لايحتوي على بيانات"
#~ msgid "contains {0} entries"
#~ msgstr "يحتوي على {0} "
#~ msgid "addressbooks"
#~ msgstr "دفتر العناوين"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P susidns\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,122 +18,209 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:200
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197
msgid "Search"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204
msgid "Search within filtered list"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206
msgid "Filtered list"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210
msgid "no matches"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213
msgid "Addressbook"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215
msgid "contains no entries"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217
msgid "contains 1 entry"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219
#: ../src/java/src/i2p/susi/dns/AddressBean.java:130
#, java-format
msgid "contains {0} entries"
msgid "Host name \"{0}\" contains illegal character {1}"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229
#: ../src/java/src/i2p/susi/dns/AddressBean.java:143
#: ../src/java/src/i2p/susi/dns/AddressBean.java:145
#: ../src/java/src/i2p/susi/dns/AddressBean.java:152
#, java-format
msgid "Host name cannot start with \"{0}\""
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:147
#: ../src/java/src/i2p/susi/dns/AddressBean.java:149
#, java-format
msgid "Host name cannot end with \"{0}\""
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:154
#, java-format
msgid "Host name cannot contain \"{0}\""
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:157
#, java-format
msgid ""
"Host name \"{0}\" requires conversion to ASCII but the conversion library is "
"unavailable in this JVM"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:209
msgid "None"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:217
msgid "Hashcash"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:219
msgid "Hidden"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:221
msgid "Signed"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:223
#, java-format
msgid "Type {0}"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:232
#, java-format
msgid "One result for search within filtered list."
msgid_plural "{0} results for search within filtered list."
msgstr[0] ""
msgstr[1] ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:236
#, java-format
msgid "Filtered list contains 1 entry."
msgid_plural "Fltered list contains {0} entries."
msgstr[0] ""
msgstr[1] ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:241
#, java-format
msgid "One result for search."
msgid_plural "{0} results for search."
msgstr[0] ""
msgstr[1] ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:250
#, java-format
msgid "Address book contains 1 entry."
msgid_plural "Address book contains {0} entries."
msgstr[0] ""
msgstr[1] ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266
#, java-format
msgid "Showing {0} of {1}"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:231
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:392
msgid "Add"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:298
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:231
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:243
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:390
msgid "Replace"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:297
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:242
#, java-format
msgid "Host name {0} is already in addressbook, unchanged."
msgid "Host name {0} is already in address book, unchanged."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:299
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:244
#, java-format
msgid ""
"Host name {0} is already in addressbook with a different destination. Click "
"Host name {0} is already in address book with a different destination. Click "
"\"Replace\" to overwrite."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:257
#, java-format
msgid "Destination added for {0}."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:313
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:259
#, java-format
msgid "Destination changed for {0}."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:315
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:261
msgid "Warning - host name does not end with \".i2p\""
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:320
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:269
msgid "Invalid Base 64 destination."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:275
#, java-format
msgid "Invalid host name \"{0}\"."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:329
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
msgid "Please enter a host name and destination"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314
#. clear search when deleting
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:333
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:354
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:282
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:307
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:261
msgid "Delete Entry"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:333
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:282
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:334
msgid "Delete Selected"
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303
#. parameter is a host name
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:347
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:299
#, java-format
msgid "Destination {0} deleted."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305
#. parameter will always be >= 2
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:350
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:302
#, java-format
msgid "{0} destinations deleted."
msgid "1 destination deleted."
msgid_plural "{0} destinations deleted."
msgstr[0] ""
msgstr[1] ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:352
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:304
msgid "No entries selected to delete."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311
msgid "Addressbook saved."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:360
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:311
msgid "Address book saved."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:363
msgid "ERROR: Could not write addressbook file."
msgstr ""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:368
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:315
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:156
msgid ""
"Invalid form submission, probably because you used the \"back\" or \"reload"
"\" button on your browser. Please resubmit."
msgstr ""
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:130
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
msgid "Save"
msgstr ""
@ -142,9 +229,9 @@ msgid "Configuration saved."
msgstr ""
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:150
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130
msgid "Reload"
msgstr ""
@ -152,229 +239,346 @@ msgstr ""
msgid "Configuration reloaded."
msgstr ""
#. Yes this is a hack.
#. No it doesn't work on a text-mode browser.
#. Fetching from the addressbook servlet
#. with the correct parameters will kick off a
#. config reload and fetch.
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:139
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:105
#, java-format
msgid "{0} address book in {1} database"
msgstr ""
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:252
msgid "Manually added via SusiDNS"
msgstr ""
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:266
#, java-format
msgid "Failed to add Destination for {0} to naming service {1}"
msgstr ""
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:290
#, java-format
msgid "Failed to delete Destination for {0} from naming service {1}"
msgstr ""
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
msgid ""
"Subscriptions saved, updating addressbook from subscription sources now."
msgstr ""
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:148
msgid "Subscriptions saved."
msgstr ""
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:152
msgid "Subscriptions reloaded."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
msgid "addressbook"
msgid "address book"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:104
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:93
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:107
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:104
msgid "addressbooks"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:120
msgid "Overview"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:106
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:95
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:93
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:106
msgid "private"
msgid "Address books"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:97
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:95
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:108
msgid "master"
msgid "private"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:99
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:97
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:110
msgid "router"
msgid "master"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:101
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:99
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:112
msgid "published"
msgid "router"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:103
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:101
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:114
msgid "subscriptions"
msgid "published"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:102
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:105
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:103
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:116
msgid "configuration"
msgid "Subscriptions"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:107
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:105
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:118
msgid "overview"
msgid "Configuration"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
msgid "Address book"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:150
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:131
msgid "Storage"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:169
msgid "Filter"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:172
msgid "other"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:174
msgid "all"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:185
msgid "Current filter"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:190
msgid "clear filter"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:201
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:205
msgid "Search"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:238
msgid "Name"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:240
msgid "Links"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:242
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:384
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:253
msgid "Destination"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:273
msgid "Mark for deletion"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279
msgid "address helper link"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:292
msgid "Base 32 address"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:296
msgid "More information on this entry"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:299
msgid "details"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:332
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:388
msgid "Cancel"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
msgid "This addressbook is empty."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:365
msgid "This address book is empty."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:378
msgid "Add new destination"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358
msgid "Hostname"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:380
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:158
msgid "Host Name"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132
msgid "Hints"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:102
msgid "configuration"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134
msgid "Hints"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
"\\addressbook\\ (Windows)."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138
msgid ""
"If you want to manually add lines to an addressbook, add them to the private "
"or master addressbooks."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
msgid "Options"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
msgid "Update interval in hours"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154
msgid "Your hosts.txt (don't change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156
msgid "Your personal addressbook, these hosts will be published"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
msgid "Your private addressbook, it is never published"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
msgid "Port for your eepProxy (no need to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
msgid "Hostname for your eepProxy (no need to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164
msgid "Whether to update the published addressbook"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166
msgid ""
"File containing the etags header from the fetched subscription URLs (no need "
"to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
msgid ""
"File containing the modification timestamp for each fetched subscription URL "
"(no need to change)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:170
msgid "File to log activity to (change to /dev/null if you like)"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:106
msgid "addressbook"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:174
msgid "Encoded Name"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:190
msgid "Base 32 Address"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:200
msgid "Address Helper"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:207
msgid "link"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:211
msgid "Public Key"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:213
msgid "ElGamal 2048 bit"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:217
msgid "Signing Key"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:219
msgid "DSA 1024 bit"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:223
msgid "Certificate"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:229
msgid "Added Date"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:235
msgid "Source"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:241
msgid "Last Modified"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:247
msgid "Notes"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91
msgid "Introduction"
msgstr ""
@ -384,7 +588,7 @@ msgid "What is the addressbook?"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111
msgid "The addressbook application is part of your i2p installation."
msgid "The addressbook application is part of your I2P installation."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113
@ -395,8 +599,8 @@ msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
msgid ""
"In the default configuration, the addressbook is only subscribed to www.i2p2."
"i2p."
"In the default configuration, the address book is only subscribed to www."
"i2p2.i2p."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117
@ -407,75 +611,79 @@ msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119
msgid ""
"For more information on naming in i2p, see <a href=\"http://www.i2p2.i2p/"
"For more information on naming in I2P, see <a href=\"http://www.i2p2.i2p/"
"naming.html\">the overview on www.i2p2.i2p</a>."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
msgid "How does the addressbook work?"
msgid "How does the addressbook application work?"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" addressbook, stored in the hosts.txt file."
"their content into your \"router\" address book."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
msgid ""
"Then it merges your \"master\" addressbook (userhosts.txt) into the router "
"addressbook as well."
"Then it merges your \"master\" address book into the router address book as "
"well."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127
msgid ""
"If configured, the router addressbook is now written to the \"published\" "
"addressbook, which will be publicly available if you are running an eepsite."
"If configured, the router address book is now written to the \"published\" "
"address book, which will be publicly available if you are running an eepsite."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129
msgid ""
"The router also uses a private addressbook (privatehosts.txt, not shown in "
"the picture), which is not merged or published."
"The router also uses a private address book (not shown in the picture), "
"which is not merged or published."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131
msgid ""
"Hosts in the private addressbook can be accessed by you but their addresses "
"Hosts in the private address book can be accessed by you but their addresses "
"are never distributed to others."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
msgid ""
"The private addressbook can also be used for aliases of hosts in your other "
"addressbooks."
"The private address book can also be used for aliases of hosts in your other "
"address books."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
msgid "The subscription file contains a list of i2p URLs."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:102
msgid "subscriptions"
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
msgid "The subscription file contains a list of i2p URLs."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138
msgid "Those URLs refer to published hosts.txt files."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140
msgid ""
"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
"updated infrequently."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
msgstr ""
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:144
msgid "See the FAQ for a list of subscription URLs."
msgstr ""

View File

@ -0,0 +1,753 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the susidns 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-06-11 08:23+0000\n"
"PO-Revision-Date: 2011-06-05 16:26+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/java/src/i2p/susi/dns/AddressBean.java:130
#, java-format
msgid "Host name \"{0}\" contains illegal character {1}"
msgstr "Nazwa hosta \"{0}\" zawiera niedozwolony znak {1}"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:143
#: ../src/java/src/i2p/susi/dns/AddressBean.java:145
#: ../src/java/src/i2p/susi/dns/AddressBean.java:152
#, java-format
msgid "Host name cannot start with \"{0}\""
msgstr "Nazwa hosta nie może zaczynać się od \"{0}\""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:147
#: ../src/java/src/i2p/susi/dns/AddressBean.java:149
#, java-format
msgid "Host name cannot end with \"{0}\""
msgstr "Nazwa hosta nie może kończyć się na \"{0}\""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:154
#, java-format
msgid "Host name cannot contain \"{0}\""
msgstr "Nazwa hosta nie może zawierać \"{0}\""
#: ../src/java/src/i2p/susi/dns/AddressBean.java:157
#, java-format
msgid ""
"Host name \"{0}\" requires conversion to ASCII but the conversion library is"
" unavailable in this JVM"
msgstr ""
"Nazwa hosta \"{0}\" wymaga konwersji na ASCII, ale ta biblioteka konwersji "
"jest niedostępna w tym JVM"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:209
msgid "None"
msgstr "Brak"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:217
msgid "Hashcash"
msgstr "Hashcash"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:219
msgid "Hidden"
msgstr "Ukryty"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:221
msgid "Signed"
msgstr "Podpisano"
#: ../src/java/src/i2p/susi/dns/AddressBean.java:223
#, java-format
msgid "Type {0}"
msgstr "Typ {0}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:232
#, java-format
msgid "One result for search within filtered list."
msgid_plural "{0} results for search within filtered list."
msgstr[0] "Jeden wynik wyszukiwania w filtrowanej liście."
msgstr[1] "{0} wyniki wyszukiwania w filtrowanej listy."
msgstr[2] "{0} wyników wyszukiwania w filtrowanej listy."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:236
#, java-format
msgid "Filtered list contains 1 entry."
msgid_plural "Fltered list contains {0} entries."
msgstr[0] "Filtrowana lista zawiera 1 wpis."
msgstr[1] "Filtrowana lista zawiera {0} wpisy."
msgstr[2] "Filtrowana lista zawiera {0} wpisów."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:241
#, java-format
msgid "One result for search."
msgid_plural "{0} results for search."
msgstr[0] "Jeden wynik wyszukiwania."
msgstr[1] "{0} wyniki wyszukiwania."
msgstr[2] "{0} wyników wyszukiwania."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:250
#, java-format
msgid "Address book contains 1 entry."
msgid_plural "Address book contains {0} entries."
msgstr[0] "Książka adresowa zawiera 1 wpis."
msgstr[1] "Książka adresowa zawiera {0} wpisy."
msgstr[2] "Książka adresowa zawiera {0} wpisów."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:266
#, java-format
msgid "Showing {0} of {1}"
msgstr "Wyświetlono {0} z {1}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:231
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:392
msgid "Add"
msgstr "Dodaj"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:298
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:231
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:243
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:390
msgid "Replace"
msgstr "Zastąp"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:297
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:242
#, java-format
msgid "Host name {0} is already in address book, unchanged."
msgstr "Nazwa hosta {0} jest już w książce adresowej, bez zmian."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:299
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:244
#, java-format
msgid ""
"Host name {0} is already in address book with a different destination. Click"
" \"Replace\" to overwrite."
msgstr ""
"Nazwa hosta {0} jest już w książce adresowej z innym miejscem przeznaczenia."
" Kliknij przycisk \"Zmień\", aby nadpisać."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:257
#, java-format
msgid "Destination added for {0}."
msgstr "Miejsce przeznaczenia dodane dla {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:313
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:259
#, java-format
msgid "Destination changed for {0}."
msgstr "Miejsce przeznaczenia zmienione dla {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:315
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:261
msgid "Warning - host name does not end with \".i2p\""
msgstr "Uwaga - nazwa hosta nie kończy się na \".i2p\""
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:320
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:269
msgid "Invalid Base 64 destination."
msgstr "Nieprawidłowy miejsca przeznaczenia formatu Base 64."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:275
#, java-format
msgid "Invalid host name \"{0}\"."
msgstr "Nieprawidłowa nazwa hosta \"{0}\"."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:329
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:278
msgid "Please enter a host name and destination"
msgstr "Wpisz nazwę hosta i miejsca przeznaczenia"
#. clear search when deleting
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:333
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:354
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:282
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:307
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:261
msgid "Delete Entry"
msgstr "Usuń wpis"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:333
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:282
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:334
msgid "Delete Selected"
msgstr "Usuń zaznaczone"
#. parameter is a host name
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:347
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:299
#, java-format
msgid "Destination {0} deleted."
msgstr "Miejsce przeznaczenia {0} usunięte."
#. parameter will always be >= 2
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:350
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:302
#, java-format
msgid "1 destination deleted."
msgid_plural "{0} destinations deleted."
msgstr[0] "1 miejsce przeznaczenia usunięte."
msgstr[1] "{0} miejsca przeznaczenia usunięte."
msgstr[2] "{0} miejsc przeznaczenia usunięte."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:352
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:304
msgid "No entries selected to delete."
msgstr "Brak wpisów wybranych do usunięcia."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:360
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:311
msgid "Address book saved."
msgstr "Książka adresowa zapisana."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:363
msgid "ERROR: Could not write addressbook file."
msgstr "BŁĄD: Nie można zapisać pliku książki adresowej."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:368
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:315
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:156
msgid ""
"Invalid form submission, probably because you used the \"back\" or "
"\"reload\" button on your browser. Please resubmit."
msgstr ""
"Nieprawidłowy formularz, prawdopodobnie dlatego, że użyto przycisku "
"\"wstecz\" lub \"przeładuj\" w przeglądarce. Proszę prześlij ponownie."
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
msgid "Save"
msgstr "Zapisz"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141
msgid "Configuration saved."
msgstr "Konfiguracja zapisana."
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:150
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130
msgid "Reload"
msgstr "Przeładuj"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144
msgid "Configuration reloaded."
msgstr "Konfiguracja przeładowana."
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:105
#, java-format
msgid "{0} address book in {1} database"
msgstr "{0} książka adresowa w bazie {1}"
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:252
msgid "Manually added via SusiDNS"
msgstr "Dodane ręcznie przez SusiDNS"
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:266
#, java-format
msgid "Failed to add Destination for {0} to naming service {1}"
msgstr ""
"Nie udało się dodać Miejsca Przeznaczenia dla {0} do serwisu nazewnictwa {1}"
#: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:290
#, java-format
msgid "Failed to delete Destination for {0} from naming service {1}"
msgstr ""
"Nie udało się usunąć Miejsca Przeznaczenia dla {0} z serwisu nazewnictwa {1}"
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
msgid ""
"Subscriptions saved, updating addressbook from subscription sources now."
msgstr ""
"Subskrypcje zapisane, trwa teraz aktualizowanie książki adresowej ze źródeł "
"subskrypcji."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:148
msgid "Subscriptions saved."
msgstr "Subskrypcje zapisane."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:152
msgid "Subscriptions reloaded."
msgstr "Subskrypcje przeładowane."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125
msgid "address book"
msgstr "książka adresowa"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:143
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:104
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:124
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:107
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:104
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:120
msgid "Overview"
msgstr "Przegląd"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:106
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:93
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:106
msgid "Address books"
msgstr "Książki adresowe"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:108
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:95
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:108
msgid "private"
msgstr "prywatne"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:110
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:97
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:110
msgid "master"
msgstr "głowne"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:112
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:99
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:112
msgid "router"
msgstr "router"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:114
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:101
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:114
msgid "published"
msgstr "opublikowane"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:116
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:120
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:103
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:116
msgid "Subscriptions"
msgstr "Subskrypcje"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:118
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:122
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:105
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:118
msgid "Configuration"
msgstr "Konfiguracja"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:126
msgid "Address book"
msgstr "Książka adresowa"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:150
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:131
msgid "Storage"
msgstr "Pamięć"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:169
msgid "Filter"
msgstr "Filtr"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:172
msgid "other"
msgstr "inne"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:174
msgid "all"
msgstr "wszystkie"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:185
msgid "Current filter"
msgstr "Obecny filtr"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:190
msgid "clear filter"
msgstr "wyczyść filtr"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:201
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:205
msgid "Search"
msgstr "Szukaj"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:238
msgid "Name"
msgstr "Nazwa"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:240
msgid "Links"
msgstr "Linki"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:242
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:384
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:253
msgid "Destination"
msgstr "Miejsce przeznaczenia"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:273
msgid "Mark for deletion"
msgstr "Zaznacz do usunięcia"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:292
msgid "Base 32 address"
msgstr "Adres Base 32"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:296
msgid "More information on this entry"
msgstr "Więcej informacji na temat tego wpisu"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:299
msgid "details"
msgstr "szczegóły"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:332
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:388
msgid "Cancel"
msgstr "Anuluj"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:365
msgid "This address book is empty."
msgstr "Ta książka adresowa jest pusta."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:378
msgid "Add new destination"
msgstr "Dodaj nowe miejsce przeznaczenia"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:380
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:158
msgid "Host Name"
msgstr "Nazwa hosta"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:102
msgid "configuration"
msgstr "konfiguracja"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134
msgid "Hints"
msgstr "Wskazówki"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136
msgid ""
"File and directory paths here are relative to the addressbook's working "
"directory, which is normally ~/.i2p/addressbook/ (Linux) or "
"%APPDATA%\\I2P\\addressbook\\ (Windows)."
msgstr ""
"Ścieżki do plików i katalogów są podane w stosunku do roboczego katalogu "
"książki adresowej, którym jest zwykle ~/.i2p/addressbook/ (Linux) lub "
"%APPDATA%\\I2P\\addressbook\\ (Windows)."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138
msgid ""
"If you want to manually add lines to an addressbook, add them to the private"
" or master addressbooks."
msgstr ""
"Jeśli chcesz ręcznie dodać wiersze do książki adresowej, dodaj je do "
"prywatnych lub głownych książek adresowych."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140
msgid ""
"The router addressbook and the published addressbook are updated by the "
"addressbook application."
msgstr ""
"Książka adresowa routera i opublikowana książka adresowa są aktualizowane "
"przez aplikacje książki adresowej."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142
msgid ""
"When you publish your addressbook, ALL destinations from the master and "
"router addressbooks appear there."
msgstr ""
"Kiedy publikujesz swoja książke adresowa, WSZYSTKIE miejsca przeznaczenia z "
"głównej książki adresowej i książki adresowej routera zostaną ukazane."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
msgstr ""
"Użyj prywatnej książki adresowej dla prywatnych miejsc przeznaczania, te nie"
" są publikowane."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
msgid "Options"
msgstr "Opcje"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr ""
"Plik zawierający listę adresów URL subskrypcji (nie ma potrzeby, aby "
"zmieniać)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
msgid "Update interval in hours"
msgstr "Przerwa miedzy aktualizacjami w godzinach"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
msgstr ""
"Twoje publiczne pliki hosts.txt (wybierz ścieżkę w głównym katalogu "
"webserwera)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154
msgid "Your hosts.txt (don't change)"
msgstr "Twój hosts.txt (nie zmieniaj)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156
msgid "Your personal addressbook, these hosts will be published"
msgstr "Twoja osobista książka adresowa, te hosty będą publikowane"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
msgid "Your private addressbook, it is never published"
msgstr "Twoja prywatna książka adresowa, ta nigdy nie jest publikowany"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
msgid "Port for your eepProxy (no need to change)"
msgstr "Port dla eepProxy (nie ma potrzeby, aby zmieniać)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
msgid "Hostname for your eepProxy (no need to change)"
msgstr "Nazwa hosta dla eepProxy (nie ma potrzeby, aby zmienić)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164
msgid "Whether to update the published addressbook"
msgstr "Czy aktualizpwać opublikowaną książke adresową"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166
msgid ""
"File containing the etags header from the fetched subscription URLs (no need"
" to change)"
msgstr ""
"Plik zawierający nagłówek etagów z pobranych subskrypcji URL (nie trzeba "
"zmieniać)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
msgid ""
"File containing the modification timestamp for each fetched subscription URL"
" (no need to change)"
msgstr ""
"Plik zawierający modifikacje znaczów czasu dla każdej pobranej subscrypcji "
"URL (nie trzeba zmieniać)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:170
msgid "File to log activity to (change to /dev/null if you like)"
msgstr "Plik do logowania działalności (zmień na /dev/null, jeśli chcesz)"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:106
msgid "addressbook"
msgstr "Ksiazka adresowa"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:174
msgid "Encoded Name"
msgstr "Zakodowana Nazwa"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:190
msgid "Base 32 Address"
msgstr "Adress Base 32"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:200
msgid "Address Helper"
msgstr "Pomoc Adresowa"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:207
msgid "link"
msgstr "link"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:211
msgid "Public Key"
msgstr "Klucz publiczny"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:213
msgid "ElGamal 2048 bit"
msgstr "ElGamal 2048 bitów"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:217
msgid "Signing Key"
msgstr "Klucz Podpisywania"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:219
msgid "DSA 1024 bit"
msgstr "DSA 1024 bity"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:223
msgid "Certificate"
msgstr "Certyfikat"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:229
msgid "Added Date"
msgstr "Data dodania"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:235
msgid "Source"
msgstr "Źródło"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:241
msgid "Last Modified"
msgstr "Ostatnio modyfikowano"
#: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:247
msgid "Notes"
msgstr "Notatki"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91
msgid "Introduction"
msgstr "Wprowadzenie"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109
msgid "What is the addressbook?"
msgstr "Co to jest książka adresowa?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111
msgid "The addressbook application is part of your I2P installation."
msgstr "Aplikacja książki adresowej jest częścią instalacji twojego I2P."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113
msgid ""
"It regularly updates your hosts.txt file from distributed sources or "
"\"subscriptions\"."
msgstr ""
"Regularnie aktualizuje twoj plik hosts.txt z rozproszonych źródeł lub "
"\"subskrypcji\"."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
msgid ""
"In the default configuration, the address book is only subscribed to "
"www.i2p2.i2p."
msgstr ""
"W domyślnej konfiguracji, książka adresowa jest zapisana tylko do "
"www.i2p2.i2p."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117
msgid ""
"Subscribing to additional sites is easy, just add them to your <a "
"href=\"subscriptions.jsp\">subscriptions</a> file."
msgstr ""
"Zapisywanie się do innych witryn jest proste, wystarczy dodać je do pliku <a"
" href=\"subscriptions.jsp\">subskrypcje</a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119
msgid ""
"For more information on naming in I2P, see <a "
"href=\"http://www.i2p2.i2p/naming.html\">the overview on www.i2p2.i2p</a>."
msgstr ""
"Aby uzyskać więcej informacji na temat nazewnictwa w I2P, zobacz <a "
"href=\"http://www.i2p2.i2p/naming.html\">przegląd www.i2p2.i2p</a> ."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
msgid "How does the addressbook application work?"
msgstr "Jak działa aplikacja książki adresowej?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
msgid ""
"The addressbook application regularly polls your subscriptions and merges "
"their content into your \"router\" address book."
msgstr ""
"Aplikacja książki adresowej regularnie pobiera twoje subskrypcje i łączy ich"
" zawartość w twoja książkę adresowa \"routera\"."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
msgid ""
"Then it merges your \"master\" address book into the router address book as "
"well."
msgstr ""
"Poźniej, łączy też twoją \"główną\" książke adresową do książki adresowej "
"routera."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127
msgid ""
"If configured, the router address book is now written to the \"published\" "
"address book, which will be publicly available if you are running an "
"eepsite."
msgstr ""
"Jeżeli skonfigurowana, ksiażka adresowa routera jest teraz zapisana do "
"\"opublikowanej\" książki adresowej, która będzie publicznie dostępna jeżeli"
" masz swoją stronę eepsite."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129
msgid ""
"The router also uses a private address book (not shown in the picture), "
"which is not merged or published."
msgstr ""
"Router używa też prywatnej książki adresowej (nie pokazanej na obrazku), "
"która nie jest łączona lub publikowana"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131
msgid ""
"Hosts in the private address book can be accessed by you but their addresses"
" are never distributed to others."
msgstr ""
"Nazwy hostów w prywatnej książce adresowej mogą być dostępne dla ciebie ale "
"ich adresy nie są nigdy rozpowszechniane dla innych."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
msgid ""
"The private address book can also be used for aliases of hosts in your other"
" address books."
msgstr ""
"Prywatna książka adresowa może być też użyta dla aliasów nazw hostów w "
"twoich innych książkach adresowych."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:102
msgid "subscriptions"
msgstr "subskrypcje"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
msgid "The subscription file contains a list of i2p URLs."
msgstr "Plik subskrypcji zawiera listę URLów i2p."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr ""
"Aplikacja książki adresowej regularnie sprawdza te listę dla nowych "
"eepsites."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138
msgid "Those URLs refer to published hosts.txt files."
msgstr "Te URL odnoszą się do opublikowanych plików hosts.txt."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140
msgid ""
"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
"updated infrequently."
msgstr ""
"Domyślna subskrypcja to hosts.txt z www.i2p2.i2p, która jest rzadko "
"aktualizowana."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
msgid ""
"So it is a good idea to add additional subscriptions to sites that have the "
"latest addresses."
msgstr ""
"Jest to więc dobry pomysł, aby dodać dodatkowe subskrypcje do stron, które "
"mają najnowsze adresy."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:144
msgid "See the FAQ for a list of subscription URLs."
msgstr "Więcej w FAQ dla listy subskrypcji adresów URL."

View File

@ -23,6 +23,7 @@
<pathelement location="../../../core/java/build/i2p.jar" />
</path>
<property name="javac.compilerargs" value="" />
<property name="require.gettext" value="true" />
<target name="compile">
<mkdir dir="${bin}" />
@ -67,7 +68,7 @@
<target name="all" depends="war"/>
<target name="war" depends="compile, precompilejsp, bundle, warUpToDate" unless="war.uptodate" >
<target name="listChangedFiles" depends="warUpToDate" if="shouldListChanges" >
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
@ -79,6 +80,11 @@
<arg value="[:space:]" />
<arg value="," />
</exec>
</target>
<target name="war" depends="compile, precompilejsp, bundle, warUpToDate" unless="war.uptodate" >
<!-- set if unset -->
<property name="workspace.changes.tr" value="" />
<war destfile="${project}.war" webxml="WEB-INF/web-out.xml">
<fileset dir=".">
<include name="WEB-INF/**/*.class"/>
@ -102,15 +108,23 @@
<uptodate property="war.uptodate" targetfile="${project}.war">
<srcfiles dir= "." includes="WEB-INF/web-out.xml WEB-INF/**/*.class images/*.png css.css index.html WEB-INF/classes/${project}.properties" />
</uptodate>
<condition property="shouldListChanges" >
<and>
<not>
<isset property="war.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 -->
@ -121,15 +135,15 @@
<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>

View File

@ -12,6 +12,7 @@
CLASS=i2p.susi.dns.messages
TMPFILE=tmp/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 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 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

View File

@ -5,7 +5,10 @@
<target name="builddep">
<!-- run from top level build.xml to get dependencies built -->
</target>
<property name="javac.compilerargs" value="" />
<property name="require.gettext" value="true" />
<target name="compile">
<javac
srcdir="./src/src"
@ -22,7 +25,7 @@
</target>
<target name="jar" depends="compile, war" />
<target name="war" depends="compile, bundle, warUpToDate" unless="war.uptodate" >
<target name="listChangedFiles" depends="warUpToDate" if="shouldListChanges" >
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
@ -34,6 +37,11 @@
<arg value="[:space:]" />
<arg value="," />
</exec>
</target>
<target name="war" depends="compile, bundle, warUpToDate, listChangedFiles" unless="war.uptodate" >
<!-- set if unset -->
<property name="workspace.changes.tr" value="" />
<war destfile="susimail.war" webxml="src/WEB-INF/web.xml"
basedir="src/" excludes="WEB-INF/web.xml LICENSE src/**/*">
<manifest>
@ -48,15 +56,23 @@
<uptodate property="war.uptodate" targetfile="susimail.war">
<srcfiles dir= "src" excludes="LICENSE src/**/*" />
</uptodate>
<condition property="shouldListChanges" >
<and>
<not>
<isset property="war.uptodate" />
</not>
<isset property="mtn.available" />
</and>
</condition>
</target>
<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 -->
@ -67,15 +83,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>

View File

@ -12,6 +12,7 @@
CLASS=i2p.susi.webmail.messages
TMPFILE=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,14 @@ do
msgfmt --java --statistics -r $CLASS -l $LG -d src/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

View File

@ -0,0 +1,446 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the susimail 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-06-11 08:24+0000\n"
"PO-Revision-Date: 2011-06-01 14:13+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/src/i2p/susi/webmail/WebMail.java:454
msgid "unknown"
msgstr "nieznany"
#: src/src/i2p/susi/webmail/WebMail.java:473
msgid "Warning: no transfer encoding found, fallback to 7bit."
msgstr "Uwaga: nie znaleziono kodowania transferu, powrót do 7 bitów"
#: src/src/i2p/susi/webmail/WebMail.java:478
#, java-format
msgid "No encoder found for encoding \\''{0}\\''."
msgstr "Nr kodeka dla kodowania \\''{0} \\''."
#: src/src/i2p/susi/webmail/WebMail.java:484
msgid "Warning: no charset found, fallback to US-ASCII."
msgstr "Uwaga: nie znaleziono zestawu znaków, powrót do US-ASCII."
#: src/src/i2p/susi/webmail/WebMail.java:498
#, java-format
msgid "Charset \\''{0}\\'' not supported."
msgstr "Zestaw znaków \\''{0} \\' 'nie obsługiwany."
#: src/src/i2p/susi/webmail/WebMail.java:502
#, java-format
msgid "Part ({0}) not shown, because of {1}"
msgstr "Część ({0}) nie pokazana ze względu na {1}"
#: src/src/i2p/susi/webmail/WebMail.java:525
msgid "Download"
msgstr "Pobierz"
#: src/src/i2p/susi/webmail/WebMail.java:525
msgid "File is packed into a zipfile for security reasons."
msgstr "Plik zapakowany w format ZIP ze względów bezpieczeństwa."
#: src/src/i2p/susi/webmail/WebMail.java:525
#, java-format
msgid "attachment ({0})."
msgstr "załącznik ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:529
#, java-format
msgid "Attachment ({0})."
msgstr "Załącznik ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:579
msgid "Need username for authentication."
msgstr "Potrzebna nazwę użytkownika do uwierzytelnienia."
#: src/src/i2p/susi/webmail/WebMail.java:583
msgid "Need password for authentication."
msgstr "Potrzebne hasło do uwierzytelniania."
#: src/src/i2p/susi/webmail/WebMail.java:587
msgid "Need hostname for connect."
msgstr "Potrzebuna nazwa host do połączenia."
#: src/src/i2p/susi/webmail/WebMail.java:592
msgid "Need port number for pop3 connect."
msgstr "Potrzeba numer portu pop3 do połączenia."
#: src/src/i2p/susi/webmail/WebMail.java:599
msgid "POP3 port number is not in range 0..65535."
msgstr "Numeru portu POP3 poza zakresem 0..65535."
#: src/src/i2p/susi/webmail/WebMail.java:605
msgid "POP3 port number is invalid."
msgstr "Numeru portu POP3 jest nieprawidłowy."
#: src/src/i2p/susi/webmail/WebMail.java:611
msgid "Need port number for smtp connect."
msgstr "Potrzebny numer portu smtp do połączenia."
#: src/src/i2p/susi/webmail/WebMail.java:618
msgid "SMTP port number is not in range 0..65535."
msgstr "Numeru portu SMTP poza zakresem 0..65535."
#: src/src/i2p/susi/webmail/WebMail.java:624
msgid "SMTP port number is invalid."
msgstr "Numer portu SMTP jest nieprawidłowy."
#: src/src/i2p/susi/webmail/WebMail.java:671
msgid "User logged out."
msgstr "Użytkownik wylogowany."
#: src/src/i2p/susi/webmail/WebMail.java:675
msgid "Internal error, lost connection."
msgstr "Błąd wewnętrzny, połączenie utracone."
#: src/src/i2p/susi/webmail/WebMail.java:771
#, java-format
msgid "On {0} {1} wrote:"
msgstr "Dnia {0} {1} napisał:"
#: src/src/i2p/susi/webmail/WebMail.java:818
msgid "begin forwarded mail"
msgstr "Rozpocznij przekazywanie poczty"
#: src/src/i2p/susi/webmail/WebMail.java:840
msgid "end forwarded mail"
msgstr "Zakończ przekazywanie poczty"
#: src/src/i2p/susi/webmail/WebMail.java:847
#: src/src/i2p/susi/webmail/WebMail.java:1701
msgid "Could not fetch mail body."
msgstr "Nie można pobrać głównej cześci maila"
#: src/src/i2p/susi/webmail/WebMail.java:875
msgid "Message id not valid."
msgstr "ID wiadomości niepoprawne."
#: src/src/i2p/susi/webmail/WebMail.java:958
#, java-format
msgid "No Encoding found for {0}"
msgstr "Nie znaleziono kodowania dla {0}"
#: src/src/i2p/susi/webmail/WebMail.java:962
#, java-format
msgid "Could not encode data: {0}"
msgstr "Nie można zakodować danych: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:967
#, java-format
msgid "Error reading uploaded file: {0}"
msgstr "Błąd w odczycie wysłanego pliku: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1045
msgid "Error parsing download parameter."
msgstr "Błąd pobrania parametru analizy."
#: src/src/i2p/susi/webmail/WebMail.java:1089
msgid "Invalid pagesize number, resetting to default value."
msgstr ""
"Nieprawidłowy numer rozmiaru strony, resetowanie do wartości domyślnej."
#: src/src/i2p/susi/webmail/WebMail.java:1113
msgid "No messages marked for deletion."
msgstr "Brak wiadomości zaznaczonych do usunięcia."
#: src/src/i2p/susi/webmail/WebMail.java:1133
#, java-format
msgid "Error deleting message: {0}"
msgstr "Błąd podczas usuwania wiadomości: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1144
#, java-format
msgid "1 message deleted."
msgid_plural "{0} messages deleted."
msgstr[0] "1 wiadomość usunięta."
msgstr[1] "{0} wiadomości usuniętych."
msgstr[2] "{0} wiadomości usunięte."
#: src/src/i2p/susi/webmail/WebMail.java:1264
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Login"
msgstr "Zaloguj się"
#: src/src/i2p/susi/webmail/WebMail.java:1266
#, java-format
msgid "1 Message"
msgid_plural "{0} Messages"
msgstr[0] "1 wiadomość"
msgstr[1] "{0} wiadomości"
msgstr[2] "{0} wiadomości"
#: src/src/i2p/susi/webmail/WebMail.java:1268
msgid "Show Message"
msgstr "Pokaż wiadomość"
#: src/src/i2p/susi/webmail/WebMail.java:1325
#, java-format
msgid "Error decoding content: {0}"
msgstr "Błąd dekodowania treści: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1330
msgid "Error decoding content: No encoder found."
msgstr "Błąd dekodowania treści: Nie znaleziono enkodera."
#: src/src/i2p/susi/webmail/WebMail.java:1377
msgid "no subject"
msgstr "bez tematu"
#: src/src/i2p/susi/webmail/WebMail.java:1394
msgid "Found no valid sender address."
msgstr "Nie znaleziono poprawnego adresu nadawcy."
#: src/src/i2p/susi/webmail/WebMail.java:1400
#, java-format
msgid "Found no valid address in \\''{0}\\''."
msgstr "Nie znaleziono prawidłowego adresu w \\''{0} \\''."
#: src/src/i2p/susi/webmail/WebMail.java:1419
msgid "No recipients found."
msgstr "Nie znaleziono odbiorców."
#: src/src/i2p/susi/webmail/WebMail.java:1426
msgid "Quoted printable encoder not available."
msgstr "Cytowany drukowalny enkoder nie dostepny."
#: src/src/i2p/susi/webmail/WebMail.java:1431
msgid "Header line encoder not available."
msgstr "Enkoder linii nagłówka nie dostępny."
#: src/src/i2p/susi/webmail/WebMail.java:1482
msgid "Mail sent."
msgstr "Mail wysłany."
#: src/src/i2p/susi/webmail/WebMail.java:1519
msgid "Send"
msgstr "Wyślij"
#: src/src/i2p/susi/webmail/WebMail.java:1520
msgid "Cancel"
msgstr "Anuluj"
#: src/src/i2p/susi/webmail/WebMail.java:1521
msgid "Delete Attachment"
msgstr "Usuń załącznik"
#: src/src/i2p/susi/webmail/WebMail.java:1522
#: src/src/i2p/susi/webmail/WebMail.java:1607
#: src/src/i2p/susi/webmail/WebMail.java:1688
msgid "Reload Config"
msgstr "Przeładuj Konfiguracje"
#: src/src/i2p/susi/webmail/WebMail.java:1523
#: src/src/i2p/susi/webmail/WebMail.java:1608
#: src/src/i2p/susi/webmail/WebMail.java:1689
msgid "Logout"
msgstr "Wyloguj się"
#: src/src/i2p/susi/webmail/WebMail.java:1546
#: src/src/i2p/susi/webmail/WebMail.java:1693
msgid "From:"
msgstr "Od:"
#: src/src/i2p/susi/webmail/WebMail.java:1547
msgid "To:"
msgstr "To:"
#: src/src/i2p/susi/webmail/WebMail.java:1548
msgid "Cc:"
msgstr "Cc:"
#: src/src/i2p/susi/webmail/WebMail.java:1549
msgid "Bcc:"
msgstr "Bcc:"
#: src/src/i2p/susi/webmail/WebMail.java:1550
#: src/src/i2p/susi/webmail/WebMail.java:1695
msgid "Subject:"
msgstr "Temat:"
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "Bcc to self"
msgstr "Bcc do siebie"
#: src/src/i2p/susi/webmail/WebMail.java:1554
msgid "New Attachment:"
msgstr "Nowy załącznik:"
#: src/src/i2p/susi/webmail/WebMail.java:1554
msgid "Upload File"
msgstr "Prześlij plik"
#: src/src/i2p/susi/webmail/WebMail.java:1560
msgid "Attachments:"
msgstr "Załączniki:"
#: src/src/i2p/susi/webmail/WebMail.java:1582
msgid "User"
msgstr "Użytkownik"
#: src/src/i2p/susi/webmail/WebMail.java:1583
msgid "Pass"
msgstr "Pass"
#: src/src/i2p/susi/webmail/WebMail.java:1584
msgid "Host"
msgstr "Host"
#: src/src/i2p/susi/webmail/WebMail.java:1585
msgid "POP3-Port"
msgstr "POP3-Port"
#: src/src/i2p/susi/webmail/WebMail.java:1586
msgid "SMTP-Port"
msgstr "SMTP-Port"
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Create Account"
msgstr "Załóż konto"
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Reset"
msgstr "Zresetuj"
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Really delete the marked messages?"
msgstr "Czy na pewno usunąć zaznaczone wiadomości?"
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Yes, really delete them!"
msgstr "Tak, naprawdę je usuń!"
#: src/src/i2p/susi/webmail/WebMail.java:1601
#: src/src/i2p/susi/webmail/WebMail.java:1680
msgid "New"
msgstr "Nowe"
#: src/src/i2p/susi/webmail/WebMail.java:1602
#: src/src/i2p/susi/webmail/WebMail.java:1681
msgid "Reply"
msgstr "Odpowiedz"
#: src/src/i2p/susi/webmail/WebMail.java:1603
#: src/src/i2p/susi/webmail/WebMail.java:1682
msgid "Reply All"
msgstr "Odpowiedz wszystkim"
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1683
msgid "Forward"
msgstr "Przekaż"
#: src/src/i2p/susi/webmail/WebMail.java:1605
#: src/src/i2p/susi/webmail/WebMail.java:1684
msgid "Delete"
msgstr "Usuń"
#: src/src/i2p/susi/webmail/WebMail.java:1606
msgid "Check Mail"
msgstr "Sprawdź pocztę"
#: src/src/i2p/susi/webmail/WebMail.java:1610
msgid "Sender"
msgstr "Nadawca"
#: src/src/i2p/susi/webmail/WebMail.java:1611
msgid "Subject"
msgstr "Temat"
#: src/src/i2p/susi/webmail/WebMail.java:1612
msgid "Date"
msgstr "Data"
#: src/src/i2p/susi/webmail/WebMail.java:1613
msgid "Size"
msgstr "Rozmiar"
#: src/src/i2p/susi/webmail/WebMail.java:1639
#, java-format
msgid "1 Byte"
msgid_plural "{0} Bytes"
msgstr[0] "1 bajt"
msgstr[1] "{0} bajtów"
msgstr[2] "{0} bajty"
#: src/src/i2p/susi/webmail/WebMail.java:1644
msgid "Mark All"
msgstr "Zaznacz wszystkie"
#: src/src/i2p/susi/webmail/WebMail.java:1645
msgid "Invert Selection"
msgstr "Odwróć zaznaczenie"
#: src/src/i2p/susi/webmail/WebMail.java:1646
msgid "Clear"
msgstr "Wyczyść"
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
msgid "First"
msgstr "Pierwsze"
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
#: src/src/i2p/susi/webmail/WebMail.java:1685
msgid "Previous"
msgstr "Poprzedni"
#: src/src/i2p/susi/webmail/WebMail.java:1651
#, java-format
msgid "Page {0} of {1}"
msgstr "Strona {0} z {1}"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
msgid "Last"
msgstr "Ostatnie"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
#: src/src/i2p/susi/webmail/WebMail.java:1686
msgid "Next"
msgstr "Następne"
#: src/src/i2p/susi/webmail/WebMail.java:1657
msgid "Pagesize:"
msgstr "Rozmiar strony:"
#: src/src/i2p/susi/webmail/WebMail.java:1658
msgid "Set"
msgstr "Ustaw"
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Really delete this message?"
msgstr "Czy na pewno usunąć tę wiadomość?"
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Yes, really delete it!"
msgstr "Tak, naprawdę to usuń!"
#: src/src/i2p/susi/webmail/WebMail.java:1687
msgid "Back to Folder"
msgstr "Powrót do folderu"
#: src/src/i2p/susi/webmail/WebMail.java:1694
msgid "Date:"
msgstr "Data:"
#: src/src/i2p/susi/webmail/WebMail.java:1705
msgid "Could not fetch mail."
msgstr "Nie można pobrać poczty."

View File

@ -0,0 +1,439 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the susimail 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:24+0000\n"
"PO-Revision-Date: 2011-04-14 07:47+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/src/i2p/susi/webmail/WebMail.java:454
msgid "unknown"
msgstr "không biết"
#: src/src/i2p/susi/webmail/WebMail.java:473
msgid "Warning: no transfer encoding found, fallback to 7bit."
msgstr "Cảnh báo: không thấy bộ mã chuyển nào, trở lại dùng 7bit."
#: src/src/i2p/susi/webmail/WebMail.java:478
#, java-format
msgid "No encoder found for encoding \\''{0}\\''."
msgstr "Không tìm bộ mã hóa cho bộ \\\"{0}\\\""
#: src/src/i2p/susi/webmail/WebMail.java:484
msgid "Warning: no charset found, fallback to US-ASCII."
msgstr "Cảnh báo: không thấy bộ chữ nào, trở lại dùng US-ASCII."
#: src/src/i2p/susi/webmail/WebMail.java:498
#, java-format
msgid "Charset \\''{0}\\'' not supported."
msgstr "Bộ mã \\\"{0}\\\" không dùng được."
#: src/src/i2p/susi/webmail/WebMail.java:502
#, java-format
msgid "Part ({0}) not shown, because of {1}"
msgstr "Phần ({0}) không hiển thị, vì {1}"
#: src/src/i2p/susi/webmail/WebMail.java:525
msgid "Download"
msgstr "Tải xuống"
#: src/src/i2p/susi/webmail/WebMail.java:525
msgid "File is packed into a zipfile for security reasons."
msgstr "Tập tin được nén lại dạng zip vì lý do an ninh."
#: src/src/i2p/susi/webmail/WebMail.java:525
#, java-format
msgid "attachment ({0})."
msgstr "đính kèm ({0})"
#: src/src/i2p/susi/webmail/WebMail.java:529
#, java-format
msgid "Attachment ({0})."
msgstr "Đính kèm ({0})"
#: src/src/i2p/susi/webmail/WebMail.java:579
msgid "Need username for authentication."
msgstr "Cần tên người dùng để xác thực."
#: src/src/i2p/susi/webmail/WebMail.java:583
msgid "Need password for authentication."
msgstr "Cần mật khẩu để xác thực."
#: src/src/i2p/susi/webmail/WebMail.java:587
msgid "Need hostname for connect."
msgstr "Cần tên máy chủ để nối vào."
#: src/src/i2p/susi/webmail/WebMail.java:592
msgid "Need port number for pop3 connect."
msgstr "Cần số cổng để nối qua pop3."
#: src/src/i2p/susi/webmail/WebMail.java:599
msgid "POP3 port number is not in range 0..65535."
msgstr "Số cổng POP3 không trong khoảng 0..65535"
#: src/src/i2p/susi/webmail/WebMail.java:605
msgid "POP3 port number is invalid."
msgstr "Số cổng POP3 không đúng."
#: src/src/i2p/susi/webmail/WebMail.java:611
msgid "Need port number for smtp connect."
msgstr "Cần số cổng để nối smtp."
#: src/src/i2p/susi/webmail/WebMail.java:618
msgid "SMTP port number is not in range 0..65535."
msgstr "Số cổng SMTP không trong khoảng 0..65535"
#: src/src/i2p/susi/webmail/WebMail.java:624
msgid "SMTP port number is invalid."
msgstr "Số cổng SMTP không đúng."
#: src/src/i2p/susi/webmail/WebMail.java:671
msgid "User logged out."
msgstr "Người dùng đã đăng xuất."
#: src/src/i2p/susi/webmail/WebMail.java:675
msgid "Internal error, lost connection."
msgstr "Lỗi nội tại, mất đường nối."
#: src/src/i2p/susi/webmail/WebMail.java:771
#, java-format
msgid "On {0} {1} wrote:"
msgstr "Vào {0} {1} viết:"
#: src/src/i2p/susi/webmail/WebMail.java:818
msgid "begin forwarded mail"
msgstr "Bắt đầu email chuyển tiếp "
#: src/src/i2p/susi/webmail/WebMail.java:840
msgid "end forwarded mail"
msgstr "Chấm dứt email chuyển tiếp"
#: src/src/i2p/susi/webmail/WebMail.java:847
#: src/src/i2p/susi/webmail/WebMail.java:1701
msgid "Could not fetch mail body."
msgstr "Không thể lấy thân bài email."
#: src/src/i2p/susi/webmail/WebMail.java:875
msgid "Message id not valid."
msgstr "ID của thư không đúng"
#: src/src/i2p/susi/webmail/WebMail.java:958
#, java-format
msgid "No Encoding found for {0}"
msgstr "Không tìm thấy bộ mã cho {0}"
#: src/src/i2p/susi/webmail/WebMail.java:962
#, java-format
msgid "Could not encode data: {0}"
msgstr "Không thể đổi dạng dữ kiện: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:967
#, java-format
msgid "Error reading uploaded file: {0}"
msgstr "Lỗi đọc tập tin tải lên: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1045
msgid "Error parsing download parameter."
msgstr "Lỗi không hiểu các thông số tải xuống."
#: src/src/i2p/susi/webmail/WebMail.java:1089
msgid "Invalid pagesize number, resetting to default value."
msgstr "Khổ trang không đúng, trở lại giá trị mặc định."
#: src/src/i2p/susi/webmail/WebMail.java:1113
msgid "No messages marked for deletion."
msgstr "Không có thư nào chờ xóa."
#: src/src/i2p/susi/webmail/WebMail.java:1133
#, java-format
msgid "Error deleting message: {0}"
msgstr "Lỗi xóa thư: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1144
#, java-format
msgid "1 message deleted."
msgid_plural "{0} messages deleted."
msgstr[0] "{0} thư đã bị xóa."
#: src/src/i2p/susi/webmail/WebMail.java:1264
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Login"
msgstr "Đăng nhập"
#: src/src/i2p/susi/webmail/WebMail.java:1266
#, java-format
msgid "1 Message"
msgid_plural "{0} Messages"
msgstr[0] "{0} Thư"
#: src/src/i2p/susi/webmail/WebMail.java:1268
msgid "Show Message"
msgstr "Hiển Thị Thư"
#: src/src/i2p/susi/webmail/WebMail.java:1325
#, java-format
msgid "Error decoding content: {0}"
msgstr "Lỗi giải mã nội dung: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1330
msgid "Error decoding content: No encoder found."
msgstr "Lỗi giải mã nội dung: Không tìm thấy bộ mã hóa."
#: src/src/i2p/susi/webmail/WebMail.java:1377
msgid "no subject"
msgstr "không chủ đề"
#: src/src/i2p/susi/webmail/WebMail.java:1394
msgid "Found no valid sender address."
msgstr "Không tìm thấy địa chỉ người gửi."
#: src/src/i2p/susi/webmail/WebMail.java:1400
#, java-format
msgid "Found no valid address in \\''{0}\\''."
msgstr "Không tìm thấy địa chỉ người gửi trong \\\"{0}\\\""
#: src/src/i2p/susi/webmail/WebMail.java:1419
msgid "No recipients found."
msgstr "Không thấy người nhận."
#: src/src/i2p/susi/webmail/WebMail.java:1426
msgid "Quoted printable encoder not available."
msgstr "Bộ mã hóa quoted-printable không có."
#: src/src/i2p/susi/webmail/WebMail.java:1431
msgid "Header line encoder not available."
msgstr "Bộ mã hóa header không có."
#: src/src/i2p/susi/webmail/WebMail.java:1482
msgid "Mail sent."
msgstr "Thư đã gửi."
#: src/src/i2p/susi/webmail/WebMail.java:1519
msgid "Send"
msgstr "Gửi."
#: src/src/i2p/susi/webmail/WebMail.java:1520
msgid "Cancel"
msgstr "Hủy"
#: src/src/i2p/susi/webmail/WebMail.java:1521
msgid "Delete Attachment"
msgstr "Xóa đính kèm"
#: src/src/i2p/susi/webmail/WebMail.java:1522
#: src/src/i2p/susi/webmail/WebMail.java:1607
#: src/src/i2p/susi/webmail/WebMail.java:1688
msgid "Reload Config"
msgstr "Nạp lại cấu hình"
#: src/src/i2p/susi/webmail/WebMail.java:1523
#: src/src/i2p/susi/webmail/WebMail.java:1608
#: src/src/i2p/susi/webmail/WebMail.java:1689
msgid "Logout"
msgstr "Đăng xuất"
#: src/src/i2p/susi/webmail/WebMail.java:1546
#: src/src/i2p/susi/webmail/WebMail.java:1693
msgid "From:"
msgstr "Từ:"
#: src/src/i2p/susi/webmail/WebMail.java:1547
msgid "To:"
msgstr "Tới:"
#: src/src/i2p/susi/webmail/WebMail.java:1548
msgid "Cc:"
msgstr "Cc:"
#: src/src/i2p/susi/webmail/WebMail.java:1549
msgid "Bcc:"
msgstr "Bcc:"
#: src/src/i2p/susi/webmail/WebMail.java:1550
#: src/src/i2p/susi/webmail/WebMail.java:1695
msgid "Subject:"
msgstr "Chủ đề:"
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "Bcc to self"
msgstr "Bcc cho mình"
#: src/src/i2p/susi/webmail/WebMail.java:1554
msgid "New Attachment:"
msgstr "Đính kèm mới"
#: src/src/i2p/susi/webmail/WebMail.java:1554
msgid "Upload File"
msgstr "Tải tập tin lên"
#: src/src/i2p/susi/webmail/WebMail.java:1560
msgid "Attachments:"
msgstr "Đính kèm:"
#: src/src/i2p/susi/webmail/WebMail.java:1582
msgid "User"
msgstr "Người dùng"
#: src/src/i2p/susi/webmail/WebMail.java:1583
msgid "Pass"
msgstr "Qua"
#: src/src/i2p/susi/webmail/WebMail.java:1584
msgid "Host"
msgstr "Máy chủ"
#: src/src/i2p/susi/webmail/WebMail.java:1585
msgid "POP3-Port"
msgstr "Cổng-POP3"
#: src/src/i2p/susi/webmail/WebMail.java:1586
msgid "SMTP-Port"
msgstr "Cổng-SMTP"
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Create Account"
msgstr "Tạo tài khoản"
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Reset"
msgstr "Chỉnh lại"
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Really delete the marked messages?"
msgstr "Thực sự xóa các thư đánh dấu?"
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Yes, really delete them!"
msgstr "Vâng, hãy xóa chúng!"
#: src/src/i2p/susi/webmail/WebMail.java:1601
#: src/src/i2p/susi/webmail/WebMail.java:1680
msgid "New"
msgstr "Mới"
#: src/src/i2p/susi/webmail/WebMail.java:1602
#: src/src/i2p/susi/webmail/WebMail.java:1681
msgid "Reply"
msgstr "Trả lời"
#: src/src/i2p/susi/webmail/WebMail.java:1603
#: src/src/i2p/susi/webmail/WebMail.java:1682
msgid "Reply All"
msgstr "Trả lời tất cả"
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1683
msgid "Forward"
msgstr "Chuyển tiếp"
#: src/src/i2p/susi/webmail/WebMail.java:1605
#: src/src/i2p/susi/webmail/WebMail.java:1684
msgid "Delete"
msgstr "Xóa"
#: src/src/i2p/susi/webmail/WebMail.java:1606
msgid "Check Mail"
msgstr "Lấy thư"
#: src/src/i2p/susi/webmail/WebMail.java:1610
msgid "Sender"
msgstr "Người gửi"
#: src/src/i2p/susi/webmail/WebMail.java:1611
msgid "Subject"
msgstr "Chủ đề"
#: src/src/i2p/susi/webmail/WebMail.java:1612
msgid "Date"
msgstr "Ngày"
#: src/src/i2p/susi/webmail/WebMail.java:1613
msgid "Size"
msgstr "Kích thước"
#: src/src/i2p/susi/webmail/WebMail.java:1639
#, java-format
msgid "1 Byte"
msgid_plural "{0} Bytes"
msgstr[0] "{0} Byte(s)"
#: src/src/i2p/susi/webmail/WebMail.java:1644
msgid "Mark All"
msgstr "Đánh dấu tất cả"
#: src/src/i2p/susi/webmail/WebMail.java:1645
msgid "Invert Selection"
msgstr "Đảo ngược lựa chọn"
#: src/src/i2p/susi/webmail/WebMail.java:1646
msgid "Clear"
msgstr "Làm sạch"
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
msgid "First"
msgstr "Đầu tiên"
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
#: src/src/i2p/susi/webmail/WebMail.java:1685
msgid "Previous"
msgstr "Trước"
#: src/src/i2p/susi/webmail/WebMail.java:1651
#, java-format
msgid "Page {0} of {1}"
msgstr "Trang {0} của {1}"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
msgid "Last"
msgstr "Chót"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
#: src/src/i2p/susi/webmail/WebMail.java:1686
msgid "Next"
msgstr "Kế"
#: src/src/i2p/susi/webmail/WebMail.java:1657
msgid "Pagesize:"
msgstr "Khổ trang"
#: src/src/i2p/susi/webmail/WebMail.java:1658
msgid "Set"
msgstr "Chọn"
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Really delete this message?"
msgstr "Thực sự muốn xoá thư này?"
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Yes, really delete it!"
msgstr "Vâng, thực sự xóa nó!"
#: src/src/i2p/susi/webmail/WebMail.java:1687
msgid "Back to Folder"
msgstr "Trở lại thư mục"
#: src/src/i2p/susi/webmail/WebMail.java:1694
msgid "Date:"
msgstr "Ngày:"
#: src/src/i2p/susi/webmail/WebMail.java:1705
msgid "Could not fetch mail."
msgstr "Không thể lấy thư."

View File

@ -0,0 +1,439 @@
# I2P
# Copyright (C) 2009 The I2P Project
# This file is distributed under the same license as the susimail package.
# To contribute translations, see http://www.i2p2.de/newdevelopers
#
# walking <walking@i2pmail.org>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
"POT-Creation-Date: 2011-06-11 08:24+0000\n"
"PO-Revision-Date: 2011-03-24 09:37+0000\n"
"Last-Translator: walking <walking@i2pmail.org>\n"
"Language-Team: Chinese (China) (http://www.transifex.net/projects/p/I2P/team/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0\n"
#: src/src/i2p/susi/webmail/WebMail.java:454
msgid "unknown"
msgstr "未知"
#: src/src/i2p/susi/webmail/WebMail.java:473
msgid "Warning: no transfer encoding found, fallback to 7bit."
msgstr "警告传输编码检测失败回退到7位。"
#: src/src/i2p/susi/webmail/WebMail.java:478
#, java-format
msgid "No encoder found for encoding \\''{0}\\''."
msgstr "没有找到可用编码器处理编码\\ '' {0} \\ ''。"
#: src/src/i2p/susi/webmail/WebMail.java:484
msgid "Warning: no charset found, fallback to US-ASCII."
msgstr "警告字符集检测失败回退为US - ASCII。"
#: src/src/i2p/susi/webmail/WebMail.java:498
#, java-format
msgid "Charset \\''{0}\\'' not supported."
msgstr "不支持字符集\\ '' {0} \\ ''。"
#: src/src/i2p/susi/webmail/WebMail.java:502
#, java-format
msgid "Part ({0}) not shown, because of {1}"
msgstr "第({0})部分没有显示,因为{1}"
#: src/src/i2p/susi/webmail/WebMail.java:525
msgid "Download"
msgstr "下载"
#: src/src/i2p/susi/webmail/WebMail.java:525
msgid "File is packed into a zipfile for security reasons."
msgstr "出于安全原因文件被打包为zip文件。"
#: src/src/i2p/susi/webmail/WebMail.java:525
#, java-format
msgid "attachment ({0})."
msgstr "附件({0})。"
#: src/src/i2p/susi/webmail/WebMail.java:529
#, java-format
msgid "Attachment ({0})."
msgstr "附件({0})。"
#: src/src/i2p/susi/webmail/WebMail.java:579
msgid "Need username for authentication."
msgstr "需要认证用的用户名。"
#: src/src/i2p/susi/webmail/WebMail.java:583
msgid "Need password for authentication."
msgstr "需要认证用的密码。"
#: src/src/i2p/susi/webmail/WebMail.java:587
msgid "Need hostname for connect."
msgstr "需要连接用的主机名。"
#: src/src/i2p/susi/webmail/WebMail.java:592
msgid "Need port number for pop3 connect."
msgstr "需要POP3的连接端口号。"
#: src/src/i2p/susi/webmail/WebMail.java:599
msgid "POP3 port number is not in range 0..65535."
msgstr "POP3端口号超出范围0-65535。"
#: src/src/i2p/susi/webmail/WebMail.java:605
msgid "POP3 port number is invalid."
msgstr "POP3端口号是无效的。"
#: src/src/i2p/susi/webmail/WebMail.java:611
msgid "Need port number for smtp connect."
msgstr "需要的SMTP连接端口号。"
#: src/src/i2p/susi/webmail/WebMail.java:618
msgid "SMTP port number is not in range 0..65535."
msgstr "SMTP端口号是超出范围0-65535。"
#: src/src/i2p/susi/webmail/WebMail.java:624
msgid "SMTP port number is invalid."
msgstr "SMTP端口号无效。"
#: src/src/i2p/susi/webmail/WebMail.java:671
msgid "User logged out."
msgstr "用户已登出。"
#: src/src/i2p/susi/webmail/WebMail.java:675
msgid "Internal error, lost connection."
msgstr "内部错误,连接已断开。"
#: src/src/i2p/susi/webmail/WebMail.java:771
#, java-format
msgid "On {0} {1} wrote:"
msgstr "在 {0} {1} 写到:"
#: src/src/i2p/susi/webmail/WebMail.java:818
msgid "begin forwarded mail"
msgstr "转信开始"
#: src/src/i2p/susi/webmail/WebMail.java:840
msgid "end forwarded mail"
msgstr "转信结束"
#: src/src/i2p/susi/webmail/WebMail.java:847
#: src/src/i2p/susi/webmail/WebMail.java:1701
msgid "Could not fetch mail body."
msgstr "无法获取邮件正文。"
#: src/src/i2p/susi/webmail/WebMail.java:875
msgid "Message id not valid."
msgstr "消息ID无效。"
#: src/src/i2p/susi/webmail/WebMail.java:958
#, java-format
msgid "No Encoding found for {0}"
msgstr "{0}的编码检测失败。"
#: src/src/i2p/susi/webmail/WebMail.java:962
#, java-format
msgid "Could not encode data: {0}"
msgstr "无法对数据进行编码:{0}"
#: src/src/i2p/susi/webmail/WebMail.java:967
#, java-format
msgid "Error reading uploaded file: {0}"
msgstr "读取上传文件错误:{0}"
#: src/src/i2p/susi/webmail/WebMail.java:1045
msgid "Error parsing download parameter."
msgstr "下载参数解析错误。"
#: src/src/i2p/susi/webmail/WebMail.java:1089
msgid "Invalid pagesize number, resetting to default value."
msgstr "无效的每页数,重置为默认值。"
#: src/src/i2p/susi/webmail/WebMail.java:1113
msgid "No messages marked for deletion."
msgstr "没有邮件被标记来删除。"
#: src/src/i2p/susi/webmail/WebMail.java:1133
#, java-format
msgid "Error deleting message: {0}"
msgstr "邮件删除错误:{0}"
#: src/src/i2p/susi/webmail/WebMail.java:1144
#, java-format
msgid "1 message deleted."
msgid_plural "{0} messages deleted."
msgstr[0] "已删除{0}封邮件。"
#: src/src/i2p/susi/webmail/WebMail.java:1264
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Login"
msgstr "登录"
#: src/src/i2p/susi/webmail/WebMail.java:1266
#, java-format
msgid "1 Message"
msgid_plural "{0} Messages"
msgstr[0] "{0} 封邮件"
#: src/src/i2p/susi/webmail/WebMail.java:1268
msgid "Show Message"
msgstr "显示消息"
#: src/src/i2p/susi/webmail/WebMail.java:1325
#, java-format
msgid "Error decoding content: {0}"
msgstr "解码错误:{0}"
#: src/src/i2p/susi/webmail/WebMail.java:1330
msgid "Error decoding content: No encoder found."
msgstr "内容解码错误:没有可用编码器。"
#: src/src/i2p/susi/webmail/WebMail.java:1377
msgid "no subject"
msgstr "没有主题"
#: src/src/i2p/susi/webmail/WebMail.java:1394
msgid "Found no valid sender address."
msgstr "没有找到有效的发件人地址。"
#: src/src/i2p/susi/webmail/WebMail.java:1400
#, java-format
msgid "Found no valid address in \\''{0}\\''."
msgstr "\\ '' {0} \\ ''中没有找到有效的地址。"
#: src/src/i2p/susi/webmail/WebMail.java:1419
msgid "No recipients found."
msgstr "没有找到收件人。"
#: src/src/i2p/susi/webmail/WebMail.java:1426
msgid "Quoted printable encoder not available."
msgstr ""
#: src/src/i2p/susi/webmail/WebMail.java:1431
msgid "Header line encoder not available."
msgstr "标题行编码器不可用。"
#: src/src/i2p/susi/webmail/WebMail.java:1482
msgid "Mail sent."
msgstr "邮件已发送。"
#: src/src/i2p/susi/webmail/WebMail.java:1519
msgid "Send"
msgstr "发送"
#: src/src/i2p/susi/webmail/WebMail.java:1520
msgid "Cancel"
msgstr "取消"
#: src/src/i2p/susi/webmail/WebMail.java:1521
msgid "Delete Attachment"
msgstr "删除附件"
#: src/src/i2p/susi/webmail/WebMail.java:1522
#: src/src/i2p/susi/webmail/WebMail.java:1607
#: src/src/i2p/susi/webmail/WebMail.java:1688
msgid "Reload Config"
msgstr "重新载入配置"
#: src/src/i2p/susi/webmail/WebMail.java:1523
#: src/src/i2p/susi/webmail/WebMail.java:1608
#: src/src/i2p/susi/webmail/WebMail.java:1689
msgid "Logout"
msgstr "注销"
#: src/src/i2p/susi/webmail/WebMail.java:1546
#: src/src/i2p/susi/webmail/WebMail.java:1693
msgid "From:"
msgstr "来自:"
#: src/src/i2p/susi/webmail/WebMail.java:1547
msgid "To:"
msgstr "致:"
#: src/src/i2p/susi/webmail/WebMail.java:1548
msgid "Cc:"
msgstr "抄送:"
#: src/src/i2p/susi/webmail/WebMail.java:1549
msgid "Bcc:"
msgstr "密送:"
#: src/src/i2p/susi/webmail/WebMail.java:1550
#: src/src/i2p/susi/webmail/WebMail.java:1695
msgid "Subject:"
msgstr "主题:"
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "Bcc to self"
msgstr "密送给自己"
#: src/src/i2p/susi/webmail/WebMail.java:1554
msgid "New Attachment:"
msgstr "新附件:"
#: src/src/i2p/susi/webmail/WebMail.java:1554
msgid "Upload File"
msgstr "上传文件"
#: src/src/i2p/susi/webmail/WebMail.java:1560
msgid "Attachments:"
msgstr "附件:"
#: src/src/i2p/susi/webmail/WebMail.java:1582
msgid "User"
msgstr "用户"
#: src/src/i2p/susi/webmail/WebMail.java:1583
msgid "Pass"
msgstr "通过"
#: src/src/i2p/susi/webmail/WebMail.java:1584
msgid "Host"
msgstr "主机"
#: src/src/i2p/susi/webmail/WebMail.java:1585
msgid "POP3-Port"
msgstr "POP3端口"
#: src/src/i2p/susi/webmail/WebMail.java:1586
msgid "SMTP-Port"
msgstr "SMTP端口"
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Create Account"
msgstr "创建帐户"
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Reset"
msgstr "复位"
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Really delete the marked messages?"
msgstr "真要删除标记的邮件?"
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Yes, really delete them!"
msgstr "是的,立刻删除!"
#: src/src/i2p/susi/webmail/WebMail.java:1601
#: src/src/i2p/susi/webmail/WebMail.java:1680
msgid "New"
msgstr "新建"
#: src/src/i2p/susi/webmail/WebMail.java:1602
#: src/src/i2p/susi/webmail/WebMail.java:1681
msgid "Reply"
msgstr "回复"
#: src/src/i2p/susi/webmail/WebMail.java:1603
#: src/src/i2p/susi/webmail/WebMail.java:1682
msgid "Reply All"
msgstr "回复所有人"
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1683
msgid "Forward"
msgstr "转寄"
#: src/src/i2p/susi/webmail/WebMail.java:1605
#: src/src/i2p/susi/webmail/WebMail.java:1684
msgid "Delete"
msgstr "删除"
#: src/src/i2p/susi/webmail/WebMail.java:1606
msgid "Check Mail"
msgstr "检查邮件"
#: src/src/i2p/susi/webmail/WebMail.java:1610
msgid "Sender"
msgstr "寄件人"
#: src/src/i2p/susi/webmail/WebMail.java:1611
msgid "Subject"
msgstr "主题"
#: src/src/i2p/susi/webmail/WebMail.java:1612
msgid "Date"
msgstr "日期"
#: src/src/i2p/susi/webmail/WebMail.java:1613
msgid "Size"
msgstr "大小"
#: src/src/i2p/susi/webmail/WebMail.java:1639
#, java-format
msgid "1 Byte"
msgid_plural "{0} Bytes"
msgstr[0] "{0} 字节"
#: src/src/i2p/susi/webmail/WebMail.java:1644
msgid "Mark All"
msgstr "全部标记"
#: src/src/i2p/susi/webmail/WebMail.java:1645
msgid "Invert Selection"
msgstr "反向选择"
#: src/src/i2p/susi/webmail/WebMail.java:1646
msgid "Clear"
msgstr "清除"
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
msgid "First"
msgstr "第一页"
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
#: src/src/i2p/susi/webmail/WebMail.java:1685
msgid "Previous"
msgstr "上一页"
#: src/src/i2p/susi/webmail/WebMail.java:1651
#, java-format
msgid "Page {0} of {1}"
msgstr "第{0}页 共{1}页"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
msgid "Last"
msgstr "最后一页"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
#: src/src/i2p/susi/webmail/WebMail.java:1686
msgid "Next"
msgstr "下一页"
#: src/src/i2p/susi/webmail/WebMail.java:1657
msgid "Pagesize:"
msgstr "每页容量:"
#: src/src/i2p/susi/webmail/WebMail.java:1658
msgid "Set"
msgstr "设置"
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Really delete this message?"
msgstr "真的要删除此邮件?"
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Yes, really delete it!"
msgstr "是的,立刻删除!"
#: src/src/i2p/susi/webmail/WebMail.java:1687
msgid "Back to Folder"
msgstr "返回到文件夹"
#: src/src/i2p/susi/webmail/WebMail.java:1694
msgid "Date:"
msgstr "日期:"
#: src/src/i2p/susi/webmail/WebMail.java:1705
msgid "Could not fetch mail."
msgstr "无法收取邮件。"

View File

@ -23,7 +23,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" />
@ -35,6 +35,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/systray.jar" basedir="./build/obj" includes="**/*.class">
<manifest>
<attribute name="Main-Class" value="net.i2p.apps.systray.SysTray" />
@ -50,6 +55,14 @@
<uptodate property="jar.uptodate" targetfile="./build/systray.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="javadoc">

107
build.xml
View File

@ -13,6 +13,9 @@
<property name="javac.classpath" value="/PATH/TO/pack200.jar" />
-->
<!-- change this to false if you don't have gettext -->
<property name="require.gettext" value="true" />
<!-- You probably don't want to change anything from here down -->
<target name="help" depends="all" />
<target name="all" >
@ -54,7 +57,7 @@
<echo message="&quot;quilt&quot; and &quot;build-essential&quot;!" />
<echo message="" />
<echo message="The following command will install all dependencies for you:" />
<echo message="apt-get install debhelper ant debconf default-jdk libgmp3-dev po-debconf fakeroot build-essential quilt" />
<echo message="apt-get install debhelper ant debconf default-jdk gettext libgmp3-dev po-debconf fakeroot build-essential quilt" />
<echo message=" " />
<echo message="Once the dependencies are installed, run &quot;ant debian&quot;"/>
<echo message="to patch the source and build the packages." />
@ -159,11 +162,20 @@
</jar>
</target>
<target name="buildProperties" >
<target name="checkForMtn" >
<available property="mtn.available" file="_MTN" type="dir" />
</target>
<target name="getMtnRev" depends="checkForMtn" if="mtn.available" >
<exec executable="mtn" outputproperty="workspace.version" errorproperty="mtn.error1" failifexecutionfails="false" >
<arg value="automate" />
<arg value="get_base_revision_id" />
</exec>
</target>
<target name="buildProperties" depends="getMtnRev" >
<!-- default if not set above -->
<property name="workspace.version" value="unknown" />
<tstamp>
<format property="build.timestamp" pattern="yyyy-MM-dd HH:mm:ss z" timezone="UTC" locale="en" />
</tstamp>
@ -240,21 +252,56 @@
<copy file="apps/addressbook/dist/addressbook.war" todir="build/" />
</target>
<target name="jbigi">
<target name="jbigi-list-changes" depends="checkForMtn" if="mtn.available" >
<exec executable="mtn" outputproperty="workspace.changes.jbigi" errorproperty="mtn.error.jbigi" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
<arg value="installer/lib/jbigi" />
</exec>
<!-- \n in an attribute value generates an invalid manifest -->
<exec executable="tr" inputstring="${workspace.changes.jbigi}" outputproperty="workspace.changes.jbigi.tr" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="-s" />
<arg value="[:space:]" />
<arg value="," />
</exec>
</target>
<target name="jbigi" depends="buildProperties, jbigi-list-changes" >
<!-- set if unset -->
<property name="workspace.changes.jbigi.tr" value="" />
<jar destfile="build/jbigi.jar" whenmanifestonly="fail" >
<fileset dir="installer/lib/jbigi" includes="*.so *.dll *.jnilib" />
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.jbigi.tr}" />
</manifest>
</jar>
</target>
<target name="jbigi-windows-only" >
<target name="jbigi-windows-only" depends="buildProperties, jbigi-list-changes" >
<!-- set if unset -->
<property name="workspace.changes.jbigi.tr" value="" />
<jar destfile="build/jbigi.jar" whenmanifestonly="fail" >
<fileset dir="installer/lib/jbigi" includes="*windows*.dll" />
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.jbigi.tr}" />
</manifest>
</jar>
</target>
<target name="jbigi-linux-only">
<target name="jbigi-linux-only" depends="buildProperties, jbigi-list-changes" >
<!-- set if unset -->
<property name="workspace.changes.jbigi.tr" value="" />
<jar destfile="build/jbigi.jar" whenmanifestonly="fail" >
<fileset dir="installer/lib/jbigi" includes="*linux*.so" />
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
<attribute name="Workspace-Changes" value="${workspace.changes.jbigi.tr}" />
</manifest>
</jar>
</target>
@ -305,15 +352,16 @@
<group title="Streaming Library" packages="net.i2p.client.streaming" />
<group title="Router" packages="net.i2p.router:net.i2p.router.*:net.i2p.data.i2np:org.cybergarage.*:org.freenetproject" />
<group title="Router Console" packages="net.i2p.router.web" />
<!-- apps and bridges starting here, alphabetical please -->
<group title="Addressbook Application" packages="net.i2p.addressbook" />
<group title="BOB Bridge" packages="net.i2p.BOB" />
<group title="Desktopgui Application" packages="net.i2p.desktopgui.*" />
<group title="I2PSnark Application" packages="org.klomp.snark:org.klomp.snark.*" />
<group title="I2PTunnel Application" packages="net.i2p.i2ptunnel:net.i2p.i2ptunnel.*" />
<group title="SAM Bridge" packages="net.i2p.sam:net.i2p.sam.client" />
<group title="SusiDNS Application" packages="i2p.susi.dns" />
<group title="SusiMail Application" packages="i2p.susi.webmail:i2p.susi.webmail.*:i2p.susi.debug:i2p.susi.util" />
<group title="Systray Application" packages="net.i2p.apps.systray" />
<group title="Desktopgui Application" packages="net.i2p.desktopgui.*" />
<sourcepath>
<pathelement location="core/java/src" />
<!--<pathelement location="core/java/test" />-->
@ -337,14 +385,16 @@
<pathelement location="apps/jetty/jettylib/javax.servlet.jar" />
<pathelement location="apps/systray/java/lib/systray4j.jar" />
<pathelement location="apps/jrobin/jrobin-1.5.9.1.jar" />
<pathelement location="installer/lib/wrapper/win32/wrapper.jar" />
<pathelement location="installer/lib/wrapper/all/wrapper.jar" />
<pathelement location="core/lib/junit.jar" />
</classpath>
<link offline="true" href="http://download.oracle.com/javase/6/docs/api/" packagelistLoc="installer/resources/package-lists/java/" />
<link offline="true" href="http://docs.i2p2.de/jetty/javadoc/" packagelistLoc="installer/resources/package-lists/jetty/" />
<link offline="true" href="http://docs.i2p2.de/jrobin/javadoc/" packagelistLoc="installer/resources/package-lists/jrobin/" />
</javadoc>
<echo message="Warning, javadoc embeds timestamps in the output, run with 'TZ=UTC ant javadoc' if you plan to distribute" />
</target>
<target name="clean" depends="pkgclean" >
<delete dir="./build" />
<delete file="i2pinstall.exe" failonerror="false" quiet="true" />
@ -352,6 +402,9 @@
<delete file="syndie-standalone.zip" failonerror="false" quiet="true" />
<delete file="i2psnark-standalone.zip" failonerror="false" quiet="true" />
<delete file="BOB-one.jar" failonerror="false" quiet="true" />
<delete dir="core/c/jbigi/bin" />
<delete dir="core/c/jbigi/lib" />
<delete dir="core/c/jcpuid/lib" />
<delete dir="debian/tmp" />
<delete dir="debian/db" />
<delete file="debian/files" />
@ -434,12 +487,18 @@
<copy todir="pkg-temp/lib/wrapper/freebsd/">
<fileset dir="installer/lib/wrapper/freebsd/" />
</copy>
<copy todir="pkg-temp/lib/wrapper/freebsd64/">
<fileset dir="installer/lib/wrapper/freebsd64" />
</copy>
<copy todir="pkg-temp/lib/wrapper/macosx/">
<fileset dir="installer/lib/wrapper/macosx/" />
</copy>
<copy todir="pkg-temp/lib/wrapper/solaris/">
<fileset dir="installer/lib/wrapper/solaris/" />
</copy>
<copy todir="pkg-temp/lib/wrapper/linux-arm/">
<fileset dir="installer/lib/wrapper/linux-arm/" />
</copy>
</target>
<target name="preppkg-windows" depends="preppkg-base, buildexe">
@ -451,22 +510,27 @@
<copy file="installer/resources/i2prouter.bat" todir="pkg-temp/" />
<copy file="installer/resources/fixperms.bat" todir="pkg-temp/" />
<copy file="installer/resources/install_i2p_service_winnt.bat" todir="pkg-temp/" />
<copy file="installer/resources/postinstall.bat" todir="pkg-temp/" />
<copy file="installer/resources/set_config_dir_for_nt_service.bat" todir="pkg-temp/" />
<copy file="installer/resources/uninstall_i2p_service_winnt.bat" todir="pkg-temp/" />
<copy file="installer/lib/wrapper/all/wrapper.jar" todir="pkg-temp/lib" />
<copy todir="pkg-temp/lib/wrapper/win32/">
<fileset dir="installer/lib/wrapper/win32/" />
</copy>
<copy todir="pkg-temp/lib/wrapper/win64/">
<fileset dir="installer/lib/wrapper/win64/" />
</copy>
</target>
<!-- only what is needed for debian, etc. -->
<target name="preppkg-linux-only" depends="preppkg-linux, jbigi-linux-only" >
<copy file="build/jbigi.jar" todir="pkg-temp/lib" />
<copy file="installer/lib/wrapper/all/wrapper.jar" todir="pkg-temp/lib" />
</target>
<!-- x86 linux only -->
<target name="preppkg-linux" depends="preppkg-base">
<copy file="installer/resources/runplain.sh" todir="pkg-temp/" />
<copy file="apps/i2psnark/launch-i2psnark" todir="pkg-temp/" />
<!-- <copy file="apps/i2psnark/launch-i2psnark" todir="pkg-temp/" /> old feature that per zzz isn't used-->
<copy file="installer/resources/eepget" todir="pkg-temp/" />
<copy file="installer/resources/i2prouter" todir="pkg-temp/" />
<copy file="installer/resources/osid" todir="pkg-temp/" />
@ -630,11 +694,13 @@
<target name="updater200" depends="prepupdate, preplicenses, pack200, zipit200" />
<target name="updater200WithJettyFixes" depends="prepjupdatefixes, preplicenses, pack200, zipit200" />
<target name="updater200WithJettyFixesAndJbigi" depends="prepjupdatefixes, prepjbigiupdate, preplicenses, pack200, zipit200" />
<target name="updater" depends="prepupdate, preplicenses, zipit" />
<target name="updaterWithJavadoc" depends="prepupdate, preplicenses, copyJavadoc, zipit" />
<target name="updaterWithGeoIP" depends="prepupdate, prepgeoupdate, preplicenses, zipit" />
<target name="updaterWithJetty" depends="prepjupdate, preplicenses, zipit" />
<target name="updaterWithJettyFixes" depends="prepjupdatefixes, preplicenses, zipit" />
<target name="updaterWithJettyFixesAndJbigi" depends="prepjupdatefixes, prepjbigiupdate, preplicenses, zipit" />
<target name="updaterWithJettyFixesAndGeoIP" depends="prepjupdatefixes, prepgeoupdate, preplicenses, zipit" />
<target name="updaterSmall" depends="prepupdateSmall, zipit" />
<target name="updaterRouter" depends="prepupdateRouter, zipit" />
@ -726,6 +792,11 @@
<copy file="build/router.jar" todir="pkg-temp/lib/" />
</target>
<!-- jbigi.jar -->
<target name="prepjbigiupdate" depends="jbigi">
<copy file="build/jbigi.jar" todir="pkg-temp/lib/" />
</target>
<!-- GeoIP files and flag icons -->
<target name="prepgeoupdate">
<copy file="installer/resources/geoip.txt" todir="pkg-temp/geoip/" />
@ -746,9 +817,8 @@
<target name="prepjupdatefixes" depends="prepupdate, buildWEB">
<copy file="build/org.mortbay.jetty.jar" todir="pkg-temp/lib/" />
</target>
<target name="installer" depends="preppkg, buildProperties">
<taskdef name="izpack" classpath="${basedir}/installer/lib/izpack/standalone-compiler.jar" classname="com.izforge.izpack.ant.IzPackTask" />
<mkdir dir="pkg-temp/installer" />
<target name="util-list-changes" depends="checkForMtn" if="mtn.available" >
<exec executable="mtn" outputproperty="workspace.changes.util" errorproperty="mtn.error.util" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
@ -760,6 +830,13 @@
<arg value="[:space:]" />
<arg value="," />
</exec>
</target>
<target name="installer" depends="preppkg, buildProperties, util-list-changes" >
<taskdef name="izpack" classpath="${basedir}/installer/lib/izpack/standalone-compiler.jar" classname="com.izforge.izpack.ant.IzPackTask" />
<mkdir dir="pkg-temp/installer" />
<!-- set if unset -->
<property name="workspace.changes.util.tr" value="" />
<jar destfile="./pkg-temp/installer/copy.jar" basedir="./core/java/build/obj" includes="net/i2p/util/Copy.class net/i2p/util/FileUtil.class">
<manifest>
<attribute name="Main-Class" value="net.i2p.util.Copy" />
@ -873,7 +950,7 @@
<arg value="-output"/>
<arg value="i2p.fba"/>
<arg value="-auxclasspath"/>
<arg value="build/commons-el.jar:build/commons-logging.jar:build/jasper-compiler.jar:build/jasper-runtime.jar:build/javax.servlet.jar:build/org.mortbay.jetty.jar:apps/jrobin/jrobin-1.5.9.1.jar:apps/systray/java/lib/systray4j.jar:installer/lib/wrapper/linux/wrapper.jar:apps/susidns/src/WEB-INF/lib/standard.jar:apps/susidns/src/WEB-INF/lib/jstl.jar:apps/jrobin/jrobin-1.5.9.1.jar"/>
<arg value="build/commons-el.jar:build/commons-logging.jar:build/jasper-compiler.jar:build/jasper-runtime.jar:build/javax.servlet.jar:build/org.mortbay.jetty.jar:apps/jrobin/jrobin-1.5.9.1.jar:apps/systray/java/lib/systray4j.jar:installer/lib/wrapper/all/wrapper.jar:apps/susidns/src/WEB-INF/lib/standard.jar:apps/susidns/src/WEB-INF/lib/jstl.jar:apps/jrobin/jrobin-1.5.9.1.jar"/>
<arg value="-sourcepath"/>
<arg value="apps/BOB/src/:apps/addressbook/java/src/:apps/i2psnark/java/src/:apps/i2ptunnel/java/src/:apps/ministreaming/java/src/:apps/routerconsole/java/src/:apps/sam/java/src/:apps/streaming/java/src/:apps/susidns/src/java/src/:apps/susimail/src/src/:apps/systray/java/src/:core/java/src/:router/java/src/"/>
<!-- start of the files to be analyzed -->
@ -904,7 +981,7 @@
<!--
<target name="release" depends="distclean, updater, updater200, preppkg, installer" >
-->
<target name="release" depends="distclean, updaterWithJettyFixes, updater200WithJettyFixes, preppkg, installer" >
<target name="release" depends="distclean, updaterWithJettyFixesAndJbigi , updater200WithJettyFixes, preppkg, installer" >
<echo message="================================================================" />
<echo message="Did you update these files?" />
<exec executable="ls" failonerror="true">
@ -1179,7 +1256,7 @@
<copy file="apps/systray/java/lib/systray4j.jar" todir="pkg-temp/lib" />
<!--wrapper - dont even think about it. i2p cosumes appreantly more mem without it on win32-->
<copy file="installer/lib/wrapper/win32/wrapper.dll" todir="pkg-temp/lib" />
<copy file="installer/lib/wrapper/win32/wrapper.jar" todir="pkg-temp/lib" />
<copy file="installer/lib/wrapper/all/wrapper.jar" todir="pkg-temp/lib" />
<copy file="installer/lib/wrapper/win32/I2Psvc.exe" tofile="pkg-temp/i2psvc.ex_" />
<!-- copy the unpack/start batchfiles -->
<copy todir="pkg-temp">

View File

@ -1,6 +1,7 @@
#/bin/bash
# TO-DO: Darwin.
#FIXME What platforms for MacOS?
MISC_DARWIN_PLATFORMS=""
# Note: You will have to add the CPU ID for the platform in the CPU ID code
# for a new CPU. Just adding them here won't let I2P use the code!
@ -42,8 +43,10 @@ X86_PLATFORMS="pentium pentiummmx pentium2 pentium3 pentiumm k6 k62 k63 athlon g
MINGW_PLATFORMS="${X86_PLATFORMS} ${MISC_MINGW_PLATFORMS}"
LINUX_PLATFORMS="${X86_PLATFORMS} ${MISC_LINUX_PLATFORMS}"
FREEBSD_PLATFORMS="${X86_PLATFORMS} ${MISC_FREEBSD_PLATFORMS}"
DARWIN_PLATFORMS="${X86_PLATFORMS} ${MISC_DARWIN_PLATFORMS}"
VER=$(echo gmp-*.tar.bz2 | sed -re "s/(.*-)(.*)(.*.tar.bz2)$/\2/" | tail --lines=1)
# OSX doesn't have the -r parameter as an option for sed.
VER=$(echo gmp-*.tar.bz2 | sed -re "s/(.*-)(.*)(.*.tar.bz2)$/\2/" | tail -n 1)
if [ "$VER" == "" ] ; then
echo "ERROR! Can't find gmp source tarball."
exit 1
@ -57,6 +60,12 @@ MINGW*)
TYPE="dll"
TARGET="-windows-"
echo "Building windows .dlls for all architectures";;
Darwin*)
PLATFORM_LIST=${DARWIN_PLATFORMS}"
NAME="libjbigi"
TYPE="jnilib"
TARGET="-osx-"
echo "Building ${TARGET} .jnilibs for all architectures";;
Linux*)
NAME="libjbigi"
TYPE="so"

View File

@ -1,7 +1,7 @@
#!/bin/bash
# When executed in Mingw: Produces an jbigi.dll
# When executed in Linux/FreeBSD: Produces an libjbigi.so
# What does Darwin produce? libjbigi.jnilib?
# When executed in Mingw: Produces a jbigi.dll
# When executed in Linux/FreeBSD: Produces a libjbigi.so
# When executed in OSX: Produces a libjbigi.jnilib
CC="gcc"
case `uname -sr` in
@ -18,8 +18,8 @@ CYGWIN*)
LINKFLAGS="-shared -Wl,--kill-at"
LIBFILE="jbigi.dll";;
Darwin*)
JAVA_HOME="/Library/Java/Home"
COMPILEFLAGS="-Wall"
JAVA_HOME=$(/usr/libexec/java_home)
COMPILEFLAGS="-fPIC -Wall"
INCLUDES="-I. -I../../jbigi/include -I$JAVA_HOME/include"
LINKFLAGS="-dynamiclib -framework JavaVM"
LIBFILE="libjbigi.jnilib";;

View File

@ -9,16 +9,18 @@ Linux*)
echo "Building linux .so's";;
FreeBSD*)
echo "Building freebsd .so's";;
Darwin*)
echo "Building OSX jnilibs";;
*)
echo "Unsupported build environment"
exit;;
esac
rm -rf lib
mkdir lib
mkdir lib/freenet
mkdir lib/freenet/support
mkdir lib/freenet/support/CPUInformation
#mkdir lib
#mkdir lib/freenet
#mkdir lib/freenet/support
mkdir -p lib/freenet/support/CPUInformation
CC="gcc"
@ -29,11 +31,26 @@ MINGW*)
INCLUDES="-I. -Iinclude -I$JAVA_HOME/include/ -I$JAVA_HOME/include/win32/"
LINKFLAGS="-shared -static -static-libgcc -Wl,--kill-at"
LIBFILE="lib/freenet/support/CPUInformation/jcpuid-x86-windows.dll";;
Darwin*)
JAVA_HOME=$(/usr/libexec/java_home)
COMPILEFLAGS="-fPIC -Wall -arch x86_64 -arch i386"
INCLUDES="-I. -Iinclude -I$JAVA_HOME/include/"
LINKFLAGS="-dynamiclib -framework JavaVM"
LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-x86-darwin.jnilib";;
FreeBSD*)
COMPILEFLAGS="-Wall"
INCLUDES="-I. -Iinclude -I$JAVA_HOME/include/ -I$JAVA_HOME/include/freebsd/"
LINKFLAGS="-shared -static -Wl,-soname,libjcpuid-x86-freebsd.so"
case `uname -m` in
amd64)
LINKFLAGS="-shared -Wl,-soname,libjcpuid-x86_64-freebsd.so"
LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-x86_64-freebsd.so";;
i?86*)
LINKFLAGS="-shared -Wl,-soname,libjcpuid-x86-freebsd.so"
LIBFILE="lib/freenet/support/CPUInformation/libjcpuid-x86-freebsd.so";;
*)
echo "Unknown build environment"
exit;;
esac
COMPILEFLAGS="-fPIC -Wall"
INCLUDES="-I. -Iinclude -I$JAVA_HOME/include/ -I$JAVA_HOME/include/freebsd/";;
Linux*)
case `uname -m` in
x86_64*)

View File

@ -39,7 +39,7 @@
</javac>
</target>
<target name="jar" depends="compile, jarUpToDate" unless="jar.uptodate" >
<target name="listChangedFiles" if="mtn.available" >
<exec executable="mtn" outputproperty="workspace.changes" errorproperty="mtn.error2" failifexecutionfails="false" >
<arg value="list" />
<arg value="changed" />
@ -51,6 +51,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/i2p.jar" basedir="./build/obj" includes="**/*.class" >
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />

View File

@ -16,24 +16,31 @@ package freenet.support.CPUInformation;
*/
public interface AMDCPUInfo extends CPUInfo {
/**
* @return true iff the CPU present in the machine is at least an 'k6' CPU
* @return true if the CPU present in the machine is at least an 'k6' CPU
*/
public boolean IsK6Compatible();
/**
* @return true iff the CPU present in the machine is at least an 'k6-2' CPU
* @return true if the CPU present in the machine is at least an 'k6-2' CPU
*/
public boolean IsK6_2_Compatible();
/**
* @return true iff the CPU present in the machine is at least an 'k6-3' CPU
* @return true if the CPU present in the machine is at least an 'k6-3' CPU
*/
public boolean IsK6_3_Compatible();
/**
* @return true iff the CPU present in the machine is at least an 'k7' CPU (Atlhon, Duron etc. and better)
* @return true if the CPU present in the machine is at least an 'geode' CPU
*/
boolean IsGeodeCompatible();
/**
* @return true if the CPU present in the machine is at least an 'k7' CPU (Atlhon, Duron etc. and better)
*/
public boolean IsAthlonCompatible();
/**
* @return true iff the CPU present in the machine is at least an 'k8' CPU (Atlhon 64, Opteron etc. and better)
* @return true if the CPU present in the machine is at least an 'k8' CPU (Atlhon 64, Opteron etc. and better)
*/
public boolean IsAthlon64Compatible();
/**
* @return true if the CPU present in the machine is at least an 'k8' CPU (Atlhon 64, Opteron etc. and better)
*/
public boolean IsBobcatCompatible();
}

View File

@ -0,0 +1,357 @@
package freenet.support.CPUInformation;
class AMDInfoImpl extends CPUIDCPUInfo implements AMDCPUInfo
{
protected static boolean isK6Compatible = false;
protected static boolean isK6_2_Compatible = false;
protected static boolean isK6_3_Compatible = false;
protected static boolean isGeodeCompatible = false;
protected static boolean isAthlonCompatible = false;
protected static boolean isAthlon64Compatible = false;
protected static boolean isBobcatCompatible = false;
// If modelString != null, the cpu is considered correctly identified.
protected static String modelString = null;
@Override
public boolean IsK6Compatible(){ return isK6Compatible; }
@Override
public boolean IsK6_2_Compatible(){ return isK6_2_Compatible; }
@Override
public boolean IsK6_3_Compatible(){ return isK6_3_Compatible; }
@Override
public boolean IsGeodeCompatible(){ return isGeodeCompatible; }
@Override
public boolean IsAthlonCompatible(){ return isAthlonCompatible; }
@Override
public boolean IsAthlon64Compatible(){ return isAthlon64Compatible; }
@Override
public boolean IsBobcatCompatible(){ return isBobcatCompatible; }
static
{
identifyCPU();
}
@Override
public String getCPUModelString() throws UnknownCPUException
{
if (modelString != null)
return modelString;
throw new UnknownCPUException("Unknown AMD CPU; Family="+(CPUID.getCPUFamily() + CPUID.getCPUExtendedFamily())+", Model="+(CPUID.getCPUModel() + CPUID.getCPUExtendedModel()));
}
private synchronized static void identifyCPU()
{
//AMD-family = getCPUFamily()+getCPUExtendedFamily()
//AMD-model = getCPUModel()+getCPUExtendedModel()
//i486 class (Am486, 5x86)
if(CPUID.getCPUFamily() + CPUID.getCPUExtendedFamily() == 4){
switch(CPUID.getCPUModel() + CPUID.getCPUExtendedModel()){
case 3:
modelString = "486 DX/2";
break;
case 7:
modelString = "486 DX/2-WB";
break;
case 8:
modelString = "486 DX/4";
break;
case 9:
modelString = "486 DX/4-WB";
break;
case 14:
modelString = "Am5x86-WT";
break;
case 15:
modelString = "Am5x86-WB";
break;
}
}
//i586 class (K5/K6/K6-2/K6-III)
if(CPUID.getCPUFamily() + CPUID.getCPUExtendedFamily() == 5){
isK6Compatible = true;
switch(CPUID.getCPUModel() + CPUID.getCPUExtendedModel()){
case 0:
modelString = "K5/SSA5";
break;
case 1:
modelString = "K5";
break;
case 2:
modelString = "K5";
break;
case 3:
modelString = "K5";
break;
case 4:
isK6Compatible = false;
isGeodeCompatible = true;
modelString = "Geode GX1/GXLV/GXm";
break;
case 5:
isK6Compatible = false;
isGeodeCompatible = true;
modelString = "Geode GX2/LX";
break;
case 6:
modelString = "K6";
break;
case 7:
modelString = "K6";
break;
case 8:
isK6_2_Compatible = true;
modelString = "K6-2";
break;
case 9:
isK6_2_Compatible = true;
isK6_3_Compatible = true;
modelString = "K6-3";
break;
case 13:
isK6_2_Compatible = true;
modelString = "K6-2+ or K6-III+";
break;
}
}
//i686 class (Athlon/Athlon XP/Duron/K7 Sempron)
if(CPUID.getCPUFamily() + CPUID.getCPUExtendedFamily() == 6){
isK6Compatible = true;
isK6_2_Compatible = true;
isK6_3_Compatible = true;
isAthlonCompatible = true;
switch(CPUID.getCPUModel() + CPUID.getCPUExtendedModel()){
case 0:
modelString = "Athlon (250 nm)";
break;
case 1:
modelString = "Athlon (250 nm)";
break;
case 2:
modelString = "Athlon (180 nm)";
break;
case 3:
modelString = "Duron";
break;
case 4:
modelString = "Athlon (Thunderbird)";
break;
case 6:
modelString = "Athlon (Palamino)";
break;
case 7:
modelString = "Duron (Morgan)";
break;
case 8:
modelString = "Athlon (Thoroughbred)";
break;
case 10:
modelString = "Athlon (Barton)";
break;
}
}
//AMD64 class (A64/Opteron/A64 X2/K8 Sempron/Turion/Second-Generation Opteron/Athlon Neo)
if(CPUID.getCPUFamily() + CPUID.getCPUExtendedFamily() == 15){
isK6Compatible = true;
isK6_2_Compatible = true;
isK6_3_Compatible = true;
isAthlonCompatible = true;
isAthlon64Compatible = true;
isX64 = true;
switch(CPUID.getCPUModel() + CPUID.getCPUExtendedModel()){
case 4:
modelString = "Athlon 64/Mobile XP-M";
case 5:
modelString = "Athlon 64 FX Opteron";
break;
case 7:
modelString = "Athlon 64 FX (Sledgehammer S939, 130 nm)";
break;
case 8:
modelString = "Mobile A64/Sempron/XP-M";
break;
case 11:
modelString = "Athlon 64 (Clawhammer S939, 130 nm)";
break;
case 12:
modelString = "Athlon 64/Sempron (Newcastle S754, 130 nm)";
break;
case 14:
modelString = "Athlon 64/Sempron (Newcastle S754, 130 nm)";
break;
case 15:
modelString = "Athlon 64/Sempron (Clawhammer S939, 130 nm)";
break;
case 18:
modelString = "Sempron (Palermo, 90 nm)";
break;
case 20:
modelString = "Athlon 64 (Winchester S754, 90 nm)";
break;
case 23:
modelString = "Athlon 64 (Winchester S939, 90 nm)";
break;
case 24:
modelString = "Mobile A64/Sempron/XP-M (Winchester S754, 90 nm)";
break;
case 26:
modelString = "Athlon 64 (Winchester S939, 90 nm)";
break;
case 27:
modelString = "Athlon 64/Sempron (Winchester/Palermo 90 nm)";
break;
case 28:
modelString = "Sempron (Palermo, 90 nm)";
break;
case 31:
modelString = "Athlon 64/Sempron (Winchester/Palermo, 90 nm)";
break;
case 33:
modelString = "Dual-Core Opteron (Italy-Egypt S940, 90 nm)";
break;
case 35:
modelString = "Athlon 64 X2/A64 FX/Opteron (Toledo/Denmark S939, 90 nm)";
break;
case 36:
modelString = "Mobile A64/Turion (Lancaster/Richmond/Newark, 90 nm)";
break;
case 37:
modelString = "Opteron (Troy/Athens S940, 90 nm)";
break;
case 39:
modelString = "Athlon 64 (San Diego, 90 nm)";
break;
case 43:
modelString = "Athlon 64 X2 (Manchester, 90 nm)";
break;
case 44:
modelString = "Sempron/mobile Sempron (Palermo/Albany/Roma S754, 90 nm)";
break;
case 47:
modelString = "Athlon 64/Sempron (Venice/Palermo S939, 90 nm)";
break;
case 65:
modelString = "Second-Generaton Opteron (Santa Rosa S1207, 90 nm)";
break;
case 67:
modelString = "Athlon 64 X2/2nd-gen Opteron (Windsor/Santa Rosa, 90 nm)";
break;
case 72:
modelString = "Athlon 64 X2/Turion 64 X2 (Windsor/Taylor/Trinidad, 90 nm)";
break;
case 75:
modelString = "Athlon 64 X2 (Windsor, 90 nm)";
break;
case 76:
modelString = "Mobile A64/mobile Sempron/Turion (Keene/Trinidad/Taylor, 90 nm)";
break;
case 79:
modelString = "Athlon 64/Sempron (Orleans/Manila AM2, 90 nm)";
break;
case 93:
modelString = "Opteron Gen 2 (Santa Rosa, 90 nm)";
break;
case 95:
modelString = "A64/Sempron/mobile Sempron (Orleans/Manila/Keene, 90 nm)";
break;
case 104:
modelString = "Turion 64 X2 (Tyler S1, 65 nm)";
break;
case 107:
modelString = "Athlon 64 X2/Sempron X2/Athlon Neo X2 (Brisbane/Huron, 65 nm)";
break;
case 108:
modelString = "A64/Athlon Neo/Sempron/Mobile Sempron (Lima/Huron/Sparta/Sherman, 65 nm)";
break;
case 111:
modelString = "Neo/Sempron/mobile Sempron (Huron/Sparta/Sherman, 65 nm)";
break;
case 124:
modelString = "Athlon/Sempron/mobile Sempron (Lima/Sparta/Sherman, 65 nm)";
break;
case 127:
modelString = "A64/Athlon Neo/Sempron/mobile Sempron (Lima/Huron/Sparta/Sherman, 65 nm)";
break;
case 193:
modelString = "Athlon 64 FX (Windsor S1207 90 nm)";
break;
default: // is this safe?
modelString = "Athlon 64 (unknown)";
break;
}
}
//Stars (Phenom II/Athlon II/Third-Generation Opteron/Opteron 4100 & 6100/Sempron 1xx)
if(CPUID.getCPUFamily() + CPUID.getCPUExtendedFamily() == 16){
isK6Compatible = true;
isK6_2_Compatible = true;
isK6_3_Compatible = true;
isAthlonCompatible = true;
isAthlon64Compatible = true;
isX64 = true;
switch(CPUID.getCPUModel() + CPUID.getCPUExtendedModel()){
case 2:
modelString = "Phenom / Athlon / Opteron Gen 3 (Barcelona/Agena/Toliman/Kuma, 65 nm)";
break;
case 4:
modelString = "Phenom II / Opteron Gen 3 (Shanghai/Deneb/Heka/Callisto, 45 nm)";
break;
case 5:
modelString = "Athlon II X2/X3/X4 (Regor/Rana/Propus AM3, 45 nm)";
break;
case 6:
modelString = "Mobile Athlon II/Turion II/Phenom II/Sempron/V-series (Regor/Caspian/Champlain, 45 nm)";
break;
case 8:
modelString = "Six-Core Opteron/Opteron 4100 series (Istanbul/Lisbon, 45 nm)";
break;
case 9:
modelString = "Opteron 6100 series (Magny-Cours G34, 45 nm)";
break;
case 10:
modelString = "Phenom II X4/X6 (Zosma/Thuban AM3, 45 nm)";
break;
}
}
//K8 mobile+HT3 (Turion X2/Athlon X2/Sempron)
if(CPUID.getCPUFamily() + CPUID.getCPUExtendedFamily() == 17){
isK6Compatible = true;
isK6_2_Compatible = true;
isK6_3_Compatible = true;
isAthlonCompatible = true;
isAthlon64Compatible = true;
isX64 = true;
switch(CPUID.getCPUModel() + CPUID.getCPUExtendedModel()){
case 3:
modelString = "AMD Turion X2/Athlon X2/Sempron (Lion/Sable, 65 nm)";
break;
}
}
//Bobcat
if(CPUID.getCPUFamily() + CPUID.getCPUExtendedFamily() == 20){
isK6Compatible = true;
isK6_2_Compatible = true;
isK6_3_Compatible = true;
isAthlonCompatible = true;
isAthlon64Compatible = true;
isBobcatCompatible = true;
isX64 = true;
switch(CPUID.getCPUModel() + CPUID.getCPUExtendedModel()){
case 1:
modelString = "Bobcat APU";
break;
// Case 3 is uncertain but most likely a Bobcat APU
case 3:
modelString = "Bobcat APU";
break;
}
}
}
@Override
public boolean hasX64()
{
return isX64;
}
}

View File

@ -9,10 +9,12 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.HashMap;
import net.i2p.I2PAppContext;
import net.i2p.util.FileUtil;
/**
* @author Iakin
* A class for retrieveing details about the CPU using the CPUID assembly instruction.
@ -53,6 +55,8 @@ public class CPUID {
private static final boolean isLinux = System.getProperty("os.name").toLowerCase().contains("linux");
private static final boolean isFreebsd = System.getProperty("os.name").toLowerCase().contains("freebsd");
private static final boolean isSunos = System.getProperty("os.name").toLowerCase().contains("sunos");
private static final boolean isMac = System.getProperty("os.name").startsWith("Mac");
/**
* This isn't always correct.
@ -71,11 +75,8 @@ public class CPUID {
{
loadNative();
}
/**
* A class that can (amongst other things I assume) represent the state of the
* different CPU registers after a call to the CPUID assembly method
*/
//A class that can (amongst other things I assume) represent the state of the
//different CPU registers after a call to the CPUID assembly method
protected static class CPUIDResult {
final int EAX;
final int EBX;
@ -97,7 +98,8 @@ public class CPUID {
*/
private static native CPUIDResult doCPUID(int iFunction);
private static String getCPUVendorID()
public static String getCPUVendorID()
{
CPUIDResult c = doCPUID(0);
StringBuilder sb= new StringBuilder(13);
@ -118,71 +120,74 @@ public class CPUID {
return sb.toString();
}
private static int getCPUFamily()
public static int getCPUFamily()
{
CPUIDResult c = doCPUID(1);
return (c.EAX >> 8) & 0xf;
}
private static int getCPUModel()
public static int getCPUModel()
{
CPUIDResult c = doCPUID(1);
return (c.EAX >> 4) & 0xf;
}
private static int getCPUExtendedModel()
public static int getCPUExtendedModel()
{
CPUIDResult c = doCPUID(1);
return (c.EAX >> 16) & 0xf;
}
private static int getCPUType()
public static int getCPUType()
{
CPUIDResult c = doCPUID(1);
return (c.EAX >> 12) & 0xf;
}
private static int getCPUExtendedFamily()
public static int getCPUExtendedFamily()
{
CPUIDResult c = doCPUID(1);
return (c.EAX >> 20) & 0xff;
}
private static int getCPUStepping()
public static int getCPUStepping()
{
CPUIDResult c = doCPUID(1);
return c.EAX & 0xf;
}
private static int getEDXCPUFlags()
public static int getEDXCPUFlags()
{
CPUIDResult c = doCPUID(1);
return c.EDX;
}
private static int getECXCPUFlags()
public static int getECXCPUFlags()
{
CPUIDResult c = doCPUID(1);
return c.ECX;
}
private static int getExtendedEDXCPUFlags()
public static int getExtendedEBXCPUFlags()
{
CPUIDResult c = doCPUID(0x80000001);
return c.EDX;
return c.EBX;
}
private static int getExtendedECXCPUFlags()
public static int getExtendedECXCPUFlags()
{
CPUIDResult c = doCPUID(0x80000001);
return c.ECX;
}
public static int getExtendedEDXCPUFlags()
{
CPUIDResult c = doCPUID(0x80000001);
return c.EDX;
}
/**
* Returns a CPUInfo item for the current type of CPU
* If I could I would declare this method in a interface named
* CPUInfoProvider and implement that interface in this class.
* This would make it easier for other people to understand that there
* is nothing preventing them from coding up new providers, probably using
* other detection methods than the x86-only CPUID instruction
*/
//Returns a CPUInfo item for the current type of CPU
//If I could I would declare this method in a interface named
//CPUInfoProvider and implement that interface in this class.
//This would make it easier for other people to understand that there
//is nothing preventing them from coding up new providers, probably using
//other detection methods than the x86-only CPUID instruction
public static CPUInfo getInfo() throws UnknownCPUException
{
if(!_nativeOk)
throw new UnknownCPUException("Failed to read CPU information from the system. Please verify the existence of the jcpuid dll/so.");
if(getCPUVendorID().equals("CentaurHauls"))
return new VIAC3Impl();
return new VIAInfoImpl();
if(!isX86)
throw new UnknownCPUException("Failed to read CPU information from the system. The CPUID instruction exists on x86 CPU's only");
if(getCPUVendorID().equals("AuthenticAMD"))
@ -192,303 +197,6 @@ public class CPUID {
throw new UnknownCPUException("Unknown CPU type: '"+getCPUVendorID()+"'");
}
protected abstract static class CPUIDCPUInfo
{
public String getVendor()
{
return getCPUVendorID();
}
public boolean hasMMX(){
return (getEDXCPUFlags() & 0x800000) >0; //EDX Bit 23
}
public boolean hasSSE(){
return (getEDXCPUFlags() & 0x2000000) >0; //EDX Bit 25
}
public boolean hasSSE2(){
return (getEDXCPUFlags() & 0x4000000) >0; //EDX Bit 26
}
public boolean hasSSE3(){
return (getEDXCPUFlags() & 0x1) >0; //ECX Bit 0
}
public boolean hasSSE41(){
return (getEDXCPUFlags() & 0x80000) >0; //ECX Bit 19
}
public boolean hasSSE42(){
return (getEDXCPUFlags() & 0x100000) >0; //ECX Bit 20
}
public boolean hasSSE4A(){
return (getExtendedECXCPUFlags() & 0x40) >0; //Extended ECX Bit 6
}
public boolean IsC3Compatible() { return false; }
}
protected static class VIAC3Impl extends CPUIDCPUInfo implements CPUInfo {
@Override
public boolean IsC3Compatible() { return true; }
public String getCPUModelString() { return "VIA C3"; }
}
protected static class AMDInfoImpl extends CPUIDCPUInfo implements AMDCPUInfo
{
public boolean IsK6Compatible()
{
return getCPUFamily() >= 5 && getCPUModel() >= 6;
}
public boolean IsK6_2_Compatible()
{
return getCPUFamily() >= 5 && getCPUModel() >= 8;
}
public boolean IsK6_3_Compatible()
{
return getCPUFamily() >= 5 && getCPUModel() >= 9;
}
public boolean IsAthlonCompatible()
{
return getCPUFamily() >= 6;
}
public boolean IsAthlon64Compatible()
{
return getCPUFamily() == 15 && getCPUExtendedFamily() == 0;
}
public String getCPUModelString() throws UnknownCPUException
{
if(getCPUFamily() == 4){
switch(getCPUModel()){
case 3:
return "486 DX/2";
case 7:
return "486 DX/2-WB";
case 8:
return "486 DX/4";
case 9:
return "486 DX/4-WB";
case 14:
return "Am5x86-WT";
case 15:
return "Am5x86-WB";
}
}
if(getCPUFamily() == 5){
switch(getCPUModel()){
case 0:
return "K5/SSA5";
case 1:
return "K5";
case 2:
return "K5";
case 3:
return "K5";
case 6:
return "K6";
case 7:
return "K6";
case 8:
return "K6-2";
case 9:
return "K6-3";
case 13:
return "K6-2+ or K6-III+";
}
}
if(getCPUFamily() == 6){
switch(getCPUModel()){
case 0:
return "Athlon (250 nm)";
case 1:
return "Athlon (250 nm)";
case 2:
return "Athlon (180 nm)";
case 3:
return "Duron";
case 4:
return "Athlon (Thunderbird)";
case 6:
return "Athlon (Palamino)";
case 7:
return "Duron (Morgan)";
case 8:
return "Athlon (Thoroughbred)";
case 10:
return "Athlon (Barton)";
}
}
if(getCPUFamily() == 15){
if(getCPUExtendedFamily() == 0){
switch(getCPUModel()){
case 4:
return "Athlon 64";
case 5:
return "Athlon 64 FX Opteron";
case 12:
return "Athlon 64";
default: // is this safe?
return "Athlon 64 (unknown)";
}
}
}
throw new UnknownCPUException("Unknown AMD CPU; Family="+getCPUFamily()+", Model="+getCPUModel());
}
}
protected static class IntelInfoImpl extends CPUIDCPUInfo implements IntelCPUInfo
{
public boolean IsPentiumCompatible()
{
return getCPUFamily() >= 5;
}
public boolean IsPentiumMMXCompatible()
{
return IsPentium2Compatible() || (getCPUFamily() == 5 && (getCPUModel() ==4 || getCPUModel() == 8));
}
public boolean IsPentium2Compatible()
{
return getCPUFamily() > 6 || (getCPUFamily() == 6 && getCPUModel() >=3);
}
public boolean IsPentium3Compatible()
{
// Atom
if (getCPUExtendedModel() == 1 && (getCPUFamily() == 6 && (getCPUModel() == 12))){
return true;
// ??
} else if (getCPUExtendedModel() == 0 && (getCPUFamily() > 6 || (getCPUFamily() == 6 && getCPUModel() >=7))){
return true;
} else {
return false;
}
}
public boolean IsPentium4Compatible()
{
// P4
if (getCPUFamily() >= 15){
return true;
// Xeon MP (45nm) or Core i7
} else if (getCPUExtendedModel() == 1 && (getCPUFamily() == 6 && (getCPUModel() == 10 || getCPUModel() == 13))){
return true;
// Core 2 Duo
} else if (getCPUExtendedModel() == 0 && getCPUFamily() == 6 && getCPUModel() == 15){
return true;
} else {
return false;
}
}
public String getCPUModelString() throws UnknownCPUException {
if (getCPUExtendedModel() == 0){
if(getCPUFamily() == 4){
switch(getCPUModel()){
case 0:
return "486 DX-25/33";
case 1:
return "486 DX-50";
case 2:
return "486 SX";
case 3:
return "486 DX/2";
case 4:
return "486 SL";
case 5:
return "486 SX/2";
case 7:
return "486 DX/2-WB";
case 8:
return "486 DX/4";
case 9:
return "486 DX/4-WB";
}
}
}
if (getCPUExtendedModel() == 0){
if(getCPUFamily() == 5){
switch(getCPUModel()){
case 0:
return "Pentium 60/66 A-step";
case 1:
return "Pentium 60/66";
case 2:
return "Pentium 75 - 200";
case 3:
return "OverDrive PODP5V83";
case 4:
return "Pentium MMX";
case 7:
return "Mobile Pentium 75 - 200";
case 8:
return "Mobile Pentium MMX";
}
}
}
if(getCPUFamily() == 6){
if (getCPUExtendedModel() == 0){
switch(getCPUModel()){
case 0:
return "Pentium Pro A-step";
case 1:
return "Pentium Pro";
case 3:
return "Pentium II (Klamath)";
case 5:
return "Pentium II (Deschutes), Celeron (Covington), Mobile Pentium II (Dixon)";
case 6:
return "Mobile Pentium II, Celeron (Mendocino)";
case 7:
return "Pentium III (Katmai)";
case 8:
return "Pentium III (Coppermine), Celeron w/SSE";
case 9:
return "Mobile Pentium III (Banias)";
case 10:
return "Pentium III Xeon (Cascades)";
case 11:
return "Pentium III (130 nm)";
case 13:
return "Mobile Pentium III (Dothan)";
case 14:
return "Mobile Core (Yonah)";
case 15:
return "Core 2 (Conroe)";
}
} else {
if (getCPUExtendedModel() == 1){
switch(getCPUModel()){
case 10:
return "Core i7";
case 12:
return "Atom";
case 13:
return "Xeon MP";
}
}
}
}
if(getCPUFamily() == 7){
switch(getCPUModel()){
//Itanium.. TODO
}
}
if(getCPUFamily() == 15){
if(getCPUExtendedFamily() == 0){
switch(getCPUModel()){
case 0:
return "Pentium IV (180 nm)";
case 1:
return "Pentium IV (180 nm)";
case 2:
return "Pentium IV (130 nm)";
case 3:
return "Pentium IV (90 nm)";
case 4:
return "Pentium IV (90 nm)";
case 6:
return "Pentium IV (65 nm)";
}
}
if(getCPUExtendedFamily() == 1){
switch(getCPUModel()){
// Itanium 2.. TODO
}
}
}
throw new UnknownCPUException("Unknown Intel CPU; Family="+getCPUFamily()+", Model="+getCPUModel());
}
}
public static void main(String args[])
{
@ -518,6 +226,9 @@ public class CPUID {
System.out.println(" Is pII-compatible: "+((IntelCPUInfo)c).IsPentium2Compatible());
System.out.println(" Is pIII-compatible: "+((IntelCPUInfo)c).IsPentium3Compatible());
System.out.println(" Is pIV-compatible: "+((IntelCPUInfo)c).IsPentium4Compatible());
System.out.println(" Is atom-compatible: "+((IntelCPUInfo)c).IsAtomCompatible());
System.out.println(" Is core2-compatible: "+((IntelCPUInfo)c).IsCore2Compatible());
System.out.println(" Is corei-compatible: "+((IntelCPUInfo)c).IsCoreiCompatible());
}
if(c instanceof AMDCPUInfo){
System.out.println(" **AMD-info**");
@ -665,9 +376,9 @@ public class CPUID {
System.load(outFile.getAbsolutePath());//System.load requires an absolute path to the lib
} catch (UnsatisfiedLinkError ule) {
if (_doLog) {
System.err.println("ERROR: The resource " + resourceName
+ " was not a valid library for this platform");
ule.printStackTrace();
System.err.println("WARNING: The resource " + resourceName
+ " was not a valid library for this platform " + ule);
//ule.printStackTrace();
}
if (outFile != null)
outFile.delete();
@ -718,6 +429,11 @@ public class CPUID {
private static final String getLibraryMiddlePart(){
if(isWindows)
return "jcpuid-x86-windows"; // The convention on Windows
if(isMac) {
if(isX86) {
return "jcpuid-x86-osx"; // The convention on Intel Macs
}
}
if(isFreebsd)
return "jcpuid-x86-freebsd"; // The convention on freebsd...
if(isSunos)
@ -733,6 +449,11 @@ public class CPUID {
return "jcpuid-x86_64-windows";
if(isFreebsd)
return "jcpuid-x86_64-freebsd";
if(isMac){
if(isX86){
return "jcpuid-x86_64-osx";
}
}
if(isSunos)
return "jcpuid-x86_64-solaris";
// use linux as the default, don't throw exception
@ -743,6 +464,8 @@ public class CPUID {
{
if(isWindows)
return "dll";
if(isMac)
return "jnilib";
else
return "so";
}

View File

@ -0,0 +1,40 @@
package freenet.support.CPUInformation;
abstract class CPUIDCPUInfo
{
protected static boolean isX64 = false;
public String getVendor()
{
return CPUID.getCPUVendorID();
}
public boolean hasMMX()
{
return (CPUID.getEDXCPUFlags() & 0x800000) >0; //EDX Bit 23
}
public boolean hasSSE(){
return (CPUID.getEDXCPUFlags() & 0x2000000) >0; //EDX Bit 25
}
public boolean hasSSE2()
{
return (CPUID.getEDXCPUFlags() & 0x4000000) >0; //EDX Bit 26
}
public boolean hasSSE3()
{
return (CPUID.getEDXCPUFlags() & 0x1) >0; //ECX Bit 0
}
public boolean hasSSE41()
{
return (CPUID.getEDXCPUFlags() & 0x80000) >0; //ECX Bit 19
}
public boolean hasSSE42()
{
return (CPUID.getEDXCPUFlags() & 0x100000) >0; //ECX Bit 20
}
public boolean hasSSE4A()
{
return (CPUID.getExtendedECXCPUFlags() & 0x40) >0; //Extended ECX Bit 6
}
public abstract boolean hasX64();
}

View File

@ -61,6 +61,4 @@ public interface CPUInfo
* @return true iff the CPU support the SSE4A instruction set.
*/
public boolean hasSSE4A();
public boolean IsC3Compatible();
}

View File

@ -16,25 +16,41 @@ package freenet.support.CPUInformation;
*/
public interface IntelCPUInfo extends CPUInfo {
/**
* @return true iff the CPU is at least a Pentium CPU.
* @return true if the CPU is at least a Pentium CPU.
*/
public boolean IsPentiumCompatible();
/**
* @return true iff the CPU is at least a Pentium which implements the MMX instruction/feature set.
* @return true if the CPU is at least a Pentium which implements the MMX instruction/feature set.
*/
public boolean IsPentiumMMXCompatible();
/**
* @return true iff the CPU implements at least the p6 instruction set (Pentium II or better).
* @return true if the CPU implements at least the p6 instruction set (Pentium II or better).
* Please note that an PentimPro CPU causes/should cause this method to return false (due to that CPU using a
* very early implementation of the p6 instruction set. No MMX etc.)
*/
public boolean IsPentium2Compatible();
/**
* @return true iff the CPU implements at least a Pentium III level of the p6 instruction/feature set.
* @return true if the CPU implements at least a Pentium III level of the p6 instruction/feature set.
*/
public boolean IsPentium3Compatible();
/**
* @return true iff the CPU implements at least a Pentium IV level instruction/feature set.
* @return true if the CPU implements at least a Pentium IV level instruction/feature set.
*/
public boolean IsPentium4Compatible();
/**
* @return true if the CPU implements at least a Pentium M level instruction/feature set.
*/
public boolean IsPentiumMCompatible();
/**
* @return true if the CPU implements at least a Atom level instruction/feature set.
*/
public boolean IsAtomCompatible();
/**
* @return true if the CPU implements at least a Core2 level instruction/feature set.
*/
public boolean IsCore2Compatible();
/**
* @return true if the CPU implements at least a Corei level instruction/feature set.
*/
public boolean IsCoreiCompatible();
}

View File

@ -0,0 +1,297 @@
package freenet.support.CPUInformation;
class IntelInfoImpl extends CPUIDCPUInfo implements IntelCPUInfo
{
protected static boolean isPentiumCompatible = false;
protected static boolean isPentiumMMXCompatible = false;
protected static boolean isPentium2Compatible = false;
protected static boolean isPentium3Compatible = false;
protected static boolean isPentium4Compatible = false;
protected static boolean isPentiumMCompatible = false;
protected static boolean isAtomCompatible = false;
protected static boolean isCore2Compatible = false;
protected static boolean isCoreiCompatible = false;
// If modelString != null, the cpu is considered correctly identified.
protected static String modelString = null;
@Override
public boolean IsPentiumCompatible(){ return isPentiumCompatible; }
@Override
public boolean IsPentiumMMXCompatible(){ return isPentiumMMXCompatible; }
@Override
public boolean IsPentium2Compatible(){ return isPentium2Compatible; }
@Override
public boolean IsPentium3Compatible(){ return isPentium3Compatible; }
@Override
public boolean IsPentium4Compatible(){ return isPentium4Compatible; }
@Override
public boolean IsPentiumMCompatible(){ return isPentiumMCompatible; }
@Override
public boolean IsAtomCompatible(){ return isAtomCompatible; }
@Override
public boolean IsCore2Compatible(){ return isCore2Compatible; }
@Override
public boolean IsCoreiCompatible(){ return isCoreiCompatible; }
static
{
identifyCPU();
}
public String getCPUModelString() throws UnknownCPUException
{
if (modelString != null)
return modelString;
throw new UnknownCPUException("Unknown Intel CPU; Family="+CPUID.getCPUFamily()+", Model="+CPUID.getCPUModel());
}
private synchronized static void identifyCPU()
{
if (CPUID.getCPUExtendedModel() == 0){
if(CPUID.getCPUFamily() == 4){
switch(CPUID.getCPUModel()){
case 0:
modelString = "486 DX-25/33";
break;
case 1:
modelString = "486 DX-50";
break;
case 2:
modelString = "486 SX";
break;
case 3:
modelString = "486 DX/2";
break;
case 4:
modelString = "486 SL";
break;
case 5:
modelString = "486 SX/2";
break;
case 7:
modelString = "486 DX/2-WB";
break;
case 8:
modelString = "486 DX/4";
break;
case 9:
modelString = "486 DX/4-WB";
break;
}
}
}
if (CPUID.getCPUExtendedModel() == 0){
if(CPUID.getCPUFamily() == 5){
isPentiumCompatible = true;
switch(CPUID.getCPUModel()){
case 0:
modelString = "Pentium 60/66 A-step";
break;
case 1:
modelString = "Pentium 60/66";
break;
case 2:
modelString = "Pentium 75 - 200";
break;
case 3:
modelString = "OverDrive PODP5V83";
break;
case 4:
isPentiumMMXCompatible = true;
modelString = "Pentium MMX";
break;
case 7:
modelString = "Mobile Pentium 75 - 200";
break;
case 8:
isPentiumMMXCompatible = true;
modelString = "Mobile Pentium MMX";
break;
}
}
}
if(CPUID.getCPUFamily() == 6){
if (CPUID.getCPUExtendedModel() == 0){
isPentiumCompatible = true;
isPentiumMMXCompatible = true;
switch(CPUID.getCPUModel()){
case 0:
modelString = "Pentium Pro A-step";
break;
case 1:
modelString = "Pentium Pro";
break;
case 3:
isPentium2Compatible = true;
modelString = "Pentium II (Klamath)";
break;
case 5:
isPentium2Compatible = true;
modelString = "Pentium II (Deschutes), Celeron (Covington), Mobile Pentium II (Dixon)";
break;
case 6:
isPentium2Compatible = true;
modelString = "Mobile Pentium II, Celeron (Mendocino)";
break;
case 7:
isPentium2Compatible = true;
isPentium3Compatible = true;
modelString = "Pentium III (Katmai)";
break;
case 8:
isPentium2Compatible = true;
isPentium3Compatible = true;
modelString = "Pentium III (Coppermine), Celeron w/SSE";
break;
case 9:
isPentium2Compatible = true;
isPentium3Compatible = true;
isPentiumMCompatible = true;
isX64 = true;
modelString = "Pentium M (Banias)";
break;
case 10:
isPentium2Compatible = true;
isPentium3Compatible = true;
modelString = "Pentium III Xeon (Cascades)";
break;
case 11:
isPentium2Compatible = true;
isPentium3Compatible = true;
isPentiumMCompatible = true;
modelString = "Pentium III (130 nm)";
break;
case 13:
isPentium2Compatible = true;
isPentium3Compatible = true;
isPentiumMCompatible = true;
isX64 = true;
modelString = "Core (Yonah)";
break;
case 14:
isPentium2Compatible = true;
isPentium3Compatible = true;
isPentiumMCompatible = true;
isCore2Compatible = true;
isX64 = true;
modelString = "Core 2 (Conroe)";
break;
case 15:
isPentium2Compatible = true;
isPentium3Compatible = true;
isPentiumMCompatible = true;
isCore2Compatible = true;
isX64 = true;
modelString = "Core 2 (Conroe)";
break;
}
} else if (CPUID.getCPUExtendedModel() == 1){
isPentiumCompatible = true;
isPentiumMMXCompatible = true;
isPentium2Compatible = true;
isPentium3Compatible = true;
isPentium4Compatible = true;
isPentiumMCompatible = true;
isCore2Compatible = true;
isX64 = true;
switch(CPUID.getCPUModel()){
case 6:
modelString = "Celeron";
break;
case 10:
isCoreiCompatible = true;
modelString = "Core i7 (45nm)";
break;
case 12:
isAtomCompatible = true;
isCore2Compatible = false;
isPentium4Compatible = false;
isX64 = true;
modelString = "Atom";
break;
case 13:
isCoreiCompatible = true;
modelString = "Xeon MP (45nm)";
break;
case 14:
isCoreiCompatible = true;
modelString = "Core i5/i7 (45nm)";
break;
}
} else if (CPUID.getCPUExtendedModel() == 2){
isPentiumCompatible = true;
isPentiumMMXCompatible = true;
isPentium2Compatible = true;
isPentium3Compatible = true;
isPentium4Compatible = true;
isPentiumMCompatible = true;
isCore2Compatible = true;
isCoreiCompatible = true;
isX64 = true;
switch(CPUID.getCPUModel()){
case 5:
modelString = "Core i3 or i5/i7 mobile (32nm)";
break;
case 10:
modelString = "Core i7/i5 (32nm)";
break;
case 12:
modelString = "Core i7 (32nm)";
break;
case 14:
modelString = "Xeon MP (45nm)";
break;
case 15:
modelString = "Xeon MP (32nm)";
break;
}
}
}
if(CPUID.getCPUFamily() == 7){
switch(CPUID.getCPUModel()){
//Itanium.. TODO
}
}
if(CPUID.getCPUFamily() == 15){
if(CPUID.getCPUExtendedFamily() == 0){
isPentiumCompatible = true;
isPentiumMMXCompatible = true;
isPentium2Compatible = true;
isPentium3Compatible = true;
isPentium4Compatible = true;
switch(CPUID.getCPUModel()){
case 0:
modelString = "Pentium IV (180 nm)";
break;
case 1:
modelString = "Pentium IV (180 nm)";
break;
case 2:
modelString = "Pentium IV (130 nm)";
break;
case 3:
modelString = "Pentium IV (90 nm)";
break;
case 4:
isX64 = true;
modelString = "Pentium IV (90 nm)";
break;
case 6:
isX64 = true;
modelString = "Pentium IV (65 nm)";
break;
}
}
if(CPUID.getCPUExtendedFamily() == 1){
switch(CPUID.getCPUModel()){
// Itanium 2.. TODO
}
}
}
}
@Override
public boolean hasX64() {
return isX64;
}
}

View File

@ -8,6 +8,11 @@ package freenet.support.CPUInformation;
*
*/
public class UnknownCPUException extends RuntimeException {
/**
*
*/
private static final long serialVersionUID = 5166144274582583742L;
public UnknownCPUException() {
super();
}

View File

@ -0,0 +1,16 @@
package freenet.support.CPUInformation;
public interface VIACPUInfo extends CPUInfo{
/**
* @return true if the CPU present in the machine is at least an 'c3' CPU
*/
public boolean IsC3Compatible();
/**
* @return true if the CPU present in the machine is at least an 'nano' CPU
*/
public boolean IsNanoCompatible();
}

View File

@ -0,0 +1,68 @@
package freenet.support.CPUInformation;
class VIAInfoImpl extends CPUIDCPUInfo implements VIACPUInfo {
protected static boolean isC3Compatible = false;
protected static boolean isNanoCompatible = false;
// If modelString != null, the cpu is considered correctly identified.
protected static String modelString = null;
@Override
public boolean IsC3Compatible(){ return isC3Compatible; }
@Override
public boolean IsNanoCompatible(){ return isNanoCompatible; }
static
{
identifyCPU();
}
@Override
public String getCPUModelString()
{
if (modelString != null)
return modelString;
throw new UnknownCPUException("Unknown VIA CPU; Family="+(CPUID.getCPUFamily() + CPUID.getCPUExtendedFamily())+", Model="+(CPUID.getCPUModel() + CPUID.getCPUExtendedModel()));
}
@Override
public boolean hasX64()
{
return false;
}
private synchronized static void identifyCPU()
{
if(CPUID.getCPUFamily() == 6){
isC3Compatible = true; // Possibly not optimal
switch(CPUID.getCPUModel()){
case 5:
modelString = "Cyrix M2";
break;
case 6:
modelString = "C5 A/B";
break;
case 7:
modelString = "C5 C";
break;
case 8:
modelString = "C5 N";
break;
case 9:
modelString = "C5 XL/P";
break;
case 10:
modelString = "C5 J";
break;
case 15:
isNanoCompatible = true;
modelString = "Nano";
break;
}
}
}
}

View File

@ -17,13 +17,13 @@ public class AsyncFortunaStandalone extends FortunaStandalone implements Runnabl
* The router must override this via the prng.buffers property in the router context.
*/
private static final int DEFAULT_BUFFERS = 2;
private static final int BUFSIZE = 256*1024;
private int _bufferCount;
private static final int DEFAULT_BUFSIZE = 256*1024;
private final int _bufferCount;
private final byte asyncBuffers[][];
private final int status[];
private int nextBuf = 0;
private I2PAppContext _context;
private Log _log;
private final I2PAppContext _context;
private final Log _log;
private static final int STATUS_NEED_FILL = 0;
private static final int STATUS_FILLING = 1;
@ -33,7 +33,8 @@ public class AsyncFortunaStandalone extends FortunaStandalone implements Runnabl
public AsyncFortunaStandalone(I2PAppContext context) {
super();
_bufferCount = Math.max(context.getProperty("prng.buffers", DEFAULT_BUFFERS), 2);
asyncBuffers = new byte[_bufferCount][BUFSIZE];
int bufferSize = Math.max(context.getProperty("prng.bufferSize", DEFAULT_BUFSIZE), 16*1024);
asyncBuffers = new byte[_bufferCount][bufferSize];
status = new int[_bufferCount];
for (int i = 0; i < _bufferCount; i++)
status[i] = STATUS_NEED_FILL;

View File

@ -13,7 +13,7 @@ import org.bouncycastle.crypto.macs.I2PHMac;
/**
* Calculate the HMAC-SHA256 of a key+message. All the good stuff occurs
* in {@link org.bouncycastle.crypto.macs.I2PHMac} and
* {@link net.i2p.crypto.Sha256Standalone}.
* {@link gnu.crypto.hash.Sha256Standalone}.
*
* This should be compatible with javax.crypto.Mac.getInstance("HmacSHA256")
* but that is untested.

View File

@ -12,13 +12,13 @@ import net.i2p.util.Log;
public class RateStat {
private final static Log _log = new Log(RateStat.class);
/** unique name of the statistic */
private String _statName;
private final String _statName;
/** grouping under which the stat is kept */
private String _groupName;
private final String _groupName;
/** describe the stat */
private String _description;
private final String _description;
/** actual rate objects for this statistic */
private Rate _rates[];
private final Rate _rates[];
/** component we tell about events as they occur */
private StatLog _statLog;

View File

@ -17,20 +17,18 @@ import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
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.Queue;
import java.util.Set;
import java.util.TimeZone;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedBlockingQueue;
import net.i2p.I2PAppContext;
import net.i2p.data.DataHelper;
/**
* Manages the logging system, loading (and reloading) the configuration file,
@ -286,18 +284,11 @@ public class LogManager {
}
Properties p = new Properties();
FileInputStream fis = null;
try {
fis = new FileInputStream(cfgFile);
p.load(fis);
DataHelper.loadProps(p, cfgFile);
_configLastRead = _context.clock().now();
} catch (IOException ioe) {
System.err.println("Error loading logger config from " + cfgFile.getAbsolutePath());
} finally {
if (fis != null) try {
fis.close();
} catch (IOException ioe) { // nop
}
}
parseConfig(p);
updateLimits();
@ -363,6 +354,7 @@ public class LogManager {
private void parseLimits(Properties config) {
parseLimits(config, PROP_RECORD_PREFIX);
}
private void parseLimits(Properties config, String recordPrefix) {
_limits.clear();
if (config != null) {
@ -559,60 +551,47 @@ public class LogManager {
return _rotationLimit;
}
/** @return success */
public boolean saveConfig() {
String config = createConfig();
FileOutputStream fos = null;
Properties props = createConfig();
try {
fos = new FileOutputStream(_locationFile);
fos.write(config.getBytes());
DataHelper.storeProps(props, _locationFile);
return true;
} catch (IOException ioe) {
getLog(LogManager.class).error("Error saving the config", ioe);
return false;
} finally {
if (fos != null) try { fos.close(); } catch (IOException ioe) {}
}
}
private String createConfig() {
StringBuilder buf = new StringBuilder(8*1024);
buf.append(PROP_FORMAT).append('=').append(new String(_format)).append('\n');
buf.append(PROP_DATEFORMAT).append('=').append(_dateFormatPattern).append('\n');
buf.append(PROP_DISPLAYONSCREEN).append('=').append((_displayOnScreen ? "TRUE" : "FALSE")).append('\n');
private Properties createConfig() {
Properties rv = new OrderedProperties();
rv.setProperty(PROP_FORMAT, new String(_format));
rv.setProperty(PROP_DATEFORMAT, _dateFormatPattern);
rv.setProperty(PROP_DISPLAYONSCREEN, Boolean.toString(_displayOnScreen));
String filenameOverride = _context.getProperty(FILENAME_OVERRIDE_PROP);
if (filenameOverride == null)
buf.append(PROP_FILENAME).append('=').append(_baseLogfilename).append('\n');
rv.setProperty(PROP_FILENAME, _baseLogfilename);
else // this isn't technically correct - this could mess with some funky scenarios
buf.append(PROP_FILENAME).append('=').append(DEFAULT_FILENAME).append('\n');
rv.setProperty(PROP_FILENAME, DEFAULT_FILENAME);
if (_fileSize >= 1024*1024)
buf.append(PROP_FILESIZE).append('=').append( (_fileSize / (1024*1024))).append("m\n");
rv.setProperty(PROP_FILESIZE, (_fileSize / (1024*1024)) + "m");
else if (_fileSize >= 1024)
buf.append(PROP_FILESIZE).append('=').append( (_fileSize / (1024))).append("k\n");
rv.setProperty(PROP_FILESIZE, (_fileSize / (1024))+ "k");
else if (_fileSize > 0)
buf.append(PROP_FILESIZE).append('=').append(_fileSize).append('\n');
rv.setProperty(PROP_FILESIZE, Integer.toString(_fileSize));
// if <= 0, dont specify
buf.append(PROP_ROTATIONLIMIT).append('=').append(_rotationLimit).append('\n');
buf.append(PROP_DEFAULTLEVEL).append('=').append(Log.toLevelString(_defaultLimit)).append('\n');
buf.append(PROP_DISPLAYONSCREENLEVEL).append('=').append(Log.toLevelString(_onScreenLimit)).append('\n');
buf.append(PROP_CONSOLEBUFFERSIZE).append('=').append(_consoleBufferSize).append('\n');
rv.setProperty(PROP_ROTATIONLIMIT, Integer.toString(_rotationLimit));
rv.setProperty(PROP_DEFAULTLEVEL, Log.toLevelString(_defaultLimit));
rv.setProperty(PROP_DISPLAYONSCREENLEVEL, Log.toLevelString(_onScreenLimit));
rv.setProperty(PROP_CONSOLEBUFFERSIZE, Integer.toString(_consoleBufferSize));
buf.append("# log limit overrides:\n");
TreeMap limits = new TreeMap();
for (LogLimit lim : _limits) {
limits.put(lim.getRootName(), Log.toLevelString(lim.getLimit()));
}
for (Iterator iter = limits.entrySet().iterator(); iter.hasNext(); ) {
Map.Entry entry = (Map.Entry)iter.next();
String path = (String)entry.getKey();
String lim = (String)entry.getValue();
buf.append(PROP_RECORD_PREFIX).append(path);
buf.append('=').append(lim).append('\n');
rv.setProperty(PROP_RECORD_PREFIX + lim.getRootName(), Log.toLevelString(lim.getLimit()));
}
return buf.toString();
return rv;
}
/**

View File

@ -24,6 +24,7 @@ import freenet.support.CPUInformation.AMDCPUInfo;
import freenet.support.CPUInformation.CPUID;
import freenet.support.CPUInformation.CPUInfo;
import freenet.support.CPUInformation.IntelCPUInfo;
import freenet.support.CPUInformation.VIACPUInfo;
import freenet.support.CPUInformation.UnknownCPUException;
import net.i2p.I2PAppContext;
@ -124,15 +125,30 @@ public class NativeBigInteger extends BigInteger {
private final static String JBIGI_OPTIMIZATION_PENTIUM3 = "pentium3";
private final static String JBIGI_OPTIMIZATION_PENTIUM4 = "pentium4";
private final static String JBIGI_OPTIMIZATION_VIAC3 = "viac3";
/** below here @since 0.8.7 */
/**
* The 7 optimizations below here are since 0.8.7. Each of the 32-bit processors below
* needs an explicit fallback in getResourceList() or getMiddleName2().
* 64-bit processors will fallback to athlon64 and athlon in getResourceList().
* @since 0.8.7
*/
private final static String JBIGI_OPTIMIZATION_ATOM = "atom";
private final static String JBIGI_OPTIMIZATION_CORE2 = "core2";
private final static String JBIGI_OPTIMIZATION_COREI = "corei";
private final static String JBIGI_OPTIMIZATION_GEODE = "geode";
private final static String JBIGI_OPTIMIZATION_NANO = "nano";
private final static String JBIGI_OPTIMIZATION_PENTIUMM = "pentiumm";
/** all libjbibi builds are identical to pentium3, case handled in getMiddleName2() */
private final static String JBIGI_OPTIMIZATION_VIAC32 = "viac32";
/**
* Non-x86, no fallbacks to older libs or to "none"
* @since 0.8.7
*/
private final static String JBIGI_OPTIMIZATION_ARM = "arm";
/**
* Operating systems
*/
private static final boolean _isWin = System.getProperty("os.name").startsWith("Win");
private static final boolean _isOS2 = System.getProperty("os.name").startsWith("OS/2");
private static final boolean _isMac = System.getProperty("os.name").startsWith("Mac");
@ -154,6 +170,11 @@ public class NativeBigInteger extends BigInteger {
private static final boolean _is64 = "64".equals(System.getProperty("sun.arch.data.model")) ||
System.getProperty("os.arch").contains("64");
private static final boolean _isX86 = System.getProperty("os.arch").contains("86") ||
System.getProperty("os.arch").equals("amd64");
private static final boolean _isArm = System.getProperty("os.arch").startsWith("arm");
/* libjbigi.so vs jbigi.dll */
private static final String _libPrefix = (_isWin || _isOS2 ? "" : "lib");
private static final String _libSuffix = (_isWin || _isOS2 ? ".dll" : _isMac ? ".jnilib" : ".so");
@ -161,41 +182,43 @@ public class NativeBigInteger extends BigInteger {
private final static String sCPUType; //The CPU Type to optimize for (one of the above strings)
static {
if (_isMac) // replace with osx/mac friendly jni cpu type detection when we have one
sCPUType = null;
else
if (_isX86) // Don't try to resolve CPU type on PPC and other non x86 hardware
sCPUType = resolveCPUType();
else if (_isArm)
sCPUType = JBIGI_OPTIMIZATION_ARM;
else
sCPUType = null;
loadNative();
}
/** Tries to resolve the best type of CPU that we have an optimized jbigi-dll/so for.
/**
* Tries to resolve the best type of CPU that we have an optimized jbigi-dll/so for.
* This is for x86 only.
* @return A string containing the CPU-type or null if CPU type is unknown
*/
private static String resolveCPUType() {
if (_is64) {
// Test the 64 bit libjcpuid, even though we don't use it yet
try {
CPUInfo c = CPUID.getInfo();
_cpuModel = c.getCPUModelString();
} catch (UnknownCPUException e) {
// log?
}
return JBIGI_OPTIMIZATION_ATHLON64;
}
try {
CPUInfo c = CPUID.getInfo();
try {
_cpuModel = c.getCPUModelString();
} catch (UnknownCPUException e) {}
if (c.IsC3Compatible())
if (c instanceof VIACPUInfo){
VIACPUInfo viacpu = (VIACPUInfo) c;
if (viacpu.IsNanoCompatible())
return JBIGI_OPTIMIZATION_NANO;
return JBIGI_OPTIMIZATION_VIAC3;
if (c instanceof AMDCPUInfo) {
} else if(c instanceof AMDCPUInfo) {
AMDCPUInfo amdcpu = (AMDCPUInfo) c;
// Supported in CPUID, no GMP support
//if (amdcpu.IsBobcatCompatible())
// return JBIGI_OPTIMIZATION_BOBCAT;
if (amdcpu.IsAthlon64Compatible())
return JBIGI_OPTIMIZATION_ATHLON64;
if (amdcpu.IsAthlonCompatible())
return JBIGI_OPTIMIZATION_ATHLON;
// FIXME lots of geodes, but GMP configures like a K6-3
if (amdcpu.IsGeodeCompatible())
return JBIGI_OPTIMIZATION_GEODE;
if (amdcpu.IsK6_3_Compatible())
return JBIGI_OPTIMIZATION_K6_3;
if (amdcpu.IsK6_2_Compatible())
@ -204,8 +227,16 @@ public class NativeBigInteger extends BigInteger {
return JBIGI_OPTIMIZATION_K6;
} else if (c instanceof IntelCPUInfo) {
IntelCPUInfo intelcpu = (IntelCPUInfo) c;
if (intelcpu.IsCoreiCompatible())
return JBIGI_OPTIMIZATION_COREI;
if (intelcpu.IsCore2Compatible())
return JBIGI_OPTIMIZATION_CORE2;
if (intelcpu.IsPentium4Compatible())
return JBIGI_OPTIMIZATION_PENTIUM4;
if (intelcpu.IsAtomCompatible())
return JBIGI_OPTIMIZATION_ATOM;
if (intelcpu.IsPentiumMCompatible())
return JBIGI_OPTIMIZATION_PENTIUMM;
if (intelcpu.IsPentium3Compatible())
return JBIGI_OPTIMIZATION_PENTIUM3;
if (intelcpu.IsPentium2Compatible())
@ -600,12 +631,18 @@ public class NativeBigInteger extends BigInteger {
}
// the preferred selection
rv.add(_libPrefix + getMiddleName1() + primary + _libSuffix);
// athlon64 is always a fallback for 64 bit
if (_is64 && !primary.equals(JBIGI_OPTIMIZATION_ATHLON64))
rv.add(_libPrefix + getMiddleName1() + JBIGI_OPTIMIZATION_ATHLON64 + _libSuffix);
// Add fallbacks for any 32-bit that were added 0.8.7 or later here
if (primary.equals(JBIGI_OPTIMIZATION_ATOM))
// FIXME lots of geodes, but GMP configures like a K6-3, so pentium3 is probably a good backup
if (primary.equals(JBIGI_OPTIMIZATION_ATOM) ||
primary.equals(JBIGI_OPTIMIZATION_PENTIUMM) ||
primary.equals(JBIGI_OPTIMIZATION_GEODE))
rv.add(_libPrefix + getMiddleName1() + JBIGI_OPTIMIZATION_PENTIUM3 + _libSuffix);
// athlon is always a fallback for 64 bit, we have it for all architectures
// and it should be much better than "none"
if (_is64)
@ -617,9 +654,12 @@ public class NativeBigInteger extends BigInteger {
rv.add(_libPrefix + getMiddleName1() + JBIGI_OPTIMIZATION_ATHLON64 + _libSuffix);
}
}
// add libjbigi-xxx-none.so
// Add libjbigi-xxx-none_64.so
if (_is64)
rv.add(_libPrefix + getMiddleName1() + "none_64" + _libSuffix);
// Add libjbigi-xxx-none.so
// Note that libjbigi-osx-none.jnilib is a 'fat binary' with both PPC and x86-32
if (!_isArm)
rv.add(getResourceName(false));
return rv;
}

View File

@ -15,7 +15,9 @@ import net.i2p.data.DataHelper;
*/
public class ReusableGZIPInputStream extends ResettableGZIPInputStream {
// Apache Harmony 5.0M13 Deflater doesn't work after reset()
private static final boolean ENABLE_CACHING = !System.getProperty("java.vendor").startsWith("Apache");
// Neither does Android
private static final boolean ENABLE_CACHING = !(System.getProperty("java.vendor").startsWith("Apache") ||
System.getProperty("java.vendor").contains("Android"));
private static final LinkedBlockingQueue<ReusableGZIPInputStream> _available;
static {
if (ENABLE_CACHING)

1
debian/control vendored
View File

@ -9,6 +9,7 @@ Build-Depends: debhelper (>= 7.0.50~),
ant,
debconf,
default-jdk,
gettext,
libgmp3-dev,
po-debconf
Build-Depends-Indep: tor-geoipdb

View File

@ -1,3 +1,87 @@
2011-06-14 zzz
* Jbigi / NBI / wrapper / installer:
jbigi and wrapper files for arm.
Compiled on trimslice with gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)
Log postinstall errors to postinstall.log.
* RateStat: final
2011-06-13 duck
* Finnish, Italian, Polish and Vietnamese translations, thanks Transifex teams.
2011-06-13 zzz
* To ensure we don't release bad packages, fail the build
if gettext fails. Change property at top of build.xml if
you don't have gettext and want the build to continue.
2011-06-12 kytv
* Add jcpuid files (32 & 64bit) for Intel Macs
* Compile jbigi-osx-none for Intel Macs. libjbigi-osx-none.jnilib
is now a fat binary combining the already existing PPC
compile and my new x86 build.
2011-06-11 zzz
* i2psnark Polish translation, thanks polacco
2011-06-10 zzz
* CPUID, NativeBigI: Add support for atom, core2, corei, nano, pentiumm, geode
* Random: Add config setting prng.bufferSize to override the default 256 KB
* JBigI:
- Add new libjbigi-linux-xxx.so files built by sponge, now that we have
CPUID.java support for them (thanks hottuna).
See http://zzz.i2p/topics/306 for discussion and test results.
64-bit processors (atom, core2, corei, nano):
Built with GMP 5.0.2. License is LGPLv3.
Built by sponge with GCC 4.4.4, downloaded from
http://sponge.i2p/files/jbigi/gmp-5.0.2/
For 64-bit processors, both performance testing and
the GMP changelog http://gmplib.org/gmp5.0.html led us to use 5.0.2
for both the 32- and 64-bit versions, even though the files are twice as big.
5.0.x contains specific optimizations for atom and nano.
All 64-bit libs have _64 appended.
32-bit processors (pentiumm, geode):
Built with GMP 4.3.2. License is LGPLv3.
Built by sponge with GCC 4.4.4, downloaded from
http://sponge.i2p/files/jbigi/gmp-4.3.2/
The 4.3.2 files are half the size of those built with GMP 5.0.2, and there was
little or no performance difference between the two versions for 32 bit processors.
* NBI: Enable 64-bit processor detection
* Profiles: Skip and delete a corrupt profile read from disk
2011-06-10 kytv
* jcpuid & jbigi added for 64bit Windows (only used with a 64bit jvm).
2011-06-09 kytv
* Added an x64 wrapper for Windows. This is needed because a 32bit wrapper
cannot start a 64bit JVM.
2011-06-08 zzz
* Build:
- Add standard manifest to jbigi.jar
- Don't do 'mtn list changed' if not in a workspace or not needed
* LogManager: Use DataHelper methods for loading and storing config
2011-06-08 kytv
* Update jbigi/jcpuid Windows dlls. As was done for FreeBSD and Linux, the
libraries for 32bit CPUs were linked against gmp-4.3.2 and those for the
64bit CPUs were linked against gmp-5.0.2.
2011-06-07 kytv
* Upgrade the wrapper to 3.5.9. Noticable changes include:
- FreeBSD amd64 is now a supported arch along with i386. To use the wrapper
with the most recent version of FreeBSD the port 'misc/compat6x' will need
to be installed.
- OSX: Both Intel and PPC Macs are supported. 32-bit support. If you'd like 64-bit
support, please file a bug in trac with the output of "uname -m".
* Upgrade jbigi/jcpuid for FreeBSD i386 and add support for amd64. As was done with
the Linux compiles, 32bit compiles were linked with gmp 4.3.2 and 64 bit builds
(as well as 32bit builds for 64bit cpus) were linked against gmp 5.0.2.
2011-06-06 zzz
* Drop andorid/ directory; further development will happen in
an android-only branch.
2011-06-05 zzz
* Console: Tag stat descriptions at declaration rather than in Strings.java
* Data: Remove duplicate signature verification code
@ -13,7 +97,7 @@
The 4.3.2 files are half the size of those built with GMP 5.0.2, and there was
little or no performance difference between the two versions for 32 bit processors.
See http://zzz.i2p/topics/306 for discussion and test results.
- Replace old non-PIC 62-bit linux libs (GMP 4.1.4 built in 2005)
- Replace old non-PIC 64-bit linux libs (GMP 4.1.4 built in 2005)
with PIC libs built with GMP 5.0.2. License is LGPLv3.
Built by sponge with GCC 4.4.4, downloaded from
http://sponge.i2p/files/jbigi/gmp-5.0.2/

View File

@ -130,13 +130,34 @@
<parsable targetfile="$INSTALL_PATH/eepget" type="shell" os="unix|mac" />
<parsable targetfile="$INSTALL_PATH/runplain.sh" type="shell" os="unix|mac" />
<conditions>
<condition type="variable" id="is64bit">
<name>SYSTEM_sun_arch_data_model</name>
<value>64</value>
</condition>
</conditions>
<!-- postinstall stuff for windows -->
<executable targetfile="$INSTALL_PATH/installer/copy.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" />
<!-- Wrapper for 32bit Windows JVM -->
<executable targetfile="$INSTALL_PATH/installer/copy.jar" type="jar" stage="postinstall" keep="true" failure="warn"
condition="!is64bit"> <os family="windows" />
<args><arg value="$INSTALL_PATH\lib\wrapper\win32\I2Psvc.exe" /><arg value="$INSTALL_PATH" /></args></executable>
<executable targetfile="$INSTALL_PATH/installer/copy.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" />
<executable targetfile="$INSTALL_PATH/installer/copy.jar" type="jar" stage="postinstall" keep="true" failure="warn"
condition="!is64bit"> <os family="windows" />
<args><arg value="$INSTALL_PATH\lib\wrapper\win32\wrapper.dll" /><arg value="$INSTALL_PATH\lib" /></args></executable>
<executable targetfile="$INSTALL_PATH/installer/copy.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" />
<args><arg value="$INSTALL_PATH\lib\wrapper\win32\wrapper.jar" /><arg value="$INSTALL_PATH\lib" /></args></executable>
<!-- wrapper for 64bit Windows JVM -->
<executable targetfile="$INSTALL_PATH/installer/copy.jar" type="jar" stage="postinstall" keep="true" failure="warn"
condition="is64bit" > <os family="windows" />
<args><arg value="$INSTALL_PATH\lib\wrapper\win64\I2Psvc.exe" /><arg value="$INSTALL_PATH" /></args></executable>
<executable targetfile="$INSTALL_PATH/installer/copy.jar" type="jar" stage="postinstall" keep="true" failure="warn"
condition="is64bit" > <os family="windows" />
<args><arg value="$INSTALL_PATH\lib\wrapper\win64\wrapper.dll" /><arg value="$INSTALL_PATH\lib" /></args></executable>
<!-- We still copy the 32 bit version of wrapper.dll (even with a
64bit jvm) so that if a 32 bit jvm is installed in the
future, nothing breaks.
-->
<executable targetfile="$INSTALL_PATH/installer/copy.jar" type="jar" stage="postinstall" keep="true" failure="warn"
condition="is64bit" > <os family="windows" />
<args><arg value="$INSTALL_PATH\lib\wrapper\win32\wrapper.dll" /><arg value="$INSTALL_PATH\lib\wrapper-windows-x86-32.dll" /></args></executable>
<executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" />
<args><arg value="$INSTALL_PATH\i2prouter" /></args></executable>
<executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" />
@ -147,8 +168,6 @@
<args><arg value="$INSTALL_PATH\osid" /></args></executable>
<executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" />
<args><arg value="$INSTALL_PATH\postinstall.sh" /></args></executable>
<executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" />
<args><arg value="$INSTALL_PATH\postinstall.bat" /></args></executable>
<executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" />
<args><arg value="$INSTALL_PATH\uninstall_i2p_service_unix" /></args></executable>
<executable targetfile="$INSTALL_PATH/installer/delete.jar" type="jar" stage="postinstall" keep="true" failure="warn"> <os family="windows" />
@ -180,7 +199,7 @@
</pack>
<pack name="Windows Service" required="no">
<pack name="Windows Service" required="no" preselected="no">
<description>Automatically start I2P in the background</description>
<os family="windows" />
<executable targetfile="$INSTALL_PATH/set_config_dir_for_nt_service.bat" stage="postinstall" failure="warn" keep="false" />

View File

@ -39,6 +39,11 @@ Updates May/June 2011:
- jcpuid.c updated to be compatible with -fPIC
- 32 bit libjcpuid-linux-x86.so updated, compiled with -fPIC.
- 64 bit libjcpuid-linux-x86_64.so added, compiled with -fPIC.
- 32 bit libjcpuid-freebsd-x86.so updated, compiled with -fPIC.
- 64 bit libjcpid-freebsd-x86_64.so added, compiled with -fPIC.
- 32 bit libjcpuid-x86-solaris.so added, compiled with -fPIC.
- 32 bit jcpuid-x86-windows.dll updated (no PIC for Windows).
- 64 bit jcpuid-x86_64-windows.dll was added.
- See also javadoc and code in CPUID.java
jbigi:
- k62 and k63 are identical for all except windows; exception added to
@ -46,9 +51,15 @@ Updates May/June 2011:
- All 32 bit linux files updated with GMP 4.3.2, compiled with -fPIC,
except for athlon64 and pentium4, which use GMP 5.0.2.
- All 64 bit linux files updated with GMP 5.0.2.
- libjbigi-windows-athlon64.dll deleted, it was a duplicate of
libjbigi-windows-athlon.dll. NativeBigInteger now uses athlon as
a fallback for all 64-bit processors.
- All 32 bit freebsd files updated with GMP 4.3.2, compiled with -fPIC.
- All 64 bit freebsd files are new and were linked with GMP 5.0.2.
- All previously existing windows files were updated with GMP 4.3.2. Just as was
done for the non-windows architectures, files for 64 bit CPUs were
linked with GMP 5.0.2.
- jbigi-windows-athlon64.dll was updated, it used to be duplicate of
jbigi-windows-athlon.dll.
- jbigi-windows-*_64.dll are new and were compiled with the x86_64-w64-mingw32-gcc
cross compiler 4.5.3 in Linux and linked with GMP 5.0.2.
- Note that all new 64 bit files will use the _64 suffix. For example,
the old libjbigi-linux-athlon64.so file was 64 bit; now it is 32 bit
and the 64 bit file is libjbigi-linux-athlon64_64.so.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More