propagate from branch 'i2p.i2p.zzz.naming' (head 9626e0df682c8d5f706d2c814158ba451f3ebeb5)

to branch 'i2p.i2p' (head a3969e6c9c4fd5bfd69cd716ce0df191ad2af634)
This commit is contained in:
zzz
2011-05-20 14:12:07 +00:00
154 changed files with 11593 additions and 7472 deletions

View File

@ -1,7 +1,10 @@
[I2P.i2ptunnel]
source_file = apps/i2ptunnel/locale/messages_en.po
source_lang = en
trans.ar = apps/i2ptunnel/locale/messages_ar.po
trans.de = apps/i2ptunnel/locale/messages_de.po
trans.es = apps/i2ptunnel/locale/messages_es.po
trans.fr = apps/i2ptunnel/locale/messages_fr.po
trans.nl = apps/i2ptunnel/locale/messages_nl.po
trans.ru = apps/i2ptunnel/locale/messages_ru.po
trans.zh_CN = apps/i2ptunnel/locale/messages_zh.po
@ -9,6 +12,7 @@ trans.zh_CN = apps/i2ptunnel/locale/messages_zh.po
[I2P.routerconsole]
source_file = apps/routerconsole/locale/messages_en.po
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.fr = apps/routerconsole/locale/messages_fr.po
@ -16,22 +20,10 @@ trans.nl = apps/routerconsole/locale/messages_nl.po
trans.ru = apps/routerconsole/locale/messages_ru.po
trans.zh_CN = apps/routerconsole/locale/messages_zh.po
[I2P.susidns]
source_file = apps/susidns/locale/messages_en.po
source_lang = en
trans.de = apps/susidns/locale/messages_de.po
trans.nl = apps/susidns/locale/messages_nl.po
trans.ru = apps/susidns/locale/messages_ru.po
trans.zh_CN = apps/susidns/locale/messages_zh.po
[I2P.susimail]
source_file = apps/susimail/locale/messages_en.po
source_lang = en
trans.nl = apps/susimail/locale/messages_nl.po
[I2P.i2psnark]
source_file = apps/i2psnark/locale/messages_en.po
source_lang = en
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
@ -40,13 +32,36 @@ trans.pt = apps/i2psnark/locale/messages_pt.po
trans.ru = apps/i2psnark/locale/messages_ru.po
trans.zh_CN = apps/i2psnark/locale/messages_zh.po
[I2P.susidns]
source_file = apps/susidns/locale/messages_en.po
source_lang = en
trans.ar = apps/susidns/locale/messages_ar.po
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.ru = apps/susidns/locale/messages_ru.po
trans.zh_CN = apps/susidns/locale/messages_zh.po
[I2P.desktopgui]
source_file = apps/desktopgui/locale/messages_en.po
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.fr = apps/desktopgui/locale/messages_fr.po
trans.nl = apps/desktopgui/locale/messages_nl.po
trans.ru = apps/desktopgui/locale/messages_ru.po
trans.zh_CN = apps/desktopgui/locale/messages_zh.po
[I2P.susimail]
source_file = apps/susimail/locale/messages_en.po
source_lang = en
trans.de = apps/susimail/locale/messages_de.po
trans.es = apps/susimail/locale/messages_es.po
trans.fr = apps/susimail/locale/messages_fr.po
trans.nl = apps/susimail/locale/messages_nl.po
[main]
host = http://www.transifex.net

View File

@ -174,7 +174,7 @@ Applications:
See licenses/LICENSE-Apache2.0.txt
See licenses/NOTICE-Commons-Logging.txt
JRobin 1.4.0:
JRobin 1.5.9.1:
See licenses/LICENSE-LGPLv2.1.txt
Ministreaming Lib:

View File

@ -0,0 +1,55 @@
# 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
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2011-03-22 15:49+0000\n"
"Last-Translator: blabla <blabla@trash-mail.com>\n"
"Language-Team: German <>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
msgid "Start I2P"
msgstr "I2P starten"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "I2P is starting!"
msgstr "I2P startet gerade!"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "Starting"
msgstr "Startend"
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
msgid "Launch I2P Browser"
msgstr "I2P-Browser öffnen"
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
msgid "Configure desktopgui"
msgstr "Desktopgui konfigurieren"
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
msgid "Restart I2P"
msgstr "I2P neustarten"
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
msgid "Stop I2P"
msgstr "I2P beenden"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44
msgid "Tray icon configuration"
msgstr "Systemleistensymbol konfigurieren"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47
msgid "Should tray icon be enabled?"
msgstr "Systemleistensymbol aktivieren?"

View File

@ -0,0 +1,56 @@
# 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
# foo <foo@bar>, 2009.
#
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-02 23:57+0100\n"
"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
"Language-Team: Spanish (Castilian) <None>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
msgid "Start I2P"
msgstr "Iniciar I2P"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "I2P is starting!"
msgstr "I2P está iniciando!"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "Starting"
msgstr "Iniciando"
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
msgid "Launch I2P Browser"
msgstr "Lanzar navegador I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
msgid "Configure desktopgui"
msgstr "Configurar desktopgui"
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
msgid "Restart I2P"
msgstr "Reiniciar I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
msgid "Stop I2P"
msgstr "Detener I2P"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44
msgid "Tray icon configuration"
msgstr "Configuración del ícono de la barra de tareas"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47
msgid "Should tray icon be enabled?"
msgstr "¿Debería estar activado el ícono de la barra de tareas?"

View File

@ -0,0 +1,56 @@
# 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
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P desktopgui\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2011-03-30 21:58+0100\n"
"Last-Translator: magma <magma@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:23
msgid "Start I2P"
msgstr "Démarrer I2P"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "I2P is starting!"
msgstr "I2P démarre!"
#: src/net/i2p/desktopgui/ExternalTrayManager.java:38
msgid "Starting"
msgstr "Démarrage"
#: src/net/i2p/desktopgui/InternalTrayManager.java:26
msgid "Launch I2P Browser"
msgstr "Lancer le navigateur"
#: src/net/i2p/desktopgui/InternalTrayManager.java:50
msgid "Configure desktopgui"
msgstr "Configurer l'interface de bureau"
#: src/net/i2p/desktopgui/InternalTrayManager.java:67
msgid "Restart I2P"
msgstr "Redémarrer I2P"
#: src/net/i2p/desktopgui/InternalTrayManager.java:85
msgid "Stop I2P"
msgstr "Arrêter I2P"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:44
msgid "Tray icon configuration"
msgstr "Configuration de l'icône de notification"
#: src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java:47
msgid "Should tray icon be enabled?"
msgstr "Activer l'icône de notification"

View File

@ -983,6 +983,8 @@ public class SnarkManager implements Snark.CompleteListener {
} else if (info.getPieceLength(0) > Storage.MAX_PIECE_SIZE) {
return _("Pieces are too large in \"{0}\" ({1}B), deleting it.", info.getName(), DataHelper.formatSize2(info.getPieceLength(0))) + ' ' +
_("Limit is {0}B", DataHelper.formatSize2(Storage.MAX_PIECE_SIZE));
} else if (info.getTotalLength() <= 0) {
return _("Torrent \"{0}\" has no data, deleting it!", info.getName());
} else if (info.getTotalLength() > Storage.MAX_TOTAL_SIZE) {
System.out.println("torrent info: " + info.toString());
List lengths = info.getLengths();

View File

@ -111,6 +111,9 @@ public class Storage
lengthsList.add(Long.valueOf(length));
}
if (total <= 0)
throw new IOException("Torrent contains no data");
int pc_size = MIN_PIECE_SIZE;
int pcs = (int) ((total - 1)/pc_size) + 1;
while (pcs > MAX_PIECES && pc_size < MAX_PIECE_SIZE)

View File

@ -6,23 +6,22 @@
#
msgid ""
msgstr ""
"Project-Id-Version: I2P i2psnark\n"
"Report-Msgid-Bugs-To: \n"
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
"POT-Creation-Date: 2011-03-03 18:28+0000\n"
"PO-Revision-Date: 2011-01-03 00:58+0100\n"
"PO-Revision-Date: 2011-04-03 01:46+0100\n"
"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
"Language-Team: foo <foo@bar>\n"
"Language: \n"
"Language-Team: Spanish (Castilian) <None>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Spanish\n"
"Language: es\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 "Límite del número total de subidores cambiado a {0}"
msgstr "Límite del número total de subidores ha cambiado a {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:309
#, java-format
@ -40,15 +39,13 @@ msgid "Minimum up bandwidth limit is {0}KBps"
msgstr "El límite mínimo de ancho de banda para la subida está en {0} kbyte/s."
#: ../java/src/org/klomp/snark/SnarkManager.java:335
#, fuzzy, java-format
#, java-format
msgid "Startup delay changed to {0}"
msgstr "Demora del arranque cambiado a {0} minutos"
msgstr "Tiempo de espera al inicio fue cambiada a {0}."
#: ../java/src/org/klomp/snark/SnarkManager.java:386
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
msgstr ""
"Cambios de I2CP y del túnel tomarán efecto despues de detener todos los "
"torrents."
msgstr "Cambios de I2CP y del túnel tomarán efecto despues de detener todos los torrents."
#: ../java/src/org/klomp/snark/SnarkManager.java:393
msgid "Disconnecting old I2CP destination"
@ -60,11 +57,8 @@ msgid "I2CP settings changed to {0}"
msgstr "Preferencias de I2CP cambiadas a {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:402
msgid ""
"Unable to connect with the new settings, reverting to the old I2CP settings"
msgstr ""
"Conectarse no fue posíble con las nuevas preferencias I2CP, utilizaré las "
"anteriores."
msgid "Unable to connect with the new settings, reverting to the old I2CP settings"
msgstr "Conectarse no fue posíble con las nuevas preferencias I2CP, utilizaré las anteriores."
#: ../java/src/org/klomp/snark/SnarkManager.java:406
msgid "Unable to reconnect with the old settings!"
@ -89,27 +83,20 @@ msgstr "Arranque automático desactivado"
#: ../java/src/org/klomp/snark/SnarkManager.java:437
msgid "Enabled open trackers - torrent restart required to take effect."
msgstr ""
"Rastreadores abiertos activados - Para aplicar ello es necesario que "
"reinicies los torrents."
msgstr "Rastreadores abiertos activados - Para aplicar ello es necesario que reinicies los torrents."
#: ../java/src/org/klomp/snark/SnarkManager.java:439
msgid "Disabled open trackers - torrent restart required to take effect."
msgstr ""
"Rastreadores abiertos desactivados - Para aplicar ello es necesario que "
"reinicies los torrents."
msgstr "Rastreadores abiertos desactivados - Para aplicar ello es necesario que reinicies los torrents."
#: ../java/src/org/klomp/snark/SnarkManager.java:447
msgid "Open Tracker list changed - torrent restart required to take effect."
msgstr ""
"Lista de rastreadores abiertos cambiada - Para aplicar ello es necesario que "
"reinicies los torrents."
msgstr "Lista de rastreadores abiertos cambiada - Para aplicar ello es necesario que reinicies los torrents."
#: ../java/src/org/klomp/snark/SnarkManager.java:454
#, java-format
msgid "{0} theme loaded, return to main i2psnark page to view."
msgstr ""
"Tema {0} cargado. ¡Vuelve a la página principal de i2psnark para verlo!"
msgstr "Tema {0} cargado. ¡Vuelve a la página principal de i2psnark para verlo!"
#: ../java/src/org/klomp/snark/SnarkManager.java:461
msgid "Configuration unchanged."
@ -139,34 +126,30 @@ msgstr "Error: No se ha podido añadir el torrent {0}."
msgid "Cannot open \"{0}\""
msgstr "No se puede abrir \"{0}\""
#. TODO - if the existing one is a magnet, delete it and add the metainfo instead?
#. TODO - if the existing one is a magnet, delete it and add the metainfo
#. instead?
#: ../java/src/org/klomp/snark/SnarkManager.java:586
#: ../java/src/org/klomp/snark/SnarkManager.java:661
#: ../java/src/org/klomp/snark/SnarkManager.java:716
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976
#, fuzzy, java-format
#, java-format
msgid "Torrent with this info hash is already running: {0}"
msgstr "Torrent ya en marcha: {0}"
msgstr "Ya hay un Torrent con este hash ejecutándose: {0}"
#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName()));
#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P
#. open trackers and DHT only.", info.getName()));
#: ../java/src/org/klomp/snark/SnarkManager.java:593
#, fuzzy, java-format
msgid ""
"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers "
"only."
msgstr ""
"Advertencia - Se ignora rastreado no I2P en \"{0}\", anunciando sólo a los "
"rastreadorse abiertos de I2P"
#, java-format
msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only."
msgstr "Advertencia - No hay rastreadores de I2P en \"{0}\", se anunciará solamente a los rastreadores I2P abiertos."
#. 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()));
#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open
#. trackers are disabled, you should enable open trackers or DHT before
#. starting the torrent.", info.getName()));
#: ../java/src/org/klomp/snark/SnarkManager.java:598
#, fuzzy, java-format
msgid ""
"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is "
"enabled before starting this torrent."
msgstr ""
"Advertencia - Se ignora rastreado no I2P en \"{0}\", rastreadores abiertos "
"están desactivados. ¡Tienes que activarlos antes de iniciar el torrent!"
#, java-format
msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent."
msgstr "Advertencia - No se encuentran rastreadores de I2P en \"{0}\". Asegúrate de que OpenTracker esté activado antes de iniciar este torrent."
#: ../java/src/org/klomp/snark/SnarkManager.java:619
#, java-format
@ -177,7 +160,7 @@ msgstr "El archivo .torrent en \"{0}\" no es válido."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999
#, java-format
msgid "ERROR - Out of memory, cannot create torrent from {0}"
msgstr ""
msgstr "ERROR - Falta de memoria, no se puede crear un torrent de {0}."
#: ../java/src/org/klomp/snark/SnarkManager.java:635
#, java-format
@ -197,15 +180,13 @@ msgstr "Recogiendo {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:675
#, java-format
msgid ""
"We have no saved peers and no other torrents are running. Fetch of {0} will "
"not succeed until you start another torrent."
msgstr ""
msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent."
msgstr "No tenemos guardado ningún par y no se está activo ningún otro torrent. La obtención de {0} no tendrá éxito hasta que inicies otro torrent."
#: ../java/src/org/klomp/snark/SnarkManager.java:679
#, fuzzy, java-format
#, java-format
msgid "Adding {0}"
msgstr "Recogiendo {0}"
msgstr "Añadiendo {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:726
#: ../java/src/org/klomp/snark/SnarkManager.java:749
@ -222,9 +203,7 @@ msgstr "Hay demasiados archivos en \"{0}\", se borrará ({1}). "
#: ../java/src/org/klomp/snark/SnarkManager.java:974
#, java-format
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
msgstr ""
"Archivo de datos del torrent \"{0}\" no puede terminar en \".torrent' y será "
"borrado."
msgstr "Archivo de datos del torrent \"{0}\" no puede terminar en \".torrent' y será borrado."
#: ../java/src/org/klomp/snark/SnarkManager.java:976
#, java-format
@ -249,8 +228,7 @@ msgstr "El límite es de \"{0}\"Bytes"
#: ../java/src/org/klomp/snark/SnarkManager.java:989
#, java-format
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
msgstr ""
"Torrents más grandes que \"{0}\"Bytes aún no funcionan, se borrará \"{1}\"."
msgstr "Torrents más grandes que \"{0}\"Bytes aún no funcionan, se borrará \"{1}\"."
#: ../java/src/org/klomp/snark/SnarkManager.java:1005
#, java-format
@ -269,9 +247,9 @@ msgid "Torrent removed: \"{0}\""
msgstr "Torrent quitado: \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:1073
#, fuzzy, java-format
#, java-format
msgid "Adding torrents in {0}"
msgstr "Se añaden los torrents en {0} minutos ..."
msgstr "Añadiendo torrents en {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:1122
#, java-format
@ -279,9 +257,9 @@ msgid "Download finished: {0}"
msgstr "Terminada la descarga de \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:1170
#, fuzzy, java-format
#, java-format
msgid "Metainfo received for {0}"
msgstr "Torrent no se ha podido obtener de {0}"
msgstr "Metainfo recibida para {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:1171
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525
@ -423,15 +401,15 @@ msgstr[0] "1 par conectado"
msgstr[1] "{0} pares conectados"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496
#, fuzzy, java-format
#, java-format
msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
msgstr "Dirección no válida - tiene que comenzar con http://"
msgstr "URL no válida: debe comenzar con \"http://\", \"{0}\", o \"{1}\"."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571
#, fuzzy, java-format
#, java-format
msgid "Magnet deleted: {0}"
msgstr "Ha sido borrada la carpeta de datos: {0}"
msgstr "Magnet eliminado: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577
@ -467,12 +445,8 @@ msgstr "Torrent creado para \"{0}\""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655
#, java-format
msgid ""
"Many I2P trackers require you to register new torrents before seeding - "
"please do so before starting \"{0}\""
msgstr ""
"Muchos rastreadores en I2P requieren que te registres, antes de que puedas "
"subir el torrent. Por favor, ¡hazlo antes de iniciar \"{0}\"!"
msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\""
msgstr "Muchos rastreadores en I2P requieren que te registres, antes de que puedas subir el torrent. Por favor, ¡hazlo antes de iniciar \"{0}\"!"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
#, java-format
@ -486,8 +460,7 @@ msgstr "No se puede crear un torrent para datos inexistentes: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
msgid "Error creating torrent - you must enter a file or directory"
msgstr ""
"Error al crear el torrent - Tienes que especificar un archivo o una carpeta."
msgstr "Error al crear el torrent - Tienes que especificar un archivo o una carpeta."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
msgid "Stopping all torrents and closing the I2P tunnel."
@ -552,9 +525,8 @@ msgid "Stopped"
msgstr "detenido"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886
#, fuzzy
msgid "Torrent details"
msgstr "Torrents"
msgstr "Detalles del torrent"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
@ -587,21 +559,15 @@ msgstr "Iniciar"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982
msgid "Remove the torrent from the active list, deleting the .torrent file"
msgstr ""
"Quita el torrent de la lista de los torrents activos borrando el archivo ."
"torrent"
msgstr "Quita el torrent de la lista de los torrents activos borrando el archivo .torrent"
#. Can't figure out how to escape double quotes inside the onclick string.
#. Single quotes in translate strings with parameters must be doubled.
#. Then the remaining single quite must be escaped
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
#, java-format
msgid ""
"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
"data will not be deleted) ?"
msgstr ""
"¿Estás seguro de que quieres borrar el archivo \\''{0}.torrent\\''? (Datos "
"bajados no se borrarán.)"
msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?"
msgstr "¿Estás seguro de que quieres borrar el archivo \\''{0}.torrent\\''? (Datos bajados no se borrarán.)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990
msgid "Remove"
@ -616,12 +582,8 @@ msgstr "Borrar el archivo torrent y el/los archivo(s) de datos pertenecientes"
#. Then the remaining single quite must be escaped
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
#, java-format
msgid ""
"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
"data?"
msgstr ""
"¿Estás seguro de que quieres borrar el archivo torrent \\''{0}\\'' y todos "
"los datos descargados de este torrent?"
msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?"
msgstr "¿Estás seguro de que quieres borrar el archivo torrent \\''{0}\\'' y todos los datos descargados de este torrent?"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
msgid "Delete"
@ -649,7 +611,7 @@ msgstr "desinteresado (No tenemos las partes que el par quiere.)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
msgid "Choking (We are not allowing the peer to request pieces)"
msgstr "Moderando (De momento no se le permite al par solicitar más partes)"
msgstr "moderando (De momento no se le permite al par solicitar más partes)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159
#, java-format
@ -665,9 +627,8 @@ msgid "From URL"
msgstr "URL fuente"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193
msgid ""
"Enter the torrent file download URL (I2P only), magnet link, or maggot link"
msgstr ""
msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link"
msgstr "Introduce la URL de descarga de torrent (I2P solamente), enlace magnet o un enlace maggot"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198
msgid "Add torrent"
@ -680,23 +641,21 @@ msgstr "También puedes copiar archivos torrent a {0}."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203
msgid "Removing a .torrent will cause it to stop."
msgstr ""
"Quitar un archivo torrent resultará en que se detenga el torrent "
"perteneciente."
msgstr "Quitar un archivo torrent resultará en que se detenga el torrent perteneciente."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226
msgid "Create Torrent"
msgstr "Crear un torrent"
#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
#. 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 "Datos para sembrar"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
msgid "File or directory to seed (must be within the specified path)"
msgstr ""
"Archivo o carpeta para sembrar (tiene que estár en la carpeta especificada)"
msgstr "Archivo o carpeta para sembrar (tiene que estár en la carpeta especificada)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
@ -709,9 +668,8 @@ msgstr "Selecciona un rastreador"
#. out.write(_("Open trackers and DHT only"));
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
#, fuzzy
msgid "Open trackers only"
msgstr "Usar también rastreadores abiertos"
msgstr "Sólo rastreadores abiertos"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257
msgid "or"
@ -752,7 +710,7 @@ msgstr "Tema"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312
msgid "Startup delay"
msgstr "Demora del arranque"
msgstr "Tiempo de espera al arrancar"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314
msgid "minutes"
@ -783,12 +741,8 @@ msgid "Use open trackers also"
msgstr "Usar también rastreadores abiertos"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358
msgid ""
"If checked, announce torrents to open trackers as well as the tracker listed "
"in the torrent file"
msgstr ""
"Si está marcado, el torrent se anunciará a los rastreadores abiertos, además "
"de a los rastreadores especificados."
msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"
msgstr "Si está marcado, el torrent se anunciará a los rastreadores abiertos, además de a los rastreadores especificados."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362
msgid "Open tracker announce URLs"
@ -821,12 +775,12 @@ msgstr "Guardar ajustes"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436
#, java-format
msgid "Invalid magnet URL {0}"
msgstr ""
msgstr "URL de magnet no válida: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
#, java-format
msgid "Invalid info hash in magnet URL {0}"
msgstr ""
msgstr "Hash de información no válido en la URL magnet {0}"
#. * dummies for translation
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500
@ -844,9 +798,8 @@ msgstr[0] "1 túnel"
msgstr[1] "{0} túneles"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663
#, fuzzy
msgid "Completion"
msgstr "completo"
msgstr "Completado"
#. else unknown
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667
@ -855,21 +808,20 @@ msgid "Size"
msgstr "Tamaño"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672
#, fuzzy
msgid "Files"
msgstr "Archivo"
msgstr "Archivos"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674
msgid "Pieces"
msgstr ""
msgstr "Partes"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675
msgid "Piece size"
msgstr ""
msgstr "Tamaño de las partes"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
msgid "Magnet link"
msgstr ""
msgstr "Enlace de magnet"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753
@ -945,84 +897,3 @@ msgstr "Torrent en {0} no era válido"
msgid "Torrent was not retrieved from {0}"
msgstr "Torrent no se ha podido obtener de {0}"
#~ msgid "Torrent file must originate from an I2P-based tracker"
#~ msgstr "El archivo torrent debe incluir un rastreador I2P."
#~ msgid " theme locked and loaded."
#~ msgstr "tema cargado"
#~ msgid "Hide All Attached Peers [connected/total in swarm]"
#~ msgstr "Ocultar todos los pares conectados [conectados/todos]"
#~ msgid "Show All Attached Peers [connected/total in swarm]"
#~ msgstr "Mostrar todos los pares conectados [conectados/todos]"
#~ msgid "Loaded Torrents"
#~ msgstr "Torrents"
#~ msgid "Estimated Download Time"
#~ msgstr "tiempo restante de descarga"
#~ msgid "1"
#~ msgid_plural "{0}"
#~ msgstr[0] "{0}"
#~ msgstr[1] "{0}"
#~ msgid "Torrent file {0} does not exist"
#~ msgstr "Archivo del torrent {0} no existe"
#~ msgid "Copying torrent to {0}"
#~ msgstr "Copiando torrent a {0}"
#~ msgid "from {0}"
#~ msgstr "de {0}"
#~ msgid "Downloading"
#~ msgstr "descargando"
#~ msgid "FileSize"
#~ msgstr "Tamaño"
#~ msgid "Download Status"
#~ msgstr "Estado"
#~ msgid "size: {0}B"
#~ msgstr "Tamaño: {0}Bytes"
#~ msgid "Directory to store torrents and data"
#~ msgstr "Carpeta para guardar los archivos torrent y los datos"
#~ msgid "Do not download"
#~ msgstr "No descargues"
#~ msgid "Details"
#~ msgstr "Detalles"
#~ msgid "Cannot change the I2CP settings while torrents are active"
#~ msgstr ""
#~ "No se puede cammbiar los ajustes I2CP mientras estén activos los torrents"
#~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!"
#~ msgstr ""
#~ "Rastreador fuera de I2P en \"{0}\", borrando de la lista de rastreadores"
#~ msgid "{0} torrents"
#~ msgstr "{0} Torrents"
#~ msgid "Uninteresting"
#~ msgstr "no interesante"
#~ msgid "Choked"
#~ msgstr "frenado"
#~ msgid "Uninterested"
#~ msgstr "desinteresado"
#~ msgid "Choking"
#~ msgstr "frenando"
#~ msgid "Custom tracker URL"
#~ msgstr "URL especial del rastreador"
#~ msgid "Configure"
#~ msgstr "Ajustes"

View File

@ -8,15 +8,15 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P i2psnark\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-03 18:28+0000\n"
"PO-Revision-Date: 2010-12-31 02:22+0100\n"
"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
"POT-Creation-Date: 2011-05-02 11:08+0000\n"
"PO-Revision-Date: 2011-05-19 07:39+0100\n"
"Last-Translator: magma <magma@mail.i2p>\n"
"Language-Team: foo <foo@bar>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1\n"
"Plural-Forms: nplurals=2; plural=(n >= 2)\n"
"X-Poedit-Language: French\n"
#: ../java/src/org/klomp/snark/SnarkManager.java:307
@ -32,23 +32,21 @@ msgstr "La limite minimale agrégée des uploaders est : {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:321
#, java-format
msgid "Up BW limit changed to {0}KBps"
msgstr "La limite dupload modifiée : {0} Ko/s"
msgstr "Limite denvoi modifiée : {0} ko/s"
#: ../java/src/org/klomp/snark/SnarkManager.java:323
#, java-format
msgid "Minimum up bandwidth limit is {0}KBps"
msgstr "La limite minimale dupload est {0} Ko/s"
msgstr "La limite minimale denvoi est {0} ko/s"
#: ../java/src/org/klomp/snark/SnarkManager.java:335
#, fuzzy, java-format
#, java-format
msgid "Startup delay changed to {0}"
msgstr "Delais de démarrage modifié : {0} minutes"
msgstr "Délai de démarrage modifié à {0} minutes"
#: ../java/src/org/klomp/snark/SnarkManager.java:386
msgid "I2CP and tunnel changes will take effect after stopping all torrents"
msgstr ""
"Les modifications I2CP et des tunnels seront prise en compte après avoir "
"arrêté tous les torrents"
msgstr "Les modifications d'I2CP et des tunnels seront prise en compte après avoir arrêté tous les torrents"
#: ../java/src/org/klomp/snark/SnarkManager.java:393
msgid "Disconnecting old I2CP destination"
@ -60,11 +58,8 @@ msgid "I2CP settings changed to {0}"
msgstr "Les paramètres I2CP ont été changés : {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:402
msgid ""
"Unable to connect with the new settings, reverting to the old I2CP settings"
msgstr ""
"Impossible de se connecter avec les nouveaux paramètres, retour à l'ancienne "
"configuration I2CP"
msgid "Unable to connect with the new settings, reverting to the old I2CP settings"
msgstr "Impossible de se connecter avec les nouveaux paramètres, retour à l'ancienne configuration I2CP"
#: ../java/src/org/klomp/snark/SnarkManager.java:406
msgid "Unable to reconnect with the old settings!"
@ -77,42 +72,36 @@ msgstr "Reconnexion sur la nouvelle destination I2CP"
#: ../java/src/org/klomp/snark/SnarkManager.java:418
#, java-format
msgid "I2CP listener restarted for \"{0}\""
msgstr "Listener I2CP redémarré pour \"{0}\""
msgstr "Écouteur I2CP redémarré pour \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:429
msgid "Enabled autostart"
msgstr "Le démarrage automatique est activé"
msgstr "Démarrage automatique activé"
#: ../java/src/org/klomp/snark/SnarkManager.java:431
msgid "Disabled autostart"
msgstr "Le démarrage automatique est désactivé"
msgstr "Démarrage automatique désactivé"
#: ../java/src/org/klomp/snark/SnarkManager.java:437
msgid "Enabled open trackers - torrent restart required to take effect."
msgstr ""
"Les open trackers sont activés - ceci a nécessité un redémarrage des "
"torrents pour être pris en compte."
msgstr "Open trackers activés - redémarrage des torrents requis pour prise en compte."
#: ../java/src/org/klomp/snark/SnarkManager.java:439
msgid "Disabled open trackers - torrent restart required to take effect."
msgstr ""
"Les open trackers sont désactivés - ceci a nécessité un redémarrage des "
"torrents pour être pris en compte."
msgstr "Open trackers désactivés - redémarrage des torrents requis pour prise en compte."
#: ../java/src/org/klomp/snark/SnarkManager.java:447
msgid "Open Tracker list changed - torrent restart required to take effect."
msgstr ""
"Liste des Open trackers modifiée - ceci nécessite un redémarrage des "
"torrents pour être pris en compte"
msgstr "Liste des Open trackers modifiée - redémarrage des torrents requis pour prise en compte"
#: ../java/src/org/klomp/snark/SnarkManager.java:454
#, java-format
msgid "{0} theme loaded, return to main i2psnark page to view."
msgstr ""
msgstr "Thème {0} chargé, revenez à la page d''accueil d''i2psnark pour voir comme il est beau !"
#: ../java/src/org/klomp/snark/SnarkManager.java:461
msgid "Configuration unchanged."
msgstr "La configuration n'a pas été modifiée"
msgstr "Aucun changement de configuration."
#: ../java/src/org/klomp/snark/SnarkManager.java:471
#, java-format
@ -139,162 +128,152 @@ msgid "Cannot open \"{0}\""
msgstr "Impossible douvrir: \"{0}\""
#. TODO - if the existing one is a magnet, delete it and add the metainfo instead?
#: ../java/src/org/klomp/snark/SnarkManager.java:586
#: ../java/src/org/klomp/snark/SnarkManager.java:661
#: ../java/src/org/klomp/snark/SnarkManager.java:716
#: ../java/src/org/klomp/snark/SnarkManager.java:589
#: ../java/src/org/klomp/snark/SnarkManager.java:665
#: ../java/src/org/klomp/snark/SnarkManager.java:720
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976
#, fuzzy, java-format
#, java-format
msgid "Torrent with this info hash is already running: {0}"
msgstr "Torrent déjà actif: {0}"
msgstr "Un torrent avec cette empreinte est déjà actif: {0}"
#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName()));
#: ../java/src/org/klomp/snark/SnarkManager.java:593
#, fuzzy, java-format
msgid ""
"Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers "
"only."
msgstr ""
"Attention - Les trackers non-i2p dans \"{0}\" sont ignorés, seuls les open "
"trackers I2P seront utilisés!"
#: ../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 "Attention - Les trackers non-i2p dans \"{0}\" sont ignorés, seuls les trackers ouverts I2P seront utilisés!"
#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName()));
#: ../java/src/org/klomp/snark/SnarkManager.java:598
#, fuzzy, java-format
msgid ""
"Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is "
"enabled before starting this torrent."
msgstr ""
"Attention - Les trackers non-i2p dans \"{0}\" sont ignorés, et les open "
"trackers sont désactivés, vous devez activer les open trackers avant de "
"démarrer le torrent!"
#: ../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 "Attention - aucun tracker i2p dans \"{0}\". Vous devez activer les open trackers avant de démarrer le torrent!"
#: ../java/src/org/klomp/snark/SnarkManager.java:619
#: ../java/src/org/klomp/snark/SnarkManager.java:622
#, java-format
msgid "Torrent in \"{0}\" is invalid"
msgstr "Le torrent dans \"{0}\" est invalide"
#: ../java/src/org/klomp/snark/SnarkManager.java:624
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999
#: ../java/src/org/klomp/snark/SnarkManager.java:627
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998
#, java-format
msgid "ERROR - Out of memory, cannot create torrent from {0}"
msgstr ""
msgstr "ERREUR - Mémoire insuffisante, impossible de créer le torrent de {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:635
#: ../java/src/org/klomp/snark/SnarkManager.java:639
#, java-format
msgid "Torrent added and started: \"{0}\""
msgstr "Torrent ajouté et démarré: \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:637
#: ../java/src/org/klomp/snark/SnarkManager.java:641
#, java-format
msgid "Torrent added: \"{0}\""
msgstr "Torrent ajouté: \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:672
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
#: ../java/src/org/klomp/snark/SnarkManager.java:676
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
#, java-format
msgid "Fetching {0}"
msgstr "Envoi {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:675
#, java-format
msgid ""
"We have no saved peers and no other torrents are running. Fetch of {0} will "
"not succeed until you start another torrent."
msgstr ""
#: ../java/src/org/klomp/snark/SnarkManager.java:679
#, fuzzy, java-format
msgid "Adding {0}"
msgstr "Envoi {0}"
#, java-format
msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent."
msgstr "Aucun pair sauvegardé et aucun autre torrent en cours. Le téléchargement de {0} ne commencera que lorsque vous démarrerez un autre torrent."
#: ../java/src/org/klomp/snark/SnarkManager.java:726
#: ../java/src/org/klomp/snark/SnarkManager.java:749
#: ../java/src/org/klomp/snark/SnarkManager.java:1174
#, fuzzy, java-format
#: ../java/src/org/klomp/snark/SnarkManager.java:683
#, java-format
msgid "Adding {0}"
msgstr "Ajout {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:730
#: ../java/src/org/klomp/snark/SnarkManager.java:753
#: ../java/src/org/klomp/snark/SnarkManager.java:1180
#, java-format
msgid "Failed to copy torrent file to {0}"
msgstr "Impossible de copier le torrent vers {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:972
#: ../java/src/org/klomp/snark/SnarkManager.java:976
#, java-format
msgid "Too many files in \"{0}\" ({1}), deleting it!"
msgstr "Trop de fichiers dans \"{0}\" ({1}), suppression! "
#: ../java/src/org/klomp/snark/SnarkManager.java:974
#, java-format
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
msgstr ""
"Le fichier torrent \"{0}\" ne peut pas se terminer par \".torrent\", "
"suppression!"
#: ../java/src/org/klomp/snark/SnarkManager.java:976
#, java-format
msgid "No pieces in \"{0}\", deleting it!"
msgstr "Pas de morceaux dans \"{0}\", suppression!"
#: ../java/src/org/klomp/snark/SnarkManager.java:978
#, java-format
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
msgstr "Trop de morceaux dans \"{0}\" , la limite est {1}, suppression!"
msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
msgstr "Le fichier torrent \"{0}\" ne peut pas se terminer par \".torrent\", suppression!"
#: ../java/src/org/klomp/snark/SnarkManager.java:980
#, java-format
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
msgstr "Les morceaux sont trop larges dans \"{0}\" ({1}B), suppresion."
msgid "No pieces in \"{0}\", deleting it!"
msgstr "Pas de tronçon dans \"{0}\", suppression!"
#: ../java/src/org/klomp/snark/SnarkManager.java:981
#: ../java/src/org/klomp/snark/SnarkManager.java:982
#, java-format
msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
msgstr "Trop de tronçons dans \"{0}\" , la limite est {1}, suppression!"
#: ../java/src/org/klomp/snark/SnarkManager.java:984
#, java-format
msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
msgstr "Les tronçons sont trop larges dans \"{0}\" ({1}B), suppression."
#: ../java/src/org/klomp/snark/SnarkManager.java:985
#, java-format
msgid "Limit is {0}B"
msgstr "La limite est de \"{0}\"Octets"
msgstr "La limite est de \"{0}\"octets"
#: ../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 "Le fichier torrent \"{0}\" n'a pas de données, suppression!"
#: ../java/src/org/klomp/snark/SnarkManager.java:995
#, java-format
msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
msgstr ""
"Les torrents dont la taille est supérieure à \"{0}\"Octets ne sont pas "
"encore supportés, suppression \"{1}\"."
msgstr "Les torrents dont la taille est supérieure à \"{0}\"octets ne sont pas encore supportés, suppression \"{1}\"."
#: ../java/src/org/klomp/snark/SnarkManager.java:1005
#: ../java/src/org/klomp/snark/SnarkManager.java:1011
#, java-format
msgid "Error: Could not remove the torrent {0}"
msgstr "Erreur: Impossible de supprimer le torrent \"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:1026
#: ../java/src/org/klomp/snark/SnarkManager.java:1044
#: ../java/src/org/klomp/snark/SnarkManager.java:1032
#: ../java/src/org/klomp/snark/SnarkManager.java:1050
#, java-format
msgid "Torrent stopped: \"{0}\""
msgstr "Torrent arrêté:\"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:1065
#: ../java/src/org/klomp/snark/SnarkManager.java:1071
#, java-format
msgid "Torrent removed: \"{0}\""
msgstr "Torrent supprimé:\"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:1073
#, fuzzy, java-format
#: ../java/src/org/klomp/snark/SnarkManager.java:1079
#, java-format
msgid "Adding torrents in {0}"
msgstr "Ajouter des torrents dans {0} minutes"
msgstr "Ajout des torrents dans {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:1122
#: ../java/src/org/klomp/snark/SnarkManager.java:1128
#, java-format
msgid "Download finished: {0}"
msgstr "Téléchargement terminé:\"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:1170
#, fuzzy, java-format
#: ../java/src/org/klomp/snark/SnarkManager.java:1176
#, java-format
msgid "Metainfo received for {0}"
msgstr "Le torrent na pas été reçu par {0}"
msgstr "Metainfo reçue pour {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:1171
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525
#: ../java/src/org/klomp/snark/SnarkManager.java:1177
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526
#, java-format
msgid "Starting up torrent {0}"
msgstr "Démarrage du torrent {0}"
#: ../java/src/org/klomp/snark/SnarkManager.java:1225
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
msgid "Unable to connect to I2P!"
msgstr "Impossible de se connecter à I2P!"
#: ../java/src/org/klomp/snark/SnarkManager.java:1231
#: ../java/src/org/klomp/snark/SnarkManager.java:1237
#, java-format
msgid "Unable to add {0}"
msgstr "Impossible dajouter {0}"
@ -343,16 +322,15 @@ msgid "Torrent"
msgstr "Torrent"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310
#, fuzzy
msgid "Estimated time remaining"
msgstr "Octets restants"
msgstr "temps restant estimé"
# NOTE: purposely left blank to leave more room in the table header
# msgstr "Temps&nbsp;restant"
#. Translators: Please keep short or translate as " "
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313
msgid "ETA"
msgstr " Temps"
msgstr "Temps"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317
msgid "Downloaded"
@ -388,82 +366,81 @@ msgstr "Vitesse"
msgid "Up Rate"
msgstr "Taux d'envoi"
#: ../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 "Arrêter tous les torrents et le tunnel I2P"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368
msgid "Stop All"
msgstr "Arrêter tout"
#: ../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 "Démarrer tous les torrents et le tunnel I2P"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379
msgid "Start All"
msgstr "Démarrer tout"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398
msgid "No torrents loaded."
msgstr "Aucun torrent chargé."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403
msgid "Totals"
msgstr "Totaux"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405
#, java-format
msgid "1 torrent"
msgid_plural "{0} torrents"
msgstr[0] "1 torrent"
msgstr[0] "{0} torrent"
msgstr[1] "{0} torrents"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:408
#, java-format
msgid "1 connected peer"
msgid_plural "{0} connected peers"
msgstr[0] "1 pair connecté"
msgstr[0] "{0} pair connecté"
msgstr[1] "{0} pairs connectés"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496
#, fuzzy, java-format
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:497
#, java-format
msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
msgstr "URL invalide - elle doit débuter par http://"
msgstr "URL incorrecte - elle doit débuter par \"http://\", \"{0}\", ou \"{1}\""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571
#, fuzzy, java-format
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:572
#, java-format
msgid "Magnet deleted: {0}"
msgstr "Répertoire des données effacé: {0}"
msgstr "Magnet supprimé: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578
#, java-format
msgid "Torrent file deleted: {0}"
msgstr "Fichier torrent effacé: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594
#, java-format
msgid "Data file deleted: {0}"
msgstr "Fichier de données effacé: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
#, java-format
msgid "Data file could not be deleted: {0}"
msgstr "Le fichier de données ne peut être effacé: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605
#, java-format
msgid "Data dir deleted: {0}"
msgstr "Répertoire des données effacé: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638
msgid "Error creating torrent - you must select a tracker"
msgstr ""
"Erreur lors de la création du torrent - vous devez sélectionner un tracker"
msgstr "Erreur lors de la création du torrent - vous devez sélectionner un tracker"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653
#, java-format
@ -472,12 +449,8 @@ msgstr "Torrent créé pour \"{0}\""
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655
#, java-format
msgid ""
"Many I2P trackers require you to register new torrents before seeding - "
"please do so before starting \"{0}\""
msgstr ""
"De nombreux trackers I2P nécessitent denregistrer les nouveaux torrents "
"avant de seeder - faites-le avant de démarrer \"{0}\"!"
msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\""
msgstr "De nombreux trackers I2P nécessitent denregistrer les nouveaux torrents avant de seeder - faites-le avant de démarrer \"{0}\"!"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
#, java-format
@ -491,8 +464,7 @@ msgstr "Impossible de créer un torrent pour des données inexistantes: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
msgid "Error creating torrent - you must enter a file or directory"
msgstr ""
"Erreur de création du torrent - vous devez saisir un fichier ou un répertoire"
msgstr "Erreur de création du torrent - vous devez saisir un fichier ou un répertoire"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
msgid "Stopping all torrents and closing the I2P tunnel."
@ -523,8 +495,8 @@ msgstr "Erreur du tracker"
#, java-format
msgid "1 peer"
msgid_plural "{0} peers"
msgstr[0] "1 Pair"
msgstr[1] "{0} Pairs"
msgstr[0] "{0} pair"
msgstr[1] "{0} pairs"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:824
@ -557,15 +529,13 @@ msgid "Stopped"
msgstr "Arrêté"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886
#, fuzzy
msgid "Torrent details"
msgstr "Torrents"
msgstr "Détails du torrent"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
#, fuzzy
msgid "Info"
msgstr "Ignore"
msgstr "Info"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913
msgid "View files"
@ -600,12 +570,8 @@ msgstr "Enlever le torrent de la liste active, suprression du fichier .torrent"
#. Then the remaining single quite must be escaped
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
#, java-format
msgid ""
"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
"data will not be deleted) ?"
msgstr ""
"Etes-vous certain de vouloir supprimer le fichier \\''{0}.torrent\\'' (les "
"données déjà téléchargées ne seront pas supprimées) ?"
msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?"
msgstr "Êtes-vous certain de vouloir supprimer le fichier \\''{0}.torrent\\'' (les données déjà téléchargées ne seront pas supprimées) ?"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990
msgid "Remove"
@ -613,20 +579,15 @@ msgstr "Enlever"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001
msgid "Delete the .torrent file and the associated data file(s)"
msgstr ""
"Supprimer le fichier .torrent et le(s) fichier(s) de données associé(s)"
msgstr "Supprimer le fichier .torrent et le(s) fichier(s) de données associé(s)"
#. 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 ""
"Etes-vous certain de vouloir supprimer le torrent \\''{0}\\'' ainsi que "
"toutes les données téléchargées ?"
msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?"
msgstr "Êtes-vous certain de vouloir supprimer le torrent \\''{0}\\'' ainsi que toutes les données téléchargées ?"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
msgid "Delete"
@ -642,24 +603,24 @@ msgstr "Seed"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077
msgid "Uninteresting (The peer has no pieces we need)"
msgstr "aucun intérêt (le pair n'a aucun morceau utile)"
msgstr "Aucun intérêt (le pair n'a aucun tronçon utile)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079
msgid "Choked (The peer is not allowing us to request pieces)"
msgstr "bridé (le pair ne nous permet pas de demander un morceau)"
msgstr "bridé (le pair ne nous permet pas de demander des tronçons)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099
msgid "Uninterested (We have no pieces the peer needs)"
msgstr "aucun intérêt (nous n'avons aucun morceau utile au pair)"
msgstr "Pas intéressé (aucun tronçon utile au pair)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
msgid "Choking (We are not allowing the peer to request pieces)"
msgstr "bridage (nous ne permettons pas au pair de demander un morceau)"
msgstr "bridage (nous ne permettons pas au pair de demander un tronçon)"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159
#, fuzzy, java-format
#, java-format
msgid "Details at {0} tracker"
msgstr "Sélectionner un tracker"
msgstr "Détails au tracker {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188
msgid "Add Torrent"
@ -667,12 +628,11 @@ msgstr "Ajouter torrent"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190
msgid "From URL"
msgstr "Depuis l'url"
msgstr "Depuis l'URL"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193
msgid ""
"Enter the torrent file download URL (I2P only), magnet link, or maggot link"
msgstr ""
msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link"
msgstr "Entrez l'URL (I2P uniquement) de téléchargement du fichier torrent, du lien magnet ou maggot."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198
msgid "Add torrent"
@ -685,7 +645,7 @@ msgstr "Vous pouvez aussi copier les fichiers .torrent vers {0}."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203
msgid "Removing a .torrent will cause it to stop."
msgstr "La suppression d'un fichier .torrent entraine l'arrêt du torrent"
msgstr "La suppression d'un fichier .torrent entraîne l'arrêt du torrent."
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226
msgid "Create Torrent"
@ -711,9 +671,8 @@ msgstr "Sélectionner un tracker"
#. out.write(_("Open trackers and DHT only"));
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
#, fuzzy
msgid "Open trackers only"
msgstr "Utiliser les open trackers aussi"
msgstr "Trackers ouverts seulement"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257
msgid "or"
@ -721,7 +680,7 @@ msgstr "ou"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260
msgid "Specify custom tracker announce URL"
msgstr "Spécifier une URL personnalisée d'annonce de tracker"
msgstr "Spécifier une URL d'annonce de tracker personnalisé"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263
msgid "Create torrent"
@ -738,8 +697,7 @@ msgstr "Répertoire de données"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
msgid "Edit i2psnark.config and restart to change"
msgstr ""
"Editez i2psnark.config et redémarrez pour prendre en compte les modifications"
msgstr "Editez i2psnark.config et redémarrez pour prendre en compte les modifications"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291
msgid "Auto start"
@ -747,11 +705,11 @@ msgstr "Démarrage automatique"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295
msgid "If checked, automatically start torrents that are added"
msgstr "Si coché, les torrents démarrerons automatiquement lors de l'ajout"
msgstr "Si coché, les torrents démarreront automatiquement lors de l'ajout"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299
msgid "Theme"
msgstr ""
msgstr "Thème"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312
msgid "Startup delay"
@ -786,16 +744,12 @@ msgid "Use open trackers also"
msgstr "Utiliser les open trackers aussi"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358
msgid ""
"If checked, announce torrents to open trackers as well as the tracker listed "
"in the torrent file"
msgstr ""
"Si coché, les torrents seront annoncés vers les open trackers ainsi que vers "
"les trackers indiqués dans le fichier torrent"
msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"
msgstr "Si coché, les torrents seront annoncés vers les open trackers ainsi que vers les trackers indiqués dans le fichier torrent"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362
msgid "Open tracker announce URLs"
msgstr "URL d'annonce open tracker"
msgstr "URLs d'annonce open tracker"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374
msgid "Inbound Settings"
@ -824,32 +778,31 @@ msgstr "Sauvegarder la configuration"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1436
#, java-format
msgid "Invalid magnet URL {0}"
msgstr ""
msgstr "URL magnet {0} incorrecte"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
#, java-format
msgid "Invalid info hash in magnet URL {0}"
msgstr ""
msgstr "Info d'empreinte incorrecte dans l'URL magnet {0}"
#. * dummies for translation
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1500
#, java-format
msgid "1 hop"
msgid_plural "{0} hops"
msgstr[0] "1 saut"
msgstr[0] "{0} saut"
msgstr[1] "{0} sauts"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1501
#, java-format
msgid "1 tunnel"
msgid_plural "{0} tunnels"
msgstr[0] "1 tunnel"
msgstr[0] "{0} tunnel"
msgstr[1] "{0} tunnels"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663
#, fuzzy
msgid "Completion"
msgstr "Complet"
msgstr "Finalisation"
#. else unknown
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1667
@ -858,21 +811,20 @@ msgid "Size"
msgstr "Taille"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672
#, fuzzy
msgid "Files"
msgstr "Fichier"
msgstr "Fichiers"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674
msgid "Pieces"
msgstr ""
msgstr "Tronçons"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675
msgid "Piece size"
msgstr ""
msgstr "Taille des tronçons"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
msgid "Magnet link"
msgstr ""
msgstr "Lien magnet"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1753
@ -904,9 +856,8 @@ msgid "bytes remaining"
msgstr "Octets restants"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806
#, fuzzy
msgid "Open"
msgstr "Ouvrir fichier"
msgstr "Ouvrir le fichier"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832
msgid "High"
@ -918,7 +869,7 @@ msgstr "Normal"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842
msgid "Skip"
msgstr ""
msgstr "Ignorer"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851
msgid "Save priorities"
@ -927,27 +878,27 @@ msgstr "Sauvegarder les priorités"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1967
#, java-format
msgid "Torrent fetched from {0}"
msgstr "Torrent envoyé de {0}"
msgstr "Torrent reçu de {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988
#, java-format
msgid "Torrent already running: {0}"
msgstr "Torrent déjà actif: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990
#, java-format
msgid "Torrent already in the queue: {0}"
msgstr "Torrent déjà dans la queue: {0}"
msgstr "Torrent déjà dans la file d''attente: {0}"
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996
#, java-format
msgid "Torrent at {0} was not valid"
msgstr "Le torrent {0} n'est pas valide"
msgstr "Le torrent {0} est invalide"
#: ../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 "Le torrent na pas été reçu par {0}"
msgstr "Le torrent na pas été reçu de {0}"
#~ msgid "Torrent file must originate from an I2P-based tracker"
#~ msgstr "Le fichier torrent doit provenir d'un tracker I2P"

View File

@ -116,11 +116,6 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
// according to rfc2616 s14.3, this *should* force identity, even if
// "identity;q=1, *;q=0" didn't.
setEntry(headers, "Accept-encoding", "");
String modifiedHeader = formatHeaders(headers, command);
//String modifiedHeader = getModifiedHeader(socket);
if (_log.shouldLog(Log.DEBUG))
_log.debug("Modified header: [" + modifiedHeader + "]");
socket.setReadTimeout(readTimeout);
Socket s = new Socket(remoteHost, remotePort);
@ -138,9 +133,15 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
}
if (_log.shouldLog(Log.INFO))
_log.info("HTTP server encoding header: " + enc + "/" + altEnc);
boolean useGZIP = ( (enc != null) && (enc.indexOf("x-i2p-gzip") >= 0) );
if ( (!useGZIP) && (altEnc != null) && (altEnc.indexOf("x-i2p-gzip") >= 0) )
useGZIP = true;
boolean alt = (altEnc != null) && (altEnc.indexOf("x-i2p-gzip") >= 0);
boolean useGZIP = alt || ( (enc != null) && (enc.indexOf("x-i2p-gzip") >= 0) );
// Don't pass this on, outproxies should strip so I2P traffic isn't so obvious but they probably don't
if (alt)
headers.remove("X-Accept-encoding");
String modifiedHeader = formatHeaders(headers, command);
if (_log.shouldLog(Log.DEBUG))
_log.debug("Modified header: [" + modifiedHeader + "]");
if (allowGZIP && useGZIP) {
I2PAppThread req = new I2PAppThread(

View File

@ -0,0 +1,763 @@
# 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
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2011-04-18 21:39+0100\n"
"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
"Language-Team: Spanish (Castilian) <None>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474
#, java-format
msgid "To visit the destination in your host database, click <a href=\"{0}\">here</a>. To visit the conflicting addresshelper destination, click <a href=\"{1}\">here</a>."
msgstr "Para visitar el destino en la base de datos de hosts, haga clic <a href=\"{0}\">aquí</a> . Para visitar el destino del ayudante de direcciones en conflicto, haga clic <a href=\"{1}\">aquí</a> ."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
msgid "Click a link below to look for an address helper by using a \"jump\" service:"
msgstr "Haga clic en un enlace de debajo para buscar un ayudante de direcciones mediante el uso de un servicio de \"salto\":"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336
msgid "internal"
msgstr "interno"
#: ../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 "El formulario presentado es inválido, probablemente porque ha utilizado el botón 'atrás' o 'recargar' de su navegador. Por favor, vuelva a enviarlo."
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218
msgid "Configuration reloaded for all tunnels"
msgstr "Configuración recargada para todos los túneles"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230
msgid "Starting tunnel"
msgstr "Inicializando el túnel"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243
msgid "Stopping tunnel"
msgstr "Deteniendo el túnel"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311
msgid "Configuration changes saved"
msgstr "Cambios en la configuración guardados"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314
msgid "Failed to save configuration"
msgstr "No se pudo guardar la configuración"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398
msgid "New Tunnel"
msgstr "Nuevo túnel"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418
msgid "Standard client"
msgstr "Cliente estándar"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419
msgid "HTTP client"
msgstr "Cliente HTTP"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420
msgid "IRC client"
msgstr "Cliente IRC"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421
msgid "Standard server"
msgstr "Servidor estándar"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422
msgid "HTTP server"
msgstr "Servidor 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 IRC SOCKS"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425
msgid "CONNECT/SSL/HTTPS proxy"
msgstr "Proxy CONNECT/SSL/HTTPS"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426
msgid "IRC server"
msgstr "Servidor de IRC"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427
msgid "Streamr client"
msgstr "Cliente Streamr"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428
msgid "Streamr server"
msgstr "Servidor Streamr"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429
msgid "HTTP bidir"
msgstr "HTTP bidir"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:517
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:290
msgid "Host not set"
msgstr "Host no establecido"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:521
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:272
msgid "Port not set"
msgstr "Puerto no establecido"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73
msgid "I2P Tunnel Manager - Edit Client Tunnel"
msgstr "Gestor del túneles I2P - Editar túnel de cliente"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93
msgid "Edit proxy settings"
msgstr "Editar configuración de proxy"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101
msgid "New proxy settings"
msgstr "Nueva configuración de proxy"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:242
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257
msgid "Name"
msgstr "Nombre"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:279
msgid "Type"
msgstr "Tipo"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:386
msgid "Description"
msgstr "Descripción"
#: ../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 "Objetivo"
#: ../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 "Punto de Acceso"
#: ../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 "requerido"
#: ../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 "Accesible por"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180
msgid "Outproxies"
msgstr "Outproxis"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187
msgid "Tunnel Destination"
msgstr "Túnel del Destino"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199
msgid "name or destination"
msgstr "nombre o destino"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202
msgid "b32 not recommended"
msgstr "b32 no recomendado"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208
msgid "Shared Client"
msgstr "Túnel Compartido"
#: ../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 "(¿Compartir túneles con otros clientes y clientes de IRC/http? Cambiar esto requiere reiniciar el proxy de cliente)"
#: ../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 "Autoarranque"
#: ../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 "(Marque la casilla para \"SI\")"
#: ../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 "Opciones avanzadas de red"
#: ../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 "(NOTA: cuando este proxy de cliente está configurado para compartir túneles, entonces estas opciones son para todos los clientes de proxy compartidos!)"
#: ../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 "Opciones de Túnel"
#: ../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 "Longitud"
#: ../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 "Túnel de 0 saltos (anonimato bajo, latencia baja)"
#: ../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 "Túnel de 1 salto (anonimato medio, latencia media)"
#: ../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 "Túnel de 2 saltos (anonimato alto, latencia alta)"
#: ../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 "Túnel de 3 saltos (anonimato muy alto, rendimiento pobre)"
#: ../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 "saltos de túnel (rendimiento muy pobre)"
#: ../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 "Variación"
#: ../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 "Variación de 0 saltos (sin aleatoriedad, rendimiento constante)"
#: ../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 "Variación de + 0-1 saltos (aleatoriedad media aditiva, rendimiento substractivo)"
#: ../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 "Variación de + 0-2 saltos (aleatoriedad alta aditiva, rendimiento substractivo)"
#: ../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 "Variación de +/- 0-1 saltos (aleatoriedad estándar, rendimiento estándar)"
#: ../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 "Variación de +/- 0-2 saltos (no recomendado)"
#: ../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 "Variación de saltos"
#: ../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 "Número"
#: ../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 entrante, 1 túnel de salida (bajo uso de ancho de banda, menos fiabilidad)"
#: ../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 entrantes, 2 túneles de salida (uso de ancho de banda estándar, fiabilidad estándar)"
#: ../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 entrantes, 3 túneles de salida (mayor uso de ancho de banda, mayor fiabilidad)"
#: ../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 "túneles"
#: ../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 "Número de respaldo"
#: ../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 túneles de respaldo (redundancia 0, no aumenta el uso de recursos)"
#: ../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 túnel de respaldo en cada dirección (redundancia baja, uso bajo de recursos)"
#: ../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 túneles de respaldo en cada dirección (redundancia media, uso de recursos medio)"
#: ../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 túneles de respaldo en cada dirección (alta redundancia, uso de recursos alto)"
#: ../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 "túneles de respaldo"
#: ../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 "Perfil"
#: ../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 "conexión interactiva"
#: ../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 "conexión en masa (descargas/web/BT)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378
msgid "Delay Connect"
msgstr "Retrasar Conexión"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382
msgid "for request/response connections"
msgstr "para las conexiones de solicitud/respuesta"
#: ../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 "Dirección I2CP del router"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
msgid "Host"
msgstr "Host"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266
msgid "Port"
msgstr "Puerto"
#: ../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 "Reducir la cantidad de túneles cuando se está inactivo"
#: ../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 "Habilitar"
#: ../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 "Número de túneles reducido"
#: ../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 "Minutos de inactividad"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420
msgid "Close tunnels when idle"
msgstr "Cerrar los túneles cuando se está inactivo"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426
msgid "New Keys on Reopen"
msgstr "Nuevas claves al reabrir"
#: ../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 "Desactivar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440
msgid "Delay tunnel open until required"
msgstr "Retrasar apertura del túnel hasta que sea necesario"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450
msgid "Persistent private key"
msgstr "Clave privada persistente"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456
msgid "File"
msgstr "Archivo"
#: ../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 "destino local"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464
msgid "(if known)"
msgstr "(Si se conoce)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470
msgid "Local Authorization"
msgstr "Autorización local"
#: ../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 "Nombre de usuario"
#: ../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 "Contraseña"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484
msgid "Outproxy Authorization"
msgstr "Autorización outproxy"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502
msgid "Jump URL List"
msgstr "Lista de URL de salto"
#: ../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 "Opciones personalizadas"
#: ../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 "NOTA: Si el túnel se está ejecutando actualmente, la mayoría de los cambios no tendrán efecto hasta que se detenga y reinicie el túnel."
#: ../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 "Cancelar"
#: ../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 "Eliminar"
#: ../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 "Guardar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73
msgid "I2P Tunnel Manager - Edit Server Tunnel"
msgstr "Gestor del túneles I2P - Editar túnel servidor"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93
msgid "Edit server settings"
msgstr "Editar configuración del servidor"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:101
msgid "New server settings"
msgstr "Nueva configuración del servidor"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199
msgid "Website name"
msgstr "Nombre de la página"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203
msgid "(leave blank for outproxies)"
msgstr "(Dejar en blanco para outproxies)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208
msgid "Private key file"
msgstr "archivo de clave privada"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230
msgid "Add to local addressbook"
msgstr "Agregar a la libreta de direcciones local"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237
msgid "Hostname Signature"
msgstr "Firma del Hostname"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417
msgid "Encrypt Leaseset"
msgstr "Cifrar Leaseset"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423
msgid "Encryption Key"
msgstr "Clave de cifrado"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427
msgid "Generate New Key"
msgstr "Generar nueva clave"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
msgid "Generate"
msgstr "Generar"
#: ../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 "(El túnel debe detenerse primero)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433
msgid "Restricted Access List"
msgstr "Lista de acceso restringido"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
msgid "Whitelist"
msgstr "Lista blanca"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
msgid "Blacklist"
msgstr "Lista negra"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
msgid "Access List"
msgstr "Lista de acceso"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
msgid "Inbound connection limits (0=unlimited)"
msgstr "Límites de conexiones entrantes (0 = sin límite)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453
msgid "Per client"
msgstr "Por cliente"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
msgid "Per minute"
msgstr "por minuto"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
msgid "Per hour"
msgstr "Por hora"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
msgid "Per day"
msgstr "Por día"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
msgid "Total"
msgstr "Total"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
msgid "Max concurrent connections (0=unlimited)"
msgstr "Número máximo de conexiones simultáneas (0 = sin límite)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
msgid "New Certificate type"
msgstr "Nuevo tipo de certificado"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495
msgid "None"
msgstr "Ninguno"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499
msgid "Hashcash (effort)"
msgstr "Hashcash (esfuerzo)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505
msgid "Hashcash Calc Time"
msgstr "Tiempo de Calc Hashcash "
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
msgid "Estimate"
msgstr "Estimación"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509
msgid "Hidden"
msgstr "Oculto"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513
msgid "Signed (signed by)"
msgstr "Firmado (firmado por)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519
msgid "Modify Certificate"
msgstr "Modificar Certificado"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
msgid "Modify"
msgstr "Modificar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:71
msgid "I2P Tunnel Manager - List"
msgstr "Gestor de túneles I2P - Lista"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83
msgid "Status Messages"
msgstr "Mensajes de estado"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:87
msgid "Refresh"
msgstr "Actualizar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:91
msgid "Stop All"
msgstr "Detener todos"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95
msgid "Start All"
msgstr "Iniciar todos"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99
msgid "Restart All"
msgstr "Reiniciar todos"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103
msgid "Reload Config"
msgstr "Actualizar configuración"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105
msgid "I2P Server Tunnels"
msgstr "Túneles de servidor I2P"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130
msgid "Points at"
msgstr "Apunta a"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:153
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:157
msgid "Preview"
msgstr "Preview"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:297
msgid "Status"
msgstr "Estado"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163
msgid "Base32 Address"
msgstr "Dirección Base32"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171
msgid "No Preview"
msgstr "Sin vista previa"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:304
msgid "Starting..."
msgstr "Iniciando..."
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:311
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:325
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:339
msgid "Stop"
msgstr "Detener"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:332
msgid "Running"
msgstr "Ejecutándose"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346
msgid "Stopped"
msgstr "Detenido"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:353
msgid "Start"
msgstr "Iniciar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234
msgid "New server tunnel"
msgstr "Nuevo servidor de túnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:396
msgid "Standard"
msgstr "Estándar"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:398
msgid "Create"
msgstr "Crear"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240
msgid "I2P Client Tunnels"
msgstr "Túneles de cliente I2P"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:283
msgid "Interface"
msgstr "Interfaz"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:318
msgid "Standby"
msgstr "En espera"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:363
msgid "Outproxy"
msgstr "Outproxy"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:367
msgid "Destination"
msgstr "Destino"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:381
msgid "none"
msgstr "ninguno"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:394
msgid "New client tunnel"
msgstr "Nuevo túnel de cliente"

View File

@ -0,0 +1,763 @@
# 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
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P i2ptunnel\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-25 15:21+0000\n"
"PO-Revision-Date: 2011-04-09 02:46+0100\n"
"Last-Translator: magma <magma@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n >= 2)\n"
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:474
#, java-format
msgid "To visit the destination in your host database, click <a href=\"{0}\">here</a>. To visit the conflicting addresshelper destination, click <a href=\"{1}\">here</a>."
msgstr "Pour aller à la destination de votre base de données d''hôtes, cliquez <a href=\"{0}\">here</a>. Pour aller à la destination de l''aide d''adresse en conflit, cliquez <a href=\"{1}\">ici</a>."
#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:931
msgid "Click a link below to look for an address helper by using a \"jump\" service:"
msgstr "Cliquez sur un des liens ci-dessous pour chercher une aide d'adresse en utilisant un \"service de saut\":"
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:326
#: ../java/src/net/i2p/i2ptunnel/web/EditBean.java:336
msgid "internal"
msgstr "interne"
#: ../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 "Échec de soumission du formulaire: vous avez peut-être utilisé le bouton \"Page précédente\" ou \"Recharger\" de votre navigateur. Merci de soumettre à nouveau."
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:218
msgid "Configuration reloaded for all tunnels"
msgstr "Configuration rechargée pour tous les tunnels"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:230
msgid "Starting tunnel"
msgstr "Démarrage du tunnel"
#. and give them something to look at in any case
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:243
msgid "Stopping tunnel"
msgstr "Arrêt du tunnel"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:311
msgid "Configuration changes saved"
msgstr "Modification de configuration enregistrée"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:314
msgid "Failed to save configuration"
msgstr "Échec d'enregistrement de la configuration"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398
msgid "New Tunnel"
msgstr "Nouveau tunnel"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:418
msgid "Standard client"
msgstr "Client standard"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:419
msgid "HTTP client"
msgstr "Client HTTP"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:420
msgid "IRC client"
msgstr "Client IRC"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:421
msgid "Standard server"
msgstr "Serveur standard"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:422
msgid "HTTP server"
msgstr "Serveur HTTP"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:423
msgid "SOCKS 4/4a/5 proxy"
msgstr "Mandataire SOCKS 4/4a/5"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:424
msgid "SOCKS IRC proxy"
msgstr "Mandataire IRC SOCKS"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:425
msgid "CONNECT/SSL/HTTPS proxy"
msgstr "Mandataire CONNECT/SSL/HTTPS"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:426
msgid "IRC server"
msgstr "Serveur IRC"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:427
msgid "Streamr client"
msgstr "Client flux"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:428
msgid "Streamr server"
msgstr "Serveur flux"
#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:429
msgid "HTTP bidir"
msgstr "bidir HTTP"
#: ../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 "Hôte non défini"
#: ../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 "Port non défini"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73
msgid "I2P Tunnel Manager - Edit Client Tunnel"
msgstr "Gestionnaire de tunnels I2P: Modifiez le tunnel client"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93
msgid "Edit proxy settings"
msgstr "Modifiez les réglages de mandataire"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101
msgid "New proxy settings"
msgstr "Paramètres de nouveau mandataire"
#: ../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 "Nom"
#: ../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 "Type"
#: ../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 "Description"
#: ../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 "Cible"
#: ../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 "Point d'accès"
#: ../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 "requis"
#: ../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 "Joignable par"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:180
msgid "Outproxies"
msgstr "Mandataires sortants"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:187
msgid "Tunnel Destination"
msgstr "Destination de tunnel"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:199
msgid "name or destination"
msgstr "nom ou destination"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202
msgid "b32 not recommended"
msgstr "b32 déconseillée"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:208
msgid "Shared Client"
msgstr "Client partagé"
#: ../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 "Partager les tunnels avec d'autres clients et des clients http/irc? La modification requiert le redémarrage du client mandataire)"
#: ../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 "Démarrage automatique"
#: ../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 "(Cochez la case pour le démarrage auto en même temps que le routeur)"
#: ../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 "Options de réseau avancées"
#: ../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 "(ATTENTION : quand ce mandataire client est configuré pour partager les tunnels, ces options sont appliquées à tous les mandataires clients partagé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 "Options de tunnel"
#: ../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 "Longueur"
#: ../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 "Tunnel à 0 saut (anonymat et latence faibles)"
#: ../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 "Tunnel à 1 saut (anonymat et latence moyens)"
#: ../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 "Tunnel à 2 sauts (anonymat et latence élevés)"
#: ../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 "Tunnel à 3 sauts (anonymat et latence très élevés)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:256
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:275
msgid "hop tunnel (very poor performance)"
msgstr "Tunnel de saut (performances médiocres)"
#: ../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 "Variance"
#: ../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 "Variance à 0 saut (pas d'aléa, performances stables)"
#: ../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 "Variance à + 0 ou 1 saut (aléa moyen, performances diminuées)"
#: ../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 "Variance à + 0 à 2 sauts (aléa élevé, performances diminuées)"
#: ../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 "Variance à +/- 0 ou 1 saut (aléas légers, performances diminuées)"
#: ../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 "Variance à +/- 0 à 2 sauts (déconseillée)"
#: ../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 "variance de saut"
#: ../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 "Nombre"
#: ../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 "Tunnel à 1 entrant/1 sortant (faible consommation de bande passante, moins fiable)"
#: ../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 "Tunnels à 2 entrants/2 sortants (consommation de bande passante standard, fiabilité standard)"
#: ../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 "Tunnels à 3 entrants/3 sortants (consommation de bande passante plus élevée, fiabilité élevée)"
#: ../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 "tunnels"
#: ../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 "Secours"
#: ../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 "Aucun tunnel de secours (pas de tolérance de pannes, pas de consommation de ressources) "
#: ../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 tunnel de secours par direction (légère tolérance de pannes, faible consommation de ressources)"
#: ../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 tunnels de secours par direction (tolérance de pannes moyenne, consommation de ressources moyenne)"
#: ../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 tunnels de secours par direction (tolérance de pannes élevée, consommation de ressources élevée)"
#: ../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 "Tunnels de secours"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:365
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:384
msgid "Profile"
msgstr "Profil"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:372
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:391
msgid "interactive connection"
msgstr "connexion interactive"
#: ../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 "connexion forts transferts (téléchargements/sites web/BT)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:378
msgid "Delay Connect"
msgstr "Retard à la connexion"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:382
msgid "for request/response connections"
msgstr "pour les connexions de demandes/réponses"
#: ../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 "Adresse I2CP du routeur"
#: ../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 "Hôte"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:396
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:148
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:409
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:247
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:269
msgid "Port"
msgstr "Port"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:406
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:479
msgid "Reduce tunnel quantity when idle"
msgstr "Réduire le nombre de tunnels quand inactif"
#: ../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 "Activer"
#: ../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 "Réduire à"
#: ../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 "Minutes d'inactivité"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420
msgid "Close tunnels when idle"
msgstr "Fermer les tunnels quand inactif"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426
msgid "New Keys on Reopen"
msgstr "Nouvelles clés à la réouverture"
#: ../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 "Désactiver"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440
msgid "Delay tunnel open until required"
msgstr "Retarder l'ouverture jusqu'à l'utilisation"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:450
msgid "Persistent private key"
msgstr "Clé privée persistante"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456
msgid "File"
msgstr "Fichier"
#: ../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 "Destination locale"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464
msgid "(if known)"
msgstr "(si connu)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:470
msgid "Local Authorization"
msgstr "Autorisation locale"
#: ../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 "Identifiant"
#: ../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 "Mot de passe"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484
msgid "Outproxy Authorization"
msgstr "Autorisation de mandataire sortant"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:502
msgid "Jump URL List"
msgstr "Liste d'URL de sauts"
#: ../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 "Options personnelles"
#: ../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 "NOTE: si le tunnel est actif, la plupart des modifications ne prendront effet qu'après son redémarrage."
#: ../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 "Annuler"
#: ../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 "Supprimer"
#: ../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 "Enregistrer"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73
msgid "I2P Tunnel Manager - Edit Server Tunnel"
msgstr "Gestionnaire de tunnels I2P: modifier le tunnel serveur"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93
msgid "Edit server settings"
msgstr "Modifier les paramètres du serveur"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:101
msgid "New server settings"
msgstr "Paramètres de nouveau serveur"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199
msgid "Website name"
msgstr "Nom du site web"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203
msgid "(leave blank for outproxies)"
msgstr "(laisser vide pour les mandataires sortants)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:208
msgid "Private key file"
msgstr "Fichier de clé privée"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:230
msgid "Add to local addressbook"
msgstr "Ajouter au carnet d'adresses local"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:237
msgid "Hostname Signature"
msgstr "Signature du nom d'hôte"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417
msgid "Encrypt Leaseset"
msgstr "Jeu de baux crypté"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:423
msgid "Encryption Key"
msgstr "Clé de cryptage"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427
msgid "Generate New Key"
msgstr "Générer une nouvelle clé"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
msgid "Generate"
msgstr "Générer"
#: ../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 "(Le tunnel doit préalablement être arrêté)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433
msgid "Restricted Access List"
msgstr "Contrôle d'accès"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:439
msgid "Whitelist"
msgstr "Liste blanche"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
msgid "Blacklist"
msgstr "Liste noire"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:447
msgid "Access List"
msgstr "Liste d'accès"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:451
msgid "Inbound connection limits (0=unlimited)"
msgstr "Limite de connexions entrantes (0=pas de limite)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453
msgid "Per client"
msgstr "Par client"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:455
msgid "Per minute"
msgstr "Par minute"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
msgid "Per hour"
msgstr "Par heure"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
msgid "Per day"
msgstr "Par jour"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:467
msgid "Total"
msgstr "Total"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:475
msgid "Max concurrent connections (0=unlimited)"
msgstr "Connexions simultanées maximum (0=pas de limite)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
msgid "New Certificate type"
msgstr "Type de nouveau certificat"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495
msgid "None"
msgstr "Aucun"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499
msgid "Hashcash (effort)"
msgstr "Pénalité"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:505
msgid "Hashcash Calc Time"
msgstr "Durée de calcul de pénalisation"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:507
msgid "Estimate"
msgstr "Estimer"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:509
msgid "Hidden"
msgstr "Masqué"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:513
msgid "Signed (signed by)"
msgstr "Signé (signé par)"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:519
msgid "Modify Certificate"
msgstr "Modifier le certificat"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:521
msgid "Modify"
msgstr "Modifier"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:74
msgid "I2P Tunnel Manager - List"
msgstr "Gestionnaire de tunnels I2P - Liste"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:86
msgid "Status Messages"
msgstr "Messages d'état"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:90
msgid "Refresh"
msgstr "Actualiser"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:94
msgid "Stop All"
msgstr "Arrêter tous"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:98
msgid "Start All"
msgstr "Démarrer tous"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:102
msgid "Restart All"
msgstr "Redémarrer tous"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:106
msgid "Reload Config"
msgstr "Recharger la configuration"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:108
msgid "I2P Server Tunnels"
msgstr "Tunnels serveurs 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 "Pointe vers"
#: ../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 "Aperçu"
#: ../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 "État"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:166
msgid "Base32 Address"
msgstr "Adresse Base32"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:174
msgid "No Preview"
msgstr "Aucun aperçu"
#: ../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 "Démarrage..."
#: ../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 "Arrêter"
#: ../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 "Actif"
#: ../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 "Arrêté"
#: ../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 "Démarrer"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:237
msgid "New server tunnel"
msgstr "Nouveau tunnel serveur"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:239
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:399
msgid "Standard"
msgstr "Standard"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:241
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:401
msgid "Create"
msgstr "Créer"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:243
msgid "I2P Client Tunnels"
msgstr "Tunnels clients 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 "Interface"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:321
msgid "Standby"
msgstr "Pause"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366
msgid "Outproxy"
msgstr "Mandataire sortant"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370
msgid "Destination"
msgstr "Destination"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:384
msgid "none"
msgstr "aucun"
#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:397
msgid "New client tunnel"
msgstr "Nouveau tunnel client"

Binary file not shown.

Binary file not shown.

View File

@ -26,7 +26,7 @@
<pathelement location="../../systray/java/lib/systray4j.jar" />
<pathelement location="../../desktopgui/build" />
<pathelement location="../../../installer/lib/wrapper/win32/wrapper.jar" /> <!-- we dont care if we're not on win32 -->
<pathelement location="../../jrobin/jrobin-1.4.0.jar" />
<pathelement location="../../jrobin/jrobin-1.5.9.1.jar" />
</classpath>
</depend>
</target>
@ -58,7 +58,7 @@
<pathelement location="../../systray/java/lib/systray4j.jar" />
<pathelement location="../../desktopgui/dist/desktopgui.jar" />
<pathelement location="../../../installer/lib/wrapper/win32/wrapper.jar" /> <!-- we dont care if we're not on win32 -->
<pathelement location="../../jrobin/jrobin-1.4.0.jar" />
<pathelement location="../../jrobin/jrobin-1.5.9.1.jar" />
</classpath>
</javac>
</target>
@ -90,12 +90,6 @@
<attribute name="Workspace-Changes" value="${workspace.changes.j.tr}" />
</manifest>
</jar>
<!-- jrobin taken out of routerconsole.jar in 0.7.12
<delete dir="./tmpextract" />
<unjar src="../../jrobin/jrobin-1.4.0.jar" dest="./tmpextract" />
<jar destfile="./build/routerconsole.jar" basedir="./tmpextract" update="true" />
<delete dir="./tmpextract" />
-->
</target>
<!-- this is tricky because the message classes go in the jar, not in the war -->

View File

@ -52,7 +52,9 @@ ROUTERFILES="\
../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java \
../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java \
../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java \
../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java"
../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java \
../../../router/java/src/net/i2p/router/transport/UPnP.java \
../../../router/java/src/net/i2p/router/transport/UPnPManager.java"
# add ../java/ so the refs will work in the po file
JPATHS="../java/src ../jsp/WEB-INF ../java/strings $JFILE $ROUTERFILES"

View File

@ -69,8 +69,26 @@ public class CSSHelper extends HelperBase {
* @since 0.8.5
*/
public boolean allowIFrame(String ua) {
return ua == null || !(ua.startsWith("Lynx") || ua.startsWith("w3m") ||
return ua == null ||
// text
!(ua.startsWith("Lynx") || ua.startsWith("w3m") ||
ua.startsWith("ELinks") || ua.startsWith("Links") ||
ua.startsWith("Dillo"));
ua.startsWith("Dillo") ||
// mobile
// http://www.zytrax.com/tech/web/mobile_ids.html
ua.contains("Android") || ua.contains("iPhone") ||
ua.contains("iPod") || ua.contains("iPad") ||
ua.contains("Kindle") || ua.contains("Mobile") ||
ua.contains("Nintendo Wii") || ua.contains("Opera Mini") ||
ua.contains("Palm") ||
ua.contains("PLAYSTATION") || ua.contains("Playstation") ||
ua.contains("Profile/MIDP-") || ua.contains("SymbianOS") ||
ua.contains("Windows CE") || ua.contains("Windows Phone") ||
ua.startsWith("BlackBerry") || ua.startsWith("DoCoMo") ||
ua.startsWith("Nokia") || ua.startsWith("OPWV-SDK") ||
ua.startsWith("MOT-") || ua.startsWith("SAMSUNG-") ||
ua.startsWith("nook") || ua.startsWith("SCH-") ||
ua.startsWith("SEC-") || ua.startsWith("SonyEricsson") ||
ua.startsWith("Vodafone"));
}
}

View File

@ -104,14 +104,21 @@ public class ConfigStatsHandler extends FormHandler {
}
_context.router().setConfigSetting(StatManager.PROP_STAT_FILTER, stats.toString());
boolean graphsChanged = !_graphs.equals(_context.getProperty("stat.summaries"));
_context.router().setConfigSetting("stat.summaries", _graphs);
boolean fullChanged = _context.getBooleanProperty(StatManager.PROP_STAT_FULL) != _isFull;
_context.router().setConfigSetting(StatManager.PROP_STAT_FULL, "" + _isFull);
boolean ok = _context.router().saveConfig();
if (ok)
_context.router().saveConfig();
if (!_stats.isEmpty())
addFormNotice(_("Stat filter and location updated successfully to") + ": " + stats.toString());
else
addFormError(_("Failed to update the stat filter and location"));
addFormNotice(_("Graph list updated, may take up to 60s to be reflected here and on the <a href=\"graphs.jsp\">Graphs Page</a>"));
if (fullChanged) {
if (_isFull)
addFormNotice(_("Full statistics enabled - restart required to take effect"));
else
addFormNotice(_("Full statistics disabled - restart required to take effect"));
}
if (graphsChanged)
addFormNotice(_("Graph list updated, may take up to 60s to be reflected here and on the <a href=\"graphs.jsp\">Graphs Page</a>"));
}
}

View File

@ -50,12 +50,14 @@ public class ConfigUpdateHandler extends FormHandler {
*/
private static final String PACK200_URLS =
"http://echelon.i2p/i2p/i2pupdate.su2\r\n" +
"http://inr.i2p/i2p/i2pupdate.su2\r\n" +
"http://stats.i2p/i2p/i2pupdate.su2\r\n" +
"http://www.i2p2.i2p/_static/i2pupdate.su2\r\n" +
"http://update.postman.i2p/i2pupdate.su2" ;
private static final String NO_PACK200_URLS =
"http://echelon.i2p/i2p/i2pupdate.sud\r\n" +
"http://inr.i2p/i2p/i2pupdate.sud\r\n" +
"http://stats.i2p/i2p/i2pupdate.sud\r\n" +
"http://www.i2p2.i2p/_static/i2pupdate.sud\r\n" +
"http://update.postman.i2p/i2pupdate.sud" ;

View File

@ -17,14 +17,15 @@ public class GraphHelper extends FormHandler {
private int _width;
private int _height;
private int _refreshDelaySeconds;
private boolean _persistent;
private static final String PROP_X = "routerconsole.graphX";
private static final String PROP_Y = "routerconsole.graphY";
private static final String PROP_REFRESH = "routerconsole.graphRefresh";
private static final String PROP_PERIODS = "routerconsole.graphPeriods";
private static final String PROP_EVENTS = "routerconsole.graphEvents";
private static final int DEFAULT_X = 250;
private static final int DEFAULT_Y = 100;
public static final int DEFAULT_X = 250;
public static final int DEFAULT_Y = 100;
private static final int DEFAULT_REFRESH = 60;
private static final int DEFAULT_PERIODS = 60;
static final int MAX_X = 2048;
@ -39,7 +40,19 @@ public class GraphHelper extends FormHandler {
_height = _context.getProperty(PROP_Y, DEFAULT_Y);
_periodCount = _context.getProperty(PROP_PERIODS, DEFAULT_PERIODS);
_refreshDelaySeconds = _context.getProperty(PROP_REFRESH, DEFAULT_REFRESH);
_showEvents = Boolean.valueOf(_context.getProperty(PROP_EVENTS)).booleanValue();
_showEvents = _context.getBooleanProperty(PROP_EVENTS);
}
/**
* This must be output in the jsp since <meta> must be in the <head>
* @since 0.8.6
*/
public String getRefreshMeta() {
if (_refreshDelaySeconds <= 8 ||
ConfigRestartBean.getRestartTimeRemaining() < (1000 * (_refreshDelaySeconds + 30)))
return "";
// shorten the refresh by 3 seconds so we beat the iframe
return "<meta http-equiv=\"refresh\" content=\"" + (_refreshDelaySeconds - 3) + "\">";
}
/**
@ -51,13 +64,17 @@ public class GraphHelper extends FormHandler {
public void setPeriodCount(String str) {
try { _periodCount = Integer.parseInt(str); } catch (NumberFormatException nfe) {}
}
public void setShowEvents(boolean b) { _showEvents = b; }
public void setHeight(String str) {
try { _height = Math.min(Integer.parseInt(str), MAX_Y); } catch (NumberFormatException nfe) {}
}
public void setWidth(String str) {
try { _width = Math.min(Integer.parseInt(str), MAX_X); } catch (NumberFormatException nfe) {}
}
public void setRefreshDelay(String str) {
try {
int rds = Integer.parseInt(str);
@ -68,7 +85,12 @@ public class GraphHelper extends FormHandler {
} catch (NumberFormatException nfe) {}
}
/** @since 0.8.6 */
public void setPersistent(String foo) { _persistent = true; }
public String getImages() {
if (StatSummarizer.instance().isDisabled())
return "";
try {
List listeners = StatSummarizer.instance().getListeners();
TreeSet ordered = new TreeSet(new AlphaComparator());
@ -91,12 +113,11 @@ public class GraphHelper extends FormHandler {
+ "&amp;height=" + (3 * _height)
+ "\" target=\"_blank\">");
String title = _("Combined bandwidth graph");
_out.write("<img class=\"statimage\" width=\""
+ (_width + 83) + "\" height=\"" + (_height + 92)
+ "\" src=\"viewstat.jsp?stat=bw.combined"
_out.write("<img class=\"statimage\""
+ " src=\"viewstat.jsp?stat=bw.combined"
+ "&amp;periodCount=" + _periodCount
+ "&amp;width=" + _width
+ "&amp;height=" + (_height - 14)
+ "&amp;height=" + (_height - 13)
+ "\" alt=\"" + title + "\" title=\"" + title + "\"></a>\n");
}
@ -113,9 +134,8 @@ public class GraphHelper extends FormHandler {
+ "&amp;width=" + (3 * _width)
+ "&amp;height=" + (3 * _height)
+ "\" target=\"_blank\">");
_out.write("<img class=\"statimage\" border=\"0\" width=\""
+ (_width + 83) + "\" height=\"" + (_height + 92)
+ "\" src=\"viewstat.jsp?stat="
_out.write("<img class=\"statimage\" border=\"0\""
+ " src=\"viewstat.jsp?stat="
+ r.getRateStat().getName()
+ "&amp;showEvents=" + _showEvents
+ "&amp;period=" + r.getPeriod()
@ -125,10 +145,9 @@ public class GraphHelper extends FormHandler {
+ "\" alt=\"" + title
+ "\" title=\"" + title + "\"></a>\n");
}
if (_refreshDelaySeconds > 0)
// shorten the refresh by 3 seconds so we beat the iframe
_out.write("<meta http-equiv=\"refresh\" content=\"" + (_refreshDelaySeconds - 3) + "\">\n");
// FIXME jrobin doesn't support setting the timezone, will have to mod TimeAxis.java
_out.write("<p><i>" + _("All times are UTC.") + "</i></p>\n");
} catch (IOException ioe) {
ioe.printStackTrace();
}
@ -138,6 +157,8 @@ public class GraphHelper extends FormHandler {
private static final int[] times = { 60, 2*60, 5*60, 10*60, 30*60, 60*60, -1 };
public String getForm() {
if (StatSummarizer.instance().isDisabled())
return "";
String prev = System.getProperty("net.i2p.router.web.GraphHelper.nonce");
if (prev != null) System.setProperty("net.i2p.router.web.GraphHelper.noncePrev", prev);
String nonce = "" + _context.random().nextLong();
@ -147,11 +168,11 @@ public class GraphHelper extends FormHandler {
_out.write("<form action=\"graphs\" method=\"POST\">\n" +
"<input type=\"hidden\" name=\"action\" value=\"foo\">\n" +
"<input type=\"hidden\" name=\"nonce\" value=\"" + nonce + "\" >\n");
_out.write(_("Periods") + ": <input size=\"3\" type=\"text\" name=\"periodCount\" value=\"" + _periodCount + "\"><br>\n");
_out.write(_("Periods") + ": <input size=\"5\" style=\"text-align: right;\" type=\"text\" name=\"periodCount\" value=\"" + _periodCount + "\"><br>\n");
_out.write(_("Plot averages") + ": <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"false\" " + (_showEvents ? "" : "checked=\"true\" ") + "> ");
_out.write(_("or")+ " " +_("plot events") + ": <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"true\" "+ (_showEvents ? "checked=\"true\" " : "") + "><br>\n");
_out.write(_("Image sizes") + ": " + _("width") + ": <input size=\"4\" type=\"text\" name=\"width\" value=\"" + _width
+ "\"> " + _("pixels") + ", " + _("height") + ": <input size=\"4\" type=\"text\" name=\"height\" value=\"" + _height
_out.write(_("Image sizes") + ": " + _("width") + ": <input size=\"4\" style=\"text-align: right;\" type=\"text\" name=\"width\" value=\"" + _width
+ "\"> " + _("pixels") + ", " + _("height") + ": <input size=\"4\" style=\"text-align: right;\" type=\"text\" name=\"height\" value=\"" + _height
+ "\"> " + _("pixels") + "<br>\n");
_out.write(_("Refresh delay") + ": <select name=\"refreshDelay\">");
for (int i = 0; i < times.length; i++) {
@ -168,13 +189,40 @@ public class GraphHelper extends FormHandler {
_out.write("</option>\n");
}
_out.write("</select><br>\n" +
"<hr><div class=\"formaction\"><input type=\"submit\" value=\"" + _("Redraw") + "\"></div></form>");
_("Store graph data on disk?") +
" <input type=\"checkbox\" class=\"optbox\" value=\"true\" name=\"persistent\"");
boolean persistent = _context.getBooleanPropertyDefaultTrue(SummaryListener.PROP_PERSISTENT);
if (persistent)
_out.write(" checked=\"true\"");
_out.write(">" +
"<hr><div class=\"formaction\"><input type=\"submit\" value=\"" + _("Save settings and redraw graphs") + "\"></div></form>");
} catch (IOException ioe) {
ioe.printStackTrace();
}
return "";
}
/**
* We have to do this here because processForm() isn't called unless the nonces are good
* @since 0.8.6
*/
@Override
public String getAllMessages() {
if (StatSummarizer.instance().isDisabled()) {
addFormError("Graphing not supported with this JVM: " +
System.getProperty("java.vendor") + ' ' +
System.getProperty("java.version") + " (" +
System.getProperty("java.runtime.name") + ' ' +
System.getProperty("java.runtime.version") + ')');
if (_context.getProperty(PROP_REFRESH, 0) >= 0) {
// force no refresh, save silently
_context.router().setConfigSetting(PROP_REFRESH, "-1");
_context.router().saveConfig();
}
}
return super.getAllMessages();
}
/**
* This was a HelperBase but now it's a FormHandler
* @since 0.8.2
@ -193,26 +241,27 @@ public class GraphHelper extends FormHandler {
_height != _context.getProperty(PROP_Y, DEFAULT_Y) ||
_periodCount != _context.getProperty(PROP_PERIODS, DEFAULT_PERIODS) ||
_refreshDelaySeconds != _context.getProperty(PROP_REFRESH, DEFAULT_REFRESH) ||
_showEvents != Boolean.valueOf(_context.getProperty(PROP_EVENTS)).booleanValue()) {
_showEvents != _context.getBooleanProperty(PROP_EVENTS) ||
_persistent != _context.getBooleanPropertyDefaultTrue(SummaryListener.PROP_PERSISTENT)) {
_context.router().setConfigSetting(PROP_X, "" + _width);
_context.router().setConfigSetting(PROP_Y, "" + _height);
_context.router().setConfigSetting(PROP_PERIODS, "" + _periodCount);
_context.router().setConfigSetting(PROP_REFRESH, "" + _refreshDelaySeconds);
_context.router().setConfigSetting(PROP_EVENTS, "" + _showEvents);
_context.router().setConfigSetting(SummaryListener.PROP_PERSISTENT, "" + _persistent);
_context.router().saveConfig();
addFormNotice(_("Graph settings saved"));
}
}
/** inner class, don't bother reindenting */
private static class AlphaComparator implements Comparator {
public int compare(Object lhs, Object rhs) {
SummaryListener l = (SummaryListener)lhs;
SummaryListener r = (SummaryListener)rhs;
String lName = l.getRate().getRateStat().getName() + "." + l.getRate().getPeriod();
String rName = r.getRate().getRateStat().getName() + "." + r.getRate().getPeriod();
return lName.compareTo(rName);
private static class AlphaComparator implements Comparator<SummaryListener> {
public int compare(SummaryListener l, SummaryListener r) {
String lName = l.getRate().getRateStat().getName();
String rName = r.getRate().getRateStat().getName();
int rv = lName.compareTo(rName);
if (rv != 0)
return rv;
return (int) (l.getRate().getPeriod() - r.getRate().getPeriod());
}
}
}
}

View File

@ -24,7 +24,6 @@ import java.util.Properties;
import java.util.Set;
import java.util.TreeSet;
import net.i2p.crypto.TrustedUpdate;
import net.i2p.data.DataHelper;
import net.i2p.data.Destination;
import net.i2p.data.Hash;
@ -174,18 +173,19 @@ public class NetDbRenderer {
}
if (debug) {
buf.append("<p><b>Total Leasesets: " + leases.size());
buf.append("<p><b>Published (RAP) Leasesets: " + _context.netDb().getKnownLeaseSets());
buf.append("<p>Mod Data: " + HexDump.dump(_context.routingKeyGenerator().getModData()) + "<p>");
buf.append("<p>Network data (only valid if floodfill):");
buf.append("<p>Center of Key Space (router hash): " + ourRKey.toBase64() + "<p>");
buf.append("</b></p><p><b>Published (RAP) Leasesets: " + _context.netDb().getKnownLeaseSets());
buf.append("</b></p><p><b>Mod Data: " + HexDump.dump(_context.routingKeyGenerator().getModData()));
buf.append("</b></p><p><b>Network data (only valid if floodfill):");
buf.append("</b></p><p><b>Center of Key Space (router hash): " + ourRKey.toBase64());
if (median != null) {
double log2 = biLog2(median);
buf.append("<p>Median distance (bits): " + fmt.format(log2));
buf.append("</b></p><p><b>Median distance (bits): " + fmt.format(log2));
// 3 for 8 floodfills... -1 for median
int total = (int) Math.round(Math.pow(2, 3 + 256 - 1 - log2));
buf.append("<p>Estimated total floodfills: " + total);
buf.append("<p>Estimated network total leasesets: " + (total * leases.size() / 8));
buf.append("</b></p><p><b>Estimated total floodfills: " + total);
buf.append("</b></p><p><b>Estimated network total leasesets: " + (total * leases.size() / 8));
}
buf.append("</b></p>");
}
out.write(buf.toString());
out.flush();
@ -405,11 +405,10 @@ public class NetDbRenderer {
/**
* what transport types
*/
private int classifyTransports(RouterInfo info) {
private static int classifyTransports(RouterInfo info) {
int rv = 0;
String hash = info.getIdentity().getHash().toBase64();
for (Iterator iter = info.getAddresses().iterator(); iter.hasNext(); ) {
RouterAddress addr = (RouterAddress)iter.next();
for (RouterAddress addr : info.getAddresses()) {
String style = addr.getTransportStyle();
if (style.equals("NTCP")) {
rv |= NTCP;

View File

@ -95,7 +95,8 @@ public class PluginStarter implements Runnable {
log.error("Cannot start nonexistent plugin: " + appName);
return false;
}
//log.error("Starting plugin: " + appName);
if (log.shouldLog(Log.INFO))
log.info("Starting plugin: " + appName);
// register themes
File dir = new File(pluginDir, "console/themes");
@ -139,7 +140,8 @@ public class PluginStarter implements Runnable {
}
String enabled = props.getProperty(RouterConsoleRunner.PREFIX + warName + ENABLED);
if (! "false".equals(enabled)) {
//log.error("Starting webapp: " + warName);
if (log.shouldLog(Log.INFO))
log.info("Starting webapp: " + warName);
String path = new File(webappDir, fileNames[i]).getCanonicalPath();
WebAppStarter.startWebApp(ctx, server, warName, path);
pluginWars.get(appName).add(warName);
@ -149,6 +151,8 @@ public class PluginStarter implements Runnable {
}
}
}
} else {
log.error("No console web server to start plugins?");
}
// add translation jars in console/locale

View File

@ -1,16 +1,25 @@
package net.i2p.router.web;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.Semaphore;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
import javax.imageio.stream.MemoryCacheImageOutputStream;
import net.i2p.router.RouterContext;
import net.i2p.stat.Rate;
import net.i2p.stat.RateStat;
import net.i2p.util.FileUtil;
import net.i2p.util.Log;
import org.jrobin.core.RrdException;
@ -18,7 +27,17 @@ import org.jrobin.graph.RrdGraph;
import org.jrobin.graph.RrdGraphDef;
/**
* A thread started by RouterConsoleRunner that
* checks the configuration for stats to be tracked via jrobin,
* and adds or deletes RRDs as necessary.
*
* This also contains methods to generate xml or png image output.
* The actual png rendering code is here for the special dual-rate graph;
* the rendering for standard graphs is in SummaryRenderer.
*
* To control memory, the number of simultaneous renderings is limited.
*
* @since 0.6.1.13
*/
public class StatSummarizer implements Runnable {
private final RouterContext _context;
@ -28,25 +47,52 @@ public class StatSummarizer implements Runnable {
private static StatSummarizer _instance;
private static final int MAX_CONCURRENT_PNG = 3;
private final Semaphore _sem;
private volatile boolean _isRunning = true;
private volatile boolean _isDisabled;
private Thread _thread;
public StatSummarizer() {
_context = (RouterContext)RouterContext.listContexts().get(0); // fuck it, only summarize one per jvm
_log = _context.logManager().getLog(getClass());
_listeners = new ArrayList(16);
_listeners = new CopyOnWriteArrayList();
_instance = this;
_sem = new Semaphore(MAX_CONCURRENT_PNG, true);
_context.addShutdownTask(new Shutdown());
}
public static StatSummarizer instance() { return _instance; }
public void run() {
// JRobin 1.5.9 crashes these JVMs
String vendor = System.getProperty("java.vendor");
if (vendor.startsWith("Apache") || // Harmony
vendor.startsWith("GNU Classpath") || // JamVM
vendor.startsWith("Free Software Foundation")) { // gij
_log.logAlways(Log.WARN, "Graphing not supported with this JVM: " +
vendor + ' ' +
System.getProperty("java.version") + " (" +
System.getProperty("java.runtime.name") + ' ' +
System.getProperty("java.runtime.version") + ')');
_isDisabled = true;
_isRunning = false;
return;
}
boolean isPersistent = _context.getBooleanPropertyDefaultTrue(SummaryListener.PROP_PERSISTENT);
if (!isPersistent)
deleteOldRRDs();
_thread = Thread.currentThread();
String specs = "";
while (_context.router().isAlive()) {
while (_isRunning && _context.router().isAlive()) {
specs = adjustDatabases(specs);
try { Thread.sleep(60*1000); } catch (InterruptedException ie) {}
}
}
/** @since 0.8.6 */
boolean isDisabled() {
return _isDisabled;
}
/** list of SummaryListener instances */
List<SummaryListener> getListeners() { return _listeners; }
@ -105,10 +151,10 @@ public class StatSummarizer implements Runnable {
}
private void removeDb(Rate r) {
for (int i = 0; i < _listeners.size(); i++) {
SummaryListener lsnr = _listeners.get(i);
for (SummaryListener lsnr : _listeners) {
if (lsnr.getRate().equals(r)) {
_listeners.remove(i);
// no iter.remove() in COWAL
_listeners.remove(lsnr);
lsnr.stopListening();
return;
}
@ -116,13 +162,17 @@ public class StatSummarizer implements Runnable {
}
private void addDb(Rate r) {
SummaryListener lsnr = new SummaryListener(r);
_listeners.add(lsnr);
lsnr.startListening();
boolean success = lsnr.startListening();
if (success)
_listeners.add(lsnr);
else
_log.error("Failed to add RRD for rate " + r.getRateStat().getName() + '.' + r.getPeriod());
//System.out.println("Start listening for " + r.getRateStat().getName() + ": " + r.getPeriod());
}
public boolean renderPng(Rate rate, OutputStream out) throws IOException {
return renderPng(rate, out, -1, -1, false, false, false, false, -1, true);
return renderPng(rate, out, GraphHelper.DEFAULT_X, GraphHelper.DEFAULT_Y,
false, false, false, false, -1, true);
}
/**
@ -141,7 +191,7 @@ public class StatSummarizer implements Runnable {
return locked_renderPng(rate, out, width, height, hideLegend, hideGrid, hideTitle, showEvents,
periodCount, showCredit);
} finally {
_sem.release();
_sem.release();
}
}
@ -150,10 +200,13 @@ public class StatSummarizer implements Runnable {
boolean showCredit) throws IOException {
if (width > GraphHelper.MAX_X)
width = GraphHelper.MAX_X;
else if (width <= 0)
width = GraphHelper.DEFAULT_X;
if (height > GraphHelper.MAX_Y)
height = GraphHelper.MAX_Y;
for (int i = 0; i < _listeners.size(); i++) {
SummaryListener lsnr = _listeners.get(i);
else if (height <= 0)
height = GraphHelper.DEFAULT_Y;
for (SummaryListener lsnr : _listeners) {
if (lsnr.getRate().equals(rate)) {
lsnr.renderPng(out, width, height, hideLegend, hideGrid, hideTitle, showEvents, periodCount, showCredit);
return true;
@ -162,14 +215,25 @@ public class StatSummarizer implements Runnable {
return false;
}
/** @deprecated unused */
public boolean renderPng(OutputStream out, String templateFilename) throws IOException {
SummaryRenderer.render(_context, out, templateFilename);
return true;
}
public boolean getXML(Rate rate, OutputStream out) throws IOException {
for (int i = 0; i < _listeners.size(); i++) {
SummaryListener lsnr = _listeners.get(i);
try {
try {
_sem.acquire();
} catch (InterruptedException ie) {}
return locked_getXML(rate, out);
} finally {
_sem.release();
}
}
private boolean locked_getXML(Rate rate, OutputStream out) throws IOException {
for (SummaryListener lsnr : _listeners) {
if (lsnr.getRate().equals(rate)) {
lsnr.getData().exportXml(out);
out.write(("<!-- Rate: " + lsnr.getRate().getRateStat().getName() + " for period " + lsnr.getRate().getPeriod() + " -->\n").getBytes());
@ -196,68 +260,91 @@ public class StatSummarizer implements Runnable {
return locked_renderRatePng(out, width, height, hideLegend, hideGrid, hideTitle, showEvents,
periodCount, showCredit);
} finally {
_sem.release();
_sem.release();
}
}
private boolean locked_renderRatePng(OutputStream out, int width, int height, boolean hideLegend,
boolean hideGrid, boolean hideTitle, boolean showEvents,
int periodCount, boolean showCredit) throws IOException {
long end = _context.clock().now() - 60*1000;
// go to some trouble to see if we have the data for the combined bw graph
SummaryListener txLsnr = null;
SummaryListener rxLsnr = null;
for (SummaryListener lsnr : StatSummarizer.instance().getListeners()) {
String title = lsnr.getRate().getRateStat().getName();
if (title.equals("bw.sendRate"))
txLsnr = lsnr;
else if (title.equals("bw.recvRate"))
rxLsnr = lsnr;
}
if (txLsnr == null || rxLsnr == null)
throw new IOException("no rates for combined graph");
long end = _context.clock().now() - 75*1000;
if (width > GraphHelper.MAX_X)
width = GraphHelper.MAX_X;
else if (width <= 0)
width = GraphHelper.DEFAULT_X;
if (height > GraphHelper.MAX_Y)
height = GraphHelper.MAX_Y;
if (periodCount <= 0) periodCount = SummaryListener.PERIODS;
if (periodCount > SummaryListener.PERIODS)
periodCount = SummaryListener.PERIODS;
else if (height <= 0)
height = GraphHelper.DEFAULT_Y;
if (periodCount <= 0 || periodCount > txLsnr.getRows())
periodCount = txLsnr.getRows();
long period = 60*1000;
long start = end - period*periodCount;
//long begin = System.currentTimeMillis();
try {
RrdGraphDef def = new RrdGraphDef();
def.setTimePeriod(start/1000, 0);
def.setLowerLimit(0d);
def.setBaseValue(1024);
// Note to translators: all runtime zh translation disabled in this file, no font available in RRD
def.setTimeSpan(start/1000, end/1000);
def.setMinValue(0d);
def.setBase(1024);
String title = _("Bandwidth usage");
if (!hideTitle)
def.setTitle(title);
long started = _context.router().getWhenStarted();
if (started > start && started < end)
def.vrule(started / 1000, Color.BLACK, null, 4.0f); // no room for legend
String sendName = SummaryListener.createName(_context, "bw.sendRate.60000");
String recvName = SummaryListener.createName(_context, "bw.recvRate.60000");
def.datasource(sendName, sendName, sendName, "AVERAGE", "MEMORY");
def.datasource(recvName, recvName, recvName, "AVERAGE", "MEMORY");
def.area(sendName, Color.BLUE, _("Outbound bytes/sec"));
def.datasource(sendName, txLsnr.getData().getPath(), sendName, SummaryListener.CF, txLsnr.getBackendName());
def.datasource(recvName, rxLsnr.getData().getPath(), recvName, SummaryListener.CF, rxLsnr.getBackendName());
def.area(sendName, Color.BLUE, _("Outbound Bytes/sec"));
//def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3);
def.line(recvName, Color.RED, _("Inbound bytes/sec") + "@r", 3);
def.line(recvName, Color.RED, _("Inbound Bytes/sec") + "\\r", 3);
//def.area(recvName, Color.RED, "Inbound bytes/sec@r");
if (!hideLegend) {
def.gprint(sendName, "AVERAGE", _("out average") + ": @2@s" + _("bytes/sec"));
def.gprint(sendName, "MAX", ' ' + _("max") + ": @2@s" + _("bytes/sec") + "@r");
def.gprint(recvName, "AVERAGE", _("in average") + ": @2@s" + _("bytes/sec"));
def.gprint(recvName, "MAX", ' ' + _("max") + ": @2@s" + _("bytes/sec") + "@r");
def.gprint(sendName, SummaryListener.CF, _("Out average") + ": %.2f %s" + _("Bps"));
def.gprint(sendName, "MAX", ' ' + _("max") + ": %.2f %S" + _("Bps") + "\\r");
def.gprint(recvName, SummaryListener.CF, _("In average") + ": %.2f %S" + _("Bps"));
def.gprint(recvName, "MAX", ' ' + _("max") + ": %.2f %S" + _("Bps") + "\\r");
}
if (!showCredit)
def.setShowSignature(false);
if (hideLegend)
def.setShowLegend(false);
def.setNoLegend(true);
if (hideGrid) {
def.setGridX(false);
def.setGridY(false);
def.setDrawXGrid(false);
def.setDrawYGrid(false);
}
//System.out.println("rendering: path=" + path + " dsNames[0]=" + dsNames[0] + " dsNames[1]=" + dsNames[1] + " lsnr.getName=" + _listener.getName());
def.setAntiAliasing(false);
//System.out.println("Rendering: \n" + def.exportXmlTemplate());
//System.out.println("*****************\nData: \n" + _listener.getData().dump());
def.setWidth(width);
def.setHeight(height);
RrdGraph graph = new RrdGraph(def);
//System.out.println("Graph created");
byte data[] = null;
if ( (width <= 0) || (height <= 0) )
data = graph.getPNGBytes();
else
data = graph.getPNGBytes(width, height);
//long timeToPlot = System.currentTimeMillis() - begin;
out.write(data);
int totalWidth = graph.getRrdGraphInfo().getWidth();
int totalHeight = graph.getRrdGraphInfo().getHeight();
BufferedImage img = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_USHORT_565_RGB);
Graphics gfx = img.getGraphics();
graph.render(gfx);
ImageOutputStream ios = new MemoryCacheImageOutputStream(out);
ImageIO.write(img, "png", ios);
//File t = File.createTempFile("jrobinData", ".xml");
//_listener.getData().dumpXml(new FileOutputStream(t));
//System.out.println("plotted: " + (data != null ? data.length : 0) + " bytes in " + timeToPlot
@ -303,11 +390,38 @@ public class StatSummarizer implements Runnable {
return rv;
}
/**
* Delete the old rrd dir if we are no longer persistent
* @since 0.8.6
*/
private void deleteOldRRDs() {
File rrdDir = new File(_context.getRouterDir(), SummaryListener.RRD_DIR);
FileUtil.rmdir(rrdDir, false);
}
/** translate a string */
private String _(String s) {
// the RRD font doesn't have zh chars, at least on my system
if ("zh".equals(Messages.getLanguage(_context)))
return s;
// Works on 1.5.9
//if ("zh".equals(Messages.getLanguage(_context)))
// return s;
return Messages.getString(s, _context);
}
/**
* Make sure any persistent RRDs are closed
* @since 0.8.6
*/
private class Shutdown implements Runnable {
public void run() {
_isRunning = false;
if (_thread != null)
_thread.interrupt();
for (SummaryListener lsnr : _listeners) {
// FIXME could cause exceptions if rendering?
lsnr.stopListening();
}
_listeners.clear();
}
}
}

View File

@ -123,7 +123,7 @@ public class SummaryBarRenderer {
.append(_("Health Report"))
.append("\">")
.append(_("Logs"))
.append("</a>\n" +
.append("</a>\n");
// "<a href=\"/jobs.jsp\" target=\"_top\" title=\"")
// .append(_("Show the router's workload, and how it's performing"))
@ -131,13 +131,15 @@ public class SummaryBarRenderer {
// .append(_("Jobs"))
// .append("</a>\n" +
"<a href=\"/graphs\" target=\"_top\" title=\"")
if (!StatSummarizer.instance().isDisabled()) {
buf.append("<a href=\"/graphs\" target=\"_top\" title=\"")
.append(_("Graph router performance"))
.append("\">")
.append(_("Graphs"))
.append("</a>\n" +
.append("</a>\n");
}
"<a href=\"/stats\" target=\"_top\" title=\"")
buf.append("<a href=\"/stats\" target=\"_top\" title=\"")
.append(_("Textual router performance statistics"))
.append("\">")
.append(_("Stats"))

View File

@ -384,7 +384,7 @@ public class SummaryHelper extends HelperBase {
buf.append("client.png\" alt=\"Client\" title=\"" + _("Client") + "\">");
buf.append("</td><td align=\"left\"><b><a href=\"tunnels#").append(h.toBase64().substring(0,4));
buf.append("\" target=\"_top\" title=\"" + _("Show tunnels") + "\">");
if (name.length() < 16)
if (name.length() < 18)
buf.append(name);
else
buf.append(name.substring(0,15)).append("&hellip;");

View File

@ -1,6 +1,6 @@
package net.i2p.router.web;
import java.awt.Color;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
@ -10,42 +10,59 @@ import net.i2p.stat.Rate;
import net.i2p.stat.RateStat;
import net.i2p.stat.RateSummaryListener;
import net.i2p.util.Log;
import net.i2p.util.SecureFile;
import net.i2p.util.SecureFileOutputStream;
import org.jrobin.core.Archive;
import org.jrobin.core.RrdBackendFactory;
import org.jrobin.core.RrdDb;
import org.jrobin.core.RrdDef;
import org.jrobin.core.RrdException;
import org.jrobin.core.RrdMemoryBackendFactory;
import org.jrobin.core.RrdNioBackendFactory;
import org.jrobin.core.Sample;
import org.jrobin.graph.RrdGraph;
import org.jrobin.graph.RrdGraphDef;
import org.jrobin.graph.RrdGraphDefTemplate;
/**
* Creates and updates the in-memory RRD database,
* and provides methods to generate graphs of the data
*
* @since 0.6.1.13
*/
class SummaryListener implements RateSummaryListener {
private I2PAppContext _context;
private Log _log;
private Rate _rate;
static final String PROP_PERSISTENT = "routerconsole.graphPersistent";
/** note that .jrb files are NOT compatible with .rrd files */
static final String RRD_DIR = "rrd";
private static final String RRD_PREFIX = "rrd-";
private static final String RRD_SUFFIX = ".jrb";
static final String CF = "AVERAGE";
private static final double XFF = 0.9d;
private static final int STEPS = 1;
private final I2PAppContext _context;
private final Log _log;
private final Rate _rate;
private final boolean _isPersistent;
private String _name;
private String _eventName;
private RrdDb _db;
private Sample _sample;
private RrdMemoryBackendFactory _factory;
private SummaryRenderer _renderer;
private int _rows;
static final int PERIODS = 1440;
static {
try {
RrdBackendFactory.setDefaultFactory("MEMORY");
} catch (RrdException re) {
re.printStackTrace();
}
}
static final int PERIODS = 60 * 24; // 1440
private static final int MIN_ROWS = PERIODS;
private static final int MAX_ROWS = 91 * MIN_ROWS;
private static final long THREE_MONTHS = 91l * 24 * 60 * 60 * 1000;
public SummaryListener(Rate r) {
_context = I2PAppContext.getGlobalContext();
_rate = r;
_log = _context.logManager().getLog(SummaryListener.class);
_isPersistent = _context.getBooleanPropertyDefaultTrue(PROP_PERSISTENT);
}
public void add(double totalValue, long eventCount, double totalEventTime, long period) {
@ -86,34 +103,73 @@ class SummaryListener implements RateSummaryListener {
}
public Rate getRate() { return _rate; }
public void startListening() {
/**
* @return success
*/
public boolean startListening() {
RateStat rs = _rate.getRateStat();
long period = _rate.getPeriod();
String baseName = rs.getName() + "." + period;
_name = createName(_context, baseName);
_eventName = createName(_context, baseName + ".events");
try {
RrdDef def = new RrdDef(_name, now()/1000, period/1000);
// for info on the heartbeat, xff, steps, etc, see the rrdcreate man page, aka
// http://www.jrobin.org/support/man/rrdcreate.html
long heartbeat = period*10/1000;
def.addDatasource(_name, "GAUGE", heartbeat, Double.NaN, Double.NaN);
def.addDatasource(_eventName, "GAUGE", heartbeat, 0, Double.NaN);
double xff = 0.9;
int steps = 1;
int rows = PERIODS;
def.addArchive("AVERAGE", xff, steps, rows);
_factory = (RrdMemoryBackendFactory)RrdBackendFactory.getDefaultFactory();
_db = new RrdDb(def, _factory);
RrdBackendFactory factory = RrdBackendFactory.getFactory(getBackendName());
String rrdDefName;
if (_isPersistent) {
// generate full path for persistent RRD files
File rrdDir = new SecureFile(_context.getRouterDir(), RRD_DIR);
File rrdFile = new File(rrdDir, RRD_PREFIX + _name + RRD_SUFFIX);
rrdDefName = rrdFile.getAbsolutePath();
if (rrdFile.exists()) {
_db = new RrdDb(rrdDefName, factory);
Archive arch = _db.getArchive(CF, STEPS);
if (arch == null)
throw new IOException("No average CF in " + rrdDefName);
_rows = arch.getRows();
if (_log.shouldLog(Log.INFO))
_log.info("Existing RRD " + baseName + " (" + rrdDefName + ") with " + _rows + " rows consuming " + _db.getRrdBackend().getLength() + " bytes");
} else {
rrdDir.mkdir();
}
} else {
rrdDefName = _name;
}
if (_db == null) {
// not persistent or not previously existing
RrdDef def = new RrdDef(rrdDefName, now()/1000, period/1000);
// for info on the heartbeat, xff, steps, etc, see the rrdcreate man page, aka
// http://www.jrobin.org/support/man/rrdcreate.html
long heartbeat = period*10/1000;
def.addDatasource(_name, "GAUGE", heartbeat, Double.NaN, Double.NaN);
def.addDatasource(_eventName, "GAUGE", heartbeat, 0, Double.NaN);
int steps = 1;
if (_isPersistent) {
_rows = (int) Math.max(MIN_ROWS, Math.min(MAX_ROWS, THREE_MONTHS / period));
} else {
_rows = MIN_ROWS;
}
def.addArchive(CF, XFF, STEPS, _rows);
_db = new RrdDb(def, factory);
if (_isPersistent)
SecureFileOutputStream.setPerms(new File(rrdDefName));
if (_log.shouldLog(Log.INFO))
_log.info("New RRD " + baseName + " (" + rrdDefName + ") with " + _rows + " rows consuming " + _db.getRrdBackend().getLength() + " bytes");
}
_sample = _db.createSample();
_renderer = new SummaryRenderer(_context, this);
_rate.setSummaryListener(this);
return true;
} catch (OutOfMemoryError oom) {
_log.error("Error starting RRD for stat " + baseName, oom);
} catch (RrdException re) {
_log.error("Error starting", re);
_log.error("Error starting RRD for stat " + baseName, re);
} catch (IOException ioe) {
_log.error("Error starting", ioe);
_log.error("Error starting RRD for stat " + baseName, ioe);
}
return false;
}
public void stopListening() {
if (_db == null) return;
try {
@ -122,23 +178,50 @@ class SummaryListener implements RateSummaryListener {
_log.error("Error closing", ioe);
}
_rate.setSummaryListener(null);
_factory.delete(_db.getPath());
if (!_isPersistent) {
// close() does not release resources for memory backend
try {
((RrdMemoryBackendFactory)RrdBackendFactory.getFactory(RrdMemoryBackendFactory.NAME)).delete(_db.getPath());
} catch (RrdException re) {}
}
_db = null;
}
public void renderPng(OutputStream out, int width, int height, boolean hideLegend, boolean hideGrid, boolean hideTitle, boolean showEvents, int periodCount, boolean showCredit) throws IOException {
if (_renderer == null || _db == null)
throw new IOException("No RRD, check logs for previous errors");
_renderer.render(out, width, height, hideLegend, hideGrid, hideTitle, showEvents, periodCount, showCredit);
}
public void renderPng(OutputStream out) throws IOException { _renderer.render(out); }
public void renderPng(OutputStream out) throws IOException {
if (_renderer == null || _db == null)
throw new IOException("No RRD, check logs for previous errors");
_renderer.render(out);
}
String getName() { return _name; }
String getEventName() { return _eventName; }
RrdDb getData() { return _db; }
long now() { return _context.clock().now(); }
/** @since 0.8.6 */
String getBackendName() {
return _isPersistent ? RrdNioBackendFactory.NAME : RrdMemoryBackendFactory.NAME;
}
/** @since 0.8.6 */
int getRows() {
return _rows;
}
@Override
public boolean equals(Object obj) {
return ((obj instanceof SummaryListener) && ((SummaryListener)obj)._rate.equals(_rate));
}
@Override
public int hashCode() { return _rate.hashCode(); }
}

View File

@ -1,30 +1,39 @@
package net.i2p.router.web;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
import javax.imageio.stream.MemoryCacheImageOutputStream;
import net.i2p.I2PAppContext;
import net.i2p.data.DataHelper;
import net.i2p.router.RouterContext;
import net.i2p.stat.Rate;
import net.i2p.stat.RateStat;
import net.i2p.stat.RateSummaryListener;
import net.i2p.util.Log;
import org.jrobin.core.RrdBackendFactory;
import org.jrobin.core.RrdDb;
import org.jrobin.core.RrdDef;
import org.jrobin.core.RrdException;
import org.jrobin.core.RrdMemoryBackendFactory;
import org.jrobin.core.Sample;
import org.jrobin.graph.RrdGraph;
import org.jrobin.graph.RrdGraphDef;
import org.jrobin.graph.RrdGraphDefTemplate;
/**
* Generate the RRD graph png images,
* except for the combined rate graph, which is
* generated in StatSummarizer.
*
* @since 0.6.1.13
*/
class SummaryRenderer {
private Log _log;
private SummaryListener _listener;
private I2PAppContext _context;
private final Log _log;
private final SummaryListener _listener;
private final I2PAppContext _context;
public SummaryRenderer(I2PAppContext ctx, SummaryListener lsnr) {
_log = ctx.logManager().getLog(SummaryRenderer.class);
@ -38,6 +47,7 @@ class SummaryRenderer {
* DOM level 3 load and store support. Perhaps we can bundle that, or
* specify who can get it from where, etc.
*
* @deprecated unsed
*/
public static synchronized void render(I2PAppContext ctx, OutputStream out, String filename) throws IOException {
long end = ctx.clock().now() - 60*1000;
@ -45,10 +55,21 @@ class SummaryRenderer {
try {
RrdGraphDefTemplate template = new RrdGraphDefTemplate(filename);
RrdGraphDef def = template.getRrdGraphDef();
def.setTimePeriod(start/1000, end/1000); // ignore the periods in the template
def.setTimeSpan(start/1000, end/1000); // ignore the periods in the template
// FIXME not clear how to get the height and width from the template
int width = GraphHelper.DEFAULT_X;
int height = GraphHelper.DEFAULT_Y;
def.setWidth(width);
def.setHeight(height);
RrdGraph graph = new RrdGraph(def);
byte img[] = graph.getPNGBytes();
out.write(img);
int totalWidth = graph.getRrdGraphInfo().getWidth();
int totalHeight = graph.getRrdGraphInfo().getHeight();
BufferedImage img = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_USHORT_565_RGB);
Graphics gfx = img.getGraphics();
graph.render(gfx);
ImageOutputStream ios = new MemoryCacheImageOutputStream(out);
ImageIO.write(img, "png", ios);
} catch (RrdException re) {
//_log.error("Error rendering " + filename, re);
throw new IOException("Error plotting: " + re.getMessage());
@ -58,34 +79,33 @@ class SummaryRenderer {
}
}
public void render(OutputStream out) throws IOException { render(out, -1, -1, false, false, false, false, -1, false); }
public void render(OutputStream out) throws IOException { render(out, GraphHelper.DEFAULT_X, GraphHelper.DEFAULT_Y,
false, false, false, false, -1, false); }
public void render(OutputStream out, int width, int height, boolean hideLegend, boolean hideGrid, boolean hideTitle, boolean showEvents, int periodCount, boolean showCredit) throws IOException {
long end = _listener.now() - 60*1000;
if (periodCount <= 0) periodCount = SummaryListener.PERIODS;
if (periodCount > SummaryListener.PERIODS)
periodCount = SummaryListener.PERIODS;
long end = _listener.now() - 75*1000;
if (periodCount <= 0 || periodCount > _listener.getRows())
periodCount = _listener.getRows();
long start = end - _listener.getRate().getPeriod()*periodCount;
//long begin = System.currentTimeMillis();
try {
RrdGraphDef def = new RrdGraphDef();
def.setTimePeriod(start/1000, 0);
def.setLowerLimit(0d);
def.setTimeSpan(start/1000, end/1000);
def.setMinValue(0d);
String name = _listener.getRate().getRateStat().getName();
// heuristic to set K=1024
if ((name.startsWith("bw.") || name.indexOf("Size") >= 0 || name.indexOf("Bps") >= 0 || name.indexOf("memory") >= 0)
&& !showEvents)
def.setBaseValue(1024);
def.setBase(1024);
if (!hideTitle) {
String title;
String p;
// we want the formatting and translation of formatDuration2(), except not zh, and not the &nbsp;
if ("zh".equals(Messages.getLanguage(_context)))
p = DataHelper.formatDuration(_listener.getRate().getPeriod());
else
//if ("zh".equals(Messages.getLanguage(_context)))
// p = DataHelper.formatDuration(_listener.getRate().getPeriod());
//else
p = DataHelper.formatDuration2(_listener.getRate().getPeriod()).replace("&nbsp;", " ");
if (showEvents)
// Note to translators: all runtime zh translation disabled in this file, no font available in RRD
title = name + ' ' + _("events in {0}", p);
else
title = name + ' ' + _("averaged for {0}", p);
@ -108,12 +128,18 @@ class SummaryRenderer {
// Strings.java
descr = _(_listener.getRate().getRateStat().getDescription());
}
def.datasource(plotName, path, plotName, "AVERAGE", "MEMORY");
def.area(plotName, Color.BLUE, descr + "@r");
long started = ((RouterContext)_context).router().getWhenStarted();
if (started > start && started < end)
def.vrule(started / 1000, Color.BLACK, _("Restart"), 4.0f);
def.datasource(plotName, path, plotName, SummaryListener.CF, _listener.getBackendName());
if (descr.length() > 0)
def.area(plotName, Color.BLUE, descr + "\\r");
else
def.area(plotName, Color.BLUE);
if (!hideLegend) {
def.gprint(plotName, "AVERAGE", _("avg") + ": @2@s");
def.gprint(plotName, "MAX", ' ' + _("max") + ": @2@s");
def.gprint(plotName, "LAST", ' ' + _("now") + ": @2@s@r");
def.gprint(plotName, SummaryListener.CF, _("avg") + ": %.2f %s");
def.gprint(plotName, "MAX", ' ' + _("max") + ": %.2f %S");
def.gprint(plotName, "LAST", ' ' + _("now") + ": %.2f %S\\r");
}
if (!showCredit)
def.setShowSignature(false);
@ -126,24 +152,28 @@ class SummaryRenderer {
def.line(dsNames[1], Color.RED, "Events per period");
*/
if (hideLegend)
def.setShowLegend(false);
def.setNoLegend(true);
if (hideGrid) {
def.setGridX(false);
def.setGridY(false);
def.setDrawXGrid(false);
def.setDrawYGrid(false);
}
//System.out.println("rendering: path=" + path + " dsNames[0]=" + dsNames[0] + " dsNames[1]=" + dsNames[1] + " lsnr.getName=" + _listener.getName());
def.setAntiAliasing(false);
//System.out.println("Rendering: \n" + def.exportXmlTemplate());
//System.out.println("*****************\nData: \n" + _listener.getData().dump());
def.setWidth(width);
def.setHeight(height);
RrdGraph graph = new RrdGraph(def);
int totalWidth = graph.getRrdGraphInfo().getWidth();
int totalHeight = graph.getRrdGraphInfo().getHeight();
BufferedImage img = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_USHORT_565_RGB);
Graphics gfx = img.getGraphics();
graph.render(gfx);
ImageOutputStream ios = new MemoryCacheImageOutputStream(out);
ImageIO.write(img, "png", ios);
//System.out.println("Graph created");
byte data[] = null;
if ( (width <= 0) || (height <= 0) )
data = graph.getPNGBytes();
else
data = graph.getPNGBytes(width, height);
//long timeToPlot = System.currentTimeMillis() - begin;
out.write(data);
//File t = File.createTempFile("jrobinData", ".xml");
//_listener.getData().dumpXml(new FileOutputStream(t));
//System.out.println("plotted: " + (data != null ? data.length : 0) + " bytes in " + timeToPlot
@ -163,8 +193,9 @@ class SummaryRenderer {
/** translate a string */
private String _(String s) {
// the RRD font doesn't have zh chars, at least on my system
if ("zh".equals(Messages.getLanguage(_context)))
return s;
// Works on 1.5.9
//if ("zh".equals(Messages.getLanguage(_context)))
// return s;
return Messages.getString(s, _context);
}
@ -173,8 +204,9 @@ class SummaryRenderer {
*/
private String _(String s, String o) {
// the RRD font doesn't have zh chars, at least on my system
if ("zh".equals(Messages.getLanguage(_context)))
return s.replace("{0}", o);
// Works on 1.5.9
//if ("zh".equals(Messages.getLanguage(_context)))
// return s.replace("{0}", o);
return Messages.getString(s, o, _context);
}
}

View File

@ -165,7 +165,7 @@
<input type="radio" class="optbox" name="ntcpAutoPort" value="1" <%=nethelper.getTcpAutoPortChecked(1) %> >
<%=intl._("Specify Port")%>:
<input name ="ntcpport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="ntcpport" />" ><br>
</p><p><b><%=intl._("Note")%>: <%=intl._("Changing these settings will restart your router.")%></b></p>
</p><p><b><%=intl._("Notes")%>: <%=intl._("a) Do not reveal your port numbers to anyone! b) Changing these settings will restart your router.")%></b></p>
<hr><div class="formaction">
<input type="reset" value="<%=intl._("Cancel")%>" >
<input type="submit" name="save" value="<%=intl._("Save changes")%>" >

View File

@ -11,7 +11,6 @@
* flags.jsp?c=de => icons/flags/de.png
* with headers set so the browser caches.
*/
boolean rendered = false;
String c = request.getParameter("c");
if (c != null && c.length() > 0) {
java.io.OutputStream cout = response.getOutputStream();
@ -38,17 +37,23 @@ if (c != null && c.length() > 0) {
response.setContentType("image/png");
try {
net.i2p.util.FileUtil.readFile(file, base, cout);
rendered = true;
} catch (java.io.IOException ioe) {}
if (rendered)
cout.close();
} catch (java.io.IOException ioe) {
// prevent 'Committed' IllegalStateException from Jetty
if (!response.isCommitted()) {
response.sendError(403, ioe.toString());
} else {
net.i2p.I2PAppContext.getGlobalContext().logManager().getLog(getClass()).error("Error serving flags/" + c + ".png", ioe);
// Jetty doesn't log this
throw ioe;
}
}
} else {
/*
* Send a 403 instead of a 404, because the server sends error.jsp
* for 404 errors, complete with the summary bar, which would be
* a huge load for a page full of flags if the user didn't have the
* flags directory for some reason.
*/
response.sendError(403, "No flag specified");
}
/*
* Send a 403 instead of a 404, because the server sends error.jsp
* for 404 errors, complete with the summary bar, which would be
* a huge load for a page full of flags if the user didn't have the
* flags directory for some reason.
*/
if (!rendered)
response.sendError(403, "Flag not found");
%>

View File

@ -5,19 +5,26 @@
<html><head>
<%@include file="css.jsi" %>
<%=intl.title("graphs")%>
</head><body>
<%@include file="summary.jsi" %>
<h1><%=intl._("I2P Performance Graphs")%></h1>
<div class="main" id="main">
<div class="graphspanel">
<div class="widepanel">
<jsp:useBean class="net.i2p.router.web.GraphHelper" id="graphHelper" scope="request" />
<% graphHelper.storeMethod(request.getMethod()); %>
<jsp:setProperty name="graphHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
<% /* GraphHelper sets the defaults in setContextId, so setting the properties must be after the context */ %>
<jsp:setProperty name="graphHelper" property="*" />
<% graphHelper.storeWriter(out); %>
<%
graphHelper.storeWriter(out);
graphHelper.storeMethod(request.getMethod());
// meta must be inside the head
boolean allowRefresh = intl.allowIFrame(request.getHeader("User-Agent"));
if (allowRefresh) {
out.print(graphHelper.getRefreshMeta());
}
%>
</head><body>
<%@include file="summary.jsi" %>
<h1><%=intl._("I2P Performance Graphs")%></h1>
<div class="main" id="main">
<div class="graphspanel">
<div class="widepanel">
<jsp:getProperty name="graphHelper" property="allMessages" />
<jsp:getProperty name="graphHelper" property="images" />
<jsp:getProperty name="graphHelper" property="form" />

View File

@ -47,7 +47,7 @@ This may range from 8-10 to several hundred, depending on your total bandwidth,
shared bandwidth, and locally-generated traffic.
The second number is the number of peers seen in the last hour or so.
Do not be concerned if these numbers vary widely.
<a href="configstats.jsp#router.activePeers">[Enable graphing]</a>.
First enable all stats to <a href="configstats.jsp#router.activePeers">[Enable graphing]</a>.
<li class="tidylist"><b>Fast:</b>
This is the number of peers you use for building client tunnels. It is generally in the
range 8-30. Your fast peers are shown on the <a href="profiles.jsp">profiles page</a>.
@ -56,7 +56,7 @@ range 8-30. Your fast peers are shown on the <a href="profiles.jsp">profiles pag
This is the number of peers you use for building some of your exploratory tunnels. It is generally in the
range 8-75. The fast peers are included in the high capacity tier.
Your high capacity peers are shown on the <a href="profiles.jsp">profiles page</a>.
<a href="configstats.jsp#router.highCapacityPeers">[Enable graphing]</a>.
First enable all stats to <a href="configstats.jsp#router.highCapacityPeers">[Enable graphing]</a>.
<li class="tidylist"><b>Well Integrated:</b>
This is the number of peers you use for network database inquiries.
These are usually the "floodfill" peers.

View File

@ -0,0 +1,160 @@
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
/*
* Do not tag this file for translation - copy it to help_xx.jsp and translate inline.
*/
%>
<html><head><title>Console du routeur I2P - Aide</title>
<%@include file="css.jsi" %>
</head><body>
<%@include file="summary.jsi" %>
Traduction de mars 2011 (magma@mail.i2p)
<h1>Aide et assistance du routeur I2P</h1>
<div class="main" id="main"><p>
Si vous souhaitez améliorer ou traduire la documentation ou d'autres versants du projet, merci de vous reporter à
la page consacrée aux <a href="http://www.i2p2.i2p/getinvolved_fr.html">volontaires</a>.
</p><p>D'autres détails sont disponibles ici:
<ul class="links">
<li class="tidylist"><a href="http://www.i2p2.i2p/faq.html">FAQ en anglais sur www.i2p2.i2p</a>
<li class="tidylist"><a href="http://www.i2p2.i2p/faq_fr.html">les FAQ en français</a>.</ul>
<br>Il y a aussi le <a href="http://forum.i2p/">forum I2P</a>
et l'IRC.</p>
<h2>Informations du panneau de surveillance</h2><p>
Plusieurs des statistiques affichées dans le panneau de surveillance peuvent être
<a href="configstats.jsp">configurées</a> pour être affichées sous forme de <a href="graphs.jsp">graphiques</a> pour
analyse sur la durée.
</p><h3>GÉNÉRAL</h3><ul>
<li class="tidylist"><b>Identité locale:</b>
Cliquez sur "Afficher" pour voir l'empreinte Base64 à 44 caractères (256 bits) de votre routeur. Le hachage
complet est affiché sur votre <a href="netdb.jsp?r=.">page d'infos routeur</a>. Ne la divulguez jamais à personne,
car l'info routeur contient votre adresse IP.
<li class="tidylist"><b>Version:</b>
La version d'I2P qui vous affiche actuellement cette page.
<li class="tidylist"><b>Lancé depuis:</b>
Indique depuis combien de temps le routeur tourne.
<li class="tidylist"><b>Réseau:</b>
Statut de joignabilité du routeur par les autres routeurs.
Plus d'infos sur la page de <a href="config.jsp#help">configuration</a>.
</ul><h3>Pairs</h3><ul>
<li class="tidylist"><b>Actifs:</b>
le premier nombre est celui des routeurs avec qui le votre a communiqué dans les dernières minutes. Ça peut varier de
8-10 à plusieurs centaines, selon votre bande passante et son rapport de partage, et le trafic généré localement. Le
second est celui des pairs vus dans les dernières heures. Ces nombres penvent varier sensiblement sans conséquence.
<a href="configstats.jsp#router.activePeers">[Activer le graphique]</a> (activer auparavant "toutes
les statistiques").
<li class="tidylist"><b>Rapides:</b>
le nombre de pairs que vous mettez à contribution pour construire vos tunnels clients. En général dans une tranche de
8 à 30. Vos pairs rapides sont détaillés sur la page <a href="profiles.jsp">profils</a>.
<a href="configstats.jsp#router.fastPeers">[Activer le graphique]</a>.
<li class="tidylist"><b>Hautes capacités:</b>
nombre des pairs que vous utilisez pour construire quelques uns de vos tunnels exploratoires. Habituellement de 8 à 75.
Les pairs rapides font partie du groupe des "Hautes capacités". Vos pairs à hautes capacités sont aussi listés sur
la page <a href="profiles.jsp">profils</a>.
<a href="configstats.jsp#router.highCapacityPeers">[Activer le graphique]</a> (activer auparavant "toutes les
statistiques").
<li class="tidylist"><b>Bien intégrés:</b>
vous utilisez ce groupe pour vos requêtes à la base de données du réseau. Ils sont souvent des pairs de remplissage par
diffusion ("floodfill"). Vos pairs "bien intégrés" sont affichés en bas de la même page
<a href="profiles.jsp">profils</a>.
<li class="tidylist"><b>Connus:</b> c'est tous les routeurs dont vous connaissez l'existance. Il sont listés sur la
page <a href="netdb.jsp">base de données du réseau</a>. De moins de 100 à 1000 ou plus. Ce nombre ne représente pas la
taille totale du réseau; il varie en fonction de votre bande passante totale et son rapport de partage, et du trafic
local. I2P n'a pas besoin que chaque routeur connaisse tous les autres.
</ul><h3>Bande passante entrée/sortie</h3><div align="justify">
Ça parle tout seul. Toutes les valeurs sont en octets par seconde (o/s), pas en bits par seconde (b/s). Modifiez vos
limites de bande passante sur la page de <a href="config.jsp#help">configuration</a>.
Le <a href="graphs.jsp">graphique de bande passante</a> est activé par défaut.</div>
<h3>Destinations locales</h3><div align="justify">
C'est le nom I2P des applications qui se connectent par votre routeur. Elles peuvent être des clients lancés depuis
<a href="i2ptunnel/index.jsp">I2PTunnel</a> ou des programmes tiers qui se connectent via SAM, BOB ou directement à
I2CP.
</div><h3>TUNNELS:</h3><div align="justify">
Les tunnels actuels sont affichés sur la page <a href="tunnels.jsp">tunnels</a>.</div><ul>
<li class="tidylist"><div align="justify"><b>Exploratoires:</b> tunnels créés par votre routeur et utilisés avec les
pairs diffuseurs pour la création des nouveaux tunnels et le test des tunnels existants.</div>
<li class="tidylist"><b>Clients:</b> tunnels créés par votre routeur pour chaque utilisation cliente.
<li class="tidylist"><b>Participants:</b> les tunnels créés par d'autres routeurs et qui passent par le votre. Leur
nombre dépend largement de la demande du réseau, de votre part de bande passante partagée, et du trafic local.
La méthode recommandée pour limiter leur nombre est de diminuer le rapport de bande passante partagée dans la
<a href="config.jsp#help">configuration</a>. Vous pouvez également limiter ce nombre en définissant la variable
<tt>router.maxParticipatingTunnels=nnn</tt> dans la <a href="configadvanced.jsp">configuration avancée</a>.
<a href="configstats.jsp#tunnel.participatingTunnels">[Activer le graphique]</a>.
<li class="tidylist"><b>Rapport de partage:</b> le nombre de tunnels participants que vous routez pour les autres,
divisé par le nombre total de sauts dans tous vos tunnels exploratoires et clients. S'il est supérieur à 1, cela
signifie que vous contribuez à plus de tunnels que vous n'en utilisez.
</ul>
<h3>ENCOMBREMENT</h3><div align="justify">
Indications de base sur la charge du routeur:</div><ul>
<li class="tidylist"><b>Retard de tâches:</b> temps d'attente des tâches avant exécution. La file d'attente est
présentée la pages des <a href="jobs.jsp">tâches</a>. Malheureusement, il y a dans le routeur plusieurs autres files
d'attentes qui ne peuvent être affichées dans la console. Le retard de tâches devrait rester à zéro en permamence. s'il
régulièrement supérieur à 500ms, soit votre PC est très lent, soit le routeur a de sérieux problèmes.
<a href="configstats.jsp#jobQueue.jobLag">[Activer le graphique]</a>.
<li class="tidylist"><b>Retard de messages:</b> temps de rétention des messages en file d'attente d'envois, normalement
quelques centaines de ms ou moins. Au dessus d'une seconde, votre PC est très lent, vous devriez fignoler vos réglages
de bande passante, ou vos clients (bittorrent, iMule...?) envoient trop de données et il faudrait voir à leur tenir
la bride. <a href="configstats.jsp#transport.sendProcessingTime">[Activer le graphique]</a>
(transport.sendProcessingTime).
<li class="tidylist"><b>Retard de tunnels:</b> le temps d'aller-retour pour un test de tunnel (envoi d'un seul message
par un tunnel client et dans un tunnel exploratoire ou vice versa. Normalement inférieur à 5s. Si c'est constamment
supérieur, votre PC est très lent, vous devriez retoucher vos limites de bande passante, ou il y a un problème réseau.
<a href="configstats.jsp#tunnel.testSuccessTime">[Activer le graphique]</a> (tunnel.testSuccessTime).
<li class="tidylist"><b>En attente:</b> nombre de requêtes de création de tunnels participants en attente provenant
d'autres routeurs. Normalement proche de zéro. Sinon, votre ordinateur est trop lent et vous devriez diminuer votre
limite de bande passante partagée.
<li class="tidylist"><b>Accepte/Refuse:</b> c'est le statut de votre routeur au regard de son comportement vis à vis
des demandes de création de tunnels participants provenant d'autres routeurs. Votre routeur peut accepter ou refuser
tout ou partie des requêtes, ou les refuser en totalité pour des raisons prévues telles que le contrôle de la bande
passante et des ressources CPU en vue de préserver les performances des clients locaux.</ul>
<h2>Informations légales</h2><p>Le routeur I2P (router.jar) et le SDK (i2p.jar) sont presque entièrement dans le
domaine public, à quelques notobles exceptions près:</p><ul>
<li class="tidylist">Le code ElGamal et DSA, sous licence BSD, écrits par TheCrypto</li>
<li class="tidylist">SHA256 et HMAC-SHA256, sous licence MIT, écrits par the Legion of the Bouncycastle</li>
<li class="tidylist">Le code AES, sous licence Cryptix (MIT), écrit pas l'équipe the Cryptix</li>
<li class="tidylist">Le code SNTP, sous licence BSD, écrit par Adam Buckley</li>
<li class="tidylist">Le reste, directement issu du domaine public, est écrit par jrandom, mihi, hypercubus, oOo,
ugha, duck, shendaras, et d'autres.</li>
</ul>
<p>Au-dessus du routeur I2P on a une série d'applications clientes, ayant chacune ses particularités en termes de
licences et de dépendances. Cette page est affichée en tant qu'élément de l'application cliente console du routeur I2P,
qui est une version allégée d'une instance <a href="http://jetty.mortbay.com/jetty/index.html">Jetty</a> (allégée en
ce que nous n'avons pas inclus les applications de démo et autres compléments, et que nous avons simplifié la
configuration), vous permettant de déployer dans votre routeur des applications web JSP/Servlet standards. De son côté
Jetty fait usage de l'implémentation javax.servlet d'Apache. Ce dispositif inclus du logiciel développé par la
fondation Apache Software (http://www.apache.org/). </p>
<p>Une autre application visible sur cette page: <a href="http://www.i2p2.i2p/i2ptunnel">I2PTunnel</a>
(votre <a href="i2ptunnel/" target="_blank">interface web</a>) sous licence GPL écrite par mihi qui vous permet de
mettre en tunnels le trafic normal TCP/IP sur I2P (comme les proxy eep et le proxy irc). Il y a aussi un client webmail
<a href="http://susi.i2p/">susimail</a> <a href="susimail/susimail">disponible</a> dans la console, qui est sous
licence GPL et écrit par susi23. L'application carnet d'adresses, écrite par
<a href="http://ragnarok.i2p/">Ragnarok</a> gère votre fichier hosts.txt (voir ./addressbook/ pour plus de détails).</p>
<p>Le routeur inclu aussi par défaut le pont <a href="http://www.i2p2.i2p/sam">SAM</a> du domaine public de l'humanité,
que les autres applications clientes (comme le <a href="http://duck.i2p/i2p-bt/">portage bittorrent</a>) peuvent à leur
tour utiliser. Il y a aussi une bibliothèque optimisée pour les calculs sur les grand nombres - jbigi - qui de son
côté utilise la bibliothèque sous licence LGPL <a href="http://swox.com/gmp/">GMP</a>, adaptée à diverses architectures
PC. Les lanceurs pour Windows sont faits avec <a href="http://launch4j.sourceforge.net/">Launch4J</a>, et l'installeur
avec <a href="http://www.izforge.com/izpack/">IzPack</a>. Les détails sur les autres applications disponibles comme sur
leurs licences respectives, référez-vous à notre <a href="http://www.i2p2.i2p/licenses">politique de licences</a>.
Les sources du code I2P et de la plupart des applications jointes est sur notre page de
<a href="http://www.i2p2.i2p/download_fr">téléchargements</a>.
.</p>
<h2>Historique des évolutions</h2>
<jsp:useBean class="net.i2p.router.web.ContentHelper" id="contenthelper" scope="request" />
<% java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "history.txt"); %>
<jsp:setProperty name="contenthelper" property="page" value="<%=fpath.getAbsolutePath()%>" />
<jsp:setProperty name="contenthelper" property="maxLines" value="256" />
<jsp:setProperty name="contenthelper" property="startAtBeginning" value="true" />
<jsp:getProperty name="contenthelper" property="textContent" />
<p><a href="/history.txt">Historique complet</a>
</p><hr></div></body></html>

View File

@ -11,6 +11,13 @@ String base = net.i2p.I2PAppContext.getGlobalContext().getBaseDir().getAbsoluteP
try {
net.i2p.util.FileUtil.readFile("history.txt", base, response.getOutputStream());
} catch (java.io.IOException ioe) {
response.sendError(403, ioe.toString());
// prevent 'Committed' IllegalStateException from Jetty
if (!response.isCommitted()) {
response.sendError(403, ioe.toString());
} else {
net.i2p.I2PAppContext.getGlobalContext().logManager().getLog(getClass()).error("Error serving history.txt", ioe);
// Jetty doesn't log this
throw ioe;
}
}
%>

View File

@ -8,17 +8,21 @@
*/
boolean rendered = false;
/**** unused
String templateFile = request.getParameter("template");
if (templateFile != null) {
java.io.OutputStream cout = response.getOutputStream();
response.setContentType("image/png");
rendered = net.i2p.router.web.StatSummarizer.instance().renderPng(cout, templateFile);
}
****/
net.i2p.stat.Rate rate = null;
String stat = request.getParameter("stat");
String period = request.getParameter("period");
boolean fakeBw = (stat != null && ("bw.combined".equals(stat)));
net.i2p.stat.RateStat rs = net.i2p.I2PAppContext.getGlobalContext().statManager().getRate(stat);
net.i2p.stat.RateStat rs = null;
if (stat != null)
rs = net.i2p.I2PAppContext.getGlobalContext().statManager().getRate(stat);
if ( !rendered && ((rs != null) || fakeBw) ) {
long per = -1;
try {
@ -38,6 +42,8 @@ if ( !rendered && ((rs != null) || fakeBw) ) {
}
} else {
response.setContentType("image/png");
// very brief 45 sec expire
response.setDateHeader("Expires", net.i2p.I2PAppContext.getGlobalContext().clock().now() + (45*1000));
int width = -1;
int height = -1;
int periodCount = -1;
@ -71,6 +77,9 @@ if ( !rendered && ((rs != null) || fakeBw) ) {
* a huge load for a page full of graphs if there's a problem
*/
if (!rendered) {
response.sendError(403, "That stat is not available");
if (stat != null)
response.sendError(403, "The stat " + stat + " is not available, it must be enabled for graphing on the stats configuration page.");
else
response.sendError(403, "No stat specified");
}
%>

View File

@ -63,6 +63,13 @@ if (length > 0)
try {
net.i2p.util.FileUtil.readFile(uri, base, response.getOutputStream());
} catch (java.io.IOException ioe) {
response.sendError(403, ioe.toString());
// prevent 'Committed' IllegalStateException from Jetty
if (!response.isCommitted()) {
response.sendError(403, ioe.toString());
} else {
net.i2p.I2PAppContext.getGlobalContext().logManager().getLog(getClass()).error("Error serving " + uri, ioe);
// Jetty doesn't log this
throw ioe;
}
}
%>

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

@ -0,0 +1,544 @@
# 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
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
"POT-Creation-Date: 2011-03-03 18:29+0000\n"
"PO-Revision-Date: 2011-03-22 15:48+0000\n"
"Last-Translator: punkibastardo <punkibastardo@gmail.com>\n"
"Language-Team: Spanish (Castilian) <None>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\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 "Buscar"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204
msgid "Search within filtered list"
msgstr "Buscar con la lista filtrada"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206
msgid "Filtered list"
msgstr "Lista filtrada"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210
msgid "no matches"
msgstr "No hay coincidencias"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213
msgid "Addressbook"
msgstr "Libreta de direcciones"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215
msgid "contains no entries"
msgstr "no contiene entradas"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217
msgid "contains 1 entry"
msgstr "contiene 1 entrada"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219
#, java-format
msgid "contains {0} entries"
msgstr "contiene {0} entradas"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229
#, java-format
msgid "Showing {0} of {1}"
msgstr "Mostrando {0} de {1}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368
msgid "Add"
msgstr "Agregar"
#: ../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
msgid "Replace"
msgstr "Reemplazar"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264
#, java-format
msgid "Host name {0} is already in addressbook, unchanged."
msgstr ""
"El nombre del host {0} ya está en la libreta de direcciones, sin cambios."
#: ../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."
msgstr ""
"El nombre del host {0} ya está en la libreta de direcciones con un destino "
"diferente. Haga clic en \"reemplazar\" para sobrescribir."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278
#, java-format
msgid "Destination added for {0}."
msgstr "Destino añadido para {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280
#, java-format
msgid "Destination changed for {0}."
msgstr "Destino cambiado para {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285
msgid "Invalid Base 64 destination."
msgstr "Destino en Base 64 no válido"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289
msgid "Please enter a host name and destination"
msgstr "Por favor, introduzca un nombre de host y destino"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314
msgid "Delete Selected"
msgstr "Eliminar seleccionados"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303
#, java-format
msgid "Destination {0} deleted."
msgstr "Destino {0} eliminado."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305
#, java-format
msgid "{0} destinations deleted."
msgstr "{0} destinos eliminados."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311
msgid "Addressbook saved."
msgstr "Libreta de direcciones guardada."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314
msgid "ERROR: Could not write addressbook file."
msgstr "ERROR: No se pudo escribir el archivo de la libreta direcciones."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319
#: ../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 ""
"presentación de formulario no válido, probablemente debido a que ha "
"utilizado el botón \"atrás\" o \"recargar\" de su navegador. Por favor, "
"vuelva a enviarlo."
#: ../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
msgid "Save"
msgstr "Guardar"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141
msgid "Configuration saved."
msgstr "Configuración guardada."
#: ../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
msgid "Reload"
msgstr "Recargar"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144
msgid "Configuration reloaded."
msgstr "Configuración recargada."
#. 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 ""
"Suscripciones guardadas, actualizando la libreta de direcciones a partir de "
"las fuentes de suscripción ahora."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
msgid "Subscriptions saved."
msgstr "Suscripciones guardadas."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
msgid "Subscriptions reloaded."
msgstr "Suscripciones recargadas."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
msgid "addressbook"
msgstr "libreta de direcciones"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../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/subscriptions_jsp.java:104
msgid "addressbooks"
msgstr "libretas de direcciones"
#: ../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/subscriptions_jsp.java:106
msgid "private"
msgstr "privado"
#: ../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/subscriptions_jsp.java:108
msgid "master"
msgstr "maestro"
#: ../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/subscriptions_jsp.java:110
msgid "router"
msgstr "router"
#: ../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/subscriptions_jsp.java:112
msgid "published"
msgstr "publicado"
#: ../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/subscriptions_jsp.java:114
msgid "subscriptions"
msgstr "suscripciones"
#: ../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/subscriptions_jsp.java:116
msgid "configuration"
msgstr "configuración"
#: ../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/subscriptions_jsp.java:118
msgid "overview"
msgstr "resumen"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163
msgid "Filter"
msgstr "Filtro"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166
msgid "all"
msgstr "todos"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177
msgid "Current filter"
msgstr "Filtro actual"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182
msgid "clear filter"
msgstr "filtro actual"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224
msgid "Name"
msgstr "Nombre"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362
msgid "Destination"
msgstr "Destino"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257
msgid "Mark for deletion"
msgstr "Marcar para eliminar"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279
msgid "address helper link"
msgstr "ayudante de dirección del enlace"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312
msgid "Cancel"
msgstr "Cancelar"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
msgid "This addressbook is empty."
msgstr "Esta libreta de direcciones está vacía."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356
msgid "Add new destination"
msgstr "Añadir nuevo destino"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358
msgid "Hostname"
msgstr "Nombre de Host"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132
msgid "Hints"
msgstr "Consejos"
#: ../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 ""
"Las rutas de archivos y de directorios mostradas aquí son relativas al "
"directorio de trabajo de la libreta de direcciones, que es normalmente "
"~/.i2p/addressbook/ (Linux) o %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 ""
"Si desea agregar manualmente líneas a una libreta de direcciones, añadalos a"
" la libreta de direcciones privada o maestra."
#: ../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 ""
"La libreta de direcciones del router y la libreta de direcciones publicada "
"son actualizadas por la aplicación libreta de direcciones."
#: ../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 ""
"Al publicar su libro de direcciones, TODOS los destinos de la libreta "
"maestra y la libreta de direcciones del router aparecen ahí."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142
msgid ""
"Use the private addressbook for private destinations, these are not "
"published."
msgstr ""
"Utilice la libreta de direcciones privada para destinos privados, éstos no "
"serán publicados."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144
msgid "Options"
msgstr "Opciones"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr ""
"El archivo que contiene la lista de suscripciones URL (no es necesario "
"cambiarlo)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
msgid "Update interval in hours"
msgstr "Intervalo de actualización en horas"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
msgid ""
"Your public hosts.txt file (choose a path within your webserver document "
"root)"
msgstr ""
"Su archivo hosts.txt público (elija una ruta dentro de la raíz de la "
"documentación de su servidor web)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152
msgid "Your hosts.txt (don't change)"
msgstr "Su hosts.txt (no cambiar)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154
msgid "Your personal addressbook, these hosts will be published"
msgstr "Su libreta de direcciones personal, estos hosts serán publicados"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156
msgid "Your private addressbook, it is never published"
msgstr "Su libreta de direcciones privada, nunca se publica"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
msgid "Port for your eepProxy (no need to change)"
msgstr "Puerto para su eepProxy (no es necesario cambiarlo)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
msgid "Hostname for your eepProxy (no need to change)"
msgstr "Nombre de la host para su eepProxy (no es necesario cambiarlo)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
msgid "Whether to update the published addressbook"
msgstr "Sea para actualizar la libreta de direcciones publicadas"
#: ../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)"
msgstr ""
"Archivo que contiene la cabecera de los etags desde la URL de subscripciones"
" capturada (no es necesario cambiarlo)"
#: ../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)"
msgstr ""
"Archivo que contiene la fecha y hora de modificación para cada URL de "
"suscripción capturada (no es necesario cambiarlo)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
msgid "File to log activity to (change to /dev/null if you like)"
msgstr ""
"El archivo en el que se guarda el registro de actividad (cambielo a "
"/dev/null si quiere)"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91
msgid "Introduction"
msgstr "Introducción"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109
msgid "What is the addressbook?"
msgstr "¿Qué es la libreta de direcciones?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111
msgid "The addressbook application is part of your i2p installation."
msgstr ""
"La aplicación de libreta de direcciones es parte de la instalación 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 ""
"Actualiza constantemente su archivo hosts.txt desde fuentes distribuidas o "
"\"suscripciones\"."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
msgid ""
"In the default configuration, the addressbook is only subscribed to "
"www.i2p2.i2p."
msgstr ""
"Con la configuración predeterminada, la libreta de direcciones sólo está "
"suscrita a 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 ""
"Suscribirse a otros sitios es fácil, sólo tiene que añadirlos a su archivo "
"de <a href=\"subscriptions.jsp\">suscripciones</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 ""
"Para obtener más información sobre los nombres en I2P, consulte <a "
"href=\"http://www.i2p2.i2p/naming.html\">la información general en "
"www.i2p2.i2p</a> ."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
msgid "How does the addressbook work?"
msgstr "¿Cómo funciona la libreta de direcciones?"
#: ../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 ""
"La aplicación de libreta de direcciones comprueba periódicamente sus "
"suscripciones y funde su contenido con la libreta de direcciones de su "
"\"router\" almacenada en el archivo 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 ""
"Luego también une su libreta de direcciones \"maestra\" (userhosts.txt) con "
"la libreta de direcciones del router."
#: ../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 ""
"Si está configurada, la libreta de direcciones del router ahora se escribirá"
" a la libreta \"publicada\", que estará disponible al público si está "
"ejecutando un eepsite."
#: ../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 ""
"El router también utiliza una libreta de direcciones privadas "
"(privatehosts.txt, no se muestra en la imagen), que ni se fusiona ni es "
"publicada."
#: ../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 ""
"Puede visitar a los hosts que aparecen en su libreta de direcciones privada,"
" pero su dirección no se distribuye a terceros."
#: ../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 ""
"La libreta de direcciones privada también se pueden utilizar para alias de "
"los hosts en sus otras libretas de direcciones."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
msgid "The subscription file contains a list of i2p URLs."
msgstr "El archivo de suscripción contiene una lista de URLs I2P."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr ""
"La aplicación de libreta de direcciones comprueba regularmente esta lista en"
" busca de nuevos eepsites."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
msgid "Those URLs refer to published hosts.txt files."
msgstr "Esas URLs referencian a los archivos hosts.txt publicados."
#: ../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 ""
"La suscripción por defecto es el hosts.txt de www.i2p2.i2p, que se actualiza"
" con poca frecuencia."
#: ../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 ""
"Por lo tanto, es una buena idea agregar suscripciones adicionales a sitios "
"que ttengan las direcciones más recientes"
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
msgid "See the FAQ for a list of subscription URLs."
msgstr ""
"Ver las preguntas frecuentes para obtener una lista de direcciones URL de "
"suscripciónes."

View File

@ -0,0 +1,435 @@
# 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
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P susidns\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-24 16:49+0000\n"
"PO-Revision-Date: 2011-04-09 02:53+0100\n"
"Last-Translator: magma <magma@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n >= 2)\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 "Chercher"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:204
msgid "Search within filtered list"
msgstr "Chercher dans la liste filtrée"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206
msgid "Filtered list"
msgstr "Liste filtrée"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:210
msgid "no matches"
msgstr "aucune correspondance"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:213
msgid "Addressbook"
msgstr "Le carnet d'adresses"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:215
msgid "contains no entries"
msgstr "est vide"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:217
msgid "contains 1 entry"
msgstr "contient 1 entrée"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:219
#, java-format
msgid "contains {0} entries"
msgstr "contient {0} entrée(s)"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:229
#, java-format
msgid "Showing {0} of {1}"
msgstr "Affichage {0} sur {1}"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:260
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368
msgid "Add"
msgstr "Ajouter"
#: ../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
msgid "Replace"
msgstr "Remplacer"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264
#, java-format
msgid "Host name {0} is already in addressbook, unchanged."
msgstr "L''hôte {0} est déjà présent: inchangé."
#: ../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."
msgstr "L''hôte {0} est déjà présent avec une destination différente. Cliquez sur \"Remplacer\"...pour le remplacer."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278
#, java-format
msgid "Destination added for {0}."
msgstr "Destination ajoutée pour {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:280
#, java-format
msgid "Destination changed for {0}."
msgstr "Destination modifiée pour {0}."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:285
msgid "Invalid Base 64 destination."
msgstr "Destination Base64 incorrecte."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:289
msgid "Please enter a host name and destination"
msgstr "Entrez un nom d'hôte et sa destination"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:293
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314
msgid "Delete Selected"
msgstr "Supprimer les éléments sélectionnés"
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:303
#, java-format
msgid "Destination {0} deleted."
msgstr "Destination {0} supprimée."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:305
#, java-format
msgid "{0} destinations deleted."
msgstr "{0} destination(s) supprimée(s)."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:311
msgid "Addressbook saved."
msgstr "Carnet d'adresses enregistré."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:314
msgid "ERROR: Could not write addressbook file."
msgstr "ERREUR: impossible d'enregistrer le fichier carnet d'adresses."
#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:319
#: ../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 "Soumission du formulaire incorrecte: vous avez peut-être utilisé le bouton \"Page précédente\" ou \"Recharger\". Merci de soumettre à nouveau."
#: ../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
msgid "Save"
msgstr "Enregistrer"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141
msgid "Configuration saved."
msgstr "Configuration enregistrée."
#: ../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
msgid "Reload"
msgstr "Recharger"
#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144
msgid "Configuration reloaded."
msgstr "Configuration rechargée."
#. 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 "Souscriptions enregistrées, mise à jour en cours du carnet d'adresses à partir de celles-ci."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:143
msgid "Subscriptions saved."
msgstr "Souscription enregistrée."
#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
msgid "Subscriptions reloaded."
msgstr "Souscription rechargée."
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
msgid "addressbook"
msgstr "carnet d'adresses"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
#: ../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/subscriptions_jsp.java:104
msgid "addressbooks"
msgstr "carnets d'adresses"
#: ../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/subscriptions_jsp.java:106
msgid "private"
msgstr "privé"
#: ../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/subscriptions_jsp.java:108
msgid "master"
msgstr "principal"
#: ../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/subscriptions_jsp.java:110
msgid "router"
msgstr "routeur"
#: ../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/subscriptions_jsp.java:112
msgid "published"
msgstr "publié"
#: ../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/subscriptions_jsp.java:114
msgid "subscriptions"
msgstr "souscriptions"
#: ../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/subscriptions_jsp.java:116
msgid "configuration"
msgstr "configuration"
#: ../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/subscriptions_jsp.java:118
msgid "overview"
msgstr "aperçu"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163
msgid "Filter"
msgstr "Filtrer"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166
msgid "all"
msgstr "tout"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177
msgid "Current filter"
msgstr "Filtre courant"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182
msgid "clear filter"
msgstr "effacer le filtre"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224
msgid "Name"
msgstr "Nom"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362
msgid "Destination"
msgstr "Destination"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257
msgid "Mark for deletion"
msgstr "Marquer pour suppression"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279
msgid "address helper link"
msgstr "lien d'aide d'adresse"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312
msgid "Cancel"
msgstr "Annuler"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
msgid "This addressbook is empty."
msgstr "Ce carnet d'adresses est vide"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356
msgid "Add new destination"
msgstr "Ajoutez une nouvelle destination"
#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358
msgid "Hostname"
msgstr "Nom d'hôte"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132
msgid "Hints"
msgstr "Aides"
#: ../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 "Les chemins des fichiers et dossiers listés sont relatifs au répertoire de travail du carnet d'adresses, normalement ~/.i2p/addressbook/ (Linux) ou %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 "si vous voulez ajouter manuellement des lignes dans un carnet d'adresses, faites-le dans le carnet privé ou principal."
#: ../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 "Le carnet d'adresses du routeur et le carnet d'adresses publié sont mis à jour par l'application carnet d'adresses."
#: ../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 "Quand vous publiez votre carnet d'adresses, TOUTES les destinations des carnets principal et routeur le sont."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142
msgid "Use the private addressbook for private destinations, these are not published."
msgstr "Utilisez le carnet d'adresses privé pour les destinations privées: elles ne seront pas publiées."
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144
msgid "Options"
msgstr "Options"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
msgid "File containing the list of subscriptions URLs (no need to change)"
msgstr "fichier contenant la liste des URLs de souscriptions (inutile de modifier)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
msgid "Update interval in hours"
msgstr "Intervalle de mise à jour (en heures)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
msgid "Your public hosts.txt file (choose a path within your webserver document root)"
msgstr "Votre fichier hosts.txt (choisissez un emplacement dans la racine de votre serveur web)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152
msgid "Your hosts.txt (don't change)"
msgstr "Votre hosts.txt (ne pas modifier)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154
msgid "Your personal addressbook, these hosts will be published"
msgstr "Votre carnet d'adresses personnel: ces hôtes peuvent être publiés"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156
msgid "Your private addressbook, it is never published"
msgstr "Votre carnet d'adresses privé n'est jamais publié"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
msgid "Port for your eepProxy (no need to change)"
msgstr "Port de votre proxy eep (inutile de modifier)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
msgid "Hostname for your eepProxy (no need to change)"
msgstr "nom d'hôte de votre proxy eep (inutile de modifier)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
msgid "Whether to update the published addressbook"
msgstr "S'il faut actualiser le carnet d'adresses publié"
#: ../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)"
msgstr "Fichier contenant les en-têtes etag des URLs de souscription (inutile de changer)"
#: ../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)"
msgstr "Fichier contenant les tampons horaires de modification de chaque URL de souscription importée (inutile de modifier)"
#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
msgid "File to log activity to (change to /dev/null if you like)"
msgstr "Fichier d'historiques (modifiez en /dev/null si ça vous chante) "
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91
msgid "Introduction"
msgstr "Introduction"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109
msgid "What is the addressbook?"
msgstr "Qu'est-ce que le carnet d'adresses?"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111
msgid "The addressbook application is part of your i2p installation."
msgstr "L'application carnet d'adresses fait partie intégrante de votre installation 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 "Elle actualise votre fichier hosts.txt à intervalle régulier à partir de sources décentralisées (\"souscriptions\" ou \"abonnements\")"
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
msgid "In the default configuration, the addressbook is only subscribed to www.i2p2.i2p."
msgstr "Dans sa configuration par défaut, le carnet d'adresses est seulement abonné à 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 "La souscription à des sites supplémentaires est aisée: ajoutez-les simplement à votre fichier de <a href=\"subscriptions.jsp\">souscriptions</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 "Plus d'infos sur <a href=\"http://www.i2p2.i2p/techintro_fr.html#app.naming\">le nommage dans I2P</a>."
#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
msgid "How does the addressbook work?"
msgstr "Fonctionnement du carnet d'adresses."
#: ../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 "L'application carnet d'adresses interroge vos souscriptions à intervalle régulier et fusionne leurs contenus dans le carnet d'adresses du \"routeur\", stocké dans le fichier 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 "Puis elle fusionne votre carnet d'adresses \"principal\" (userhosts.txt) dans celui du routeur. "
#: ../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 "Si c'est activé, le carnet du routeur est alors écrit dans le carnet d'adresses \"publié\" qui devient publiquement disponible si vous avez votre propre site eep."
#: ../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 "Le routeur utilise également un carnet privé (privatehosts.txt, non illustré), qui n'est ni fusionné ni publié."
#: ../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 "Les hôtes du carnet privé ne sont accessibles qu'à vous, et leurs adresses ne sont jamais distribuées à personne."
#: ../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 "Le carnet privé peut aussi servir à stocker des alias/pseudos pour des hôtes des autres carnets."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
msgid "The subscription file contains a list of i2p URLs."
msgstr "Le fichier de souscriptions contient une liste d'URLs I2P."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
msgid "The addressbook application regularly checks this list for new eepsites."
msgstr "L'application vérifie régulièrement cette liste pour trouver de nouveaux sites eep."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
msgid "Those URLs refer to published hosts.txt files."
msgstr "Ces URLs font référence aux fichiers hosts.txt des autres utilisateurs."
#: ../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 "L'abonnement par défaut est le fichier hosts.txt de www.i2p2.i2p, mais il est très peu actualisé."
#: ../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 "C'est donc une bonne idée d'ajouter des souscriptions supplémentaires à des sites qui disposent des dernières adresses."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
msgid "See the FAQ for a list of subscription URLs."
msgstr "Voir la <a href=\"http://www.i2p2.i2p/faq_fr.html#subscriptions\">FAQ</a> pour une liste d'URLs de souscriptions."

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,441 @@
# 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
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P\n"
"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
"POT-Creation-Date: 2011-03-12 20:49+0000\n"
"PO-Revision-Date: 2011-04-18 21:35+0100\n"
"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
"Language-Team: Spanish (Castilian) <None>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: src/src/i2p/susi/webmail/WebMail.java:454
msgid "unknown"
msgstr "desconocido"
#: src/src/i2p/susi/webmail/WebMail.java:473
msgid "Warning: no transfer encoding found, fallback to 7bit."
msgstr "Aviso: no se encuentra codificación de transferencia, volviendo a 7 bits."
#: src/src/i2p/susi/webmail/WebMail.java:478
#, java-format
msgid "No encoder found for encoding \\''{0}\\''."
msgstr "No se ha encontrado codificador para la codificación \\''{0}''\\."
#: src/src/i2p/susi/webmail/WebMail.java:484
msgid "Warning: no charset found, fallback to US-ASCII."
msgstr "Aviso: no se ha encontrado el juego de caracteres, volviendo a US-ASCII."
#: src/src/i2p/susi/webmail/WebMail.java:498
#, java-format
msgid "Charset \\''{0}\\'' not supported."
msgstr "juego de caracteres \\''{0}\\''no soportado."
#: src/src/i2p/susi/webmail/WebMail.java:502
#, java-format
msgid "Part ({0}) not shown, because of {1}"
msgstr "La parte ({0}) no se muestra, debido a {1}"
#: src/src/i2p/susi/webmail/WebMail.java:525
msgid "Download"
msgstr "Descarga"
#: src/src/i2p/susi/webmail/WebMail.java:525
msgid "File is packed into a zipfile for security reasons."
msgstr "El archivo está empaquetado en un archivo zip por razones de seguridad."
#: src/src/i2p/susi/webmail/WebMail.java:525
#, java-format
msgid "attachment ({0})."
msgstr "adjunto ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:529
#, java-format
msgid "Attachment ({0})."
msgstr "Adjunto ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:579
msgid "Need username for authentication."
msgstr "Es necesario un nombre de usuario para la autenticación."
#: src/src/i2p/susi/webmail/WebMail.java:583
msgid "Need password for authentication."
msgstr "Es necesaria una contraseña para la autenticación."
#: src/src/i2p/susi/webmail/WebMail.java:587
msgid "Need hostname for connect."
msgstr "Es necesario un nombre de host para la conexión."
#: src/src/i2p/susi/webmail/WebMail.java:592
msgid "Need port number for pop3 connect."
msgstr "Es necesario el número de puerto para conectar pop3."
#: src/src/i2p/susi/webmail/WebMail.java:599
msgid "POP3 port number is not in range 0..65535."
msgstr "El puerto POP3 no está en el rango 0..65535."
#: src/src/i2p/susi/webmail/WebMail.java:605
msgid "POP3 port number is invalid."
msgstr "El puerto POP3 no es válido."
#: src/src/i2p/susi/webmail/WebMail.java:611
msgid "Need port number for smtp connect."
msgstr "Es necesario el número de puerto para conectar smtp."
#: src/src/i2p/susi/webmail/WebMail.java:618
msgid "SMTP port number is not in range 0..65535."
msgstr "El puerto SMTP no está en el rango 0..65535."
#: src/src/i2p/susi/webmail/WebMail.java:624
msgid "SMTP port number is invalid."
msgstr "El puerto SMTP no es válido."
#: src/src/i2p/susi/webmail/WebMail.java:671
msgid "User logged out."
msgstr "Usuario desconectado."
#: src/src/i2p/susi/webmail/WebMail.java:675
msgid "Internal error, lost connection."
msgstr "Error interno, pérdida de conexión."
#: src/src/i2p/susi/webmail/WebMail.java:771
#, java-format
msgid "On {0} {1} wrote:"
msgstr "En {0} {1} escribió:"
#: src/src/i2p/susi/webmail/WebMail.java:818
msgid "begin forwarded mail"
msgstr "comenzar correo reenviado"
#: src/src/i2p/susi/webmail/WebMail.java:840
msgid "end forwarded mail"
msgstr "terminar correo reenviado"
#: src/src/i2p/susi/webmail/WebMail.java:847
#: src/src/i2p/susi/webmail/WebMail.java:1701
msgid "Could not fetch mail body."
msgstr "No se pudo obtener el cuerpo del correo."
#: src/src/i2p/susi/webmail/WebMail.java:875
msgid "Message id not valid."
msgstr "ID del mensaje no válida."
#: src/src/i2p/susi/webmail/WebMail.java:958
#, java-format
msgid "No Encoding found for {0}"
msgstr "No se ha encontrado codificación para {0}"
#: src/src/i2p/susi/webmail/WebMail.java:962
#, java-format
msgid "Could not encode data: {0}"
msgstr "No se pudo codificar los datos: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:967
#, java-format
msgid "Error reading uploaded file: {0}"
msgstr "Error al leer el archivo subido: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1045
msgid "Error parsing download parameter."
msgstr "Error al analizar parámetros de descarga."
#: src/src/i2p/susi/webmail/WebMail.java:1089
msgid "Invalid pagesize number, resetting to default value."
msgstr "Tamaño de página no válida, restableciendo a los valores predeterminados."
#: src/src/i2p/susi/webmail/WebMail.java:1113
msgid "No messages marked for deletion."
msgstr "No hay mensajes marcados para su eliminación."
#: src/src/i2p/susi/webmail/WebMail.java:1133
#, java-format
msgid "Error deleting message: {0}"
msgstr "Error al eliminar el mensaje: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1144
#, java-format
msgid "1 message deleted."
msgid_plural "{0} messages deleted."
msgstr[0] "1 mensaje eliminado."
msgstr[1] "{0} mensajes eliminados."
#: src/src/i2p/susi/webmail/WebMail.java:1264
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Login"
msgstr "Iniciar sesión"
#: src/src/i2p/susi/webmail/WebMail.java:1266
#, java-format
msgid "1 Message"
msgid_plural "{0} Messages"
msgstr[0] "1 Mensaje"
msgstr[1] "{0} Mensajes"
#: src/src/i2p/susi/webmail/WebMail.java:1268
msgid "Show Message"
msgstr "Mostrar mensaje"
#: src/src/i2p/susi/webmail/WebMail.java:1325
#, java-format
msgid "Error decoding content: {0}"
msgstr "Error al descifrar el contenido: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1330
msgid "Error decoding content: No encoder found."
msgstr "Error al descifrar el contenido: No se ha encontrado codificador."
#: src/src/i2p/susi/webmail/WebMail.java:1377
msgid "no subject"
msgstr "sin asunto"
#: src/src/i2p/susi/webmail/WebMail.java:1394
msgid "Found no valid sender address."
msgstr "No se ha encontrado una dirección de remitente válida."
#: src/src/i2p/susi/webmail/WebMail.java:1400
#, java-format
msgid "Found no valid address in \\''{0}\\''."
msgstr "No se ha encontrado ninguna dirección válida en \\''{0}\\''."
#: src/src/i2p/susi/webmail/WebMail.java:1419
msgid "No recipients found."
msgstr "No se han encontrado destinatarios."
#: src/src/i2p/susi/webmail/WebMail.java:1426
msgid "Quoted printable encoder not available."
msgstr "El codificador imprimible citado no se encuentra disponible."
#: src/src/i2p/susi/webmail/WebMail.java:1431
msgid "Header line encoder not available."
msgstr "El codificador de línea de encabezado no está disponible."
#: src/src/i2p/susi/webmail/WebMail.java:1482
msgid "Mail sent."
msgstr "Correo enviado."
#: src/src/i2p/susi/webmail/WebMail.java:1519
msgid "Send"
msgstr "Enviar"
#: src/src/i2p/susi/webmail/WebMail.java:1520
msgid "Cancel"
msgstr "Cancelar"
#: src/src/i2p/susi/webmail/WebMail.java:1521
msgid "Delete Attachment"
msgstr "Eliminar datos adjuntos"
#: 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 "Actualizar configuración"
#: 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 "Desconectarse"
#: src/src/i2p/susi/webmail/WebMail.java:1546
#: src/src/i2p/susi/webmail/WebMail.java:1693
msgid "From:"
msgstr "De:"
#: src/src/i2p/susi/webmail/WebMail.java:1547
msgid "To:"
msgstr "Para:"
#: src/src/i2p/susi/webmail/WebMail.java:1548
msgid "Cc:"
msgstr "Cc:"
#: src/src/i2p/susi/webmail/WebMail.java:1549
msgid "Bcc:"
msgstr "CCO:"
#: src/src/i2p/susi/webmail/WebMail.java:1550
#: src/src/i2p/susi/webmail/WebMail.java:1695
msgid "Subject:"
msgstr "Asunto:"
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "Bcc to self"
msgstr "CCO a mí mismo"
#: src/src/i2p/susi/webmail/WebMail.java:1554
msgid "New Attachment:"
msgstr "Nuevo Archivo adjunto:"
#: src/src/i2p/susi/webmail/WebMail.java:1554
msgid "Upload File"
msgstr "Subir Archivo"
#: src/src/i2p/susi/webmail/WebMail.java:1560
msgid "Attachments:"
msgstr "Archivos adjuntos:"
#: src/src/i2p/susi/webmail/WebMail.java:1582
msgid "User"
msgstr "Usuario"
#: src/src/i2p/susi/webmail/WebMail.java:1583
msgid "Pass"
msgstr "Contraseña"
#: src/src/i2p/susi/webmail/WebMail.java:1584
msgid "Host"
msgstr "Host"
#: src/src/i2p/susi/webmail/WebMail.java:1585
msgid "POP3-Port"
msgstr "Puerto-POP3"
#: src/src/i2p/susi/webmail/WebMail.java:1586
msgid "SMTP-Port"
msgstr "Puerto-SMTP"
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Create Account"
msgstr "Crear una cuenta"
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Reset"
msgstr "Cancelar"
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Really delete the marked messages?"
msgstr "¿Realmente deseas borrar los mensajes marcados?"
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Yes, really delete them!"
msgstr "Sí, realmente eliminarlos!"
#: src/src/i2p/susi/webmail/WebMail.java:1601
#: src/src/i2p/susi/webmail/WebMail.java:1680
msgid "New"
msgstr "Nuevo"
#: src/src/i2p/susi/webmail/WebMail.java:1602
#: src/src/i2p/susi/webmail/WebMail.java:1681
msgid "Reply"
msgstr "Responder"
#: src/src/i2p/susi/webmail/WebMail.java:1603
#: src/src/i2p/susi/webmail/WebMail.java:1682
msgid "Reply All"
msgstr "Responder a todos"
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1683
msgid "Forward"
msgstr "Reenviar"
#: src/src/i2p/susi/webmail/WebMail.java:1605
#: src/src/i2p/susi/webmail/WebMail.java:1684
msgid "Delete"
msgstr "Eliminar"
#: src/src/i2p/susi/webmail/WebMail.java:1606
msgid "Check Mail"
msgstr "Comprobar correo"
#: src/src/i2p/susi/webmail/WebMail.java:1610
msgid "Sender"
msgstr "Remitente"
#: src/src/i2p/susi/webmail/WebMail.java:1611
msgid "Subject"
msgstr "Asunto"
#: src/src/i2p/susi/webmail/WebMail.java:1612
msgid "Date"
msgstr "Fecha"
#: src/src/i2p/susi/webmail/WebMail.java:1613
msgid "Size"
msgstr "Tamaño"
#: src/src/i2p/susi/webmail/WebMail.java:1639
#, java-format
msgid "1 Byte"
msgid_plural "{0} Bytes"
msgstr[0] "1 Byte"
msgstr[1] "{0} Bytes"
#: src/src/i2p/susi/webmail/WebMail.java:1644
msgid "Mark All"
msgstr "Marcar todos"
#: src/src/i2p/susi/webmail/WebMail.java:1645
msgid "Invert Selection"
msgstr "Invertir selección"
#: src/src/i2p/susi/webmail/WebMail.java:1646
msgid "Clear"
msgstr "Despejar"
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
msgid "First"
msgstr "Primero"
#: 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 "Anterior"
#: src/src/i2p/susi/webmail/WebMail.java:1651
#, java-format
msgid "Page {0} of {1}"
msgstr "Página {0} de {1}"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
msgid "Last"
msgstr "Última"
#: 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 "Siguiente"
#: src/src/i2p/susi/webmail/WebMail.java:1657
msgid "Pagesize:"
msgstr "Tamaño de página:"
#: src/src/i2p/susi/webmail/WebMail.java:1658
msgid "Set"
msgstr "Set"
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Really delete this message?"
msgstr "¿Realmente deseas borrar este mensaje?"
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Yes, really delete it!"
msgstr "Sí, realmente eliminarlo!"
#: src/src/i2p/susi/webmail/WebMail.java:1687
msgid "Back to Folder"
msgstr "Volver a carpeta"
#: src/src/i2p/susi/webmail/WebMail.java:1694
msgid "Date:"
msgstr "Fecha:"
#: src/src/i2p/susi/webmail/WebMail.java:1705
msgid "Could not fetch mail."
msgstr "No se pudo descargar el correo."

View File

@ -0,0 +1,441 @@
# 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
# foo <foo@bar>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: I2P susimail\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-03-24 16:49+0000\n"
"PO-Revision-Date: 2011-04-09 03:06+0100\n"
"Last-Translator: magma <magma@mail.i2p>\n"
"Language-Team: duck <duck@mail.i2p>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n >= 2)\n"
#: src/src/i2p/susi/webmail/WebMail.java:454
msgid "unknown"
msgstr "inconnu"
#: src/src/i2p/susi/webmail/WebMail.java:473
msgid "Warning: no transfer encoding found, fallback to 7bit."
msgstr "Avertissement: pas d'encodage de transfert trouvé: retour en 7bits."
#: src/src/i2p/susi/webmail/WebMail.java:478
#, java-format
msgid "No encoder found for encoding \\''{0}\\''."
msgstr "Pas d''encodeur trouvé pour encoder \"{0}\"."
#: src/src/i2p/susi/webmail/WebMail.java:484
msgid "Warning: no charset found, fallback to US-ASCII."
msgstr "Avertissement: aucun jeu de caractères trouvé, retour en ASCII-US"
#: src/src/i2p/susi/webmail/WebMail.java:498
#, java-format
msgid "Charset \\''{0}\\'' not supported."
msgstr "Jeu de caractères \\''{0}\\'' non pris en charge."
#: src/src/i2p/susi/webmail/WebMail.java:502
#, java-format
msgid "Part ({0}) not shown, because of {1}"
msgstr "Partie ({0}) non affichée car {1}"
#: src/src/i2p/susi/webmail/WebMail.java:525
msgid "Download"
msgstr "Télécharger"
#: src/src/i2p/susi/webmail/WebMail.java:525
msgid "File is packed into a zipfile for security reasons."
msgstr "Fichier compressé en zip par sécurité."
#: src/src/i2p/susi/webmail/WebMail.java:525
#, java-format
msgid "attachment ({0})."
msgstr "pièce jointe ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:529
#, java-format
msgid "Attachment ({0})."
msgstr "Pièce jointe ({0})."
#: src/src/i2p/susi/webmail/WebMail.java:579
msgid "Need username for authentication."
msgstr "Identifiant requis pour l'authentification."
#: src/src/i2p/susi/webmail/WebMail.java:583
msgid "Need password for authentication."
msgstr "Mot de passe requis pour l'authentification."
#: src/src/i2p/susi/webmail/WebMail.java:587
msgid "Need hostname for connect."
msgstr "Nom d'hôte requis pour la connexion."
#: src/src/i2p/susi/webmail/WebMail.java:592
msgid "Need port number for pop3 connect."
msgstr "Port requis pour la connexion POP3."
#: src/src/i2p/susi/webmail/WebMail.java:599
msgid "POP3 port number is not in range 0..65535."
msgstr "Le port POP3 n'est pas compris entre 0 et 65535."
#: src/src/i2p/susi/webmail/WebMail.java:605
msgid "POP3 port number is invalid."
msgstr "Port POP3 incorrect."
#: src/src/i2p/susi/webmail/WebMail.java:611
msgid "Need port number for smtp connect."
msgstr "Port requis pour la connexion SMTP."
#: src/src/i2p/susi/webmail/WebMail.java:618
msgid "SMTP port number is not in range 0..65535."
msgstr "Le port SMTP n'est pas compris entre 0 et 65535."
#: src/src/i2p/susi/webmail/WebMail.java:624
msgid "SMTP port number is invalid."
msgstr "Port SMTP incorrect."
#: src/src/i2p/susi/webmail/WebMail.java:671
msgid "User logged out."
msgstr "Utilisateur déconnecté."
#: src/src/i2p/susi/webmail/WebMail.java:675
msgid "Internal error, lost connection."
msgstr "Erreur interne, connexion perdue."
#: src/src/i2p/susi/webmail/WebMail.java:771
#, java-format
msgid "On {0} {1} wrote:"
msgstr "Sur {0} {1} écrit:"
#: src/src/i2p/susi/webmail/WebMail.java:818
msgid "begin forwarded mail"
msgstr "tranfert du message commencé"
#: src/src/i2p/susi/webmail/WebMail.java:840
msgid "end forwarded mail"
msgstr "tranfert du message terminé"
#: src/src/i2p/susi/webmail/WebMail.java:847
#: src/src/i2p/susi/webmail/WebMail.java:1701
msgid "Could not fetch mail body."
msgstr "Impossible de ramener le corps du message."
#: src/src/i2p/susi/webmail/WebMail.java:875
msgid "Message id not valid."
msgstr "ID de message incorrecte."
#: src/src/i2p/susi/webmail/WebMail.java:958
#, java-format
msgid "No Encoding found for {0}"
msgstr "Pas d''encodage trouvé pour {0}"
#: src/src/i2p/susi/webmail/WebMail.java:962
#, java-format
msgid "Could not encode data: {0}"
msgstr "Impossible d''encoder les données: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:967
#, java-format
msgid "Error reading uploaded file: {0}"
msgstr "Erreur de lecture du fichier envoyé: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1045
msgid "Error parsing download parameter."
msgstr "Erreur d'analyse des paramètres de téléchargement."
#: src/src/i2p/susi/webmail/WebMail.java:1089
msgid "Invalid pagesize number, resetting to default value."
msgstr "Taille de page incorrecte: réinitialisation à la valeur par défaut."
#: src/src/i2p/susi/webmail/WebMail.java:1113
msgid "No messages marked for deletion."
msgstr "Aucun message marqué pour suppression"
#: src/src/i2p/susi/webmail/WebMail.java:1133
#, java-format
msgid "Error deleting message: {0}"
msgstr "Erreur de suppression du message: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1144
#, java-format
msgid "1 message deleted."
msgid_plural "{0} messages deleted."
msgstr[0] "{0} message supprimé"
msgstr[1] "{0} messages supprimés"
#: src/src/i2p/susi/webmail/WebMail.java:1264
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Login"
msgstr "Identification"
#: src/src/i2p/susi/webmail/WebMail.java:1266
#, java-format
msgid "1 Message"
msgid_plural "{0} Messages"
msgstr[0] "{0} Message"
msgstr[1] "{0} Messages"
#: src/src/i2p/susi/webmail/WebMail.java:1268
msgid "Show Message"
msgstr "Afficher le message"
#: src/src/i2p/susi/webmail/WebMail.java:1325
#, java-format
msgid "Error decoding content: {0}"
msgstr "Erreur de décodage de contenu: {0}"
#: src/src/i2p/susi/webmail/WebMail.java:1330
msgid "Error decoding content: No encoder found."
msgstr "Erreur de décodage de contenu: pas d'encodeur trouvé."
#: src/src/i2p/susi/webmail/WebMail.java:1377
msgid "no subject"
msgstr "pas d'objet"
#: src/src/i2p/susi/webmail/WebMail.java:1394
msgid "Found no valid sender address."
msgstr "Adresse d'expéditeur correcte non trouvée"
#: src/src/i2p/susi/webmail/WebMail.java:1400
#, java-format
msgid "Found no valid address in \\''{0}\\''."
msgstr "Pas d''adresse correcte dans \\''{0}\\''."
#: src/src/i2p/susi/webmail/WebMail.java:1419
msgid "No recipients found."
msgstr "Pas de destinataire trouvé."
#: src/src/i2p/susi/webmail/WebMail.java:1426
msgid "Quoted printable encoder not available."
msgstr "Encodeur \"Quoted printable\" non disponible."
#: src/src/i2p/susi/webmail/WebMail.java:1431
msgid "Header line encoder not available."
msgstr "Ligne d'en-tête \"Encodeur\" non disponible."
#: src/src/i2p/susi/webmail/WebMail.java:1482
msgid "Mail sent."
msgstr "Message envoyé."
#: src/src/i2p/susi/webmail/WebMail.java:1519
msgid "Send"
msgstr "Envoyer"
#: src/src/i2p/susi/webmail/WebMail.java:1520
msgid "Cancel"
msgstr "Annuler"
#: src/src/i2p/susi/webmail/WebMail.java:1521
msgid "Delete Attachment"
msgstr "Supprimer la pièce jointe"
#: 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 "Recharger la configuration"
#: 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 "Déconnexion"
#: src/src/i2p/susi/webmail/WebMail.java:1546
#: src/src/i2p/susi/webmail/WebMail.java:1693
msgid "From:"
msgstr "De:"
#: src/src/i2p/susi/webmail/WebMail.java:1547
msgid "To:"
msgstr "À:"
#: src/src/i2p/susi/webmail/WebMail.java:1548
msgid "Cc:"
msgstr "Cc:"
#: src/src/i2p/susi/webmail/WebMail.java:1549
msgid "Bcc:"
msgstr "Cci:"
#: src/src/i2p/susi/webmail/WebMail.java:1550
#: src/src/i2p/susi/webmail/WebMail.java:1695
msgid "Subject:"
msgstr "Objet:"
#: src/src/i2p/susi/webmail/WebMail.java:1551
msgid "Bcc to self"
msgstr "Cci à moi-même"
#: src/src/i2p/susi/webmail/WebMail.java:1554
msgid "New Attachment:"
msgstr "Nouvelle pièce jointe:"
#: src/src/i2p/susi/webmail/WebMail.java:1554
msgid "Upload File"
msgstr "Envoyer le fichier"
#: src/src/i2p/susi/webmail/WebMail.java:1560
msgid "Attachments:"
msgstr "Pièces jointes:"
#: src/src/i2p/susi/webmail/WebMail.java:1582
msgid "User"
msgstr "Utilisateur"
#: src/src/i2p/susi/webmail/WebMail.java:1583
msgid "Pass"
msgstr "Mot de passe"
#: src/src/i2p/susi/webmail/WebMail.java:1584
msgid "Host"
msgstr "Hôte"
#: src/src/i2p/susi/webmail/WebMail.java:1585
msgid "POP3-Port"
msgstr "Port POP3"
#: src/src/i2p/susi/webmail/WebMail.java:1586
msgid "SMTP-Port"
msgstr "Port SMTP"
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Create Account"
msgstr "Créer un compte"
#: src/src/i2p/susi/webmail/WebMail.java:1587
msgid "Reset"
msgstr "Remise à zéro"
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Really delete the marked messages?"
msgstr "voulez-vous vraiment supprimer les messages marqués?"
#: src/src/i2p/susi/webmail/WebMail.java:1599
msgid "Yes, really delete them!"
msgstr "Oui, suppression!"
#: src/src/i2p/susi/webmail/WebMail.java:1601
#: src/src/i2p/susi/webmail/WebMail.java:1680
msgid "New"
msgstr "Nouveau message"
#: src/src/i2p/susi/webmail/WebMail.java:1602
#: src/src/i2p/susi/webmail/WebMail.java:1681
msgid "Reply"
msgstr "Répondre"
#: src/src/i2p/susi/webmail/WebMail.java:1603
#: src/src/i2p/susi/webmail/WebMail.java:1682
msgid "Reply All"
msgstr "Répondre à tous"
#: src/src/i2p/susi/webmail/WebMail.java:1604
#: src/src/i2p/susi/webmail/WebMail.java:1683
msgid "Forward"
msgstr "Transférer"
#: src/src/i2p/susi/webmail/WebMail.java:1605
#: src/src/i2p/susi/webmail/WebMail.java:1684
msgid "Delete"
msgstr "Supprimer"
#: src/src/i2p/susi/webmail/WebMail.java:1606
msgid "Check Mail"
msgstr "Relever le courrier"
#: src/src/i2p/susi/webmail/WebMail.java:1610
msgid "Sender"
msgstr "De"
#: src/src/i2p/susi/webmail/WebMail.java:1611
msgid "Subject"
msgstr "Objet"
#: src/src/i2p/susi/webmail/WebMail.java:1612
msgid "Date"
msgstr "Date"
#: src/src/i2p/susi/webmail/WebMail.java:1613
msgid "Size"
msgstr "Taille"
#: src/src/i2p/susi/webmail/WebMail.java:1639
#, java-format
msgid "1 Byte"
msgid_plural "{0} Bytes"
msgstr[0] "{0} octet"
msgstr[1] "{0} octets"
#: src/src/i2p/susi/webmail/WebMail.java:1644
msgid "Mark All"
msgstr "Tout cocher"
#: src/src/i2p/susi/webmail/WebMail.java:1645
msgid "Invert Selection"
msgstr "Inverser la sélection"
#: src/src/i2p/susi/webmail/WebMail.java:1646
msgid "Clear"
msgstr "Effacer"
#: src/src/i2p/susi/webmail/WebMail.java:1649
#: src/src/i2p/susi/webmail/WebMail.java:1650
msgid "First"
msgstr "Premier"
#: 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 "Précédent"
#: src/src/i2p/susi/webmail/WebMail.java:1651
#, java-format
msgid "Page {0} of {1}"
msgstr "Page {0} sur {1}"
#: src/src/i2p/susi/webmail/WebMail.java:1653
#: src/src/i2p/susi/webmail/WebMail.java:1654
msgid "Last"
msgstr "Dernier"
#: 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 "Suivant"
#: src/src/i2p/susi/webmail/WebMail.java:1657
msgid "Pagesize:"
msgstr "Taille de page:"
#: src/src/i2p/susi/webmail/WebMail.java:1658
msgid "Set"
msgstr "Définir"
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Really delete this message?"
msgstr "Voulez-vous vraiment supprimer ce message?"
#: src/src/i2p/susi/webmail/WebMail.java:1668
msgid "Yes, really delete it!"
msgstr "Oui, supprimer!"
#: src/src/i2p/susi/webmail/WebMail.java:1687
msgid "Back to Folder"
msgstr "Retour au dossier"
#: src/src/i2p/susi/webmail/WebMail.java:1694
msgid "Date:"
msgstr "Date:"
#: src/src/i2p/susi/webmail/WebMail.java:1705
msgid "Could not fetch mail."
msgstr "Impossible de ramener le courrier."

View File

@ -135,6 +135,18 @@
<copy file="core/java/build/i2p.jar" todir="build/" />
</target>
<target name="buildJrobin" depends="buildProperties" >
<!-- take only what we need from the jrobin jar -->
<jar destfile="build/jrobin.jar" >
<zipfileset src="apps/jrobin/jrobin-1.5.9.1.jar"
excludes="org/jrobin/cmd/ org/jrobin/convertor/ org/jrobin/inspector/" />
<manifest>
<attribute name="Build-Date" value="${build.timestamp}" />
<attribute name="Base-Revision" value="${workspace.version}" />
</manifest>
</jar>
</target>
<target name="buildProperties" >
<exec executable="mtn" outputproperty="workspace.version" errorproperty="mtn.error1" failifexecutionfails="false" >
<arg value="automate" />
@ -194,7 +206,7 @@
<launch4j configFile="./installer/i2pstandalone.xml" />
<!-- thazzit -->
</target>
<target name="compile" />
<target name="jar" depends="jarSmall" >
<copy file="apps/BOB/dist/BOB.jar" todir="build/" />
<copy file="apps/sam/java/build/sam.jar" todir="build/" />
@ -202,8 +214,9 @@
<copy file="apps/susidns/src/susidns.war" todir="build/" />
<copy file="apps/i2psnark/i2psnark.war" todir="build/" />
<copy file="apps/i2psnark/java/build/i2psnark.jar" todir="build/" />
</target>
<target name="jarSmall" depends="compile" >
<target name="jarSmall" depends="builddepSmall, buildJrobin" >
<copy file="core/java/build/i2p.jar" todir="build/" />
<copy file="router/java/build/router.jar" todir="build/" />
<copy file="apps/ministreaming/java/build/mstreaming.jar" todir="build/" />
@ -212,9 +225,27 @@
<copy file="apps/i2ptunnel/java/build/i2ptunnel.war" todir="build/" />
<copy file="apps/systray/java/build/systray.jar" todir="build/" />
<copy file="apps/desktopgui/dist/desktopgui.jar" todir="build/" />
<copy file="installer/lib/jbigi/jbigi.jar" todir="build" />
<copy file="apps/addressbook/dist/addressbook.war" todir="build/" />
</target>
<target name="jbigi">
<jar destfile="build/jbigi.jar" whenmanifestonly="fail" >
<fileset dir="installer/lib/jbigi" includes="*.so *.dll *.jnilib" />
</jar>
</target>
<target name="jbigi-windows-only" >
<jar destfile="build/jbigi.jar" whenmanifestonly="fail" >
<fileset dir="installer/lib/jbigi" includes="*windows*.dll" />
</jar>
</target>
<target name="jbigi-linux-only">
<jar destfile="build/jbigi.jar" whenmanifestonly="fail" >
<fileset dir="installer/lib/jbigi" includes="*linux*.so" />
</jar>
</target>
<!-- the apps need to compile the jsps to poupdate -->
<target name="poupdate" depends="buildRouter, buildStreaming, buildSystray, buildJetty, buildDesktopGui" >
<echo message="Setting environment variable LG2 to a lang code (eg: de,zh,nl etc)" />
@ -293,7 +324,7 @@
<pathelement location="apps/jetty/jettylib/org.mortbay.jetty.jar" />
<pathelement location="apps/jetty/jettylib/javax.servlet.jar" />
<pathelement location="apps/systray/java/lib/systray4j.jar" />
<pathelement location="apps/jrobin/jrobin-1.4.0.jar" />
<pathelement location="apps/jrobin/jrobin-1.5.9.1.jar" />
<pathelement location="installer/lib/wrapper/win32/wrapper.jar" />
<pathelement location="core/lib/junit.jar" />
</classpath>
@ -385,7 +416,7 @@
</delete>
</target>
<target name="preppkg" depends="preppkg-linux, preppkg-windows">
<target name="preppkg" depends="preppkg-linux, preppkg-windows, jbigi">
<copy file="build/jbigi.jar" todir="pkg-temp/lib" />
<copy todir="pkg-temp/lib/wrapper/freebsd/">
<fileset dir="installer/lib/wrapper/freebsd/" />
@ -408,6 +439,7 @@
<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 todir="pkg-temp/lib/wrapper/win32/">
<fileset dir="installer/lib/wrapper/win32/" />
@ -415,14 +447,8 @@
</target>
<!-- only what is needed for debian, etc. -->
<target name="preppkg-linux-only" depends="preppkg-linux">
<!-- rip the non-linux stuff out of jbigi.jar -->
<mkdir dir="tmpextract" />
<unjar src="build/jbigi.jar" dest="tmpextract/" />
<jar destfile="pkg-temp/lib/jbigi.jar" >
<fileset dir="tmpextract/" includes="*linux*" />
</jar>
<delete dir="tmpextract/" />
<target name="preppkg-linux-only" depends="preppkg-linux, jbigi-linux-only" >
<copy file="build/jbigi.jar" todir="pkg-temp/lib" />
</target>
<target name="preppkg-linux" depends="preppkg-base">
@ -462,7 +488,7 @@
<copy file="build/desktopgui.jar" todir="pkg-temp/lib/" />
<copy file="build/routerconsole.jar" todir="pkg-temp/lib/" />
<!-- pulled out of routerconsole.jar in 0.7.12; name without version so we can overwrite if we upgrade -->
<copy file="apps/jrobin/jrobin-1.4.0.jar" tofile="pkg-temp/lib/jrobin.jar" />
<copy file="build/jrobin.jar" tofile="pkg-temp/lib/jrobin.jar" />
<copy file="build/sam.jar" todir="pkg-temp/lib/" />
<copy file="build/BOB.jar" todir="pkg-temp/lib/" />
<copy file="build/systray.jar" todir="pkg-temp/lib" />
@ -665,7 +691,7 @@
<copy file="build/routerconsole.jar" todir="pkg-temp/lib/" />
<!-- pulled out of routerconsole.jar in 0.7.12, someday we can take out of updater -->
<!-- name without version so we can overwrite if we upgrade -->
<copy file="apps/jrobin/jrobin-1.4.0.jar" tofile="pkg-temp/lib/jrobin.jar" />
<copy file="build/jrobin.jar" tofile="pkg-temp/lib/jrobin.jar" />
<copy file="build/i2ptunnel.war" todir="pkg-temp/webapps/" />
<copy file="build/routerconsole.war" todir="pkg-temp/webapps/" />
<copy file="build/addressbook.war" todir="pkg-temp/webapps/" />
@ -824,7 +850,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.4.0.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.4.0.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/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="-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 -->
@ -835,7 +861,6 @@
<arg value="build/i2psnark.war"/>
<arg value="build/i2ptunnel.jar"/>
<arg value="build/i2ptunnel.war"/>
<arg value="build/jbigi.jar"/>
<arg value="build/mstreaming.jar"/>
<arg value="build/router.jar/"/>
<arg value="build/desktopgui.jar"/>
@ -1053,25 +1078,11 @@
we need to make sure its small, with NO redundent jars or wars.
thus cleaning is required before each build-->
<target name="buildSmallOnly" depends="pkg-portable-clean,buildSmall"/>
<!-- *1* preparing the jars by OS dependent de-bloating -->
<target name="preppkg-portable-win32-jbigi" depends="buildSmallOnly">
<!-- rip the non-windows stuff out of jbigi.jar -->
<mkdir dir="tmpextract" />
<unjar src="build/jbigi.jar" dest="tmpextract/" />
<jar destfile="build/jbigi.jar" >
<fileset dir="tmpextract/" includes="*windows*" />
</jar>
<delete dir="tmpextract/" />
</target>
<target name="preppkg-portable-linux-jbigi" depends="buildSmallOnly">
<!-- rip the non-linux stuff out of jbigi.jar -->
<mkdir dir="tmpextract" />
<unjar src="build/jbigi.jar" dest="tmpextract/" />
<jar destfile="build/jbigi.jar" >
<fileset dir="tmpextract/" includes="*linux*" />
</jar>
<delete dir="tmpextract/" />
</target>
<target name="preppkg-portable-win32-jbigi" depends="buildSmallOnly, jbigi-windows-only" />
<target name="preppkg-portable-linux-jbigi" depends="buildSmallOnly, jbigi-linux-only" />
<!-- *2* os independent procedure -->
<target name="preppkg-portable-basic" >
@ -1120,7 +1131,7 @@
</copy>
<!-- 3rd party jars from apps/ -->
<!-- jrobin - without jobin , you lost graph and get a lot error entry in logs -->
<copy file="apps/jrobin/jrobin-1.4.0.jar" tofile="pkg-temp/lib/jrobin.jar" />
<copy file="build/jrobin.jar" tofile="pkg-temp/lib/jrobin.jar" />
</target>
<!-- *3* os dependent procedure/commands -->
<target name = "preppkg-portable-win32" depends="preppkg-portable-win32-jbigi,preppkg-portable-basic">

View File

@ -9,9 +9,19 @@ TODO: Document generated folder structure
TODO: Instructions for adding the libraries to a jar
Linux-specific information:
===========================
Some linux distributions comes bundled with GMP.
There is currently no out-of-the-box support for this in the current build-scripts.
Try 'locate lib/libgmp.so' to see.
If so, install the the libgmp3-dev debian package to get the libgmp headers.
Then export I2P=/path/to/your/i2p/install.
Then do 'build.sh dynamic'. This will do a quick build using your installed libgmp library
and then test it and the jbigi in your I2P installation to see which is faster.
If the new jbigi is slower, then run 'build.sh' (without the 'dynamic'), which will download
the 4.3.1 libgmp library, build, and test that.
Windows-specific information:
=============================
The best way of building the jbigi dll's is to install Mingw {URL} and msys {URL}.
The combination of these two should be able to run the included build-scripts without modifications.

View File

@ -57,33 +57,6 @@ JNIEXPORT jbyteArray JNICALL Java_net_i2p_util_NativeBigInteger_nativeModPow
return jresult;
}
/******** nativeDoubleValue() */
/*
* Class: net_i2p_util_NativeBigInteger
* Method: nativeDoubleValue
* Signature: ([B)D
*
* From the Javadoc:
*
* Converts a BigInteger byte-array to a 'double'
* @param ba Big endian twos complement representation of the BigInteger to convert to a double
* @return The plain double-value represented by 'ba'
*/
JNIEXPORT jdouble JNICALL Java_net_i2p_util_NativeBigInteger_nativeDoubleValue
(JNIEnv * env, jclass cls, jbyteArray jba){
/* 1) Convert the bytearray BigInteger value into the format libgmp understands
* 2) Call libgmp's mpz_get_d.
* 3) Convert libgmp's result into a big endian twos complement number.
*/
mpz_t mval;
jdouble retval;
convert_j2mp(env, jba, &mval);
retval = mpz_get_d(mval);
mpz_clear(mval);
return retval;
}
/******************************
*****Conversion methods*******
******************************/

View File

@ -1,5 +1,44 @@
#include "jcpuid.h"
/**
From: http://sam.zoy.org/blog/2007-04-13-shlib-with-non-pic-code-have-inline-assembly-and-pic-mix-well
Perhaps the most accessible documentation on what PIC code is and how an ELF dynamic linker works is
John Levine's Linkers and Loaders (and it has amazing sketches, too!). The Gentoo documentation also
has an Introduction to Position Independent Code. I'd like to give a few hints on how to fix the
shlib-with-non-pic-code lintian error caused by inline assembly on the i386 and amd64 platforms,
as well as build errors that may occur due to inline assembly being used.
I'm not going to cover the trivial "all objects were not built using gcc's -fPIC flag" problem.
It usually requires a fix to the build system, not to the code.
gcc can't find a register (i386)
PIC on i386 uses a register to store the GOT (global offset table) address.
This register is usually %ebx, making it unavailable for use by inline assembly
(and also restricting the compiler's register usage when compiling C or C++ code).
So the following perfectly valid code will not build with the -fPIC flag:
void cpuid(uint32_t op, uint32_t reg[4])
{
asm volatile("cpuid"
: "=a"(reg[0]), "=b"(reg[1]), "=c"(reg[2]), "=d"(reg[3])
: "a"(op)
: "cc");
}
Using -fPIC, gcc will say something around the lines of error: can't find a register in class 'BREG'
while reloading 'asm'. Several things need to be done to fix this:
* use a register other than %ebx
* save %ebx if it risks being clobbered by the assembly code, and don't tell gcc about %ebx at all (it doesn't need to know anyway)
* if we saved %ebx by pushing it on the stack, make sure the inline assembly code takes the new stack offset into account
And here is the PIC-compliant version:
**/
//Executes the indicated subfunction of the CPUID operation
JNIEXPORT jobject JNICALL Java_freenet_support_CPUInformation_CPUID_doCPUID
(JNIEnv * env, jclass cls, jint iFunction)
@ -20,14 +59,15 @@ JNIEXPORT jobject JNICALL Java_freenet_support_CPUInformation_CPUID_doCPUID
}
#else
//Use GCC assembler notation
asm
asm volatile
(
"cpuid"
: "=a" (a),
"=b" (b),
"=c"(c),
"=d"(d)
"pushl %%ebx \n\t" /* save %ebx */
"cpuid \n\t"
"movl %%ebx, %1 \n\t" /* save what cpuid just put in %ebx */
"popl %%ebx \n\t" /* restore the old %ebx */
: "=a" (a), "=r" (b), "=c" (c), "=d" (d)
:"a"(iFunction)
: "cc"
);
#endif
return (*env)->NewObject(env, clsResult,constructor,a,b,c,d);

View File

@ -38,8 +38,8 @@ public class AsyncFortunaStandalone extends FortunaStandalone implements Runnabl
for (int i = 0; i < _bufferCount; i++)
status[i] = STATUS_NEED_FILL;
_context = context;
context.statManager().createRateStat("prng.bufferWaitTime", "", "Encryption", new long[] { 60*1000, 10*60*1000, 60*60*1000 } );
context.statManager().createRateStat("prng.bufferFillTime", "", "Encryption", new long[] { 60*1000, 10*60*1000, 60*60*1000 } );
context.statManager().createRequiredRateStat("prng.bufferWaitTime", "Delay for random number buffer (ms)", "Encryption", new long[] { 60*1000, 10*60*1000, 60*60*1000 } );
context.statManager().createRequiredRateStat("prng.bufferFillTime", "Time to fill random number buffer (ms)", "Encryption", new long[] { 60*1000, 10*60*1000, 60*60*1000 } );
_log = context.logManager().getLog(AsyncFortunaStandalone.class);
}

View File

@ -16,7 +16,7 @@ package net.i2p;
public class CoreVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = "0.8.4";
public final static String VERSION = "0.8.6";
public static void main(String args[]) {
System.out.println("I2P Core version: " + VERSION);

View File

@ -64,11 +64,11 @@ public class ElGamalEngine {
*
*/
public ElGamalEngine(I2PAppContext context) {
context.statManager().createRateStat("crypto.elGamal.encrypt",
"how long does it take to do a full ElGamal encryption", "Encryption",
context.statManager().createRequiredRateStat("crypto.elGamal.encrypt",
"Time for ElGamal encryption (ms)", "Encryption",
new long[] { 60 * 60 * 1000});
context.statManager().createRateStat("crypto.elGamal.decrypt",
"how long does it take to do a full ElGamal decryption", "Encryption",
context.statManager().createRequiredRateStat("crypto.elGamal.decrypt",
"Time for ElGamal decryption (ms)", "Encryption",
new long[] { 60 * 60 * 1000});
_context = context;
_log = context.logManager().getLog(ElGamalEngine.class);

View File

@ -44,7 +44,7 @@ public class Certificate extends DataStructureImpl {
public final static int CERTIFICATE_TYPE_MULTIPLE = 4;
/**
* Pull from cache or return new
* If null cert, return immutable static instance, else create new
* @throws AIOOBE if not enough bytes
* @since 0.8.3
*/
@ -57,7 +57,7 @@ public class Certificate extends DataStructureImpl {
if (length == 0)
return new Certificate(type, null);
byte[] payload = new byte[length];
System.arraycopy(data, off = 3, payload, 0, length);
System.arraycopy(data, off + 3, payload, 0, length);
return new Certificate(type, payload);
}

View File

@ -823,11 +823,10 @@ public class DataHelper {
* This treats (null == null) as true, (null == (!null)) as false,
* and unequal length arrays as false.
*
* @return Arrays.equals(lhs, rhs)
*/
public final static boolean eq(byte lhs[], byte rhs[]) {
// this appears to be the way Arrays.equals is defined, so all the extra tests are unnecessary?
boolean eq = (((lhs == null) && (rhs == null)) || ((lhs != null) && (rhs != null) && (Arrays.equals(lhs, rhs))));
return eq;
return Arrays.equals(lhs, rhs);
}
/**

View File

@ -21,8 +21,8 @@ import net.i2p.util.Log;
*
*/
public class StatManager {
private Log _log;
private I2PAppContext _context;
private final Log _log;
private final I2PAppContext _context;
/** stat name to FrequencyStat */
private final ConcurrentHashMap<String, FrequencyStat> _frequencyStats;
@ -39,28 +39,8 @@ public class StatManager {
public static final String PROP_STAT_FILTER = "stat.logFilters";
public static final String PROP_STAT_FILE = "stat.logFile";
public static final String DEFAULT_STAT_FILE = "stats.log";
/** default true */
/** default false */
public static final String PROP_STAT_FULL = "stat.full";
public static final String PROP_STAT_REQUIRED = "stat.required";
/**
* These are all the stats published in netDb, plus those required for the operation of
* the router (many in RouterThrottleImpl), plus those that are on graphs.jsp by default,
* plus those used on the summary bar (SummaryHelper.java).
* Wildcard ('*') allowed at end of stat only.
* Ignore all the rest of the stats unless stat.full=true.
*/
public static final String DEFAULT_STAT_REQUIRED =
"bw.recvRate,bw.sendBps,bw.sendRate,client.sendAckTime,clock.skew,crypto.elGamal.encrypt," +
"jobQueue.jobLag,netDb.successTime,peer.failedLookupRate,router.fastPeers," +
"prng.bufferFillTime,prng.bufferWaitTime,router.memoryUsed," +
"transport.receiveMessageSize,transport.sendMessageSize,transport.sendProcessingTime," +
"tunnel.acceptLoad,tunnel.buildRequestTime,tunnel.rejectOverloaded,tunnel.rejectTimeout," +
"tunnel.buildClientExpire,tunnel.buildClientReject,tunnel.buildClientSuccess," +
"tunnel.buildExploratoryExpire,tunnel.buildExploratoryReject,tunnel.buildExploratorySuccess," +
"tunnel.buildRatio.*,tunnel.corruptMessage,tunnel.dropLoad*," +
"tunnel.decryptRequestTime,tunnel.fragmentedDropped,tunnel.participatingMessageCount,"+
"tunnel.participatingTunnels,tunnel.testFailedTime,tunnel.testSuccessTime," +
"tunnel.participatingBandwidth,udp.sendPacketSize,udp.packetsRetransmitted,udp.sendException" ;
/**
* The stat manager should only be constructed and accessed through the
@ -89,6 +69,7 @@ public class StatManager {
/**
* Create a new statistic to monitor the frequency of some event.
* The stat is ONLY created if the stat.full property is true or we are not in the router context.
*
* @param name unique name of the statistic
* @param description simple description of the statistic
@ -97,12 +78,27 @@ public class StatManager {
*/
public void createFrequencyStat(String name, String description, String group, long periods[]) {
if (ignoreStat(name)) return;
createRequiredFrequencyStat(name, description, group, periods);
}
/**
* Create a new statistic to monitor the frequency of some event.
* The stat is always created, independent of the stat.full setting or context.
*
* @param name unique name of the statistic
* @param description simple description of the statistic
* @param group used to group statistics together
* @param periods array of period lengths (in milliseconds)
* @since 0.8.6
*/
public void createRequiredFrequencyStat(String name, String description, String group, long periods[]) {
if (_frequencyStats.containsKey(name)) return;
_frequencyStats.putIfAbsent(name, new FrequencyStat(name, description, group, periods));
}
/**
* Create a new statistic to monitor the average value and confidence of some action.
* The stat is ONLY created if the stat.full property is true or we are not in the router context.
*
* @param name unique name of the statistic
* @param description simple description of the statistic
@ -111,6 +107,20 @@ public class StatManager {
*/
public void createRateStat(String name, String description, String group, long periods[]) {
if (ignoreStat(name)) return;
createRequiredRateStat(name, description, group, periods);
}
/**
* Create a new statistic to monitor the average value and confidence of some action.
* The stat is always created, independent of the stat.full setting or context.
*
* @param name unique name of the statistic
* @param description simple description of the statistic
* @param group used to group statistics together
* @param periods array of period lengths (in milliseconds)
* @since 0.8.6
*/
public void createRequiredRateStat(String name, String description, String group, long periods[]) {
if (_rateStats.containsKey(name)) return;
RateStat rs = new RateStat(name, description, group, periods);
if (_statLog != null) rs.setStatLog(_statLog);
@ -202,20 +212,13 @@ public class StatManager {
public String getStatFile() { return _context.getProperty(PROP_STAT_FILE, DEFAULT_STAT_FILE); }
/**
* Save memory by not creating stats unless they are required for router operation
* Save memory by not creating stats unless they are required for router operation.
* For backward compatibility of any external clients, always returns false if not in router context.
*
* @param statName ignored
* @return true if the stat should be ignored.
*/
public boolean ignoreStat(String statName) {
if (_context.getBooleanProperty(PROP_STAT_FULL))
return false;
String required = _context.getProperty(PROP_STAT_REQUIRED, DEFAULT_STAT_REQUIRED);
String req[] = required.split(",");
for (int i=0; i<req.length; i++) {
if (req[i].equals(statName))
return false;
if (req[i].endsWith("*") && statName.startsWith(req[i].substring(0, req[i].length() - 2)))
return false;
}
return true;
return _context.isRouterContext() && !_context.getBooleanProperty(PROP_STAT_FULL);
}
}

View File

@ -97,7 +97,7 @@ public class Clock implements Timestamper.UpdateListener {
getLog().info("Updating clock offset to " + offsetMs + "ms from " + _offset + "ms");
if (!_statCreated) {
_context.statManager().createRateStat("clock.skew", "How far is the already adjusted clock being skewed?", "Clock", new long[] { 10*60*1000, 3*60*60*1000, 24*60*60*60 });
_context.statManager().createRequiredRateStat("clock.skew", "Clock step adjustment (ms)", "Clock", new long[] { 10*60*1000, 3*60*60*1000, 24*60*60*60 });
_statCreated = true;
}
_context.statManager().addRateData("clock.skew", delta, 0);

View File

@ -357,6 +357,9 @@ public class FileUtil {
* Dump the contents of the given path (relative to the root) to the output
* stream. The path must not go above the root, either - if it does, it will
* throw a FileNotFoundException
*
* Closes the OutputStream out on successful completion
* but leaves it open when throwing IOE.
*/
public static void readFile(String path, String root, OutputStream out) throws IOException {
File rootDir = new File(root);
@ -376,10 +379,10 @@ public class FileUtil {
int read = 0;
while ( (read = in.read(buf)) != -1)
out.write(buf, 0, read);
out.close();
try { out.close(); } catch (IOException ioe) {}
} finally {
if (in != null)
in.close();
try { in.close(); } catch (IOException ioe) {}
}
}

View File

@ -28,8 +28,7 @@ import net.i2p.I2PAppContext;
/**
* <p>BigInteger that takes advantage of the jbigi library for the modPow operation,
* which accounts for a massive segment of the processing cost of asymmetric
* crypto. It also takes advantage of the jbigi library for converting a BigInteger
* value to a double. Sun's implementation of the 'doubleValue()' method is _very_ lousy.
* crypto.
*
* The jbigi library itself is basically just a JNI wrapper around the
* GMP library - a collection of insanely efficient routines for dealing with
@ -64,7 +63,7 @@ import net.i2p.I2PAppContext;
* "net/i2p/util/jbigi-windows-none.dll").</p>
*
* <p>Running this class by itself does a basic unit test and benchmarks the
* NativeBigInteger.modPow/doubleValue vs. the BigInteger.modPow/doubleValue by running a 2Kbit op 100
* NativeBigInteger.modPow vs. the BigInteger.modPow by running a 2Kbit op 100
* times. At the end of each test, if the native implementation is loaded this will output
* something like:</p>
* <pre>
@ -194,14 +193,6 @@ public class NativeBigInteger extends BigInteger {
*/
public native static byte[] nativeModPow(byte base[], byte exponent[], byte modulus[]);
/**
* Converts a BigInteger byte-array to a 'double'
* @param ba Big endian twos complement representation of the BigInteger to convert to a double
* @return The plain double-value represented by 'ba'
* @deprecated unused
*/
public native static double nativeDoubleValue(byte ba[]);
private byte[] cachedBa;
public NativeBigInteger(byte[] val) {
@ -250,12 +241,9 @@ public class NativeBigInteger extends BigInteger {
return cachedBa;
}
/** @deprecated unused */
/** @deprecated unused, does not call native */
@Override
public double doubleValue() {
if (_nativeOk)
return nativeDoubleValue(toByteArray());
else
return super.doubleValue();
}
/**
@ -281,7 +269,7 @@ public class NativeBigInteger extends BigInteger {
}
/**
* <p>Compare the BigInteger.modPow/doubleValue vs the NativeBigInteger.modPow/doubleValue of some
* <p>Compare the BigInteger.modPow vs the NativeBigInteger.modPow of some
* really big (2Kbit) numbers 100 different times and benchmark the
* performance (or shit a brick if they don't match). </p>
*
@ -289,8 +277,6 @@ public class NativeBigInteger extends BigInteger {
public static void main(String args[]) {
_doLog = true;
runModPowTest(100);
// i2p doesn't care about the double values
//runDoubleValueTest(100);
}
/* the sample numbers are elG generator/prime so we can test with reasonable numbers */
@ -361,64 +347,6 @@ public class NativeBigInteger extends BigInteger {
}
}
/********
private static void runDoubleValueTest(int numRuns) {
System.out.println("DEBUG: Warming up the random number generator...");
SecureRandom rand = new SecureRandom();
rand.nextBoolean();
System.out.println("DEBUG: Random number generator warmed up");
BigInteger jg = new BigInteger(_sampleGenerator);
long totalTime = 0;
long javaTime = 0;
int MULTIPLICATOR = 50000; //Run the doubleValue() calls within a loop since they are pretty fast..
int runsProcessed = 0;
for (runsProcessed = 0; runsProcessed < numRuns; runsProcessed++) {
NativeBigInteger g = new NativeBigInteger(_sampleGenerator);
long beforeDoubleValue = System.currentTimeMillis();
double dNative=0;
for(int mult=0;mult<MULTIPLICATOR;mult++)
dNative = g.doubleValue();
long afterDoubleValue = System.currentTimeMillis();
double jval=0;
for(int mult=0;mult<MULTIPLICATOR;mult++)
jval = jg.doubleValue();
long afterJavaDoubleValue = System.currentTimeMillis();
totalTime += (afterDoubleValue - beforeDoubleValue);
javaTime += (afterJavaDoubleValue - afterDoubleValue);
if (dNative!=jval) {
System.err.println("ERROR: [" + runsProcessed + "]\tnative double != java double");
System.err.println("ERROR: native double value: " + dNative);
System.err.println("ERROR: java double value: " + jval);
System.err.println("ERROR: run time: " + totalTime + "ms (" + (totalTime / (runsProcessed + 1)) + "ms each)");
break;
} else {
System.out.println("DEBUG: current run time: " + (afterDoubleValue - beforeDoubleValue) + "ms (total: "
+ totalTime + "ms, " + (totalTime / (runsProcessed + 1)) + "ms each)");
}
}
System.out.println("INFO: run time: " + totalTime + "ms (" + (totalTime / (runsProcessed + 1)) + "ms each)");
if (numRuns == runsProcessed)
System.out.println("INFO: " + runsProcessed + " runs complete without any errors");
else
System.out.println("ERROR: " + runsProcessed + " runs until we got an error");
if (_nativeOk) {
System.out.println("native run time: \t" + totalTime + "ms (" + (totalTime / (runsProcessed + 1))
+ "ms each)");
System.out.println("java run time: \t" + javaTime + "ms (" + (javaTime / (runsProcessed + 1)) + "ms each)");
System.out.println("native = " + ((totalTime * 100.0d) / (double) javaTime) + "% of pure java time");
} else {
System.out.println("java run time: \t" + javaTime + "ms (" + (javaTime / (runsProcessed + 1)) + "ms each)");
System.out.println("However, we couldn't load the native library, so this doesn't test much");
}
}
*********/
/**
* <p>Do whatever we can to load up the native library backing this BigInteger's native methods.
* If it can find a custom built jbigi.dll / libjbigi.so, it'll use that. Otherwise

View File

@ -1,3 +1,42 @@
* 2011-05-16 0.8.6 released
2011-05-13 zzz
* Increase min floodfills; decrease min routerinfo expiration
2011-05-11 zzz
* Use partitions of fast tier for various hops of client tunnels
2011-05-06 zzz
* Tunnels and profiles:
- Increase max fast and high-cap tier sizes
- Slow profile eval cycle after sufficient uptime
- Fix bug which started a new build after a successful build
- Misc. cleanups
2011-04-28 zzz
* Console: Try to prevent cascaded IllegalStateExceptions in .jsp code;
add logging for original error
* peers.jsp: Tag UPnP strings
* UPnP: Strip trailing nulls from incoming XML to prevent
"content not allowed in trailing section" exceptions
* 2011-04-18 0.8.5 released
2011-04-11 zzz
* Console: Hide iframe on mobile browsers
* DataHelper: Speed up eq() (Ticket #437)
* HTTPServer: Strip inbound X-Accept-Encoding header
* netdb.jsp: HTML fixes
* Plugins: Log error when console server not found
* Reseed: Log tweak
2011-04-02 m1xxy
* routerconsole, i2psnark, ... I2P ahora también en español: ¡Bienvenidos los hispanohablantes!
- routerconsole, i2ptunnel, i2psnark, SusiDNS, Susimail fully translated into Spanish
(thx to PunkiBastardo and user)
* routerconsole, i2psnark, ...
- French translations completed by magma
2011-03-22 zzz
* Handle GNU JRE returning Long.MAX_VALUE for max memory
* i2ptunnel: HTML fixes

View File

@ -4,7 +4,7 @@
<info>
<appname>i2p</appname>
<appversion>0.8.4</appversion>
<appversion>0.8.6</appversion>
<authors>
<author name="I2P" email="http://forum.i2p2.de/"/>
</authors>
@ -183,8 +183,8 @@
<pack name="Windows Service" required="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" />
<!--
<executable targetfile="$INSTALL_PATH/install_i2p_service_winnt.bat" stage="postinstall" failure="warn" keep="true" />
-->
<executable targetfile="$INSTALL_PATH/install_i2p_service_winnt.bat" stage="postinstall" failure="warn" keep="true">
<args>
@ -198,9 +198,6 @@
<arg value="$INSTALL_PATH\wrapper.config" />
</args>
</executable>
<!--
<executable targetfile="$INSTALL_PATH/uninstall_i2p_service_winnt.bat" stage="uninstall" failure="warn" keep="true" />
-->
<executable targetfile="$INSTALL_PATH/uninstall_i2p_service_winnt.bat" stage="uninstall" failure="warn" keep="true">
<args>
<arg value="$INSTALL_PATH\wrapper.config" />

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.

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.

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.

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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -326,3 +326,4 @@ i2pbote.i2p=~taSfBfeiMM5fW~qwUGZr4kAXmSoentWVjlQhTCKWhVj04KV34tLguNQEpHb1cA2eIwl
planet.i2p=W0omtMApOdlTkgJoct08QnzDkeb~xc60df5Cx3k3qqOFmyEkRB65NdpSdvldI5STmXmXlZe68f8Hu1dfBMmKvfpBFMpP-mRVYuHbEa4N1dRkp3AOswZFO51lSC~MVPMZKGHAv0cfv5WFaJ9nfuaR7iYYWJF11xotoPTMbJdB-I3XPC8rxHI-73ATlOD4cU9oZ6BYcBE0dun9zw4IHBcRpnFRx~s-TkevNfPnBqujB-NNgA8a5s~QUj0h3FwwUWsNB8f1Uwy~DwoQh7pMp6dsZ3umEyBn2HaXZasSmbzB30qkQRs9vrAtIFdIzCQ~8gI2cHdHEPgExUQX~xlM8QZEgnLXSfS93asWPdpitv~KT7bO-35BgTBdCozHTCcvys6bYJ24UnkFVBE0D2L0t98neelWkJSaEU0QzxdRphoCZY8OABQIaS4qw6PEFD1Un1vxNCh~TDFWcYBZ3Rqsc~ISW0wF7oOS6-DPT3q5O8cGLc8iAEdRchrU9XyAHAKVlEZxAAAA
exotrack.i2p=Ly1vs4plBuGisqlMiQOjhVkXFZPBMy9joSCrus~tuLXBRXDrPYG9WXJMzY4gb3LiW0VVawv0kLgikX8eeeruXmgKwQW5zB9UPSP0CQnXTRelE3Jn7lev~re4woHvgS-EGBwWikxqXF3f7W8-LhieI0JhBZxItiWhJJME07oncW0kgS8UIMl0wqN2Y-p0sryFCN056TfGNTXigfxrSLqKnpi6a2OyEkF62qvRID3qXzRque0vKQjqvavq2mqxjFrSgLUoyKod5h9Px6qK08gtoAyDKMLPk7fPgReYKj6awiOxRSGfsMpZD3~ZuV0Sts2XtCau3S3myYMIDe5oKziPtZRIej4KBDxT0YYIw5v4RoqzqF88gNgHDfkPZ25JKTOt5xGcPTG8kwYrtx39PX6NrJmv-I~LUz6sZZlIW24k1qbO7zBxZ6mazldQY1~FJGXzn5MNzsxp44iOZdMDJJh18N0Psthk2hqlQOS4L0Ss1Odm1czhBxf1Y~j3L-QsMttcAAAA
outproxyng.h2ik.i2p=1RqMQd58RgA4D~XT34rCjQteJVQwFKQbPK5P03GetL-DyCfKV6Vg61xyxGOZK-K4KTXXf45PG~oDAWIzE7UY5aXN9oAjHXfPrU9hHxv35BaxFqUpsJLgjWu41OwSjl5aN2-freH4gGVSiL62I1y2bcXHc2kVHlbToQOy8bJoS3KSDHEeU0r79f~cY3xf6rBHpHNMJtdYdnWlLq5KFc2cz~8lIut~sSIAwUEfebBkhfl2ctvdEGdSshBWGTxXiahtQX0xraynF-Cex2hxvBAl0g9aoOnrLx~Gses54WPD-m3RArI3fiaxEALRuFa0mfrrEgjOhBtVU8IlTYrTEkR8JSGofsEmuqqM03FIrwOv6lJZi-xemiNUr3OX6VdO4ckIg69BxpCYzP2IxLO5r8lSwyHqGbYPFxBIjbSMsv6tGWWdglV4Y9sQHTarboA-XDih3DzDpomb1~78cSiV3PRidjj4MDggn1abkQbRVd6WLV~eTi54bctS-JwW-I5Xyqq~AAAA
inr.i2p=GGB99wXYBnX-wOxQ~Xrvo7AvngoYgifvZZL54ksZWzclcirG7AysqfkAKyv906PxfM4y2DcN2K9m4-D99yFj-1BdnUuIEqfi2yuaaVoWuOffT3h9ne~kZnq3C-wrmczD70Gxk4shvSVxMdUEFvEip8QY4K0R-FiKBsFAfWGTE3b9d-QCzP0H9VP5V-CaYjYVQuMRgMluk9gnoLRipvV7483f~rmGgYX8xwygEAQ3v9P4hrAlJrP0lWJLI1K6KQucP3THIxZ4A9Xxnl0I7EZAT8bHwzschFrcDPYM~DtQdkJTz2VphocbNLfIExTrFt88-xC69WE-fSbaMf9jucT4f5kdpfpRu0kM~am40etxPs8uXGF-L9IXCjgUkJHrWdPHeGhnx-ye2xvUTLO2jyga8iY89Ee3IpqivVUg-iAQJzX9NXC29sf0YzNj8d8mdWRNuzbLSx9CVJ3l1NPJr4k7hmCqf8lBGXNIFZQL4Wez1PPcM4gw0o73gqIxkxvVzVcpAAAA

View File

@ -0,0 +1,20 @@
<div lang="fr">
<h3>Merci d'utiliser I2P !</h3>
<p>
<b>Bienvenue sur I2P !</b>
Merci de <b>patienter</b> le temps qu'I2P démarre et trouve des pairs.
</p>
<p>
Pendant ce temps, merci d'<b>adjuster vos réglages de bande passante</b> sur la page de
<a href="config.jsp">configuration</a>.
</p>
<p>
Une fois que vous avez une indication "clients partagés&hellip;" listée sur la gauche,
merci de <b>jeter un œil</b> à la <a href="http://www.i2p2.i2p/faq_fr.html">FAQ</a>.
</p>
<p>
Pointez votre client IRC sur <b>localhost:6668</b> et venez nous faire coucou sur
<a href="irc://127.0.0.1:6668/i2p-help">#i2p-help</a>, <a href="irc://127.0.0.1:6668/i2p-fr">#i2p-fr</a>
ou <a href="irc://127.0.0.1:6668/i2p">#i2p</a>.
</p>
</div>

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