Changeset e42b78e


Ignore:
Timestamp:
May 20, 2011 2:12:07 PM (9 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
2f2e0e5
Parents:
4b19801 (diff), 3d76354c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

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

to branch 'i2p.i2p' (head a3969e6c9c4fd5bfd69cd716ce0df191ad2af634)

Files:
62 added
3 deleted
89 edited

Legend:

Unmodified
Added
Removed
  • .tx/config

    r4b19801 re42b78e  
    22source_file = apps/i2ptunnel/locale/messages_en.po
    33source_lang = en
     4trans.ar = apps/i2ptunnel/locale/messages_ar.po
    45trans.de = apps/i2ptunnel/locale/messages_de.po
     6trans.es = apps/i2ptunnel/locale/messages_es.po
     7trans.fr = apps/i2ptunnel/locale/messages_fr.po
    58trans.nl = apps/i2ptunnel/locale/messages_nl.po
    69trans.ru = apps/i2ptunnel/locale/messages_ru.po
     
    1013source_file = apps/routerconsole/locale/messages_en.po
    1114source_lang = en
     15trans.ar = apps/routerconsole/locale/messages_ar.po
    1216trans.de = apps/routerconsole/locale/messages_de.po
    1317trans.es = apps/routerconsole/locale/messages_es.po
     
    1721trans.zh_CN = apps/routerconsole/locale/messages_zh.po
    1822
    19 [I2P.susidns]
    20 source_file = apps/susidns/locale/messages_en.po
    21 source_lang = en
    22 trans.de = apps/susidns/locale/messages_de.po
    23 trans.nl = apps/susidns/locale/messages_nl.po
    24 trans.ru = apps/susidns/locale/messages_ru.po
    25 trans.zh_CN = apps/susidns/locale/messages_zh.po
    26 
    27 [I2P.susimail]
    28 source_file = apps/susimail/locale/messages_en.po
    29 source_lang = en
    30 trans.nl = apps/susimail/locale/messages_nl.po
    31 
    3223[I2P.i2psnark]
    3324source_file = apps/i2psnark/locale/messages_en.po
    3425source_lang = en
     26trans.ar = apps/i2psnark/locale/messages_ar.po
    3527trans.de = apps/i2psnark/locale/messages_de.po
    3628trans.es = apps/i2psnark/locale/messages_es.po
     
    4133trans.zh_CN = apps/i2psnark/locale/messages_zh.po
    4234
     35[I2P.susidns]
     36source_file = apps/susidns/locale/messages_en.po
     37source_lang = en
     38trans.ar = apps/susidns/locale/messages_ar.po
     39trans.de = apps/susidns/locale/messages_de.po
     40trans.es = apps/susidns/locale/messages_es.po
     41trans.fr = apps/susidns/locale/messages_fr.po
     42trans.nl = apps/susidns/locale/messages_nl.po
     43trans.ru = apps/susidns/locale/messages_ru.po
     44trans.zh_CN = apps/susidns/locale/messages_zh.po
     45
    4346[I2P.desktopgui]
    4447source_file = apps/desktopgui/locale/messages_en.po
    4548source_lang = en
     49trans.ar = apps/desktopgui/locale/messages_ar.po
     50trans.de = apps/desktopgui/locale/messages_de.po
     51trans.es = apps/desktopgui/locale/messages_es.po
     52trans.fr = apps/desktopgui/locale/messages_fr.po
    4653trans.nl = apps/desktopgui/locale/messages_nl.po
    4754trans.ru = apps/desktopgui/locale/messages_ru.po
    4855trans.zh_CN = apps/desktopgui/locale/messages_zh.po
    4956
     57[I2P.susimail]
     58source_file = apps/susimail/locale/messages_en.po
     59source_lang = en
     60trans.de = apps/susimail/locale/messages_de.po
     61trans.es = apps/susimail/locale/messages_es.po
     62trans.fr = apps/susimail/locale/messages_fr.po
     63trans.nl = apps/susimail/locale/messages_nl.po
     64
    5065[main]
    5166host = http://www.transifex.net
  • LICENSE.txt

    r4b19801 re42b78e  
    175175   See licenses/NOTICE-Commons-Logging.txt
    176176
    177    JRobin 1.4.0:
     177   JRobin 1.5.9.1:
    178178   See licenses/LICENSE-LGPLv2.1.txt
    179179
  • apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java

    r4b19801 re42b78e  
    984984            return _("Pieces are too large in \"{0}\" ({1}B), deleting it.", info.getName(), DataHelper.formatSize2(info.getPieceLength(0))) + ' ' +
    985985                   _("Limit is {0}B", DataHelper.formatSize2(Storage.MAX_PIECE_SIZE));
     986        } else if (info.getTotalLength() <= 0) {
     987            return _("Torrent \"{0}\" has no data, deleting it!", info.getName());
    986988        } else if (info.getTotalLength() > Storage.MAX_TOTAL_SIZE) {
    987989            System.out.println("torrent info: " + info.toString());
  • apps/i2psnark/java/src/org/klomp/snark/Storage.java

    r4b19801 re42b78e  
    111111        lengthsList.add(Long.valueOf(length));
    112112      }
     113
     114    if (total <= 0)
     115        throw new IOException("Torrent contains no data");
    113116
    114117    int pc_size = MIN_PIECE_SIZE;
  • apps/i2psnark/locale/messages_es.po

    r4b19801 re42b78e  
    77msgid ""
    88msgstr ""
    9 "Project-Id-Version: I2P i2psnark\n"
    10 "Report-Msgid-Bugs-To: \n"
     9"Project-Id-Version: I2P\n"
     10"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
    1111"POT-Creation-Date: 2011-03-03 18:28+0000\n"
    12 "PO-Revision-Date: 2011-01-03 00:58+0100\n"
     12"PO-Revision-Date: 2011-04-03 01:46+0100\n"
    1313"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
    14 "Language-Team: foo <foo@bar>\n"
    15 "Language: \n"
     14"Language-Team: Spanish (Castilian) <None>\n"
    1615"MIME-Version: 1.0\n"
    1716"Content-Type: text/plain; charset=UTF-8\n"
    1817"Content-Transfer-Encoding: 8bit\n"
    19 "X-Poedit-Language: Spanish\n"
     18"Language: es\n"
    2019"Plural-Forms: nplurals=2; plural=(n != 1)\n"
    2120
     
    2322#, java-format
    2423msgid "Total uploaders limit changed to {0}"
    25 msgstr "Límite del número total de subidores cambiado a {0}"
     24msgstr "Límite del número total de subidores ha cambiado a {0}"
    2625
    2726#: ../java/src/org/klomp/snark/SnarkManager.java:309
     
    4140
    4241#: ../java/src/org/klomp/snark/SnarkManager.java:335
    43 #, fuzzy, java-format
     42#, java-format
    4443msgid "Startup delay changed to {0}"
    45 msgstr "Demora del arranque cambiado a {0} minutos"
     44msgstr "Tiempo de espera al inicio fue cambiada a {0}."
    4645
    4746#: ../java/src/org/klomp/snark/SnarkManager.java:386
    4847msgid "I2CP and tunnel changes will take effect after stopping all torrents"
    49 msgstr ""
    50 "Cambios de I2CP y del túnel tomarán efecto despues de detener todos los "
    51 "torrents."
     48msgstr "Cambios de I2CP y del túnel tomarán efecto despues de detener todos los torrents."
    5249
    5350#: ../java/src/org/klomp/snark/SnarkManager.java:393
     
    6158
    6259#: ../java/src/org/klomp/snark/SnarkManager.java:402
    63 msgid ""
    64 "Unable to connect with the new settings, reverting to the old I2CP settings"
    65 msgstr ""
    66 "Conectarse no fue posíble con las nuevas preferencias I2CP, utilizaré las "
    67 "anteriores."
     60msgid "Unable to connect with the new settings, reverting to the old I2CP settings"
     61msgstr "Conectarse no fue posíble con las nuevas preferencias I2CP, utilizaré las anteriores."
    6862
    6963#: ../java/src/org/klomp/snark/SnarkManager.java:406
     
    9084#: ../java/src/org/klomp/snark/SnarkManager.java:437
    9185msgid "Enabled open trackers - torrent restart required to take effect."
    92 msgstr ""
    93 "Rastreadores abiertos activados - Para aplicar ello es necesario que "
    94 "reinicies los torrents."
     86msgstr "Rastreadores abiertos activados - Para aplicar ello es necesario que reinicies los torrents."
    9587
    9688#: ../java/src/org/klomp/snark/SnarkManager.java:439
    9789msgid "Disabled open trackers - torrent restart required to take effect."
    98 msgstr ""
    99 "Rastreadores abiertos desactivados - Para aplicar ello es necesario que "
    100 "reinicies los torrents."
     90msgstr "Rastreadores abiertos desactivados - Para aplicar ello es necesario que reinicies los torrents."
    10191
    10292#: ../java/src/org/klomp/snark/SnarkManager.java:447
    10393msgid "Open Tracker list changed - torrent restart required to take effect."
    104 msgstr ""
    105 "Lista de rastreadores abiertos cambiada - Para aplicar ello es necesario que "
    106 "reinicies los torrents."
     94msgstr "Lista de rastreadores abiertos cambiada - Para aplicar ello es necesario que reinicies los torrents."
    10795
    10896#: ../java/src/org/klomp/snark/SnarkManager.java:454
    10997#, java-format
    11098msgid "{0} theme loaded, return to main i2psnark page to view."
    111 msgstr ""
    112 "Tema {0} cargado. ¡Vuelve a la página principal de i2psnark para verlo!"
     99msgstr "Tema {0} cargado. ¡Vuelve a la página principal de i2psnark para verlo!"
    113100
    114101#: ../java/src/org/klomp/snark/SnarkManager.java:461
     
    140127msgstr "No se puede abrir \"{0}\""
    141128
    142 #. TODO - if the existing one is a magnet, delete it and add the metainfo instead?
     129#. TODO - if the existing one is a magnet, delete it and add the metainfo
     130#. instead?
    143131#: ../java/src/org/klomp/snark/SnarkManager.java:586
    144132#: ../java/src/org/klomp/snark/SnarkManager.java:661
    145133#: ../java/src/org/klomp/snark/SnarkManager.java:716
    146134#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976
    147 #, fuzzy, java-format
     135#, java-format
    148136msgid "Torrent with this info hash is already running: {0}"
    149 msgstr "Torrent ya en marcha: {0}"
    150 
    151 #. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName()));
     137msgstr "Ya hay un Torrent con este hash ejecutándose: {0}"
     138
     139#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P
     140#. open trackers and DHT only.", info.getName()));
    152141#: ../java/src/org/klomp/snark/SnarkManager.java:593
    153 #, fuzzy, java-format
    154 msgid ""
    155 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers "
    156 "only."
    157 msgstr ""
    158 "Advertencia - Se ignora rastreado no I2P en \"{0}\", anunciando sólo a los "
    159 "rastreadorse abiertos de I2P"
    160 
    161 #. 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()));
     142#, java-format
     143msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only."
     144msgstr "Advertencia - No hay rastreadores de I2P en \"{0}\", se anunciará solamente a los rastreadores I2P abiertos."
     145
     146#. addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open
     147#. trackers are disabled, you should enable open trackers or DHT before
     148#. starting the torrent.", info.getName()));
    162149#: ../java/src/org/klomp/snark/SnarkManager.java:598
    163 #, fuzzy, java-format
    164 msgid ""
    165 "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is "
    166 "enabled before starting this torrent."
    167 msgstr ""
    168 "Advertencia - Se ignora rastreado no I2P en \"{0}\", rastreadores abiertos "
    169 "están desactivados. ¡Tienes que activarlos antes de iniciar el torrent!"
     150#, java-format
     151msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent."
     152msgstr "Advertencia - No se encuentran rastreadores de I2P en \"{0}\". Asegúrate de que OpenTracker esté activado antes de iniciar este torrent."
    170153
    171154#: ../java/src/org/klomp/snark/SnarkManager.java:619
     
    178161#, java-format
    179162msgid "ERROR - Out of memory, cannot create torrent from {0}"
    180 msgstr ""
     163msgstr "ERROR - Falta de memoria, no se puede crear un torrent de {0}."
    181164
    182165#: ../java/src/org/klomp/snark/SnarkManager.java:635
     
    198181#: ../java/src/org/klomp/snark/SnarkManager.java:675
    199182#, java-format
    200 msgid ""
    201 "We have no saved peers and no other torrents are running. Fetch of {0} will "
    202 "not succeed until you start another torrent."
    203 msgstr ""
     183msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent."
     184msgstr "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."
    204185
    205186#: ../java/src/org/klomp/snark/SnarkManager.java:679
    206 #, fuzzy, java-format
     187#, java-format
    207188msgid "Adding {0}"
    208 msgstr "Recogiendo {0}"
     189msgstr "Añadiendo {0}"
    209190
    210191#: ../java/src/org/klomp/snark/SnarkManager.java:726
     
    223204#, java-format
    224205msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
    225 msgstr ""
    226 "Archivo de datos del torrent \"{0}\" no puede terminar en \".torrent' y será "
    227 "borrado."
     206msgstr "Archivo de datos del torrent \"{0}\" no puede terminar en \".torrent' y será borrado."
    228207
    229208#: ../java/src/org/klomp/snark/SnarkManager.java:976
     
    250229#, java-format
    251230msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
    252 msgstr ""
    253 "Torrents más grandes que \"{0}\"Bytes aún no funcionan, se borrará \"{1}\"."
     231msgstr "Torrents más grandes que \"{0}\"Bytes aún no funcionan, se borrará \"{1}\"."
    254232
    255233#: ../java/src/org/klomp/snark/SnarkManager.java:1005
     
    270248
    271249#: ../java/src/org/klomp/snark/SnarkManager.java:1073
    272 #, fuzzy, java-format
     250#, java-format
    273251msgid "Adding torrents in {0}"
    274 msgstr "Se añaden los torrents en {0} minutos ..."
     252msgstr "Añadiendo torrents en {0}"
    275253
    276254#: ../java/src/org/klomp/snark/SnarkManager.java:1122
     
    280258
    281259#: ../java/src/org/klomp/snark/SnarkManager.java:1170
    282 #, fuzzy, java-format
     260#, java-format
    283261msgid "Metainfo received for {0}"
    284 msgstr "Torrent no se ha podido obtener de {0}"
     262msgstr "Metainfo recibida para {0}"
    285263
    286264#: ../java/src/org/klomp/snark/SnarkManager.java:1171
     
    424402
    425403#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496
    426 #, fuzzy, java-format
     404#, java-format
    427405msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
    428 msgstr "Dirección no válida - tiene que comenzar con http://"
     406msgstr "URL no válida: debe comenzar con \"http://\", \"{0}\", o \"{1}\"."
    429407
    430408#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544
    431409#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571
    432 #, fuzzy, java-format
     410#, java-format
    433411msgid "Magnet deleted: {0}"
    434 msgstr "Ha sido borrada la carpeta de datos: {0}"
     412msgstr "Magnet eliminado: {0}"
    435413
    436414#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552
     
    468446#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655
    469447#, java-format
    470 msgid ""
    471 "Many I2P trackers require you to register new torrents before seeding - "
    472 "please do so before starting \"{0}\""
    473 msgstr ""
    474 "Muchos rastreadores en I2P requieren que te registres, antes de que puedas "
    475 "subir el torrent. Por favor, ¡hazlo antes de iniciar \"{0}\"!"
     448msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\""
     449msgstr "Muchos rastreadores en I2P requieren que te registres, antes de que puedas subir el torrent. Por favor, ¡hazlo antes de iniciar \"{0}\"!"
    476450
    477451#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
     
    487461#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
    488462msgid "Error creating torrent - you must enter a file or directory"
    489 msgstr ""
    490 "Error al crear el torrent - Tienes que especificar un archivo o una carpeta."
     463msgstr "Error al crear el torrent - Tienes que especificar un archivo o una carpeta."
    491464
    492465#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
     
    553526
    554527#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886
    555 #, fuzzy
    556528msgid "Torrent details"
    557 msgstr "Torrents"
     529msgstr "Detalles del torrent"
    558530
    559531#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898
     
    588560#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982
    589561msgid "Remove the torrent from the active list, deleting the .torrent file"
    590 msgstr ""
    591 "Quita el torrent de la lista de los torrents activos borrando el archivo ."
    592 "torrent"
     562msgstr "Quita el torrent de la lista de los torrents activos borrando el archivo .torrent"
    593563
    594564#. Can't figure out how to escape double quotes inside the onclick string.
     
    597567#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
    598568#, java-format
    599 msgid ""
    600 "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
    601 "data will not be deleted) ?"
    602 msgstr ""
    603 "¿Estás seguro de que quieres borrar el archivo \\''{0}.torrent\\''? (Datos "
    604 "bajados no se borrarán.)"
     569msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?"
     570msgstr "¿Estás seguro de que quieres borrar el archivo \\''{0}.torrent\\''? (Datos bajados no se borrarán.)"
    605571
    606572#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990
     
    617583#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
    618584#, java-format
    619 msgid ""
    620 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
    621 "data?"
    622 msgstr ""
    623 "¿Estás seguro de que quieres borrar el archivo torrent \\''{0}\\'' y todos "
    624 "los datos descargados de este torrent?"
     585msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?"
     586msgstr "¿Estás seguro de que quieres borrar el archivo torrent \\''{0}\\'' y todos los datos descargados de este torrent?"
    625587
    626588#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
     
    650612#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
    651613msgid "Choking (We are not allowing the peer to request pieces)"
    652 msgstr "Moderando (De momento no se le permite al par solicitar más partes)"
     614msgstr "moderando (De momento no se le permite al par solicitar más partes)"
    653615
    654616#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159
     
    666628
    667629#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193
    668 msgid ""
    669 "Enter the torrent file download URL (I2P only), magnet link, or maggot link"
    670 msgstr ""
     630msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link"
     631msgstr "Introduce la URL de descarga de torrent (I2P solamente), enlace magnet o un enlace maggot"
    671632
    672633#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198
     
    681642#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203
    682643msgid "Removing a .torrent will cause it to stop."
    683 msgstr ""
    684 "Quitar un archivo torrent resultará en que se detenga el torrent "
    685 "perteneciente."
     644msgstr "Quitar un archivo torrent resultará en que se detenga el torrent perteneciente."
    686645
    687646#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226
     
    689648msgstr "Crear un torrent"
    690649
    691 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
     650#. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
     651#. value=\"" + newFile + "\" /><br>\n");
    692652#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
    693653msgid "Data to seed"
     
    696656#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
    697657msgid "File or directory to seed (must be within the specified path)"
    698 msgstr ""
    699 "Archivo o carpeta para sembrar (tiene que estár en la carpeta especificada)"
     658msgstr "Archivo o carpeta para sembrar (tiene que estár en la carpeta especificada)"
    700659
    701660#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235
     
    710669#. out.write(_("Open trackers and DHT only"));
    711670#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
    712 #, fuzzy
    713671msgid "Open trackers only"
    714 msgstr "Usar también rastreadores abiertos"
     672msgstr "Sólo rastreadores abiertos"
    715673
    716674#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257
     
    753711#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312
    754712msgid "Startup delay"
    755 msgstr "Demora del arranque"
     713msgstr "Tiempo de espera al arrancar"
    756714
    757715#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1314
     
    784742
    785743#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358
    786 msgid ""
    787 "If checked, announce torrents to open trackers as well as the tracker listed "
    788 "in the torrent file"
    789 msgstr ""
    790 "Si está marcado, el torrent se anunciará a los rastreadores abiertos, además "
    791 "de a los rastreadores especificados."
     744msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"
     745msgstr "Si está marcado, el torrent se anunciará a los rastreadores abiertos, además de a los rastreadores especificados."
    792746
    793747#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362
     
    822776#, java-format
    823777msgid "Invalid magnet URL {0}"
    824 msgstr ""
     778msgstr "URL de magnet no válida: {0}"
    825779
    826780#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
    827781#, java-format
    828782msgid "Invalid info hash in magnet URL {0}"
    829 msgstr ""
     783msgstr "Hash de información no válido en la URL magnet {0}"
    830784
    831785#. * dummies for translation
     
    845799
    846800#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663
    847 #, fuzzy
    848801msgid "Completion"
    849 msgstr "completo"
     802msgstr "Completado"
    850803
    851804#. else unknown
     
    856809
    857810#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672
    858 #, fuzzy
    859811msgid "Files"
    860 msgstr "Archivo"
     812msgstr "Archivos"
    861813
    862814#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674
    863815msgid "Pieces"
    864 msgstr ""
     816msgstr "Partes"
    865817
    866818#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675
    867819msgid "Piece size"
    868 msgstr ""
     820msgstr "Tamaño de las partes"
    869821
    870822#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
    871823msgid "Magnet link"
    872 msgstr ""
     824msgstr "Enlace de magnet"
    873825
    874826#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
     
    946898msgstr "Torrent no se ha podido obtener de {0}"
    947899
    948 #~ msgid "Torrent file must originate from an I2P-based tracker"
    949 #~ msgstr "El archivo torrent debe incluir un rastreador I2P."
    950 
    951 #~ msgid " theme locked and loaded."
    952 #~ msgstr "tema cargado"
    953 
    954 #~ msgid "Hide All Attached Peers [connected/total in swarm]"
    955 #~ msgstr "Ocultar todos los pares conectados [conectados/todos]"
    956 
    957 #~ msgid "Show All Attached Peers [connected/total in swarm]"
    958 #~ msgstr "Mostrar todos los pares conectados [conectados/todos]"
    959 
    960 #~ msgid "Loaded Torrents"
    961 #~ msgstr "Torrents"
    962 
    963 #~ msgid "Estimated Download Time"
    964 #~ msgstr "tiempo restante de descarga"
    965 
    966 #~ msgid "1"
    967 #~ msgid_plural "{0}"
    968 #~ msgstr[0] "{0}"
    969 #~ msgstr[1] "{0}"
    970 
    971 #~ msgid "Torrent file {0} does not exist"
    972 #~ msgstr "Archivo del torrent {0} no existe"
    973 
    974 #~ msgid "Copying torrent to {0}"
    975 #~ msgstr "Copiando torrent a {0}"
    976 
    977 #~ msgid "from {0}"
    978 #~ msgstr "de {0}"
    979 
    980 #~ msgid "Downloading"
    981 #~ msgstr "descargando"
    982 
    983 #~ msgid "FileSize"
    984 #~ msgstr "Tamaño"
    985 
    986 #~ msgid "Download Status"
    987 #~ msgstr "Estado"
    988 
    989 #~ msgid "size: {0}B"
    990 #~ msgstr "Tamaño: {0}Bytes"
    991 
    992 #~ msgid "Directory to store torrents and data"
    993 #~ msgstr "Carpeta para guardar los archivos torrent y los datos"
    994 
    995 #~ msgid "Do not download"
    996 #~ msgstr "No descargues"
    997 
    998 #~ msgid "Details"
    999 #~ msgstr "Detalles"
    1000 
    1001 #~ msgid "Cannot change the I2CP settings while torrents are active"
    1002 #~ msgstr ""
    1003 #~ "No se puede cammbiar los ajustes I2CP mientras estén activos los torrents"
    1004 
    1005 #~ msgid "Non-i2p tracker in \"{0}\", deleting it from our list of trackers!"
    1006 #~ msgstr ""
    1007 #~ "Rastreador fuera de I2P en \"{0}\", borrando de la lista de rastreadores"
    1008 
    1009 #~ msgid "{0} torrents"
    1010 #~ msgstr "{0} Torrents"
    1011 
    1012 #~ msgid "Uninteresting"
    1013 #~ msgstr "no interesante"
    1014 
    1015 #~ msgid "Choked"
    1016 #~ msgstr "frenado"
    1017 
    1018 #~ msgid "Uninterested"
    1019 #~ msgstr "desinteresado"
    1020 
    1021 #~ msgid "Choking"
    1022 #~ msgstr "frenando"
    1023 
    1024 #~ msgid "Custom tracker URL"
    1025 #~ msgstr "URL especial del rastreador"
    1026 
    1027 #~ msgid "Configure"
    1028 #~ msgstr "Ajustes"
  • apps/i2psnark/locale/messages_fr.po

    r4b19801 re42b78e  
    99"Project-Id-Version: I2P i2psnark\n"
    1010"Report-Msgid-Bugs-To: \n"
    11 "POT-Creation-Date: 2011-03-03 18:28+0000\n"
    12 "PO-Revision-Date: 2010-12-31 02:22+0100\n"
    13 "Last-Translator: mixxy <m1xxy@mail.i2p>\n"
     11"POT-Creation-Date: 2011-05-02 11:08+0000\n"
     12"PO-Revision-Date: 2011-05-19 07:39+0100\n"
     13"Last-Translator: magma <magma@mail.i2p>\n"
    1414"Language-Team: foo <foo@bar>\n"
    1515"Language: \n"
     
    1717"Content-Type: text/plain; charset=UTF-8\n"
    1818"Content-Transfer-Encoding: 8bit\n"
    19 "Plural-Forms: nplurals=2; plural=n>1\n"
     19"Plural-Forms: nplurals=2; plural=(n >= 2)\n"
    2020"X-Poedit-Language: French\n"
    2121
     
    3333#, java-format
    3434msgid "Up BW limit changed to {0}KBps"
    35 msgstr "La limite d’upload modifiée : {0} Ko/s"
     35msgstr "Limite d’envoi modifiée : {0} ko/s"
    3636
    3737#: ../java/src/org/klomp/snark/SnarkManager.java:323
    3838#, java-format
    3939msgid "Minimum up bandwidth limit is {0}KBps"
    40 msgstr "La limite minimale d’upload est {0} Ko/s"
     40msgstr "La limite minimale d’envoi est {0} ko/s"
    4141
    4242#: ../java/src/org/klomp/snark/SnarkManager.java:335
    43 #, fuzzy, java-format
     43#, java-format
    4444msgid "Startup delay changed to {0}"
    45 msgstr "Delais de démarrage modifié : {0} minutes"
     45msgstr "Délai de démarrage modifié à {0} minutes"
    4646
    4747#: ../java/src/org/klomp/snark/SnarkManager.java:386
    4848msgid "I2CP and tunnel changes will take effect after stopping all torrents"
    49 msgstr ""
    50 "Les modifications I2CP et des tunnels seront prise en compte après avoir "
    51 "arrêté tous les torrents"
     49msgstr "Les modifications d'I2CP et des tunnels seront prise en compte après avoir arrêté tous les torrents"
    5250
    5351#: ../java/src/org/klomp/snark/SnarkManager.java:393
     
    6159
    6260#: ../java/src/org/klomp/snark/SnarkManager.java:402
    63 msgid ""
    64 "Unable to connect with the new settings, reverting to the old I2CP settings"
    65 msgstr ""
    66 "Impossible de se connecter avec les nouveaux paramètres, retour à l'ancienne "
    67 "configuration I2CP"
     61msgid "Unable to connect with the new settings, reverting to the old I2CP settings"
     62msgstr "Impossible de se connecter avec les nouveaux paramètres, retour à l'ancienne configuration I2CP"
    6863
    6964#: ../java/src/org/klomp/snark/SnarkManager.java:406
     
    7873#, java-format
    7974msgid "I2CP listener restarted for \"{0}\""
    80 msgstr "Listener I2CP redémarré pour \"{0}\""
     75msgstr "Écouteur I2CP redémarré pour \"{0}\""
    8176
    8277#: ../java/src/org/klomp/snark/SnarkManager.java:429
    8378msgid "Enabled autostart"
    84 msgstr "Le démarrage automatique est activé"
     79msgstr "Démarrage automatique activé"
    8580
    8681#: ../java/src/org/klomp/snark/SnarkManager.java:431
    8782msgid "Disabled autostart"
    88 msgstr "Le démarrage automatique est désactivé"
     83msgstr "Démarrage automatique désactivé"
    8984
    9085#: ../java/src/org/klomp/snark/SnarkManager.java:437
    9186msgid "Enabled open trackers - torrent restart required to take effect."
    92 msgstr ""
    93 "Les open trackers sont activés - ceci a nécessité un redémarrage des "
    94 "torrents pour être pris en compte."
     87msgstr "Open trackers activés - redémarrage des torrents requis pour prise en compte."
    9588
    9689#: ../java/src/org/klomp/snark/SnarkManager.java:439
    9790msgid "Disabled open trackers - torrent restart required to take effect."
    98 msgstr ""
    99 "Les open trackers sont désactivés - ceci a nécessité un redémarrage des "
    100 "torrents pour être pris en compte."
     91msgstr "Open trackers désactivés - redémarrage des torrents requis pour prise en compte."
    10192
    10293#: ../java/src/org/klomp/snark/SnarkManager.java:447
    10394msgid "Open Tracker list changed - torrent restart required to take effect."
    104 msgstr ""
    105 "Liste des Open trackers modifiée - ceci nécessite un redémarrage des "
    106 "torrents pour être pris en compte"
     95msgstr "Liste des Open trackers modifiée - redémarrage des torrents requis pour prise en compte"
    10796
    10897#: ../java/src/org/klomp/snark/SnarkManager.java:454
    10998#, java-format
    11099msgid "{0} theme loaded, return to main i2psnark page to view."
    111 msgstr ""
     100msgstr "Thème {0}  chargé, revenez à la page d''accueil d''i2psnark pour voir comme il est beau !"
    112101
    113102#: ../java/src/org/klomp/snark/SnarkManager.java:461
    114103msgid "Configuration unchanged."
    115 msgstr "La configuration n'a pas été modifiée"
     104msgstr "Aucun changement de configuration."
    116105
    117106#: ../java/src/org/klomp/snark/SnarkManager.java:471
     
    140129
    141130#. TODO - if the existing one is a magnet, delete it and add the metainfo instead?
    142 #: ../java/src/org/klomp/snark/SnarkManager.java:586
    143 #: ../java/src/org/klomp/snark/SnarkManager.java:661
    144 #: ../java/src/org/klomp/snark/SnarkManager.java:716
     131#: ../java/src/org/klomp/snark/SnarkManager.java:589
     132#: ../java/src/org/klomp/snark/SnarkManager.java:665
     133#: ../java/src/org/klomp/snark/SnarkManager.java:720
    145134#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1976
    146 #, fuzzy, java-format
     135#, java-format
    147136msgid "Torrent with this info hash is already running: {0}"
    148 msgstr "Torrent déjà actif: {0}"
     137msgstr "Un torrent avec cette empreinte est déjà actif: {0}"
    149138
    150139#. addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName()));
    151 #: ../java/src/org/klomp/snark/SnarkManager.java:593
    152 #, fuzzy, java-format
    153 msgid ""
    154 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers "
    155 "only."
    156 msgstr ""
    157 "Attention - Les trackers non-i2p dans \"{0}\" sont ignorés, seuls les open "
    158 "trackers I2P seront utilisés!"
     140#: ../java/src/org/klomp/snark/SnarkManager.java:596
     141#, java-format
     142msgid "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only."
     143msgstr "Attention - Les trackers non-i2p dans \"{0}\" sont ignorés, seuls les trackers ouverts I2P seront utilisés!"
    159144
    160145#. 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()));
    161 #: ../java/src/org/klomp/snark/SnarkManager.java:598
    162 #, fuzzy, java-format
    163 msgid ""
    164 "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is "
    165 "enabled before starting this torrent."
    166 msgstr ""
    167 "Attention - Les trackers non-i2p dans \"{0}\" sont ignorés, et les open "
    168 "trackers sont désactivés, vous devez activer les open trackers avant de "
    169 "démarrer le torrent!"
    170 
    171 #: ../java/src/org/klomp/snark/SnarkManager.java:619
     146#: ../java/src/org/klomp/snark/SnarkManager.java:601
     147#, java-format
     148msgid "Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent."
     149msgstr "Attention - aucun tracker i2p dans \"{0}\". Vous devez activer les open trackers avant de démarrer le torrent!"
     150
     151#: ../java/src/org/klomp/snark/SnarkManager.java:622
    172152#, java-format
    173153msgid "Torrent in \"{0}\" is invalid"
    174154msgstr "Le torrent dans \"{0}\" est invalide"
    175155
    176 #: ../java/src/org/klomp/snark/SnarkManager.java:624
    177 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1999
     156#: ../java/src/org/klomp/snark/SnarkManager.java:627
     157#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1998
    178158#, java-format
    179159msgid "ERROR - Out of memory, cannot create torrent from {0}"
    180 msgstr ""
    181 
    182 #: ../java/src/org/klomp/snark/SnarkManager.java:635
     160msgstr "ERREUR - Mémoire insuffisante, impossible de créer le torrent de {0}"
     161
     162#: ../java/src/org/klomp/snark/SnarkManager.java:639
    183163#, java-format
    184164msgid "Torrent added and started: \"{0}\""
    185165msgstr "Torrent ajouté et démarré: \"{0}\""
    186166
    187 #: ../java/src/org/klomp/snark/SnarkManager.java:637
     167#: ../java/src/org/klomp/snark/SnarkManager.java:641
    188168#, java-format
    189169msgid "Torrent added: \"{0}\""
    190170msgstr "Torrent ajouté: \"{0}\""
    191171
    192 #: ../java/src/org/klomp/snark/SnarkManager.java:672
    193 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
     172#: ../java/src/org/klomp/snark/SnarkManager.java:676
     173#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
    194174#, java-format
    195175msgid "Fetching {0}"
    196176msgstr "Envoi {0}"
    197177
    198 #: ../java/src/org/klomp/snark/SnarkManager.java:675
    199 #, java-format
    200 msgid ""
    201 "We have no saved peers and no other torrents are running. Fetch of {0} will "
    202 "not succeed until you start another torrent."
    203 msgstr ""
    204 
    205178#: ../java/src/org/klomp/snark/SnarkManager.java:679
    206 #, fuzzy, java-format
     179#, java-format
     180msgid "We have no saved peers and no other torrents are running. Fetch of {0} will not succeed until you start another torrent."
     181msgstr "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."
     182
     183#: ../java/src/org/klomp/snark/SnarkManager.java:683
     184#, java-format
    207185msgid "Adding {0}"
    208 msgstr "Envoi {0}"
    209 
    210 #: ../java/src/org/klomp/snark/SnarkManager.java:726
    211 #: ../java/src/org/klomp/snark/SnarkManager.java:749
    212 #: ../java/src/org/klomp/snark/SnarkManager.java:1174
    213 #, fuzzy, java-format
     186msgstr "Ajout {0}"
     187
     188#: ../java/src/org/klomp/snark/SnarkManager.java:730
     189#: ../java/src/org/klomp/snark/SnarkManager.java:753
     190#: ../java/src/org/klomp/snark/SnarkManager.java:1180
     191#, java-format
    214192msgid "Failed to copy torrent file to {0}"
    215193msgstr "Impossible de copier le torrent vers {0}"
    216194
    217 #: ../java/src/org/klomp/snark/SnarkManager.java:972
     195#: ../java/src/org/klomp/snark/SnarkManager.java:976
    218196#, java-format
    219197msgid "Too many files in \"{0}\" ({1}), deleting it!"
    220198msgstr "Trop de fichiers dans \"{0}\" ({1}), suppression! "
    221199
    222 #: ../java/src/org/klomp/snark/SnarkManager.java:974
     200#: ../java/src/org/klomp/snark/SnarkManager.java:978
    223201#, java-format
    224202msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
    225 msgstr ""
    226 "Le fichier torrent \"{0}\" ne peut pas se terminer par \".torrent\", "
    227 "suppression!"
    228 
    229 #: ../java/src/org/klomp/snark/SnarkManager.java:976
     203msgstr "Le fichier torrent \"{0}\" ne peut pas se terminer par \".torrent\", suppression!"
     204
     205#: ../java/src/org/klomp/snark/SnarkManager.java:980
    230206#, java-format
    231207msgid "No pieces in \"{0}\",  deleting it!"
    232 msgstr "Pas de morceaux dans \"{0}\", suppression!"
    233 
    234 #: ../java/src/org/klomp/snark/SnarkManager.java:978
     208msgstr "Pas de tronçon dans \"{0}\", suppression!"
     209
     210#: ../java/src/org/klomp/snark/SnarkManager.java:982
    235211#, java-format
    236212msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
    237 msgstr "Trop de morceaux dans \"{0}\" , la limite est {1}, suppression!"
    238 
    239 #: ../java/src/org/klomp/snark/SnarkManager.java:980
     213msgstr "Trop de tronçons dans \"{0}\" , la limite est {1}, suppression!"
     214
     215#: ../java/src/org/klomp/snark/SnarkManager.java:984
    240216#, java-format
    241217msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
    242 msgstr "Les morceaux sont trop larges dans \"{0}\" ({1}B), suppresion."
    243 
    244 #: ../java/src/org/klomp/snark/SnarkManager.java:981
     218msgstr "Les tronçons sont trop larges dans \"{0}\" ({1}B), suppression."
     219
     220#: ../java/src/org/klomp/snark/SnarkManager.java:985
    245221#, java-format
    246222msgid "Limit is {0}B"
    247 msgstr "La limite est de \"{0}\"Octets"
    248 
    249 #: ../java/src/org/klomp/snark/SnarkManager.java:989
     223msgstr "La limite est de \"{0}\"octets"
     224
     225#: ../java/src/org/klomp/snark/SnarkManager.java:987
     226#, java-format
     227msgid "Torrent \"{0}\" has no data, deleting it!"
     228msgstr "Le fichier torrent \"{0}\" n'a pas de données, suppression!"
     229
     230#: ../java/src/org/klomp/snark/SnarkManager.java:995
    250231#, java-format
    251232msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
    252 msgstr ""
    253 "Les torrents dont la taille est supérieure à \"{0}\"Octets ne sont pas "
    254 "encore supportés, suppression \"{1}\"."
    255 
    256 #: ../java/src/org/klomp/snark/SnarkManager.java:1005
     233msgstr "Les torrents dont la taille est supérieure à \"{0}\"octets ne sont pas encore supportés, suppression \"{1}\"."
     234
     235#: ../java/src/org/klomp/snark/SnarkManager.java:1011
    257236#, java-format
    258237msgid "Error: Could not remove the torrent {0}"
    259238msgstr "Erreur: Impossible de supprimer le torrent \"{0}\""
    260239
    261 #: ../java/src/org/klomp/snark/SnarkManager.java:1026
    262 #: ../java/src/org/klomp/snark/SnarkManager.java:1044
     240#: ../java/src/org/klomp/snark/SnarkManager.java:1032
     241#: ../java/src/org/klomp/snark/SnarkManager.java:1050
    263242#, java-format
    264243msgid "Torrent stopped: \"{0}\""
    265244msgstr "Torrent arrêté:\"{0}\""
    266245
    267 #: ../java/src/org/klomp/snark/SnarkManager.java:1065
     246#: ../java/src/org/klomp/snark/SnarkManager.java:1071
    268247#, java-format
    269248msgid "Torrent removed: \"{0}\""
    270249msgstr "Torrent supprimé:\"{0}\""
    271250
    272 #: ../java/src/org/klomp/snark/SnarkManager.java:1073
    273 #, fuzzy, java-format
     251#: ../java/src/org/klomp/snark/SnarkManager.java:1079
     252#, java-format
    274253msgid "Adding torrents in {0}"
    275 msgstr "Ajouter des torrents dans {0} minutes"
    276 
    277 #: ../java/src/org/klomp/snark/SnarkManager.java:1122
     254msgstr "Ajout des torrents dans {0}"
     255
     256#: ../java/src/org/klomp/snark/SnarkManager.java:1128
    278257#, java-format
    279258msgid "Download finished: {0}"
    280259msgstr "Téléchargement terminé:\"{0}\""
    281260
    282 #: ../java/src/org/klomp/snark/SnarkManager.java:1170
    283 #, fuzzy, java-format
     261#: ../java/src/org/klomp/snark/SnarkManager.java:1176
     262#, java-format
    284263msgid "Metainfo received for {0}"
    285 msgstr "Le torrent n’a pas été reçu par {0}"
    286 
    287 #: ../java/src/org/klomp/snark/SnarkManager.java:1171
    288 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:525
     264msgstr "Metainfo reçue pour {0}"
     265
     266#: ../java/src/org/klomp/snark/SnarkManager.java:1177
     267#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526
    289268#, java-format
    290269msgid "Starting up torrent {0}"
    291270msgstr "Démarrage du torrent {0}"
    292271
    293 #: ../java/src/org/klomp/snark/SnarkManager.java:1225
     272#: ../java/src/org/klomp/snark/SnarkManager.java:1231
    294273msgid "Unable to connect to I2P!"
    295274msgstr "Impossible de se connecter à I2P!"
    296275
    297 #: ../java/src/org/klomp/snark/SnarkManager.java:1231
     276#: ../java/src/org/klomp/snark/SnarkManager.java:1237
    298277#, java-format
    299278msgid "Unable to add {0}"
     
    344323
    345324#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:310
    346 #, fuzzy
    347325msgid "Estimated time remaining"
    348 msgstr "Octets restants"
     326msgstr "temps restant estimé"
    349327
    350328# NOTE: purposely left blank to leave more room in the table header
     
    353331#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:313
    354332msgid "ETA"
    355 msgstr " Temps"
     333msgstr "Temps"
    356334
    357335#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317
     
    389367msgstr "Taux d'envoi"
    390368
    391 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:365
     369#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:366
    392370msgid "Stop all torrents and the I2P tunnel"
    393371msgstr "Arrêter tous les torrents et le tunnel I2P"
    394372
    395 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367
     373#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:368
    396374msgid "Stop All"
    397375msgstr "Arrêter tout"
    398376
    399 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:376
     377#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:377
    400378msgid "Start all torrents and the I2P tunnel"
    401379msgstr "Démarrer tous les torrents et le tunnel I2P"
    402380
    403 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:378
     381#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:379
    404382msgid "Start All"
    405383msgstr "Démarrer tout"
    406384
    407 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397
     385#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:398
    408386msgid "No torrents loaded."
    409387msgstr "Aucun torrent chargé."
    410388
    411 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:402
     389#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:403
    412390msgid "Totals"
    413391msgstr "Totaux"
    414392
    415 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:404
     393#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405
    416394#, java-format
    417395msgid "1 torrent"
    418396msgid_plural "{0} torrents"
    419 msgstr[0] "1 torrent"
     397msgstr[0] "{0} torrent"
    420398msgstr[1] "{0} torrents"
    421399
    422 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407
     400#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:408
    423401#, java-format
    424402msgid "1 connected peer"
    425403msgid_plural "{0} connected peers"
    426 msgstr[0] "1 pair connecté"
     404msgstr[0] "{0} pair connecté"
    427405msgstr[1] "{0} pairs connectés"
    428406
    429 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:496
    430 #, fuzzy, java-format
     407#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:497
     408#, java-format
    431409msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
    432 msgstr "URL invalide - elle doit débuter par http://"
    433 
    434 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:544
    435 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:571
    436 #, fuzzy, java-format
     410msgstr "URL incorrecte - elle doit débuter par \"http://\", \"{0}\", ou \"{1}\""
     411
     412#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:545
     413#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:572
     414#, java-format
    437415msgid "Magnet deleted: {0}"
    438 msgstr "Répertoire des données effacé: {0}"
    439 
    440 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:552
    441 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:577
     416msgstr "Magnet supprimé: {0}"
     417
     418#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:553
     419#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:578
    442420#, java-format
    443421msgid "Torrent file deleted: {0}"
    444422msgstr "Fichier torrent effacé: {0}"
    445423
    446 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
    447 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:593
     424#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
     425#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:594
    448426#, java-format
    449427msgid "Data file deleted: {0}"
    450428msgstr "Fichier de données effacé: {0}"
    451429
    452 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:585
    453 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
     430#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:586
     431#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
    454432#, java-format
    455433msgid "Data file could not be deleted: {0}"
    456434msgstr "Le fichier de données ne peut être effacé: {0}"
    457435
    458 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:604
     436#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:605
    459437#, java-format
    460438msgid "Data dir deleted: {0}"
    461439msgstr "Répertoire des données effacé: {0}"
    462440
    463 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:637
     441#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:638
    464442msgid "Error creating torrent - you must select a tracker"
    465 msgstr ""
    466 "Erreur lors de la création du torrent - vous devez sélectionner un tracker"
     443msgstr "Erreur lors de la création du torrent - vous devez sélectionner un tracker"
    467444
    468445#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:653
     
    473450#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:655
    474451#, java-format
    475 msgid ""
    476 "Many I2P trackers require you to register new torrents before seeding - "
    477 "please do so before starting \"{0}\""
    478 msgstr ""
    479 "De nombreux trackers I2P nécessitent d’enregistrer les nouveaux torrents "
    480 "avant de seeder - faites-le avant de démarrer \"{0}\"!"
     452msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\""
     453msgstr "De nombreux trackers I2P nécessitent d’enregistrer les nouveaux torrents avant de seeder - faites-le avant de démarrer \"{0}\"!"
    481454
    482455#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
     
    492465#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
    493466msgid "Error creating torrent - you must enter a file or directory"
    494 msgstr ""
    495 "Erreur de création du torrent - vous devez saisir un fichier ou un répertoire"
     467msgstr "Erreur de création du torrent - vous devez saisir un fichier ou un répertoire"
    496468
    497469#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
     
    524496msgid "1 peer"
    525497msgid_plural "{0} peers"
    526 msgstr[0] "1 Pair"
    527 msgstr[1] "{0} Pairs"
     498msgstr[0] "{0} pair"
     499msgstr[1] "{0} pairs"
    528500
    529501#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:819
     
    558530
    559531#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:886
    560 #, fuzzy
    561532msgid "Torrent details"
    562 msgstr "Torrents"
     533msgstr "Détails du torrent"
    563534
    564535#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:898
    565536#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
    566 #, fuzzy
    567537msgid "Info"
    568 msgstr "Ignore"
     538msgstr "Info"
    569539
    570540#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:913
     
    601571#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:987
    602572#, java-format
    603 msgid ""
    604 "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
    605 "data will not be deleted) ?"
    606 msgstr ""
    607 "Etes-vous certain de vouloir supprimer le fichier  \\''{0}.torrent\\'' (les "
    608 "données déjà téléchargées ne seront pas supprimées) ?"
     573msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?"
     574msgstr "Êtes-vous certain de vouloir supprimer le fichier  \\''{0}.torrent\\'' (les données déjà téléchargées ne seront pas supprimées) ?"
    609575
    610576#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:990
     
    614580#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001
    615581msgid "Delete the .torrent file and the associated data file(s)"
    616 msgstr ""
    617 "Supprimer le fichier .torrent et le(s) fichier(s) de données associé(s)"
     582msgstr "Supprimer le fichier .torrent et le(s) fichier(s) de données associé(s)"
    618583
    619584#. Can't figure out how to escape double quotes inside the onclick string.
     
    622587#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
    623588#, java-format
    624 msgid ""
    625 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
    626 "data?"
    627 msgstr ""
    628 "Etes-vous certain de vouloir supprimer le torrent \\''{0}\\'' ainsi que "
    629 "toutes les données téléchargées ?"
     589msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?"
     590msgstr "Êtes-vous certain de vouloir supprimer le torrent \\''{0}\\'' ainsi que toutes les données téléchargées ?"
    630591
    631592#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
     
    643604#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077
    644605msgid "Uninteresting (The peer has no pieces we need)"
    645 msgstr "aucun intérêt (le pair n'a aucun morceau utile)"
     606msgstr "Aucun intérêt (le pair n'a aucun tronçon utile)"
    646607
    647608#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1079
    648609msgid "Choked (The peer is not allowing us to request pieces)"
    649 msgstr "bridé (le pair ne nous permet pas de demander un morceau)"
     610msgstr "bridé (le pair ne nous permet pas de demander des tronçons)"
    650611
    651612#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1099
    652613msgid "Uninterested (We have no pieces the peer needs)"
    653 msgstr "aucun intérêt (nous n'avons aucun morceau utile au pair)"
     614msgstr "Pas intéressé (aucun tronçon utile au pair)"
    654615
    655616#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
    656617msgid "Choking (We are not allowing the peer to request pieces)"
    657 msgstr "bridage (nous ne permettons pas au pair de demander un morceau)"
     618msgstr "bridage (nous ne permettons pas au pair de demander un tronçon)"
    658619
    659620#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1159
    660 #, fuzzy, java-format
     621#, java-format
    661622msgid "Details at {0} tracker"
    662 msgstr "Sélectionner un tracker"
     623msgstr "Détails au tracker {0}"
    663624
    664625#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1188
     
    668629#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1190
    669630msgid "From URL"
    670 msgstr "Depuis l'url"
     631msgstr "Depuis l'URL"
    671632
    672633#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1193
    673 msgid ""
    674 "Enter the torrent file download URL (I2P only), magnet link, or maggot link"
    675 msgstr ""
     634msgid "Enter the torrent file download URL (I2P only), magnet link, or maggot link"
     635msgstr "Entrez l'URL (I2P uniquement) de téléchargement du fichier torrent, du lien magnet ou maggot."
    676636
    677637#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1198
     
    686646#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1203
    687647msgid "Removing a .torrent will cause it to stop."
    688 msgstr "La suppression d'un fichier .torrent entraine l'arrêt du torrent"
     648msgstr "La suppression d'un fichier .torrent entraîne l'arrêt du torrent."
    689649
    690650#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1226
     
    712672#. out.write(_("Open trackers and DHT only"));
    713673#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
    714 #, fuzzy
    715674msgid "Open trackers only"
    716 msgstr "Utiliser les open trackers aussi"
     675msgstr "Trackers ouverts seulement"
    717676
    718677#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1257
     
    722681#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260
    723682msgid "Specify custom tracker announce URL"
    724 msgstr "Spécifier une URL personnalisée d'annonce de tracker"
     683msgstr "Spécifier une URL d'annonce de tracker personnalisé"
    725684
    726685#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263
     
    739698#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
    740699msgid "Edit i2psnark.config and restart to change"
    741 msgstr ""
    742 "Editez i2psnark.config et redémarrez pour prendre en compte les modifications"
     700msgstr "Editez i2psnark.config et redémarrez pour prendre en compte les modifications"
    743701
    744702#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1291
     
    748706#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295
    749707msgid "If checked, automatically start torrents that are added"
    750 msgstr "Si coché, les torrents démarrerons automatiquement lors de l'ajout"
     708msgstr "Si coché, les torrents démarreront automatiquement lors de l'ajout"
    751709
    752710#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1299
    753711msgid "Theme"
    754 msgstr ""
     712msgstr "Thème"
    755713
    756714#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1312
     
    787745
    788746#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1358
    789 msgid ""
    790 "If checked, announce torrents to open trackers as well as the tracker listed "
    791 "in the torrent file"
    792 msgstr ""
    793 "Si coché, les torrents seront annoncés vers les open trackers ainsi que vers "
    794 "les trackers indiqués dans le fichier torrent"
     747msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"
     748msgstr "Si coché, les torrents seront annoncés vers les open trackers ainsi que vers les trackers indiqués dans le fichier torrent"
    795749
    796750#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1362
    797751msgid "Open tracker announce URLs"
    798 msgstr "URL d'annonce open tracker"
     752msgstr "URLs d'annonce open tracker"
    799753
    800754#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1374
     
    825779#, java-format
    826780msgid "Invalid magnet URL {0}"
    827 msgstr ""
     781msgstr "URL magnet {0} incorrecte"
    828782
    829783#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1470
    830784#, java-format
    831785msgid "Invalid info hash in magnet URL {0}"
    832 msgstr ""
     786msgstr "Info d'empreinte incorrecte dans l'URL magnet {0}"
    833787
    834788#. * dummies for translation
     
    837791msgid "1 hop"
    838792msgid_plural "{0} hops"
    839 msgstr[0] "1 saut"
     793msgstr[0] "{0} saut"
    840794msgstr[1] "{0} sauts"
    841795
     
    844798msgid "1 tunnel"
    845799msgid_plural "{0} tunnels"
    846 msgstr[0] "1 tunnel"
     800msgstr[0] "{0} tunnel"
    847801msgstr[1] "{0} tunnels"
    848802
    849803#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1663
    850 #, fuzzy
    851804msgid "Completion"
    852 msgstr "Complet"
     805msgstr "Finalisation"
    853806
    854807#. else unknown
     
    859812
    860813#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672
    861 #, fuzzy
    862814msgid "Files"
    863 msgstr "Fichier"
     815msgstr "Fichiers"
    864816
    865817#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1674
    866818msgid "Pieces"
    867 msgstr ""
     819msgstr "Tronçons"
    868820
    869821#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1675
    870822msgid "Piece size"
    871 msgstr ""
     823msgstr "Taille des tronçons"
    872824
    873825#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
    874826msgid "Magnet link"
    875 msgstr ""
     827msgstr "Lien magnet"
    876828
    877829#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1714
     
    905857
    906858#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1806
    907 #, fuzzy
    908859msgid "Open"
    909 msgstr "Ouvrir fichier"
     860msgstr "Ouvrir le fichier"
    910861
    911862#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1832
     
    919870#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1842
    920871msgid "Skip"
    921 msgstr ""
     872msgstr "Ignorer"
    922873
    923874#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851
     
    928879#, java-format
    929880msgid "Torrent fetched from {0}"
    930 msgstr "Torrent envoyé de {0}"
    931 
    932 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1989
     881msgstr "Torrent reçu de {0}"
     882
     883#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988
    933884#, java-format
    934885msgid "Torrent already running: {0}"
    935886msgstr "Torrent déjà actif: {0}"
    936887
    937 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1991
     888#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1990
    938889#, java-format
    939890msgid "Torrent already in the queue: {0}"
    940 msgstr "Torrent déjà dans la queue: {0}"
    941 
    942 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997
     891msgstr "Torrent déjà dans la file d''attente: {0}"
     892
     893#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1996
    943894#, java-format
    944895msgid "Torrent at {0} was not valid"
    945 msgstr "Le torrent {0} n'est pas valide"
    946 
    947 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2004
     896msgstr "Le torrent {0} est invalide"
     897
     898#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2003
    948899#, java-format
    949900msgid "Torrent was not retrieved from {0}"
    950 msgstr "Le torrent n’a pas été reçu par {0}"
     901msgstr "Le torrent n’a pas été reçu de {0}"
    951902
    952903#~ msgid "Torrent file must originate from an I2P-based tracker"
  • apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java

    r4b19801 re42b78e  
    117117            // "identity;q=1, *;q=0" didn't. 
    118118            setEntry(headers, "Accept-encoding", "");
    119             String modifiedHeader = formatHeaders(headers, command);
    120            
    121             //String modifiedHeader = getModifiedHeader(socket);
    122             if (_log.shouldLog(Log.DEBUG))
    123                 _log.debug("Modified header: [" + modifiedHeader + "]");
    124119
    125120            socket.setReadTimeout(readTimeout);
     
    139134            if (_log.shouldLog(Log.INFO))
    140135                _log.info("HTTP server encoding header: " + enc + "/" + altEnc);
    141             boolean useGZIP = ( (enc != null) && (enc.indexOf("x-i2p-gzip") >= 0) );
    142             if ( (!useGZIP) && (altEnc != null) && (altEnc.indexOf("x-i2p-gzip") >= 0) )
    143                 useGZIP = true;
     136            boolean alt = (altEnc != null) && (altEnc.indexOf("x-i2p-gzip") >= 0);
     137            boolean useGZIP = alt || ( (enc != null) && (enc.indexOf("x-i2p-gzip") >= 0) );
     138            // Don't pass this on, outproxies should strip so I2P traffic isn't so obvious but they probably don't
     139            if (alt)
     140                headers.remove("X-Accept-encoding");
     141
     142            String modifiedHeader = formatHeaders(headers, command);
     143            if (_log.shouldLog(Log.DEBUG))
     144                _log.debug("Modified header: [" + modifiedHeader + "]");
    144145           
    145146            if (allowGZIP && useGZIP) {
  • apps/routerconsole/java/build.xml

    r4b19801 re42b78e  
    2727                <pathelement location="../../desktopgui/build" />
    2828                <pathelement location="../../../installer/lib/wrapper/win32/wrapper.jar" /> <!-- we dont care if we're not on win32 -->
    29                 <pathelement location="../../jrobin/jrobin-1.4.0.jar" />
     29                <pathelement location="../../jrobin/jrobin-1.5.9.1.jar" />
    3030            </classpath>
    3131        </depend>
     
    5959                <pathelement location="../../desktopgui/dist/desktopgui.jar" />
    6060                <pathelement location="../../../installer/lib/wrapper/win32/wrapper.jar" /> <!-- we dont care if we're not on win32 -->
    61                 <pathelement location="../../jrobin/jrobin-1.4.0.jar" />
     61                <pathelement location="../../jrobin/jrobin-1.5.9.1.jar" />
    6262            </classpath>
    6363        </javac>
     
    9191            </manifest>
    9292        </jar>
    93        <!-- jrobin taken out of routerconsole.jar in 0.7.12
    94         <delete dir="./tmpextract" />
    95         <unjar src="../../jrobin/jrobin-1.4.0.jar" dest="./tmpextract" />
    96         <jar destfile="./build/routerconsole.jar" basedir="./tmpextract" update="true" />
    97         <delete dir="./tmpextract" />
    98        -->
    9993    </target>
    10094
  • apps/routerconsole/java/bundle-messages.sh

    r4b19801 re42b78e  
    5353   ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java \
    5454   ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java \
    55    ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java"
     55   ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java \
     56   ../../../router/java/src/net/i2p/router/transport/UPnP.java \
     57   ../../../router/java/src/net/i2p/router/transport/UPnPManager.java"
    5658
    5759# add ../java/ so the refs will work in the po file
  • apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java

    r4b19801 re42b78e  
    7070     */
    7171    public boolean allowIFrame(String ua) {
    72         return ua == null || !(ua.startsWith("Lynx") || ua.startsWith("w3m") ||
     72        return ua == null ||
     73                               // text
     74                             !(ua.startsWith("Lynx") || ua.startsWith("w3m") ||
    7375                               ua.startsWith("ELinks") || ua.startsWith("Links") ||
    74                                ua.startsWith("Dillo"));
     76                               ua.startsWith("Dillo") ||
     77                               // mobile
     78                               // http://www.zytrax.com/tech/web/mobile_ids.html
     79                               ua.contains("Android") || ua.contains("iPhone") ||
     80                               ua.contains("iPod") || ua.contains("iPad") ||
     81                               ua.contains("Kindle") || ua.contains("Mobile") ||
     82                               ua.contains("Nintendo Wii") || ua.contains("Opera Mini") ||
     83                               ua.contains("Palm") ||
     84                               ua.contains("PLAYSTATION") || ua.contains("Playstation") ||
     85                               ua.contains("Profile/MIDP-") || ua.contains("SymbianOS") ||
     86                               ua.contains("Windows CE") || ua.contains("Windows Phone") ||
     87                               ua.startsWith("BlackBerry") || ua.startsWith("DoCoMo") ||
     88                               ua.startsWith("Nokia") || ua.startsWith("OPWV-SDK") ||
     89                               ua.startsWith("MOT-") || ua.startsWith("SAMSUNG-") ||
     90                               ua.startsWith("nook") || ua.startsWith("SCH-") ||
     91                               ua.startsWith("SEC-") || ua.startsWith("SonyEricsson") ||
     92                               ua.startsWith("Vodafone"));
    7593    }
    7694}
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java

    r4b19801 re42b78e  
    105105           
    106106        _context.router().setConfigSetting(StatManager.PROP_STAT_FILTER, stats.toString());
     107        boolean graphsChanged = !_graphs.equals(_context.getProperty("stat.summaries"));
    107108        _context.router().setConfigSetting("stat.summaries", _graphs);
     109        boolean fullChanged = _context.getBooleanProperty(StatManager.PROP_STAT_FULL) != _isFull;
    108110        _context.router().setConfigSetting(StatManager.PROP_STAT_FULL, "" + _isFull);
    109         boolean ok = _context.router().saveConfig();
    110         if (ok)
     111        _context.router().saveConfig();
     112        if (!_stats.isEmpty())
    111113            addFormNotice(_("Stat filter and location updated successfully to") + ": " + stats.toString());
    112         else
    113             addFormError(_("Failed to update the stat filter and location"));
    114         addFormNotice(_("Graph list updated, may take up to 60s to be reflected here and on the <a href=\"graphs.jsp\">Graphs Page</a>"));
     114        if (fullChanged) {
     115            if (_isFull)
     116                addFormNotice(_("Full statistics enabled - restart required to take effect"));
     117            else
     118                addFormNotice(_("Full statistics disabled - restart required to take effect"));
     119        }
     120        if (graphsChanged)
     121            addFormNotice(_("Graph list updated, may take up to 60s to be reflected here and on the <a href=\"graphs.jsp\">Graphs Page</a>"));
    115122    }
    116123   
  • apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java

    r4b19801 re42b78e  
    5151    private static final String PACK200_URLS =
    5252    "http://echelon.i2p/i2p/i2pupdate.su2\r\n" +
     53    "http://inr.i2p/i2p/i2pupdate.su2\r\n" +
    5354    "http://stats.i2p/i2p/i2pupdate.su2\r\n" +
    5455    "http://www.i2p2.i2p/_static/i2pupdate.su2\r\n" +
     
    5758    private static final String NO_PACK200_URLS =
    5859    "http://echelon.i2p/i2p/i2pupdate.sud\r\n" +
     60    "http://inr.i2p/i2p/i2pupdate.sud\r\n" +
    5961    "http://stats.i2p/i2p/i2pupdate.sud\r\n" +
    6062    "http://www.i2p2.i2p/_static/i2pupdate.sud\r\n" +
  • apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java

    r4b19801 re42b78e  
    1818    private int _height;
    1919    private int _refreshDelaySeconds;
     20    private boolean _persistent;
    2021
    2122    private static final String PROP_X = "routerconsole.graphX";
     
    2425    private static final String PROP_PERIODS = "routerconsole.graphPeriods";
    2526    private static final String PROP_EVENTS = "routerconsole.graphEvents";
    26     private static final int DEFAULT_X = 250;
    27     private static final int DEFAULT_Y = 100;
     27    public static final int DEFAULT_X = 250;
     28    public static final int DEFAULT_Y = 100;
    2829    private static final int DEFAULT_REFRESH = 60;
    2930    private static final int DEFAULT_PERIODS = 60;
     
    4041        _periodCount = _context.getProperty(PROP_PERIODS, DEFAULT_PERIODS);
    4142        _refreshDelaySeconds = _context.getProperty(PROP_REFRESH, DEFAULT_REFRESH);
    42         _showEvents = Boolean.valueOf(_context.getProperty(PROP_EVENTS)).booleanValue();
     43        _showEvents = _context.getBooleanProperty(PROP_EVENTS);
    4344    }
    4445   
     46    /**
     47     *  This must be output in the jsp since <meta> must be in the <head>
     48     *  @since 0.8.6
     49     */
     50    public String getRefreshMeta() {
     51        if (_refreshDelaySeconds <= 8 ||
     52            ConfigRestartBean.getRestartTimeRemaining() < (1000 * (_refreshDelaySeconds + 30)))
     53            return "";
     54        // shorten the refresh by 3 seconds so we beat the iframe
     55        return "<meta http-equiv=\"refresh\" content=\"" + (_refreshDelaySeconds - 3) + "\">";
     56    }
     57
    4558    /**
    4659     *  This was a HelperBase but now it's a FormHandler
     
    5265        try { _periodCount = Integer.parseInt(str); } catch (NumberFormatException nfe) {}
    5366    }
     67
    5468    public void setShowEvents(boolean b) { _showEvents = b; }
     69
    5570    public void setHeight(String str) {
    5671        try { _height = Math.min(Integer.parseInt(str), MAX_Y); } catch (NumberFormatException nfe) {}
    5772    }
     73
    5874    public void setWidth(String str) {
    5975        try { _width = Math.min(Integer.parseInt(str), MAX_X); } catch (NumberFormatException nfe) {}
    6076    }
     77
    6178    public void setRefreshDelay(String str) {
    6279        try {
     
    6885        } catch (NumberFormatException nfe) {}
    6986    }
     87
     88    /** @since 0.8.6 */
     89    public void setPersistent(String foo) { _persistent = true; }
    7090   
    7191    public String getImages() {
     92        if (StatSummarizer.instance().isDisabled())
     93            return "";
    7294        try {
    7395            List listeners = StatSummarizer.instance().getListeners();
     
    92114                           + "\" target=\"_blank\">");
    93115                String title = _("Combined bandwidth graph");
    94                 _out.write("<img class=\"statimage\" width=\""
    95                            + (_width + 83) + "\" height=\"" + (_height + 92)
    96                            + "\" src=\"viewstat.jsp?stat=bw.combined"
     116                _out.write("<img class=\"statimage\""
     117                           + " src=\"viewstat.jsp?stat=bw.combined"
    97118                           + "&amp;periodCount=" + _periodCount
    98119                           + "&amp;width=" + _width
    99                            + "&amp;height=" + (_height - 14)
     120                           + "&amp;height=" + (_height - 13)
    100121                           + "\" alt=\"" + title + "\" title=\"" + title + "\"></a>\n");
    101122            }
     
    114135                           + "&amp;height=" + (3 * _height)
    115136                           + "\" target=\"_blank\">");
    116                 _out.write("<img class=\"statimage\" border=\"0\" width=\""
    117                            + (_width + 83) + "\" height=\"" + (_height + 92)
    118                            + "\" src=\"viewstat.jsp?stat="
     137                _out.write("<img class=\"statimage\" border=\"0\""
     138                           + " src=\"viewstat.jsp?stat="
    119139                           + r.getRateStat().getName()
    120140                           + "&amp;showEvents=" + _showEvents
     
    126146                           + "\" title=\"" + title + "\"></a>\n");
    127147            }
    128             if (_refreshDelaySeconds > 0)
    129                 // shorten the refresh by 3 seconds so we beat the iframe
    130                 _out.write("<meta http-equiv=\"refresh\" content=\"" + (_refreshDelaySeconds - 3) + "\">\n");
    131 
     148
     149            // FIXME jrobin doesn't support setting the timezone, will have to mod TimeAxis.java
     150            _out.write("<p><i>" + _("All times are UTC.") + "</i></p>\n");
    132151        } catch (IOException ioe) {
    133152            ioe.printStackTrace();
     
    139158
    140159    public String getForm() {
     160        if (StatSummarizer.instance().isDisabled())
     161            return "";
    141162        String prev = System.getProperty("net.i2p.router.web.GraphHelper.nonce");
    142163        if (prev != null) System.setProperty("net.i2p.router.web.GraphHelper.noncePrev", prev);
     
    148169                       "<input type=\"hidden\" name=\"action\" value=\"foo\">\n" +
    149170                       "<input type=\"hidden\" name=\"nonce\" value=\"" + nonce + "\" >\n");
    150             _out.write(_("Periods") + ": <input size=\"3\" type=\"text\" name=\"periodCount\" value=\"" + _periodCount + "\"><br>\n");
     171            _out.write(_("Periods") + ": <input size=\"5\" style=\"text-align: right;\" type=\"text\" name=\"periodCount\" value=\"" + _periodCount + "\"><br>\n");
    151172            _out.write(_("Plot averages") + ": <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"false\" " + (_showEvents ? "" : "checked=\"true\" ") + "> ");
    152173            _out.write(_("or")+ " " +_("plot events") + ": <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"true\" "+ (_showEvents ? "checked=\"true\" " : "") + "><br>\n");
    153             _out.write(_("Image sizes") + ": " + _("width") + ": <input size=\"4\" type=\"text\" name=\"width\" value=\"" + _width
    154                        + "\"> " + _("pixels") + ", " + _("height") + ": <input size=\"4\" type=\"text\" name=\"height\" value=\"" + _height 
     174            _out.write(_("Image sizes") + ": " + _("width") + ": <input size=\"4\" style=\"text-align: right;\" type=\"text\" name=\"width\" value=\"" + _width
     175                       + "\"> " + _("pixels") + ", " + _("height") + ": <input size=\"4\" style=\"text-align: right;\" type=\"text\" name=\"height\" value=\"" + _height 
    155176                       + "\"> " + _("pixels") + "<br>\n");
    156177            _out.write(_("Refresh delay") + ": <select name=\"refreshDelay\">");
     
    169190            }
    170191            _out.write("</select><br>\n" +
    171                        "<hr><div class=\"formaction\"><input type=\"submit\" value=\"" + _("Redraw") + "\"></div></form>");
     192                       _("Store graph data on disk?") +
     193                       " <input type=\"checkbox\" class=\"optbox\" value=\"true\" name=\"persistent\"");
     194            boolean persistent = _context.getBooleanPropertyDefaultTrue(SummaryListener.PROP_PERSISTENT);
     195            if (persistent)
     196                _out.write(" checked=\"true\"");
     197            _out.write(">" +
     198                       "<hr><div class=\"formaction\"><input type=\"submit\" value=\"" + _("Save settings and redraw graphs") + "\"></div></form>");
    172199        } catch (IOException ioe) {
    173200            ioe.printStackTrace();
    174201        }
    175202        return "";
     203    }
     204
     205    /**
     206     *  We have to do this here because processForm() isn't called unless the nonces are good
     207     *  @since 0.8.6
     208     */
     209    @Override
     210    public String getAllMessages() {
     211        if (StatSummarizer.instance().isDisabled()) {
     212            addFormError("Graphing not supported with this JVM: " +
     213                         System.getProperty("java.vendor") + ' ' +
     214                         System.getProperty("java.version") + " (" +
     215                         System.getProperty("java.runtime.name") + ' ' +
     216                         System.getProperty("java.runtime.version") + ')');
     217            if (_context.getProperty(PROP_REFRESH, 0) >= 0) {
     218                // force no refresh, save silently
     219                _context.router().setConfigSetting(PROP_REFRESH, "-1");
     220                _context.router().saveConfig();
     221            }
     222        }
     223        return super.getAllMessages();
    176224    }
    177225
     
    194242            _periodCount != _context.getProperty(PROP_PERIODS, DEFAULT_PERIODS) ||
    195243            _refreshDelaySeconds != _context.getProperty(PROP_REFRESH, DEFAULT_REFRESH) ||
    196             _showEvents != Boolean.valueOf(_context.getProperty(PROP_EVENTS)).booleanValue()) {
     244            _showEvents != _context.getBooleanProperty(PROP_EVENTS) ||
     245            _persistent != _context.getBooleanPropertyDefaultTrue(SummaryListener.PROP_PERSISTENT)) {
    197246            _context.router().setConfigSetting(PROP_X, "" + _width);
    198247            _context.router().setConfigSetting(PROP_Y, "" + _height);
     
    200249            _context.router().setConfigSetting(PROP_REFRESH, "" + _refreshDelaySeconds);
    201250            _context.router().setConfigSetting(PROP_EVENTS, "" + _showEvents);
     251            _context.router().setConfigSetting(SummaryListener.PROP_PERSISTENT, "" + _persistent);
    202252            _context.router().saveConfig();
    203253            addFormNotice(_("Graph settings saved"));
     
    205255    }
    206256
    207 /** inner class, don't bother reindenting */
    208 private static class AlphaComparator implements Comparator {
    209     public int compare(Object lhs, Object rhs) {
    210         SummaryListener l = (SummaryListener)lhs;
    211         SummaryListener r = (SummaryListener)rhs;
    212         String lName = l.getRate().getRateStat().getName() + "." + l.getRate().getPeriod();
    213         String rName = r.getRate().getRateStat().getName() + "." + r.getRate().getPeriod();
    214         return lName.compareTo(rName);
     257    private static class AlphaComparator implements Comparator<SummaryListener> {
     258        public int compare(SummaryListener l, SummaryListener r) {
     259            String lName = l.getRate().getRateStat().getName();
     260            String rName = r.getRate().getRateStat().getName();
     261            int rv = lName.compareTo(rName);
     262            if (rv != 0)
     263                return rv;
     264            return (int) (l.getRate().getPeriod() - r.getRate().getPeriod());
     265        }
    215266    }
    216267}
    217 
    218 }
  • apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java

    r4b19801 re42b78e  
    2525import java.util.TreeSet;
    2626
    27 import net.i2p.crypto.TrustedUpdate;
    2827import net.i2p.data.DataHelper;
    2928import net.i2p.data.Destination;
     
    175174        if (debug) {
    176175            buf.append("<p><b>Total Leasesets: " + leases.size());
    177             buf.append("<p><b>Published (RAP) Leasesets: " + _context.netDb().getKnownLeaseSets());
    178             buf.append("<p>Mod Data: " + HexDump.dump(_context.routingKeyGenerator().getModData()) + "<p>");
    179             buf.append("<p>Network data (only valid if floodfill):");
    180             buf.append("<p>Center of Key Space (router hash): " + ourRKey.toBase64() + "<p>");
     176            buf.append("</b></p><p><b>Published (RAP) Leasesets: " + _context.netDb().getKnownLeaseSets());
     177            buf.append("</b></p><p><b>Mod Data: " + HexDump.dump(_context.routingKeyGenerator().getModData()));
     178            buf.append("</b></p><p><b>Network data (only valid if floodfill):");
     179            buf.append("</b></p><p><b>Center of Key Space (router hash): " + ourRKey.toBase64());
    181180            if (median != null) {
    182181                double log2 = biLog2(median);
    183                 buf.append("<p>Median distance (bits): " + fmt.format(log2));
     182                buf.append("</b></p><p><b>Median distance (bits): " + fmt.format(log2));
    184183                // 3 for 8 floodfills... -1 for median
    185184                int total = (int) Math.round(Math.pow(2, 3 + 256 - 1 - log2));
    186                 buf.append("<p>Estimated total floodfills: " + total);
    187                 buf.append("<p>Estimated network total leasesets: " + (total * leases.size() / 8));
    188             }
     185                buf.append("</b></p><p><b>Estimated total floodfills: " + total);
     186                buf.append("</b></p><p><b>Estimated network total leasesets: " + (total * leases.size() / 8));
     187            }
     188            buf.append("</b></p>");
    189189        }
    190190        out.write(buf.toString());
     
    406406     *  what transport types
    407407     */
    408     private int classifyTransports(RouterInfo info) {
     408    private static int classifyTransports(RouterInfo info) {
    409409        int rv = 0;
    410410        String hash = info.getIdentity().getHash().toBase64();
    411         for (Iterator iter = info.getAddresses().iterator(); iter.hasNext(); ) {
    412             RouterAddress addr = (RouterAddress)iter.next();
     411        for (RouterAddress addr : info.getAddresses()) {
    413412            String style = addr.getTransportStyle();
    414413            if (style.equals("NTCP")) {
  • apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java

    r4b19801 re42b78e  
    9696            return false;
    9797        }
    98         //log.error("Starting plugin: " + appName);
     98        if (log.shouldLog(Log.INFO))
     99            log.info("Starting plugin: " + appName);
    99100
    100101        // register themes
     
    140141                        String enabled = props.getProperty(RouterConsoleRunner.PREFIX + warName + ENABLED);
    141142                        if (! "false".equals(enabled)) {
    142                             //log.error("Starting webapp: " + warName);
     143                            if (log.shouldLog(Log.INFO))
     144                                log.info("Starting webapp: " + warName);
    143145                            String path = new File(webappDir, fileNames[i]).getCanonicalPath();
    144146                            WebAppStarter.startWebApp(ctx, server, warName, path);
     
    150152                }
    151153            }
     154        } else {
     155            log.error("No console web server to start plugins?");
    152156        }
    153157
  • apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java

    r4b19801 re42b78e  
    22
    33import java.awt.Color;
     4import java.awt.Graphics;
     5import java.awt.image.BufferedImage;
     6import java.io.File;
    47import java.io.IOException;
    58import java.io.OutputStream;
     
    710import java.util.List;
    811import java.util.StringTokenizer;
     12import java.util.concurrent.CopyOnWriteArrayList;
    913import java.util.concurrent.Semaphore;
     14
     15import javax.imageio.ImageIO;
     16import javax.imageio.stream.ImageOutputStream;
     17import javax.imageio.stream.MemoryCacheImageOutputStream;
    1018
    1119import net.i2p.router.RouterContext;
    1220import net.i2p.stat.Rate;
    1321import net.i2p.stat.RateStat;
     22import net.i2p.util.FileUtil;
    1423import net.i2p.util.Log;
    1524
     
    1928
    2029/**
     30 *  A thread started by RouterConsoleRunner that
     31 *  checks the configuration for stats to be tracked via jrobin,
     32 *  and adds or deletes RRDs as necessary.
    2133 *
     34 *  This also contains methods to generate xml or png image output.
     35 *  The actual png rendering code is here for the special dual-rate graph;
     36 *  the rendering for standard graphs is in SummaryRenderer.
     37 *
     38 *  To control memory, the number of simultaneous renderings is limited.
     39 *
     40 *  @since 0.6.1.13
    2241 */
    2342public class StatSummarizer implements Runnable {
     
    2948    private static final int MAX_CONCURRENT_PNG = 3;
    3049    private final Semaphore _sem;
     50    private volatile boolean _isRunning = true;
     51    private volatile boolean _isDisabled;
     52    private Thread _thread;
    3153   
    3254    public StatSummarizer() {
    3355        _context = (RouterContext)RouterContext.listContexts().get(0); // fuck it, only summarize one per jvm
    3456        _log = _context.logManager().getLog(getClass());
    35         _listeners = new ArrayList(16);
     57        _listeners = new CopyOnWriteArrayList();
    3658        _instance = this;
    3759        _sem = new Semaphore(MAX_CONCURRENT_PNG, true);
     60        _context.addShutdownTask(new Shutdown());
    3861    }
    3962   
     
    4164   
    4265    public void run() {
     66        // JRobin 1.5.9 crashes these JVMs
     67        String vendor = System.getProperty("java.vendor");
     68        if (vendor.startsWith("Apache") ||                      // Harmony
     69            vendor.startsWith("GNU Classpath") ||               // JamVM
     70            vendor.startsWith("Free Software Foundation")) {    // gij
     71            _log.logAlways(Log.WARN, "Graphing not supported with this JVM: " +
     72                                     vendor + ' ' +
     73                                     System.getProperty("java.version") + " (" +
     74                                     System.getProperty("java.runtime.name") + ' ' +
     75                                     System.getProperty("java.runtime.version") + ')');
     76            _isDisabled = true;
     77            _isRunning = false;
     78            return;
     79        }
     80        boolean isPersistent = _context.getBooleanPropertyDefaultTrue(SummaryListener.PROP_PERSISTENT);
     81        if (!isPersistent)
     82            deleteOldRRDs();
     83        _thread = Thread.currentThread();
    4384        String specs = "";
    44         while (_context.router().isAlive()) {
     85        while (_isRunning && _context.router().isAlive()) {
    4586            specs = adjustDatabases(specs);
    4687            try { Thread.sleep(60*1000); } catch (InterruptedException ie) {}
     
    4889    }
    4990   
     91    /** @since 0.8.6 */
     92    boolean isDisabled() {
     93        return _isDisabled;
     94    }
     95
    5096    /** list of SummaryListener instances */
    5197    List<SummaryListener> getListeners() { return _listeners; }
     
    106152   
    107153    private void removeDb(Rate r) {
    108         for (int i = 0; i < _listeners.size(); i++) {
    109             SummaryListener lsnr = _listeners.get(i);
     154        for (SummaryListener lsnr : _listeners) {
    110155            if (lsnr.getRate().equals(r)) {
    111                 _listeners.remove(i);
     156                // no iter.remove() in COWAL
     157                _listeners.remove(lsnr);
    112158                lsnr.stopListening();
    113159                return;
     
    117163    private void addDb(Rate r) {
    118164        SummaryListener lsnr = new SummaryListener(r);
    119         _listeners.add(lsnr);
    120         lsnr.startListening();
     165        boolean success = lsnr.startListening();
     166        if (success)
     167            _listeners.add(lsnr);
     168        else
     169            _log.error("Failed to add RRD for rate " + r.getRateStat().getName() + '.' + r.getPeriod());
    121170        //System.out.println("Start listening for " + r.getRateStat().getName() + ": " + r.getPeriod());
    122171    }
    123172
    124173    public boolean renderPng(Rate rate, OutputStream out) throws IOException {
    125         return renderPng(rate, out, -1, -1, false, false, false, false, -1, true);
     174        return renderPng(rate, out, GraphHelper.DEFAULT_X, GraphHelper.DEFAULT_Y,
     175                         false, false, false, false, -1, true);
    126176    }
    127177
     
    142192                                    periodCount, showCredit);
    143193        } finally {
    144                 _sem.release();
     194            _sem.release();
    145195        }
    146196    }
     
    151201        if (width > GraphHelper.MAX_X)
    152202            width = GraphHelper.MAX_X;
     203        else if (width <= 0)
     204            width = GraphHelper.DEFAULT_X;
    153205        if (height > GraphHelper.MAX_Y)
    154206            height = GraphHelper.MAX_Y;
    155         for (int i = 0; i < _listeners.size(); i++) {
    156             SummaryListener lsnr = _listeners.get(i);
     207        else if (height <= 0)
     208            height = GraphHelper.DEFAULT_Y;
     209        for (SummaryListener lsnr : _listeners) {
    157210            if (lsnr.getRate().equals(rate)) {
    158211                lsnr.renderPng(out, width, height, hideLegend, hideGrid, hideTitle, showEvents, periodCount, showCredit);
     
    163216    }
    164217
     218    /** @deprecated unused */
    165219    public boolean renderPng(OutputStream out, String templateFilename) throws IOException {
    166220        SummaryRenderer.render(_context, out, templateFilename);
     
    169223
    170224    public boolean getXML(Rate rate, OutputStream out) throws IOException {
    171         for (int i = 0; i < _listeners.size(); i++) {
    172             SummaryListener lsnr = _listeners.get(i);
     225        try {
     226            try {
     227                _sem.acquire();
     228            } catch (InterruptedException ie) {}
     229            return locked_getXML(rate, out);
     230        } finally {
     231            _sem.release();
     232        }
     233    }
     234
     235    private boolean locked_getXML(Rate rate, OutputStream out) throws IOException {
     236        for (SummaryListener lsnr : _listeners) {
    173237            if (lsnr.getRate().equals(rate)) {
    174238                lsnr.getData().exportXml(out);
     
    197261                                        periodCount, showCredit);
    198262        } finally {
    199                 _sem.release();
     263            _sem.release();
    200264        }
    201265    }
     
    204268                                              boolean hideGrid, boolean hideTitle, boolean showEvents,
    205269                                              int periodCount, boolean showCredit) throws IOException {
    206         long end = _context.clock().now() - 60*1000;
     270
     271        // go to some trouble to see if we have the data for the combined bw graph
     272        SummaryListener txLsnr = null;
     273        SummaryListener rxLsnr = null;
     274        for (SummaryListener lsnr : StatSummarizer.instance().getListeners()) {
     275            String title = lsnr.getRate().getRateStat().getName();
     276            if (title.equals("bw.sendRate"))
     277                txLsnr = lsnr;
     278            else if (title.equals("bw.recvRate"))
     279                rxLsnr = lsnr;
     280        }
     281        if (txLsnr == null || rxLsnr == null)
     282            throw new IOException("no rates for combined graph");
     283
     284        long end = _context.clock().now() - 75*1000;
    207285        if (width > GraphHelper.MAX_X)
    208286            width = GraphHelper.MAX_X;
     287        else if (width <= 0)
     288            width = GraphHelper.DEFAULT_X;
    209289        if (height > GraphHelper.MAX_Y)
    210290            height = GraphHelper.MAX_Y;
    211         if (periodCount <= 0) periodCount = SummaryListener.PERIODS;
    212         if (periodCount > SummaryListener.PERIODS)
    213             periodCount = SummaryListener.PERIODS;
     291        else if (height <= 0)
     292            height = GraphHelper.DEFAULT_Y;
     293        if (periodCount <= 0 || periodCount > txLsnr.getRows())
     294            periodCount = txLsnr.getRows();
    214295        long period = 60*1000;
    215296        long start = end - period*periodCount;
     
    217298        try {
    218299            RrdGraphDef def = new RrdGraphDef();
    219             def.setTimePeriod(start/1000, 0);
    220             def.setLowerLimit(0d);
    221             def.setBaseValue(1024);
    222             // Note to translators: all runtime zh translation disabled in this file, no font available in RRD
     300            def.setTimeSpan(start/1000, end/1000);
     301            def.setMinValue(0d);
     302            def.setBase(1024);
    223303            String title = _("Bandwidth usage");
    224304            if (!hideTitle)
    225305                def.setTitle(title);
     306            long started = _context.router().getWhenStarted();
     307            if (started > start && started < end)
     308                def.vrule(started / 1000, Color.BLACK, null, 4.0f);  // no room for legend
    226309            String sendName = SummaryListener.createName(_context, "bw.sendRate.60000");
    227310            String recvName = SummaryListener.createName(_context, "bw.recvRate.60000");
    228             def.datasource(sendName, sendName, sendName, "AVERAGE", "MEMORY");
    229             def.datasource(recvName, recvName, recvName, "AVERAGE", "MEMORY");
    230             def.area(sendName, Color.BLUE, _("Outbound bytes/sec"));
     311            def.datasource(sendName, txLsnr.getData().getPath(), sendName, SummaryListener.CF, txLsnr.getBackendName());
     312            def.datasource(recvName, rxLsnr.getData().getPath(), recvName, SummaryListener.CF, rxLsnr.getBackendName());
     313            def.area(sendName, Color.BLUE, _("Outbound Bytes/sec"));
    231314            //def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3);
    232             def.line(recvName, Color.RED, _("Inbound bytes/sec") + "@r", 3);
     315            def.line(recvName, Color.RED, _("Inbound Bytes/sec") + "\\r", 3);
    233316            //def.area(recvName, Color.RED, "Inbound bytes/sec@r");
    234317            if (!hideLegend) {
    235                 def.gprint(sendName, "AVERAGE", _("out average") + ": @2@s" + _("bytes/sec"));
    236                 def.gprint(sendName, "MAX", ' ' + _("max") + ": @2@s" + _("bytes/sec") + "@r");
    237                 def.gprint(recvName, "AVERAGE", _("in average") + ":  @2@s" + _("bytes/sec"));
    238                 def.gprint(recvName, "MAX", ' ' + _("max") + ": @2@s" + _("bytes/sec") + "@r");
     318                def.gprint(sendName, SummaryListener.CF, _("Out average") + ": %.2f %s" + _("Bps"));
     319                def.gprint(sendName, "MAX", ' ' + _("max") + ": %.2f %S" + _("Bps") + "\\r");
     320                def.gprint(recvName, SummaryListener.CF, _("In average") + ": %.2f %S" + _("Bps"));
     321                def.gprint(recvName, "MAX", ' ' + _("max") + ": %.2f %S" + _("Bps") + "\\r");
    239322            }
    240323            if (!showCredit)
    241324                def.setShowSignature(false);
    242325            if (hideLegend)
    243                 def.setShowLegend(false);
     326                def.setNoLegend(true);
    244327            if (hideGrid) {
    245                 def.setGridX(false);
    246                 def.setGridY(false);
     328                def.setDrawXGrid(false);
     329                def.setDrawYGrid(false);
    247330            }
    248331            //System.out.println("rendering: path=" + path + " dsNames[0]=" + dsNames[0] + " dsNames[1]=" + dsNames[1] + " lsnr.getName=" + _listener.getName());
     
    250333            //System.out.println("Rendering: \n" + def.exportXmlTemplate());
    251334            //System.out.println("*****************\nData: \n" + _listener.getData().dump());
     335            def.setWidth(width);
     336            def.setHeight(height);
     337
    252338            RrdGraph graph = new RrdGraph(def);
    253339            //System.out.println("Graph created");
    254             byte data[] = null;
    255             if ( (width <= 0) || (height <= 0) )
    256                 data = graph.getPNGBytes();
    257             else
    258                 data = graph.getPNGBytes(width, height);
    259             //long timeToPlot = System.currentTimeMillis() - begin;
    260             out.write(data);
     340            int totalWidth = graph.getRrdGraphInfo().getWidth();
     341            int totalHeight = graph.getRrdGraphInfo().getHeight();
     342            BufferedImage img = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_USHORT_565_RGB);
     343            Graphics gfx = img.getGraphics();
     344            graph.render(gfx);
     345            ImageOutputStream ios = new MemoryCacheImageOutputStream(out);
     346            ImageIO.write(img, "png", ios);
     347
    261348            //File t = File.createTempFile("jrobinData", ".xml");
    262349            //_listener.getData().dumpXml(new FileOutputStream(t));
     
    304391    }
    305392
     393    /**
     394     *  Delete the old rrd dir if we are no longer persistent
     395     *  @since 0.8.6
     396     */
     397    private void deleteOldRRDs() {
     398        File rrdDir = new File(_context.getRouterDir(), SummaryListener.RRD_DIR);
     399        FileUtil.rmdir(rrdDir, false);
     400    }
     401
    306402    /** translate a string */
    307403    private String _(String s) {
    308404        // the RRD font doesn't have zh chars, at least on my system
    309         if ("zh".equals(Messages.getLanguage(_context)))
    310             return s;
     405        // Works on 1.5.9
     406        //if ("zh".equals(Messages.getLanguage(_context)))
     407        //    return s;
    311408        return Messages.getString(s, _context);
    312409    }
     410
     411    /**
     412     *  Make sure any persistent RRDs are closed
     413     *  @since 0.8.6
     414     */
     415    private class Shutdown implements Runnable {
     416        public void run() {
     417            _isRunning = false;
     418            if (_thread != null)
     419                _thread.interrupt();
     420            for (SummaryListener lsnr : _listeners) {
     421                // FIXME could cause exceptions if rendering?
     422                lsnr.stopListening();
     423            }
     424            _listeners.clear();
     425        }
     426    }
    313427}
  • apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java

    r4b19801 re42b78e  
    124124               .append("\">")
    125125               .append(_("Logs"))
    126                .append("</a>\n" +
     126               .append("</a>\n");
    127127
    128128           //          "<a href=\"/jobs.jsp\" target=\"_top\" title=\"")
     
    132132           //  .append("</a>\n" +
    133133
    134                        "<a href=\"/graphs\" target=\"_top\" title=\"")
     134            if (!StatSummarizer.instance().isDisabled()) {
     135                buf.append("<a href=\"/graphs\" target=\"_top\" title=\"")
    135136               .append(_("Graph router performance"))
    136137               .append("\">")
    137138               .append(_("Graphs"))
    138                .append("</a>\n" +
    139 
    140                        "<a href=\"/stats\" target=\"_top\" title=\"")
     139               .append("</a>\n");
     140            }
     141
     142            buf.append("<a href=\"/stats\" target=\"_top\" title=\"")
    141143               .append(_("Textual router performance statistics"))
    142144               .append("\">")
  • apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java

    r4b19801 re42b78e  
    385385                buf.append("</td><td align=\"left\"><b><a href=\"tunnels#").append(h.toBase64().substring(0,4));
    386386                buf.append("\" target=\"_top\" title=\"" + _("Show tunnels") + "\">");
    387                 if (name.length() < 16)
     387                if (name.length() < 18)
    388388                    buf.append(name);
    389389                else
  • apps/routerconsole/java/src/net/i2p/router/web/SummaryListener.java

    r4b19801 re42b78e  
    11package net.i2p.router.web;
    22
    3 import java.awt.Color;
     3import java.io.File;
    44import java.io.IOException;
    55import java.io.OutputStream;
     
    1111import net.i2p.stat.RateSummaryListener;
    1212import net.i2p.util.Log;
    13 
     13import net.i2p.util.SecureFile;
     14import net.i2p.util.SecureFileOutputStream;
     15
     16import org.jrobin.core.Archive;
    1417import org.jrobin.core.RrdBackendFactory;
    1518import org.jrobin.core.RrdDb;
     
    1720import org.jrobin.core.RrdException;
    1821import org.jrobin.core.RrdMemoryBackendFactory;
     22import org.jrobin.core.RrdNioBackendFactory;
    1923import org.jrobin.core.Sample;
    2024import org.jrobin.graph.RrdGraph;
     
    2226import org.jrobin.graph.RrdGraphDefTemplate;
    2327
     28/**
     29 *  Creates and updates the in-memory RRD database,
     30 *  and provides methods to generate graphs of the data
     31 *
     32 *  @since 0.6.1.13
     33 */
    2434class SummaryListener implements RateSummaryListener {
    25     private I2PAppContext _context;
    26     private Log _log;
    27     private Rate _rate;
     35    static final String PROP_PERSISTENT = "routerconsole.graphPersistent";
     36    /** note that .jrb files are NOT compatible with .rrd files */
     37    static final String RRD_DIR = "rrd";
     38    private static final String RRD_PREFIX = "rrd-";
     39    private static final String RRD_SUFFIX = ".jrb";
     40    static final String CF = "AVERAGE";
     41    private static final double XFF = 0.9d;
     42    private static final int STEPS = 1;
     43
     44    private final I2PAppContext _context;
     45    private final Log _log;
     46    private final Rate _rate;
     47    private final boolean _isPersistent;
    2848    private String _name;
    2949    private String _eventName;
     
    3252    private RrdMemoryBackendFactory _factory;
    3353    private SummaryRenderer _renderer;
    34    
    35     static final int PERIODS = 1440;
    36    
    37     static {
    38         try {
    39             RrdBackendFactory.setDefaultFactory("MEMORY");
    40         } catch (RrdException re) {
    41             re.printStackTrace();
    42         }
    43     }
     54    private int _rows;
     55   
     56    static final int PERIODS = 60 * 24;  // 1440
     57    private static final int MIN_ROWS = PERIODS;
     58    private static final int MAX_ROWS = 91 * MIN_ROWS;
     59    private static final long THREE_MONTHS = 91l * 24 * 60 * 60 * 1000;
    4460   
    4561    public SummaryListener(Rate r) {
     
    4763        _rate = r;
    4864        _log = _context.logManager().getLog(SummaryListener.class);
     65        _isPersistent = _context.getBooleanPropertyDefaultTrue(PROP_PERSISTENT);
    4966    }
    5067   
     
    87104   
    88105    public Rate getRate() { return _rate; }
    89     public void startListening() {
     106
     107    /**
     108     *  @return success
     109     */
     110    public boolean startListening() {
    90111        RateStat rs = _rate.getRateStat();
    91112        long period = _rate.getPeriod();
     
    94115        _eventName = createName(_context, baseName + ".events");
    95116        try {
    96             RrdDef def = new RrdDef(_name, now()/1000, period/1000);
    97             // for info on the heartbeat, xff, steps, etc, see the rrdcreate man page, aka
    98             // http://www.jrobin.org/support/man/rrdcreate.html
    99             long heartbeat = period*10/1000;
    100             def.addDatasource(_name, "GAUGE", heartbeat, Double.NaN, Double.NaN);
    101             def.addDatasource(_eventName, "GAUGE", heartbeat, 0, Double.NaN);
    102             double xff = 0.9;
    103             int steps = 1;
    104             int rows = PERIODS;
    105             def.addArchive("AVERAGE", xff, steps, rows);
    106             _factory = (RrdMemoryBackendFactory)RrdBackendFactory.getDefaultFactory();
    107             _db = new RrdDb(def, _factory);
     117            RrdBackendFactory factory = RrdBackendFactory.getFactory(getBackendName());
     118            String rrdDefName;
     119            if (_isPersistent) {
     120                // generate full path for persistent RRD files
     121                File rrdDir = new SecureFile(_context.getRouterDir(), RRD_DIR);
     122                File rrdFile = new File(rrdDir, RRD_PREFIX + _name + RRD_SUFFIX);
     123                rrdDefName = rrdFile.getAbsolutePath();
     124                if (rrdFile.exists()) {
     125                    _db = new RrdDb(rrdDefName, factory);
     126                    Archive arch = _db.getArchive(CF, STEPS);
     127                    if (arch == null)
     128                        throw new IOException("No average CF in " + rrdDefName);
     129                    _rows = arch.getRows();
     130                    if (_log.shouldLog(Log.INFO))
     131                        _log.info("Existing RRD " + baseName + " (" + rrdDefName + ") with " + _rows + " rows consuming " + _db.getRrdBackend().getLength() + " bytes");
     132                } else {
     133                    rrdDir.mkdir();
     134                }
     135            } else {
     136                rrdDefName = _name;
     137            }
     138            if (_db == null) {
     139                // not persistent or not previously existing
     140                RrdDef def = new RrdDef(rrdDefName, now()/1000, period/1000);
     141                // for info on the heartbeat, xff, steps, etc, see the rrdcreate man page, aka
     142                // http://www.jrobin.org/support/man/rrdcreate.html
     143                long heartbeat = period*10/1000;
     144                def.addDatasource(_name, "GAUGE", heartbeat, Double.NaN, Double.NaN);
     145                def.addDatasource(_eventName, "GAUGE", heartbeat, 0, Double.NaN);
     146                int steps = 1;
     147                if (_isPersistent) {
     148                    _rows = (int) Math.max(MIN_ROWS, Math.min(MAX_ROWS, THREE_MONTHS / period));
     149                } else {
     150                    _rows = MIN_ROWS;
     151                }
     152                def.addArchive(CF, XFF, STEPS, _rows);
     153                _db = new RrdDb(def, factory);
     154                if (_isPersistent)
     155                    SecureFileOutputStream.setPerms(new File(rrdDefName));
     156                if (_log.shouldLog(Log.INFO))
     157                    _log.info("New RRD " + baseName + " (" + rrdDefName + ") with " + _rows + " rows consuming " + _db.getRrdBackend().getLength() + " bytes");
     158            }
    108159            _sample = _db.createSample();
    109160            _renderer = new SummaryRenderer(_context, this);
    110161            _rate.setSummaryListener(this);
     162            return true;
     163        } catch (OutOfMemoryError oom) {
     164            _log.error("Error starting RRD for stat " + baseName, oom);
    111165        } catch (RrdException re) {
    112             _log.error("Error starting", re);
     166            _log.error("Error starting RRD for stat " + baseName, re);
    113167        } catch (IOException ioe) {
    114             _log.error("Error starting", ioe);
    115         }
    116     }
     168            _log.error("Error starting RRD for stat " + baseName, ioe);
     169        }
     170        return false;
     171    }
     172
    117173    public void stopListening() {
    118174        if (_db == null) return;
     
    123179        }
    124180        _rate.setSummaryListener(null);
    125         _factory.delete(_db.getPath());
     181        if (!_isPersistent) {
     182            // close() does not release resources for memory backend
     183            try {
     184                ((RrdMemoryBackendFactory)RrdBackendFactory.getFactory(RrdMemoryBackendFactory.NAME)).delete(_db.getPath());
     185            } catch (RrdException re) {}
     186        }
    126187        _db = null;
    127188    }
     189
    128190    public void renderPng(OutputStream out, int width, int height, boolean hideLegend, boolean hideGrid, boolean hideTitle, boolean showEvents, int periodCount, boolean showCredit) throws IOException {
     191        if (_renderer == null || _db == null)
     192            throw new IOException("No RRD, check logs for previous errors");
    129193        _renderer.render(out, width, height, hideLegend, hideGrid, hideTitle, showEvents, periodCount, showCredit);
    130194    }
    131     public void renderPng(OutputStream out) throws IOException { _renderer.render(out); }
     195
     196    public void renderPng(OutputStream out) throws IOException {
     197        if (_renderer == null || _db == null)
     198            throw new IOException("No RRD, check logs for previous errors");
     199        _renderer.render(out);
     200    }
    132201 
    133202    String getName() { return _name; }
     203
    134204    String getEventName() { return _eventName; }
     205
    135206    RrdDb getData() { return _db; }
     207
    136208    long now() { return _context.clock().now(); }
    137209   
     210    /** @since 0.8.6 */
     211    String getBackendName() {
     212        return _isPersistent ? RrdNioBackendFactory.NAME : RrdMemoryBackendFactory.NAME;
     213    }
     214
     215    /** @since 0.8.6 */
     216    int getRows() {
     217        return _rows;
     218    }
     219
    138220    @Override
    139221    public boolean equals(Object obj) {
    140222        return ((obj instanceof SummaryListener) && ((SummaryListener)obj)._rate.equals(_rate));
    141223    }
     224
    142225    @Override
    143226    public int hashCode() { return _rate.hashCode(); }
  • apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java

    r4b19801 re42b78e  
    22
    33import java.awt.Color;
     4import java.awt.Graphics;
     5import java.awt.image.BufferedImage;
    46import java.io.IOException;
    57import java.io.OutputStream;
    68
     9import javax.imageio.ImageIO;
     10import javax.imageio.stream.ImageOutputStream;
     11import javax.imageio.stream.MemoryCacheImageOutputStream;
     12
    713import net.i2p.I2PAppContext;
    814import net.i2p.data.DataHelper;
     15import net.i2p.router.RouterContext;
    916import net.i2p.stat.Rate;
    1017import net.i2p.stat.RateStat;
     
    1219import net.i2p.util.Log;
    1320
    14 import org.jrobin.core.RrdBackendFactory;
    15 import org.jrobin.core.RrdDb;
    16 import org.jrobin.core.RrdDef;
    1721import org.jrobin.core.RrdException;
    18 import org.jrobin.core.RrdMemoryBackendFactory;
    19 import org.jrobin.core.Sample;
    2022import org.jrobin.graph.RrdGraph;
    2123import org.jrobin.graph.RrdGraphDef;
    2224import org.jrobin.graph.RrdGraphDefTemplate;
    2325
     26/**
     27 *  Generate the RRD graph png images,
     28 *  except for the combined rate graph, which is
     29 *  generated in StatSummarizer.
     30 *
     31 *  @since 0.6.1.13
     32 */
    2433class SummaryRenderer {
    25     private Log _log;
    26     private SummaryListener _listener;
    27     private I2PAppContext _context;
     34    private final Log _log;
     35    private final SummaryListener _listener;
     36    private final I2PAppContext _context;
    2837
    2938    public SummaryRenderer(I2PAppContext ctx, SummaryListener lsnr) {
     
    3948     * specify who can get it from where, etc.
    4049     *
     50     * @deprecated unsed
    4151     */
    4252    public static synchronized void render(I2PAppContext ctx, OutputStream out, String filename) throws IOException {
     
    4656            RrdGraphDefTemplate template = new RrdGraphDefTemplate(filename);
    4757            RrdGraphDef def = template.getRrdGraphDef();
    48             def.setTimePeriod(start/1000, end/1000); // ignore the periods in the template
     58            def.setTimeSpan(start/1000, end/1000); // ignore the periods in the template
     59            // FIXME not clear how to get the height and width from the template
     60            int width = GraphHelper.DEFAULT_X;
     61            int height = GraphHelper.DEFAULT_Y;
     62            def.setWidth(width);
     63            def.setHeight(height);
     64
    4965            RrdGraph graph = new RrdGraph(def);
    50             byte img[] = graph.getPNGBytes();
    51             out.write(img);
     66            int totalWidth = graph.getRrdGraphInfo().getWidth();
     67            int totalHeight = graph.getRrdGraphInfo().getHeight();
     68            BufferedImage img = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_USHORT_565_RGB);
     69            Graphics gfx = img.getGraphics();
     70            graph.render(gfx);
     71            ImageOutputStream ios = new MemoryCacheImageOutputStream(out);
     72            ImageIO.write(img, "png", ios);
    5273        } catch (RrdException re) {
    5374            //_log.error("Error rendering " + filename, re);
     
    5980    }
    6081
    61     public void render(OutputStream out) throws IOException { render(out, -1, -1, false, false, false, false, -1, false); }
     82    public void render(OutputStream out) throws IOException { render(out, GraphHelper.DEFAULT_X, GraphHelper.DEFAULT_Y,
     83                                                                     false, false, false, false, -1, false); }
    6284
    6385    public void render(OutputStream out, int width, int height, boolean hideLegend, boolean hideGrid, boolean hideTitle, boolean showEvents, int periodCount, boolean showCredit) throws IOException {
    64         long end = _listener.now() - 60*1000;
    65         if (periodCount <= 0) periodCount = SummaryListener.PERIODS;
    66         if (periodCount > SummaryListener.PERIODS)
    67             periodCount = SummaryListener.PERIODS;
     86        long end = _listener.now() - 75*1000;
     87        if (periodCount <= 0 || periodCount > _listener.getRows())
     88            periodCount = _listener.getRows();
    6889        long start = end - _listener.getRate().getPeriod()*periodCount;
    6990        //long begin = System.currentTimeMillis();
    7091        try {
    7192            RrdGraphDef def = new RrdGraphDef();
    72             def.setTimePeriod(start/1000, 0);
    73             def.setLowerLimit(0d);
     93            def.setTimeSpan(start/1000, end/1000);
     94            def.setMinValue(0d);
    7495            String name = _listener.getRate().getRateStat().getName();
    7596            // heuristic to set K=1024
    7697            if ((name.startsWith("bw.") || name.indexOf("Size") >= 0 || name.indexOf("Bps") >= 0 || name.indexOf("memory") >= 0)
    7798                && !showEvents)
    78                 def.setBaseValue(1024);
     99                def.setBase(1024);
    79100            if (!hideTitle) {
    80101                String title;
    81102                String p;
    82103                // we want the formatting and translation of formatDuration2(), except not zh, and not the &nbsp;
    83                 if ("zh".equals(Messages.getLanguage(_context)))
    84                     p = DataHelper.formatDuration(_listener.getRate().getPeriod());
    85                 else
     104                //if ("zh".equals(Messages.getLanguage(_context)))
     105                //    p = DataHelper.formatDuration(_listener.getRate().getPeriod());
     106                //else
    86107                    p = DataHelper.formatDuration2(_listener.getRate().getPeriod()).replace("&nbsp;", " ");
    87108                if (showEvents)
    88                     // Note to translators: all runtime zh translation disabled in this file, no font available in RRD
    89109                    title = name + ' ' + _("events in {0}", p);
    90110                else
     
    109129                descr = _(_listener.getRate().getRateStat().getDescription());
    110130            }
    111             def.datasource(plotName, path, plotName, "AVERAGE", "MEMORY");
    112             def.area(plotName, Color.BLUE, descr + "@r");
     131            long started = ((RouterContext)_context).router().getWhenStarted();
     132            if (started > start && started < end)
     133                def.vrule(started / 1000, Color.BLACK, _("Restart"), 4.0f);
     134            def.datasource(plotName, path, plotName, SummaryListener.CF, _listener.getBackendName());
     135            if (descr.length() > 0)
     136                def.area(plotName, Color.BLUE, descr + "\\r");
     137            else
     138                def.area(plotName, Color.BLUE);
    113139            if (!hideLegend) {
    114                 def.gprint(plotName, "AVERAGE", _("avg") + ": @2@s");
    115                 def.gprint(plotName, "MAX", ' ' + _("max") + ": @2@s");
    116                 def.gprint(plotName, "LAST", ' ' + _("now") + ": @2@s@r");
     140                def.gprint(plotName, SummaryListener.CF, _("avg") + ": %.2f %s");
     141                def.gprint(plotName, "MAX", ' ' + _("max") + ": %.2f %S");
     142                def.gprint(plotName, "LAST", ' ' + _("now") + ": %.2f %S\\r");
    117143            }
    118144            if (!showCredit)
     
    127153            */
    128154            if (hideLegend)
    129                 def.setShowLegend(false);
     155                def.setNoLegend(true);
    130156            if (hideGrid) {
    131                 def.setGridX(false);
    132                 def.setGridY(false);
     157                def.setDrawXGrid(false);
     158                def.setDrawYGrid(false);
    133159            }
    134160            //System.out.println("rendering: path=" + path + " dsNames[0]=" + dsNames[0] + " dsNames[1]=" + dsNames[1] + " lsnr.getName=" + _listener.getName());
     
    136162            //System.out.println("Rendering: \n" + def.exportXmlTemplate());
    137163            //System.out.println("*****************\nData: \n" + _listener.getData().dump());
     164            def.setWidth(width);
     165            def.setHeight(height);
     166
    138167            RrdGraph graph = new RrdGraph(def);
     168            int totalWidth = graph.getRrdGraphInfo().getWidth();
     169            int totalHeight = graph.getRrdGraphInfo().getHeight();
     170            BufferedImage img = new BufferedImage(totalWidth, totalHeight, BufferedImage.TYPE_USHORT_565_RGB);
     171            Graphics gfx = img.getGraphics();
     172            graph.render(gfx);
     173            ImageOutputStream ios = new MemoryCacheImageOutputStream(out);
     174            ImageIO.write(img, "png", ios);
    139175            //System.out.println("Graph created");
    140             byte data[] = null;
    141             if ( (width <= 0) || (height <= 0) )
    142                 data = graph.getPNGBytes();
    143             else
    144                 data = graph.getPNGBytes(width, height);
    145             //long timeToPlot = System.currentTimeMillis() - begin;
    146             out.write(data);
     176
    147177            //File t = File.createTempFile("jrobinData", ".xml");
    148178            //_listener.getData().dumpXml(new FileOutputStream(t));
     
    164194    private String _(String s) {
    165195        // the RRD font doesn't have zh chars, at least on my system
    166         if ("zh".equals(Messages.getLanguage(_context)))
    167             return s;
     196        // Works on 1.5.9
     197        //if ("zh".equals(Messages.getLanguage(_context)))
     198        //  return s;
    168199        return Messages.getString(s, _context);
    169200    }
     
    174205    private String _(String s, String o) {
    175206        // the RRD font doesn't have zh chars, at least on my system
    176         if ("zh".equals(Messages.getLanguage(_context)))
    177             return s.replace("{0}", o);
     207        // Works on 1.5.9
     208        //if ("zh".equals(Messages.getLanguage(_context)))
     209        //  return s.replace("{0}", o);
    178210        return Messages.getString(s, o, _context);
    179211    }
  • apps/routerconsole/jsp/config.jsp

    r4b19801 re42b78e  
    166166    <%=intl._("Specify Port")%>:
    167167    <input name ="ntcpport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="ntcpport" />" ><br>
    168  </p><p><b><%=intl._("Note")%>: <%=intl._("Changing these settings will restart your router.")%></b></p>
     168 </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>
    169169<hr><div class="formaction">
    170170<input type="reset" value="<%=intl._("Cancel")%>" >
  • apps/routerconsole/jsp/flags.jsp

    r4b19801 re42b78e  
    1212 *  with headers set so the browser caches.
    1313 */
    14 boolean rendered = false;
    1514String c = request.getParameter("c");
    1615if (c != null && c.length() > 0) {
     
    3938    try {
    4039        net.i2p.util.FileUtil.readFile(file, base, cout);
    41         rendered = true;
    42     } catch (java.io.IOException ioe) {}
    43     if (rendered)
    44         cout.close();
     40    } catch (java.io.IOException ioe) {
     41        // prevent 'Committed' IllegalStateException from Jetty
     42        if (!response.isCommitted()) {
     43            response.sendError(403, ioe.toString());
     44        }  else {
     45            net.i2p.I2PAppContext.getGlobalContext().logManager().getLog(getClass()).error("Error serving flags/" + c + ".png", ioe);
     46            // Jetty doesn't log this
     47            throw ioe;
     48        }
     49    }
     50} else {
     51    /*
     52     *  Send a 403 instead of a 404, because the server sends error.jsp
     53     *  for 404 errors, complete with the summary bar, which would be
     54     *  a huge load for a page full of flags if the user didn't have the
     55     *  flags directory for some reason.
     56     */
     57    response.sendError(403, "No flag specified");
    4558}
    46 /*
    47  *  Send a 403 instead of a 404, because the server sends error.jsp
    48  *  for 404 errors, complete with the summary bar, which would be
    49  *  a huge load for a page full of flags if the user didn't have the
    50  *  flags directory for some reason.
    51  */
    52 if (!rendered)
    53     response.sendError(403, "Flag not found");
    5459%>
  • apps/routerconsole/jsp/graphs.jsp

    r4b19801 re42b78e  
    66<%@include file="css.jsi" %>
    77<%=intl.title("graphs")%>
     8 <jsp:useBean class="net.i2p.router.web.GraphHelper" id="graphHelper" scope="request" />
     9 <% graphHelper.storeMethod(request.getMethod()); %>
     10 <jsp:setProperty name="graphHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
     11<% /* GraphHelper sets the defaults in setContextId, so setting the properties must be after the context */ %>
     12 <jsp:setProperty name="graphHelper" property="*" />
     13<%
     14    graphHelper.storeWriter(out);
     15    graphHelper.storeMethod(request.getMethod());
     16    // meta must be inside the head
     17    boolean allowRefresh = intl.allowIFrame(request.getHeader("User-Agent"));
     18    if (allowRefresh) {
     19        out.print(graphHelper.getRefreshMeta());
     20    }
     21%>
    822</head><body>
    9 
    1023<%@include file="summary.jsi" %>
    1124<h1><%=intl._("I2P Performance Graphs")%></h1>
     
    1326 <div class="graphspanel">
    1427 <div class="widepanel">
    15  <jsp:useBean class="net.i2p.router.web.GraphHelper" id="graphHelper" scope="request" />
    16  <% graphHelper.storeMethod(request.getMethod()); %>
    17  <jsp:setProperty name="graphHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
    18 <% /* GraphHelper sets the defaults in setContextId, so setting the properties must be after the context */ %>
    19  <jsp:setProperty name="graphHelper" property="*" />
    20  <% graphHelper.storeWriter(out); %>
    2128 <jsp:getProperty name="graphHelper" property="allMessages" />
    2229 <jsp:getProperty name="graphHelper" property="images" />
  • apps/routerconsole/jsp/help.jsp

    r4b19801 re42b78e  
    4848The second number is the number of peers seen in the last hour or so.
    4949Do not be concerned if these numbers vary widely.
    50 <a href="configstats.jsp#router.activePeers">[Enable graphing]</a>.
     50First enable all stats to <a href="configstats.jsp#router.activePeers">[Enable graphing]</a>.
    5151<li class="tidylist"><b>Fast:</b>
    5252This is the number of peers you use for building client tunnels. It is generally in the
     
    5757range 8-75. The fast peers are included in the high capacity tier.
    5858Your high capacity peers are shown on the <a href="profiles.jsp">profiles page</a>.
    59 <a href="configstats.jsp#router.highCapacityPeers">[Enable graphing]</a>.
     59First enable all stats to <a href="configstats.jsp#router.highCapacityPeers">[Enable graphing]</a>.
    6060<li class="tidylist"><b>Well Integrated:</b>
    6161This is the number of peers you use for network database inquiries.
  • apps/routerconsole/jsp/viewhistory.jsp

    r4b19801 re42b78e  
    1212    net.i2p.util.FileUtil.readFile("history.txt", base, response.getOutputStream());
    1313} catch (java.io.IOException ioe) {
    14     response.sendError(403, ioe.toString());
     14    // prevent 'Committed' IllegalStateException from Jetty
     15    if (!response.isCommitted()) {
     16        response.sendError(403, ioe.toString());
     17    }  else {
     18        net.i2p.I2PAppContext.getGlobalContext().logManager().getLog(getClass()).error("Error serving history.txt", ioe);
     19        // Jetty doesn't log this
     20        throw ioe;
     21    }
    1522}
    1623%>
  • apps/routerconsole/jsp/viewstat.jsp

    r4b19801 re42b78e  
    99
    1010boolean rendered = false;
     11/****  unused
    1112String templateFile = request.getParameter("template");
    1213if (templateFile != null) {
     
    1516  rendered = net.i2p.router.web.StatSummarizer.instance().renderPng(cout, templateFile);
    1617}
     18****/
    1719net.i2p.stat.Rate rate = null;
    1820String stat = request.getParameter("stat");
    1921String period = request.getParameter("period");
    2022boolean fakeBw = (stat != null && ("bw.combined".equals(stat)));
    21 net.i2p.stat.RateStat rs = net.i2p.I2PAppContext.getGlobalContext().statManager().getRate(stat);
     23net.i2p.stat.RateStat rs = null;
     24if (stat != null)
     25    rs = net.i2p.I2PAppContext.getGlobalContext().statManager().getRate(stat);
    2226if ( !rendered && ((rs != null) || fakeBw) ) {
    2327  long per = -1;
     
    3943      } else {
    4044        response.setContentType("image/png");
     45        // very brief 45 sec expire
     46        response.setDateHeader("Expires", net.i2p.I2PAppContext.getGlobalContext().clock().now() + (45*1000));
    4147        int width = -1;
    4248        int height = -1;
     
    7278 */
    7379if (!rendered) {
    74   response.sendError(403, "That stat is not available");
     80    if (stat != null)
     81        response.sendError(403, "The stat " + stat + " is not available, it must be enabled for graphing on the stats configuration page.");
     82    else
     83        response.sendError(403, "No stat specified");
    7584}
    7685%>
  • apps/routerconsole/jsp/viewtheme.jsp

    r4b19801 re42b78e  
    6464    net.i2p.util.FileUtil.readFile(uri, base, response.getOutputStream());
    6565} catch (java.io.IOException ioe) {
    66     response.sendError(403, ioe.toString());
     66    // prevent 'Committed' IllegalStateException from Jetty
     67    if (!response.isCommitted()) {
     68        response.sendError(403, ioe.toString());
     69    }  else {
     70        net.i2p.I2PAppContext.getGlobalContext().logManager().getLog(getClass()).error("Error serving " + uri, ioe);
     71        // Jetty doesn't log this
     72        throw ioe;
     73    }
    6774}
    6875%>
  • apps/routerconsole/locale/messages_de.po

    r4b19801 re42b78e  
    99"Project-Id-Version: I2P routerconsole\n"
    1010"Report-Msgid-Bugs-To: \n"
    11 "POT-Creation-Date: 2011-03-03 18:27+0000\n"
    12 "PO-Revision-Date: 2011-03-04 19:51+0100\n"
     11"POT-Creation-Date: 2011-03-25 12:46+0000\n"
     12"PO-Revision-Date: 2011-04-16 02:57+0100\n"
    1313"Last-Translator: mixxy <m1xxy@mail.i2p>\n"
    1414"Language-Team: echelon <echelon@mail.i2p>, Sperreingang <sperrbezirk@mail.i2p>\n"
     
    6666
    6767#: ../../../core/java/src/net/i2p/data/DataHelper.java:1158
    68 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313
     68#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:314
    6969msgid "n/a"
    7070msgstr "k.A."
     
    147147msgstr "Weise Tunnelanfragen zurück"
    148148
    149 #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:105
     149#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:125
    150150#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20
    151151msgid "Reseeding"
    152152msgstr "Reseeden"
    153153
    154 #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:128
     154#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:141
    155155#, java-format
    156156msgid "Reseed fetched only 1 router."
     
    159159msgstr[1] "Nur {0} Routerinformationen per Reseed erhalten"
    160160
    161 #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:135
     161#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:148
    162162msgid "Reseed failed."
    163163msgstr "Reseed fehlgeschlagen"
    164164
    165 #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:136
     165#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:149
    166166#, java-format
    167167msgid "See {0} for help."
    168168msgstr "Für Hilfe, siehe {0}!"
    169169
    170 #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:137
     170#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:150
    171171msgid "reseed configuration page"
    172172msgstr "Einstellungen für den Reseed"
    173173
    174 #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:239
     174#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:293
    175175msgid "Reseeding: fetching seed URL."
    176176msgstr "Reseed: Hole die Seed-URL"
    177177
    178 #: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:281
     178#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:335
    179179#, java-format
    180180msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
     
    204204
    205205#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:518
    206 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:123
     206#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:129
    207207msgid "Help"
    208208msgstr "Hilfe"
     
    217217
    218218#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:523
    219 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257
     219#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258
    220220msgid "Definitions"
    221221msgstr "Definitionen"
    222222
    223223#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:524
    224 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:735
     224#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737
    225225#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890
    226226#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
     
    228228#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
    229229#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:81
    230 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:187
     230#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189
    231231#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238
    232232msgid "Peer"
     
    238238
    239239#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:525
    240 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:736
     240#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738
    241241#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1894
    242242msgid "Dir"
     
    264264
    265265#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533
    266 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:737
     266#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739
    267267#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895
    268268msgid "Idle"
     
    270270
    271271#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:534
    272 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738
     272#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740
    273273#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900
    274274#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
     
    285285
    286286#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535
    287 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:739
     287#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741
    288288#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1905
    289289msgid "Up"
     
    291291
    292292#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:536
    293 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740
     293#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742
    294294#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1907
    295295msgid "Skew"
     
    342342
    343343#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546
    344 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:741
     344#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743
    345345#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924
    346346msgid "TX"
     
    352352
    353353#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547
    354 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:742
     354#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744
    355355#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926
    356356msgid "RX"
     
    385385msgstr "Zu hohe Abweichung der Uhrzeit: {0}"
    386386
    387 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:730
     387#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732
    388388msgid "NTCP connections"
    389389msgstr "NTCP-Verbindungen"
    390390
    391 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:731
     391#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:733
    392392#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1886
    393393msgid "Limit"
    394394msgstr "Obere Grenze"
    395395
    396 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:732
     396#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:734
    397397#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887
    398398msgid "Timeout"
    399399msgstr "Timeout"
    400400
    401 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:743
     401#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:745
    402402msgid "Out Queue"
    403403msgstr "Ausgehende Warteschlange"
    404404
    405 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:744
     405#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:746
    406406msgid "Backlogged?"
    407407msgstr "Rückstau"
    408408
    409 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:758
     409#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760
    410410#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1949
    411 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82
     411#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87
    412412msgid "Inbound"
    413413msgstr "ankommend"
    414414
    415 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:760
     415#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:762
    416416#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1951
    417 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82
     417#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87
    418418msgid "Outbound"
    419419msgstr "abgehend"
    420420
    421421#. buf.append("<tr> <td colspan=\"11\"><hr></td></tr>\n");
    422 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:807
     422#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:809
    423423msgid "peers"
    424424msgstr "Teilnehmer"
     
    540540msgstr "Ignoriere Tunnelanfragen: überlastet"
    541541
    542 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:460
     542#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:470
    543543msgid "Rejecting tunnels: Request overload"
    544544msgstr "Weise Tunnelanfragen zurück: Überlast an Anfragen"
    545545
    546 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:485
     546#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:495
    547547msgid "Rejecting tunnels: Connection limit"
    548548msgstr "Weise Tunnelanfragen zurück: Verbindungslimit erreicht"
    549549
    550 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:685
    551 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:706
     550#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:695
     551#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:716
    552552msgid "Dropping tunnel requests: High load"
    553553msgstr "Ignoriere Tunnelanfragen: Hohe Last"
    554554
    555 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:698
     555#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:708
    556556msgid "Dropping tunnel requests: Queue time"
    557557msgstr "Ignoriere Tunnelanfragen: zu lange Warteschlange"
     
    14841484msgstr "Simbabwe"
    14851485
    1486 #: ../java/src/net/i2p/router/web/CSSHelper.java:58
     1486#: ../java/src/net/i2p/router/web/CSSHelper.java:60
    14871487#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:35
    14881488#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:37
    14891489#: ../java/strings/Strings.java:29
    1490 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:119
    1491 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:233
     1490#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:125
     1491#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:257
    14921492msgid "I2P Router Console"
    14931493msgstr "I2P-Routerkonsole"
     
    15081508
    15091509#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:35
    1510 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:335
     1510#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:355
    15111511msgid "Save Client Configuration"
    15121512msgstr "Speichere Klienteneinstellungen"
    15131513
    15141514#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:39
    1515 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:405
     1515#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427
    15161516msgid "Save Interface Configuration"
    15171517msgstr "Speichere Interface-Einstellungen"
    15181518
    15191519#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:43
    1520 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417
     1520#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:441
    15211521msgid "Save WebApp Configuration"
    15221522msgstr "Speichere WebApplikations-Einstellungen"
    15231523
    15241524#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:47
    1525 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:427
     1525#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:453
    15261526msgid "Save Plugin Configuration"
    15271527msgstr "Speichere Einstellungen des Zusatzprogrammes"
    15281528
    15291529#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:51
    1530 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:433
     1530#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:461
    15311531msgid "Install Plugin"
    15321532msgstr "Zusatzprogramm installieren"
     
    15811581#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:223
    15821582#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:102
    1583 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
     1583#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:392
    15841584#: ../java/src/net/i2p/router/web/SummaryHelper.java:384
    15851585msgid "Client"
     
    16631663
    16641664#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:94
    1665 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:331
     1665#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:351
    16661666msgid "Add Client"
    16671667msgstr "Klienten hinzufügen"
     
    16941694
    16951695#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:161
    1696 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:271
     1696#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273
    16971697#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
    16981698msgid "Version"
     
    17291729#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:262
    17301730#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:78
    1731 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:313
     1731#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:331
    17321732msgid "Check for updates"
    17331733msgstr "Auf Aktualisierungen prüfen"
     
    17351735#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:263
    17361736#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
    1737 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
    1738 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242
    17391737msgid "Update"
    17401738msgstr "Aktualisierung"
     
    17501748
    17511749#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18
    1752 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:325
     1750#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:343
    17531751msgid "Add key"
    17541752msgstr "Schlüssel hinzufügen"
    17551753
    17561754#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:19
    1757 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:323
     1755#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:341
    17581756msgid "Delete key"
    17591757msgstr "Schlüssel löschen"
     
    18521850#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
    18531851#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:101
    1854 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386
     1852#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
    18551853#: ../java/strings/Strings.java:72
    18561854msgid "Tunnels"
     
    18661864
    18671865#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19
    1868 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:293
     1866#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:315
    18691867msgid "Keyring"
    18701868msgstr "Schlüsselbund"
     
    18761874#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19
    18771875#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:107
    1878 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
     1876#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:255
    18791877#: ../java/strings/Strings.java:67
    18801878msgid "Peers"
     
    18821880
    18831881#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19
    1884 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:387
     1882#: ../java/src/net/i2p/router/web/NetDbRenderer.java:389
    18851883#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:143
    18861884msgid "Stats"
     
    18951893#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:29
    18961894#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:34
    1897 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:360
    1898 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:516
    1899 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307
    1900 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:341
    1901 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:352
    1902 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:377
    1903 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:344
     1895#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:378
     1896#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:534
     1897#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:325
     1898#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:359
     1899#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:370
     1900#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:397
     1901#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:362
    19041902msgid "Save changes"
    19051903msgstr "Änderungen speichern"
     
    20052003
    20062004#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20
    2007 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:315
     2005#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:333
    20082006msgid "Ban peer until restart"
    20092007msgstr "Den Teilnehmer bis zum Neustart sperren"
     
    20252023
    20262024#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:28
    2027 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:317
     2025#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:335
    20282026msgid "Unban peer"
    20292027msgstr "Sperrung des Teilnehmers aufheben"
     
    20382036
    20392037#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:39
    2040 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:343
     2038#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:361
    20412039msgid "Adjust peer bonuses"
    20422040msgstr "Teilnehmer-Boni anpassen"
     
    20512049
    20522050#: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:17
    2053 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:350
     2051#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:368
    20542052msgid "Save changes and reseed now"
    20552053msgstr "Änderungen speichern und Reseed beginnen"
     
    20712069#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:32
    20722070#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:57
    2073 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:293
     2071#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:311
    20742072msgid "Shutdown immediately"
    20752073msgstr "Beende I2P sofort"
     
    21182116
    21192117#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:53
    2120 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:291
     2118#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309
    21212119msgid "Shutdown gracefully"
    21222120msgstr "Kontrolliert ausschalten"
     
    21312129
    21322130#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:61
    2133 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:295
     2131#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:313
    21342132msgid "Cancel graceful shutdown"
    21352133msgstr "Kontrolliertes Ausschalten abbrechen"
     
    21402138
    21412139#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:64
    2142 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:307
     2140#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:325
    21432141msgid "Graceful restart"
    21442142msgstr "Kontrollierter Neustart"
     
    21492147
    21502148#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:68
    2151 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:309
     2149#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:327
    21522150msgid "Hard restart"
    21532151msgstr "Harter Neustart"
     
    21742172
    21752173#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:80
    2176 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:335
     2174#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:353
    21772175msgid "Run I2P on startup"
    21782176msgstr "Starte I2P beim Systemstart"
    21792177
    21802178#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:82
    2181 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:337
     2179#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355
    21822180msgid "Don't run I2P on startup"
    21832181msgstr "Starte I2P nicht beim Systemstart"
    21842182
    21852183#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84
    2186 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:355
     2184#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:373
    21872185msgid "Dump threads"
    21882186msgstr "Threadliste ausgeben"
    21892187
    21902188#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:91
    2191 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:363
     2189#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:381
    21922190msgid "View console on startup"
    21932191msgstr "Zeige die Konsole nach dem Starten"
     
    21982196
    21992197#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:94
    2200 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:365
     2198#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:383
    22012199msgid "Do not view console on startup"
    22022200msgstr "Zeige Konsole beim Starten nicht"
     
    22662264msgstr[1] "{0} Tunnel"
    22672265
    2268 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26
     2266#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:35
    22692267#: ../java/src/net/i2p/router/web/TunnelRenderer.java:41
    22702268msgid "Exploratory tunnels"
    22712269msgstr "Erkundungstunnel"
    22722270
    2273 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:46
    2274 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:61
    2275 msgid "Client tunnels for"
    2276 msgstr "Kliententunnel für"
    2277 
    2278 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69
     2271#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:51
     2272#, java-format
     2273msgid "Client tunnels for {0}"
     2274msgstr "Kliententunnel für {0}"
     2275
     2276#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74
    22792277msgid "ANONYMITY WARNING - Settings include 0-hop tunnels."
    22802278msgstr "ANONYMITÄTSWARNUNG - Einstellungen beinhalten Tunnel ohne Zwischenstationen"
    22812279
    2282 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74
     2280#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:79
    22832281msgid "ANONYMITY WARNING - Settings include 1-hop tunnels."
    22842282msgstr "ANONYMITÄTSWARNUNG - Einstellungen beinhalten Tunnel mit nur einer Zwischenstation"
    22852283
    2286 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77
     2284#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82
    22872285msgid "PERFORMANCE WARNING - Settings include very long tunnels."
    22882286msgstr "LEISTUNGSWARNUNG - Einstellungen beinhalten sehr lange Tunnel"
    22892287
    2290 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80
     2288#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:85
    22912289msgid "PERFORMANCE WARNING - Settings include high tunnel quantities."
    22922290msgstr "LEISTUNGSWARNUNG - Einstellungen beinhalten sehr viele Tunnel"
     
    22942292#. buf.append("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\n");
    22952293#. tunnel depth
    2296 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87
     2294#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:92
    22972295msgid "Length"
    22982296msgstr "Länge"
    22992297
    23002298#. tunnel depth variance
    2301 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104
     2299#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:109
    23022300msgid "Randomization"
    23032301msgstr "Zufallskomponente"
    23042302
    23052303#. tunnel quantity
    2306 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128
     2304#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:133
    23072305msgid "Quantity"
    23082306msgstr "Anzahl"
    23092307
    23102308#. tunnel backup quantity
    2311 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145
     2309#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:150
    23122310msgid "Backup quantity"
    23132311msgstr "Anzahl der Ersatztunnel"
    23142312
    2315 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167
     2313#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:172
    23162314msgid "Inbound options"
    23172315msgstr "Optionen für eingehende Tunnel"
    23182316
    2319 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180
     2317#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:185
    23202318msgid "Outbound options"
    23212319msgstr "Optionen für ausgehende Tunnel"
     
    24342432msgstr "Herunterladen, überprüfen und neustarten"
    24352433
    2436 #: ../java/src/net/i2p/router/web/FormHandler.java:174
     2434#: ../java/src/net/i2p/router/web/FormHandler.java:176
    24372435msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit."
    24382436msgstr "Ungültige Übertragung der eingegebenen Daten, möglicherweise da Sie den 'Zurück'- oder 'Neu Laden'-Knopf in Ihrem Browser gedrückt haben. Bitte erneut senden."
     
    24652463
    24662464#: ../java/src/net/i2p/router/web/GraphHelper.java:152
    2467 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417
    2468 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:333
     2465#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435
     2466#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:351
    24692467msgid "or"
    24702468msgstr "oder"
     
    26022600msgstr "Zeige alle Router mit vollständigen Statistiken"
    26032601
    2604 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:265
     2602#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266
    26052603msgid "Network Database Router Statistics"
    26062604msgstr "Netzwerkdatenbank Routerstatistiken"
    26072605
    2608 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:271
    2609 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:285
    2610 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:303
     2606#: ../java/src/net/i2p/router/web/NetDbRenderer.java:273
     2607#: ../java/src/net/i2p/router/web/NetDbRenderer.java:287
     2608#: ../java/src/net/i2p/router/web/NetDbRenderer.java:305
    26112609msgid "Count"
    26122610msgstr "Anzahl"
    26132611
    2614 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:285
     2612#: ../java/src/net/i2p/router/web/NetDbRenderer.java:287
    26152613msgid "Transports"
    26162614msgstr "Transporte"
    26172615
    2618 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:303
     2616#: ../java/src/net/i2p/router/web/NetDbRenderer.java:305
    26192617msgid "Country"
    26202618msgstr "Land"
    26212619
    2622 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:342
     2620#: ../java/src/net/i2p/router/web/NetDbRenderer.java:344
    26232621msgid "Our info"
    26242622msgstr "Informationen über uns"
    26252623
    2626 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:344
     2624#: ../java/src/net/i2p/router/web/NetDbRenderer.java:346
    26272625msgid "Peer info for"
    26282626msgstr "Informationen über den Teilnehmer"
    26292627
    2630 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:348
     2628#: ../java/src/net/i2p/router/web/NetDbRenderer.java:350
    26312629msgid "Full entry"
    26322630msgstr "Ganzer Eintrag"
    26332631
    2634 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:354
     2632#: ../java/src/net/i2p/router/web/NetDbRenderer.java:356
    26352633#: ../java/src/net/i2p/router/web/SummaryHelper.java:115
    2636 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601
     2634#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619
    26372635msgid "Hidden"
    26382636msgstr "Versteckt"
    26392637
    2640 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:354
     2638#: ../java/src/net/i2p/router/web/NetDbRenderer.java:356
    26412639msgid "Updated"
    26422640msgstr "Aktualisiert"
    26432641
    2644 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:355
    2645 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:358
     2642#: ../java/src/net/i2p/router/web/NetDbRenderer.java:357
     2643#: ../java/src/net/i2p/router/web/NetDbRenderer.java:360
    26462644#, java-format
    26472645msgid "{0} ago"
     
    26492647
    26502648#. shouldnt happen
    2651 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:357
    2652 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:361
     2649#: ../java/src/net/i2p/router/web/NetDbRenderer.java:359
     2650#: ../java/src/net/i2p/router/web/NetDbRenderer.java:363
    26532651msgid "Published"
    26542652msgstr "Veröffentlicht"
    26552653
    2656 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:363
     2654#: ../java/src/net/i2p/router/web/NetDbRenderer.java:365
    26572655msgid "Address(es)"
    26582656msgstr "Adresse(n)"
    26592657
    2660 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:376
     2658#: ../java/src/net/i2p/router/web/NetDbRenderer.java:378
    26612659msgid "cost"
    26622660msgstr "Kosten"
    26632661
    2664 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:402
     2662#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403
    26652663msgid "Hidden or starting up"
    26662664msgstr "Versteckt oder Startphase"
    26672665
    2668 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:402
     2666#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403
    26692667msgid "SSU"
    26702668msgstr "SSU"
    26712669
    2672 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:402
     2670#: ../java/src/net/i2p/router/web/NetDbRenderer.java:403
    26732671msgid "SSU with introducers"
    26742672msgstr "SSU mit Hilfsrouter"
    26752673
    2676 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:403
     2674#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404
    26772675msgid "NTCP"
    26782676msgstr "NTCP"
    26792677
    2680 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:403
     2678#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404
    26812679msgid "NTCP and SSU"
    26822680msgstr "NTCP und SSU"
    26832681
    2684 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:403
     2682#: ../java/src/net/i2p/router/web/NetDbRenderer.java:404
    26852683msgid "NTCP and SSU with introducers"
    26862684msgstr "NTCP und SSU mit Hilfsrouter"
    26872685
    2688 #: ../java/src/net/i2p/router/web/NewsFetcher.java:93
     2686#: ../java/src/net/i2p/router/web/NewsFetcher.java:92
    26892687#, java-format
    26902688msgid "News last updated {0} ago."
    26912689msgstr "Zeit seit letzter Aktualisierung der Nachrichten: {0};"
    26922690
    2693 #: ../java/src/net/i2p/router/web/NewsFetcher.java:99
     2691#: ../java/src/net/i2p/router/web/NewsFetcher.java:98
    26942692#, java-format
    26952693msgid "News last checked {0} ago."
     
    27092707#, java-format
    27102708msgid "New plugin version {0} is available"
    2711 msgstr "Neue Version des Zusatzprogramms {0} ist verfügbar"
     2709msgstr "Neue Version des Zusatzprogramms ist verfügbar ({0})"
    27122710
    27132711#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:156
     
    27262724
    27272725#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:146
    2728 #: ../java/src/net/i2p/router/web/UpdateHandler.java:244
     2726#: ../java/src/net/i2p/router/web/UpdateHandler.java:245
    27292727#, java-format
    27302728msgid "{0}B transferred"
     
    27422740
    27432741#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:167
    2744 #: ../java/src/net/i2p/router/web/UpdateHandler.java:298
     2742#: ../java/src/net/i2p/router/web/UpdateHandler.java:299
    27452743#, java-format
    27462744msgid "from {0}"
     
    28622860#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73
    28632861#, java-format
    2864 msgid "Showing {0} recent profiles."
    2865 msgstr "Zeige {0} aktuelle Profile."
     2862msgid "Showing 1 recent profile."
     2863msgid_plural "Showing {0} recent profiles."
     2864msgstr[0] "Zeige ein aktuelles Profil an."
     2865msgstr[1] "Zeige {0} aktuelle Profile."
    28662866
    28672867#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75
    28682868#, java-format
    2869 msgid "Hiding {0} older profiles."
    2870 msgstr "Zeige {0} alte Profile nicht an."
     2869msgid "Hiding 1 older profile."
     2870msgid_plural "Hiding {0} older profiles."
     2871msgstr[0] "Zeige ein altes Profil nicht an."
     2872msgstr[1] "Zeige {0} alte Profile nicht an."
    28712873
    28722874#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77
    28732875#, java-format
    2874 msgid "Hiding {0} standard profiles."
    2875 msgstr "Zeige {0} Standardprofile nicht an."
     2876msgid "Hiding 1 standard profile."
     2877msgid_plural "Hiding {0} standard profiles."
     2878msgstr[0] "Zeige ein Standardprofil nicht an."
     2879msgstr[1] "Zeige {0} Standardprofile nicht an."
    28762880
    28772881#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82
     
    28802884
    28812885#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:83
    2882 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251
    2883 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:335
     2886#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252
     2887#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:353
    28842888msgid "Speed"
    28852889msgstr "Geschwindigkeit"
    28862890
    28872891#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:84
    2888 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:253
    2889 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:339
     2892#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254
     2893#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:357
    28902894msgid "Capacity"
    28912895msgstr "Kapazität"
    28922896
    28932897#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85
    2894 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255
     2898#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256
    28952899msgid "Integration"
    28962900msgstr "Integration"
     
    29182922
    29192923#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131
    2920 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287
     2924#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:282
    29212925msgid "Integrated"
    29222926msgstr "integriert"
     
    29312935msgstr "Test fehlgeschlagen"
    29322936
    2933 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175
     2937#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:177
    29342938msgid "profile"
    29352939msgstr "Profil"
    29362940
    2937 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184
     2941#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:186
    29382942msgid "Floodfill and Integrated Peers"
    29392943msgstr "Floodfill und integrierte Teilnhemer"
    29402944
    2941 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188
     2945#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190
    29422946msgid "Caps"
    29432947msgstr "Kategorien"
    29442948
    2945 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189
     2949#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191
    29462950msgid "Integ. Value"
    29472951msgstr "Integrationswert"
    29482952
    2949 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190
     2953#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192
    29502954msgid "Last Heard About"
    29512955msgstr "Zuletzt etwas über ihn gehört"
    29522956
    2953 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191
     2957#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193
    29542958msgid "Last Heard From"
    29552959msgstr "Letzte Nachricht empfangen"
    29562960
    2957 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192
     2961#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194
    29582962msgid "Last Good Send"
    29592963msgstr "Letzte geglückte Sendung"
    29602964
    2961 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193
     2965#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195
    29622966msgid "Last Bad Send"
    29632967msgstr "Letzte fehlgeschlagene Sendung"
    29642968
    2965 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194
     2969#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196
    29662970msgid "10m Resp. Time"
    29672971msgstr "10 Min. Antwortzeit"
    29682972
    2969 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195
     2973#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197
    29702974msgid "1h Resp. Time"
    29712975msgstr "1 Std. Antwortzeit"
    29722976
    2973 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196
     2977#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198
    29742978msgid "1d Resp. Time"
    29752979msgstr "1 Tag Antwortzeit"
    29762980
    2977 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197
     2981#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199
    29782982msgid "Last Good Lookup"
    29792983msgstr "Letzte erfolgreiche Suche"
    29802984
    2981 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198
     2985#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200
    29822986msgid "Last Bad Lookup"
    29832987msgstr "Letzte fehlgeschlagene Suche"
    29842988
    2985 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199
     2989#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201
    29862990msgid "Last Good Store"
    29872991msgstr "Letztes erfolgreiches Speichern"
    29882992
    2989 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200
     2993#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202
    29902994msgid "Last Bad Store"
    29912995msgstr "Letztes fehlgeschlagene Speichern"
    29922996
    2993 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201
     2997#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:203
    29942998msgid "1h Fail Rate"
    29952999msgstr "stündl. Fehlerrate"
    29963000
    2997 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202
     3001#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:204
    29983002msgid "1d Fail Rate"
    29993003msgstr "tägl. Fehlerrate"
    30003004
    3001 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250
     3005#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251
    30023006msgid "Thresholds"
    30033007msgstr "Grenzwerte"
    30043008
    3005 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252
     3009#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:253
    30063010msgid "fast peers"
    30073011msgstr "schnelle Teilnehmer"
    30083012
    3009 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254
     3013#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255
    30103014msgid "high capacity peers"
    30113015msgstr "Teilnehmer hoher Kapazität"
    30123016
    3013 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256
     3017#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257
    30143018msgid " well integrated peers"
    30153019msgstr "gut integrierte Teilnehmer"
    30163020
    3017 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258
     3021#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
    30183022msgid "as determined by the profile organizer"
    30193023msgstr "wie vom Profilorganisator ermittelt"
    30203024
    3021 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258
     3025#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
    30223026msgid "groups"
    30233027msgstr "Gruppen"
    30243028
    3025 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
     3029#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
    30263030msgid "capabilities in the netDb, not used to determine profiles"
    30273031msgstr "Werte in der Netzwerkdatenbank, nicht zum Ermitteln der Profile verwendet"
    30283032
    30293033#. capabilities
    3030 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
     3034#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
    30313035#: ../java/strings/Strings.java:81
    30323036msgid "caps"
    30333037msgstr "Kategorien"
    30343038
    3035 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
     3039#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
    30363040msgid "peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel"
    30373041msgstr "maximaler Durchsatz (Bytes je Tunnel) innerhalb einer Minute, den ein Teilnehmer in einem einzelnen Tunnel erreicht hat"
    30383042
    3039 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
     3043#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
    30403044msgid "speed"
    30413045msgstr "Geschwindigkeit"
    30423046
    3043 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
     3047#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
    30443048msgid "capacity"
    30453049msgstr "Kapazität"
    30463050
    3047 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
     3051#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
    30483052msgid "how many tunnels can we ask them to join in an hour?"
    30493053msgstr "Wie viele Tunnel können wir bei diesem Teilnehmer innerhalb einer Stunde bekommen?"
    30503054
    3051 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
     3055#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
    30523056msgid "how many new peers have they told us about lately?"
    30533057msgstr "Wie viele neue Kontakte hat dieser Teilnehmer uns kürzlich mitgeteilt?"
    30543058
    3055 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
     3059#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
    30563060msgid "integration"
    30573061msgstr "Integration"
    30583062
    3059 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
     3063#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
    30603064msgid "is the peer banned, or unreachable, or failing tunnel tests?"
    30613065msgstr "Ist der Teilnehmer gesperrt, unerreichbar, oder schlagen die Tunneltests fehl?"
    30623066
    3063 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
     3067#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
    30643068msgid "status"
    30653069msgstr "Status"
    30663070
    3067 #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57
     3071#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:47
     3072#: ../java/src/net/i2p/router/web/SummaryHelper.java:410
     3073msgid "none"
     3074msgstr "keine"
     3075
     3076#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:62
    30683077#, java-format
    30693078msgid "Temporary ban expiring in {0}"
    30703079msgstr "vorübergehende Sperrung endet in {0}"
    30713080
    3072 #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59
     3081#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:64
    30733082#, java-format
    30743083msgid "Banned until restart or in {0}"
    30753084msgstr "Gesperrt bis zum Neustart oder in {0}"
    30763085
    3077 #: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71
     3086#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:76
    30783087msgid "unban now"
    30793088msgstr "Bann aufheben"
     
    31303139msgstr "Diese Statistiken dienen vorrangig der Entwicklung und Fehlerbeseitigung."
    31313140
    3132 #: ../java/src/net/i2p/router/web/StatsGenerator.java:105
    3133 #: ../java/src/net/i2p/router/web/StatsGenerator.java:156
     3141#: ../java/src/net/i2p/router/web/StatsGenerator.java:106
     3142#: ../java/src/net/i2p/router/web/StatsGenerator.java:157
    31343143msgid "No lifetime events"
    31353144msgstr "Bisher keine Ereignisse"
    31363145
    3137 #: ../java/src/net/i2p/router/web/StatsGenerator.java:116
     3146#: ../java/src/net/i2p/router/web/StatsGenerator.java:117
    31383147msgid "frequency"
    31393148msgstr "Häufigkeit"
    31403149
    3141 #: ../java/src/net/i2p/router/web/StatsGenerator.java:120
     3150#: ../java/src/net/i2p/router/web/StatsGenerator.java:121
    31423151msgid "Rolling average events per period"
    31433152msgstr "Fortschreitender Durchschnittshäufigkeit von Ereignissen je Zeitintervall"
    31443153
    3145 #: ../java/src/net/i2p/router/web/StatsGenerator.java:124
     3154#: ../java/src/net/i2p/router/web/StatsGenerator.java:125
    31463155msgid "Highest events per period"
    31473156msgstr "höchste Anzahl an Ereignissen je Zeitintervall"
     
    31543163#. buf.append(" <i>avg interval between updates:</i> (").append(num(curFreq.getAverageInterval())).append("ms, min ");
    31553164#. buf.append(num(curFreq.getMinAverageInterval())).append("ms)");
    3156 #: ../java/src/net/i2p/router/web/StatsGenerator.java:135
     3165#: ../java/src/net/i2p/router/web/StatsGenerator.java:136
    31573166msgid "Lifetime average events per period"
    31583167msgstr "Anzahl an Ereignissen je Zeitintervall über die Lebenszeit gemittelt"
    31593168
    31603169#. Display the strict average
    3161 #: ../java/src/net/i2p/router/web/StatsGenerator.java:140
     3170#: ../java/src/net/i2p/router/web/StatsGenerator.java:141
    31623171msgid "Lifetime average frequency"
    31633172msgstr "durchschnittliche Häufigkeit über Lebenszeit"
    31643173
    3165 #: ../java/src/net/i2p/router/web/StatsGenerator.java:168
     3174#: ../java/src/net/i2p/router/web/StatsGenerator.java:144
     3175#: ../java/src/net/i2p/router/web/StatsGenerator.java:234
     3176#, java-format
     3177msgid "1 event"
     3178msgid_plural "{0} events"
     3179msgstr[0] "ein Ereignis"
     3180msgstr[1] "{0} Ereignisse"
     3181
     3182#: ../java/src/net/i2p/router/web/StatsGenerator.java:169
    31663183msgid "rate"
    31673184msgstr "Rate"
    31683185
    3169 #: ../java/src/net/i2p/router/web/StatsGenerator.java:170
     3186#: ../java/src/net/i2p/router/web/StatsGenerator.java:171
    31703187msgid "Average"
    31713188msgstr "Mittelwert"
    31723189
    3173 #: ../java/src/net/i2p/router/web/StatsGenerator.java:173
     3190#: ../java/src/net/i2p/router/web/StatsGenerator.java:174
    31743191msgid "Highest average"
    31753192msgstr "höchster Durchscnittslwert"
    31763193
    3177 #. breaking the sentence like before makes translation in my language impossible.
    31783194#: ../java/src/net/i2p/router/web/StatsGenerator.java:201
    31793195#, java-format
    3180 msgid "There were {0} event(s) in this period"
    3181 msgstr "Es gab {0} Vorkommnis(se) in dieser Zeitspanne"
    3182 
    3183 #. buf.append(' ');
     3196msgid "There was 1 event in this period."
     3197msgid_plural "There were {0} events in this period."
     3198msgstr[0] "Es gab ein Vorkommnis in dieser Zeitspanne"
     3199msgstr[1] "Es gab {0} Vorkommnisse in dieser Zeitspanne."
     3200
    31843201#: ../java/src/net/i2p/router/web/StatsGenerator.java:203
    31853202#, java-format
    3186 msgid " which ended {0} ago."
    3187 msgstr ", welche vor {0} endete."
     3203msgid "The period ended {0} ago."
     3204msgstr "Die Zeitspanne endete vor {0}."
    31883205
    31893206#: ../java/src/net/i2p/router/web/StatsGenerator.java:205
     
    32733290
    32743291#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:99
    3275 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:384
     3292#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:379
    32763293msgid "View existing tunnels and tunnel build status"
    32773294msgstr "Betrachte die existierenden Tunnel und den Status des Tunnelaufbaus"
    32783295
    32793296#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:105
    3280 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
     3297#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
    32813298msgid "Show all current peer connections"
    32823299msgstr "Zeige alle bestehenden Verbindungen zu Teilnehmern"
     
    33643381msgstr "Hilfe bei der Konfiguration Ihrer Firewall und Ihres Routers für eine optimale Leistung."
    33653382
    3366 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:231
    3367 msgid "Download"
    3368 msgstr "Herunterladen"
    3369 
     3383#. Note to translators: parameter is a version, e.g. "0.8.4"
     3384#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:232
     3385#, java-format
     3386msgid "Download {0} Update"
     3387msgstr "Aktualisierung herunterladen ({0})"
     3388
     3389#. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC"
     3390#. <br> is optional, to help the browser make the lines even in the button
     3391#. If the translation is shorter than the English, you should probably not include <br>
    33703392#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240
    3371 msgid "Download Unsigned"
    3372 msgstr "unsignierte Aktualisierung herunterladen"
    3373 
    3374 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
     3393#, java-format
     3394msgid "Download Unsigned<br>Update {0}"
     3395msgstr "unsignierte Aktualisierung herunterladen: {0}"
     3396
     3397#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
    33753398msgid "Active"
    33763399msgstr "aktiv"
    33773400
    3378 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
     3401#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
    33793402msgid "Fast"
    33803403msgstr "schnell"
    33813404
    3382 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281
     3405#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:276
    33833406msgid "High capacity"
    33843407msgstr "hohe Kapazität"
    33853408
    3386 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:293
     3409#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
    33873410msgid "Known"
    33883411msgstr "bekannt"
    33893412
    3390 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:308
     3413#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:303
    33913414msgid "Help with firewall configuration"
    33923415msgstr "Hilfe bei der Firewalleinstellung"
    33933416
    3394 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:310
     3417#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:305
    33953418msgid "Check NAT/firewall"
    33963419msgstr "Überprüfe NAT/Firewall!"
    33973420
    3398 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330
     3421#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:325
    33993422msgid "Reseed"
    34003423msgstr "Hole neue Teilnehmerinformationen"
    34013424
    3402 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:347
     3425#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342
    34033426msgid "Configure router bandwidth allocation"
    34043427msgstr "Konfigurieren der Bandbreitenzuweisung des Routers"
    34053428
    3406 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349
     3429#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:344
    34073430msgid "Bandwidth in/out"
    34083431msgstr "Bandbreite ein-/ausgehend"
    34093432
    3410 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:369
     3433#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:364
    34113434msgid "Total"
    34123435msgstr "gesamt"
    34133436
    3414 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
     3437#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:371
    34153438msgid "Used"
    34163439msgstr "genutzt"
    34173440
    3418 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:391
     3441#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386
    34193442msgid "Exploratory"
    34203443msgstr "Erkundung"
    34213444
    3422 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
     3445#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:398
    34233446msgid "Participating"
    34243447msgstr "teilnehmend an"
    34253448
    3426 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:409
     3449#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:404
    34273450msgid "Share ratio"
    3428 msgstr ""
    3429 "Verhältnis \n"
    3430 " fremder/eigenen Hops"
    3431 
    3432 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
     3451msgstr "Kooperationsfaktor"
     3452
     3453#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:410
    34333454msgid "What's in the router's job queue?"
    34343455msgstr "Was ist in der Aufgabenliste des Routers?"
    34353456
    3436 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
     3457#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
    34373458msgid "Congestion"
    34383459msgstr "Aufgaben"
    34393460
    3440 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:422
     3461#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
    34413462msgid "Job lag"
    34423463msgstr "Aufgabenverzug"
    34433464
    3444 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:428
     3465#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:423
    34453466msgid "Message delay"
    34463467msgstr "Nachrichtenverzug"
    34473468
    3448 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:434
     3469#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:429
    34493470msgid "Tunnel lag"
    34503471msgstr "Tunnelverzug"
    34513472
    3452 #: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
     3473#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
    34533474msgid "Backlog"
    34543475msgstr "Anfragenrückstau"
     
    34643485
    34653486#: ../java/src/net/i2p/router/web/SummaryHelper.java:122
    3466 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577
     3487#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595
    34673488msgid "OK"
    34683489msgstr "OK"
     
    34893510
    34903511#: ../java/src/net/i2p/router/web/SummaryHelper.java:133
    3491 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581
     3512#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599
    34923513msgid "Firewalled"
    34933514msgstr "Firewall aktiv"
     
    35103531
    35113532#: ../java/src/net/i2p/router/web/SummaryHelper.java:148
    3512 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597
     3533#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615
    35133534msgid "Testing"
    35143535msgstr "Teste"
     
    35533574msgid "Building tunnels"
    35543575msgstr "Baue Tunnel auf"
    3555 
    3556 #: ../java/src/net/i2p/router/web/SummaryHelper.java:410
    3557 msgid "none"
    3558 msgstr "keine"
    35593576
    35603577#. tunnel nicknames, taken from i2ptunnel.config so they will display
     
    35923609#: ../java/src/net/i2p/router/web/TunnelRenderer.java:41
    35933610#: ../java/src/net/i2p/router/web/TunnelRenderer.java:63
    3594 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:287
     3611#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:309
    35953612msgid "configure"
    35963613msgstr "ändern"
     3614
     3615#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61
     3616msgid "Client tunnels for"
     3617msgstr "Kliententunnel für"
    35973618
    35983619#: ../java/src/net/i2p/router/web/TunnelRenderer.java:65
     
    37203741msgstr "Gesamt"
    37213742
    3722 #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:66
    3723 #: ../java/src/net/i2p/router/web/UpdateHandler.java:142
    3724 #: ../java/src/net/i2p/router/web/UpdateHandler.java:237
     3743#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:67
     3744#: ../java/src/net/i2p/router/web/UpdateHandler.java:143
     3745#: ../java/src/net/i2p/router/web/UpdateHandler.java:238
    37253746msgid "Updating"
    37263747msgstr "Aktualisiere"
    37273748
    37283749#. Process the .sud/.su2 file
    3729 #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:88
    3730 #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111
    3731 #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:116
    3732 #: ../java/src/net/i2p/router/web/UpdateHandler.java:261
    3733 #: ../java/src/net/i2p/router/web/UpdateHandler.java:286
     3750#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:89
     3751#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112
     3752#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:117
     3753#: ../java/src/net/i2p/router/web/UpdateHandler.java:262
     3754#: ../java/src/net/i2p/router/web/UpdateHandler.java:287
    37343755msgid "Update downloaded"
    37353756msgstr "Aktualisierung heruntergeladen"
    37363757
    3737 #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:91
     3758#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:92
    37383759#, java-format
    37393760msgid "Unsigned update file from {0} is corrupt"
    37403761msgstr "Unsignierte Aktualisierungsdatei von {0} ist fehlerhaft"
    37413762
    3742 #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111
    3743 #: ../java/src/net/i2p/router/web/UpdateHandler.java:281
     3763#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:112
     3764#: ../java/src/net/i2p/router/web/UpdateHandler.java:282
    37443765msgid "Restarting"
    37453766msgstr "Starte neu"
    37463767
    3747 #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118
    3748 #: ../java/src/net/i2p/router/web/UpdateHandler.java:288
     3768#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:119
     3769#: ../java/src/net/i2p/router/web/UpdateHandler.java:289
    37493770msgid "Click Restart to install"
    37503771msgstr "Klicken Sie auf Neustart zum Installieren der"
    37513772
    3752 #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120
    3753 #: ../java/src/net/i2p/router/web/UpdateHandler.java:290
     3773#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121
     3774#: ../java/src/net/i2p/router/web/UpdateHandler.java:291
    37543775msgid "Click Shutdown and restart to install"
    37553776msgstr "Klicken Sie zum Installieren auf Herunterfahren und Neustarten"
    37563777
    3757 #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121
    3758 #: ../java/src/net/i2p/router/web/UpdateHandler.java:292
     3778#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:122
     3779#: ../java/src/net/i2p/router/web/UpdateHandler.java:293
    37593780#, java-format
    37603781msgid "Version {0}"
    37613782msgstr "Version {0}"
    37623783
    3763 #: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126
     3784#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:127
    37643785#, java-format
    37653786msgid "Failed copy to {0}"
    37663787msgstr "Kopieren nach {0} fehlgeschlagen"
    37673788
    3768 #: ../java/src/net/i2p/router/web/UpdateHandler.java:184
     3789#: ../java/src/net/i2p/router/web/UpdateHandler.java:185
    37693790#, java-format
    37703791msgid "Updating from {0}"
    37713792msgstr "Aktualisiere von {0}"
    37723793
    3773 #: ../java/src/net/i2p/router/web/UpdateHandler.java:253
     3794#: ../java/src/net/i2p/router/web/UpdateHandler.java:254
    37743795#, java-format
    37753796msgid "No new version found at {0}"
    37763797msgstr "Keine neue Version unter {0} gefunden"
    37773798
    3778 #: ../java/src/net/i2p/router/web/UpdateHandler.java:281
     3799#: ../java/src/net/i2p/router/web/UpdateHandler.java:282
    37793800msgid "Update verified"
    37803801msgstr "Aktualisierung verifiziert"
    37813802
    3782 #: ../java/src/net/i2p/router/web/UpdateHandler.java:307
     3803#: ../java/src/net/i2p/router/web/UpdateHandler.java:308
    37833804#, java-format
    37843805msgid "Transfer failed from {0}"
     
    40324053msgstr "Anzahl aktiver Teilnehmer mit denen wir reden"
    40334054
    4034 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106
     4055#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:112
    40354056msgid "config networking"
    40364057msgstr "Netzwerkeinstellungen"
    40374058
     4059#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:223
     4060#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:224
     4061#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:223
     4062#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:223
     4063#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:237
     4064#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:223
     4065#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:223
     4066#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:223
     4067#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:224
     4068#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:223
     4069#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:223
     4070#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:223
     4071#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:226
     4072#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:234
     4073#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:223
     4074#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:226
     4075#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:226
     4076#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:226
     4077#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:226
     4078#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:231
     4079#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:222
     4080#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:222
     4081#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:222
     4082#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:226
     4083#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:226
     4084#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:222
     4085#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:222
     4086#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:222
     4087#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:222
     4088#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:222
     4089msgid "Summary Bar"
     4090msgstr "Schnellübersicht"
     4091
    40384092#. We have intl defined when this is included, but not when compiled standalone.
    4039 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:216
    4040 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:217
    4041 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:216
    4042 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:216
    4043 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:230
    4044 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:216
    4045 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:216
    4046 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:216
    4047 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:217
    4048 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:216
    4049 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:216
    4050 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:216
    4051 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:219
    4052 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:227
    4053 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:216
    4054 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:219
    4055 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:219
    4056 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:219
    4057 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:219
    4058 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:222
    4059 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:215
    4060 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:215
    4061 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:215
    4062 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:219
    4063 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:219
    4064 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:215
    4065 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:215
    4066 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:215
    4067 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:234
    4068 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:215
     4093#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:236
     4094#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:237
     4095#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:236
     4096#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:236
     4097#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:250
     4098#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:236
     4099#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:236
     4100#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:236
     4101#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:237
     4102#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:236
     4103#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:236
     4104#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:236
     4105#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:239
     4106#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:247
     4107#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:236
     4108#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:239
     4109#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:239
     4110#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:239
     4111#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:239
     4112#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:244
     4113#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:235
     4114#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:235
     4115#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:235
     4116#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:239
     4117#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:239
     4118#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:235
     4119#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:235
     4120#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:235
     4121#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:242
     4122#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:235
     4123#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:235
    40694124msgid "Refresh (s)"
    40704125msgstr "Auffrischen {s}"
    40714126
    40724127#. ditto
    4073 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:220
    4074 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:221
    4075 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:220
    4076 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:220
    4077 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:234
    4078 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:220
    4079 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:220
    4080 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:220
    4081 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:221
    4082 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:220
    4083 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:220
    4084 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:220
    4085 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:223
    4086 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:231
    4087 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:220
    4088 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:223
    4089 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:223
    4090 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:223
    4091 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:223
    4092 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:226
    4093 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:219
    4094 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:219
    4095 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:219
    4096 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:223
    4097 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:223
    4098 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:219
    4099 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:219
    4100 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:219
    4101 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:237
    4102 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:219
     4128#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240
     4129#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:241
     4130#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:240
     4131#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:240
     4132#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:254
     4133#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:240
     4134#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:240
     4135#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:240
     4136#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:241
     4137#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:240
     4138#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:240
     4139#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:240
     4140#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:243
     4141#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:251
     4142#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:240
     4143#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005far_jsp.java:243
     4144#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fnl_jsp.java:243
     4145#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:243
     4146#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:243
     4147#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:248
     4148#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:239
     4149#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:239
     4150#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:239
     4151#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:243
     4152#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:243
     4153#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:239
     4154#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:239
     4155#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:239
     4156#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:245
     4157#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:239
     4158#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:239
    41034159msgid "Enable"
    41044160msgstr "Aktiviere"
    41054161
    4106 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:240
     4162#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:262
    41074163msgid "I2P Network Configuration"
    41084164msgstr "I2P-Netzwerkeinstellungen"
    41094165
    4110 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:298
     4166#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:316
    41114167msgid "Bandwidth limiter"
    41124168msgstr "Bandbreitenbegrenzer"
    41134169
    4114 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:300
     4170#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318
    41154171msgid "I2P will work best if you configure your rates to match the speed of your internet connection."
    41164172msgstr ""
     
    41184174"dass die Geschwindigkeit zu Ihrer Internetverbindung passt."
    41194175
    4120 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:304
     4176#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:322
    41214177msgid "KBps In"
    41224178msgstr "kByte/s eingehend"
    41234179
    4124 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:318
     4180#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:336
    41254181msgid "KBps Out"
    41264182msgstr "kByte/s ausgehend"
    41274183
    4128 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:334
     4184#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:352
    41294185msgid "Share"
    41304186msgstr "für andere zur Benutzung freigegeben"
    41314187
    4132 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:341
    4133 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309
    4134 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:304
     4188#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:359
     4189#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:327
     4190#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:326
    41354191msgid "NOTE"
    41364192msgstr "HINWEIS"
    41374193
    4138 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:343
     4194#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:361
    41394195#, java-format
    41404196msgid "You have configured I2P to share only {0} KBps."
    41414197msgstr "Sie haben I2P angewiesen, nur {0} kbit/s mit anderen zu teilen."
    41424198
    4143 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346
     4199#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:364
    41444200msgid "I2P requires at least 12KBps to enable sharing. "
    41454201msgstr "I2P benötigt mindestens 12 kbit/s, um das Durchleiten zu ermöglichen. "
    41464202
    4147 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347
     4203#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:365
    41484204msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. "
    41494205msgstr ""
     
    41514207"indem Sie mehr Bandbreite freigeben. "
    41524208
    4153 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:348
     4209#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:366
    41544210msgid "It improves your anonymity by creating cover traffic, and helps the network."
    41554211msgstr ""
     
    41574213"es hilft zudem dem Netzwerk."
    41584214
    4159 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:351
     4215#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:369
    41604216#, java-format
    41614217msgid "You have configured I2P to share {0} KBps."
    41624218msgstr "Sie haben I2P konfiguriert, {0} kBytes/s durchzuleiten. "
    41634219
    4164 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:354
     4220#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:372
    41654221msgid "The higher the share bandwidth the more you improve your anonymity and help the network."
    41664222msgstr ""
     
    41684224"Ihre Anonymität, und darüber hinaus hilft es dem Netz. "
    41694225
    4170 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:358
    4171 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:514
    4172 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305
    4173 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:327
    4174 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:403
    4175 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:321
    4176 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:339
    4177 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:348
    4178 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:375
    4179 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:342
    4180 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:322
    4181 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:365
     4226#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376
     4227#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:532
     4228#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:323
     4229#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:347
     4230#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:425
     4231#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:339
     4232#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:357
     4233#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:366
     4234#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:395
     4235#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:360
     4236#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:351
     4237#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:383
    41824238msgid "Cancel"
    41834239msgstr "Abbruch"
    41844240
    4185 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:375
     4241#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:393
    41864242msgid "IP and Transport Configuration"
    41874243msgstr "IP- und Transport-Einstellungen"
    41884244
    4189 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:377
    4190 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:395
    4191 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:306
     4245#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395
     4246#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:417
     4247#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:324
    41924248msgid "The default settings will work for most people."
    41934249msgstr "Die Standardeinstellungen funktionieren für die meisten Anwender."
    41944250
    4195 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:379
     4251#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:397
    41964252msgid "There is help below."
    41974253msgstr "Weiter unten finden Sie eine Hilfe."
    41984254
    4199 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:381
     4255#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399
    42004256msgid "UPnP Configuration"
    42014257msgstr "UPnP-Einstellungen"
    42024258
    4203 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:385
     4259#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403
    42044260msgid "Enable UPnP to open firewall ports"
    42054261msgstr "Aktiviere UPnP, um Ports in der Firewall freizuschalten"
    42064262
    4207 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:387
     4263#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:405
    42084264msgid "UPnP status"
    42094265msgstr "UPnP-Status"
    42104266
    4211 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:389
     4267#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407
    42124268msgid "IP Configuration"
    42134269msgstr "IP-Einstellungen"
    42144270
    4215 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:391
    4216 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461
     4271#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:409
     4272#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
    42174273msgid "Externally reachable hostname or IP address"
    42184274msgstr "Extern erreichbarer Hostname oder IP-Adresse"
    42194275
    4220 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:395
     4276#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:413
    42214277msgid "Use all auto-detect methods"
    42224278msgstr "Alle automatisch erkannten Modi benutzen"
    42234279
    4224 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:399
     4280#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417
    42254281msgid "Disable UPnP IP address detection"
    42264282msgstr "UPnP IP-Adresserkennung deaktivieren"
    42274283
    4228 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:403
     4284#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:421
    42294285msgid "Ignore local interface IP address"
    42304286msgstr "IP-Adresse der lokalen Schnittstelle ignorieren"
    42314287
    4232 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:407
     4288#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:425
    42334289msgid "Use SSU IP address detection only"
    42344290msgstr "Nur die SSU-Adresserkennung benutzen"
    42354291
    4236 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:411
    4237 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
     4292#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:429
     4293#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
    42384294msgid "Specify hostname or IP"
    42394295msgstr "Hostnamen oder IP angeben"
    42404296
    4241 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:417
     4297#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435
    42424298msgid "Select Interface"
    42434299msgstr "Schnittstelle auswählen"
    42444300
    4245 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:431
     4301#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:449
    42464302msgid "Hidden mode - do not publish IP"
    42474303msgstr "Versteckter Modus - veröffentlicht die IP-Adresse nicht"
    42484304
    4249 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:433
     4305#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:451
    42504306msgid "(prevents participating traffic)"
    42514307msgstr "(verhindert die Teilnahme an fremden Tunneln)"
    42524308
    4253 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:435
     4309#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:453
    42544310msgid "Action when IP changes"
    42554311msgstr "Aktion wenn sich die IP-Adresse ändert"
    42564312
    4257 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:439
     4313#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:457
    42584314msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity"
    42594315msgstr "Laptop Modus - ändert zur Erhöhung der Anonymität Ihre Router-Identifikation und den UDP-Port, wenn sich Ihre IP ändert"
    42604316
    4261 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:441
     4317#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459
    42624318msgid "Experimental"
    42634319msgstr "experimentell"
    42644320
    4265 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443
     4321#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:461
    42664322msgid "UDP Configuration:"
    42674323msgstr "UDP-Einstellungen:"
    42684324
    4269 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:445
     4325#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:463
    42704326msgid "UDP port:"
    42714327msgstr "UDP-Port:"
    42724328
    4273 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:459
     4329#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:477
    42744330msgid "TCP Configuration"
    42754331msgstr "TCP-Einstellungen:"
    42764332
    4277 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:465
     4333#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:483
    42784334msgid "Use auto-detected IP address"
    42794335msgstr "Automatisch erkannte IP-Adresse benutzen"
    42804336
    4281 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:467
    4282 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
     4337#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485
     4338#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517
    42834339msgid "currently"
    42844340msgstr "derzeit"
    42854341
    4286 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:471
     4342#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489
    42874343msgid "if we are not firewalled"
    42884344msgstr "wenn keine Firewall aktiv ist"
    42894345
    4290 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:475
     4346#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493
    42914347msgid "Always use auto-detected IP address (Not firewalled)"
    42924348msgstr "Immer die automatisch erkannte IP-Adresse benutzen (bei inaktiver Firewall)"
    42934349
    4294 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485
     4350#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:503
    42954351msgid "Disable inbound (Firewalled)"
    42964352msgstr "Deaktiviere eingehende Verbindungen (Firewall ist aktiv)"
    42974353
    4298 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:489
     4354#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:507
    42994355msgid "Completely disable"
    43004356msgstr "Komplett deaktivieren"
    43014357
    4302 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491
     4358#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509
    43034359msgid "(select only if behind a firewall that throttles or blocks outbound TCP)"
    43044360msgstr ""
     
    43064362"TCP-Verkehr blokiertt oder begrenzt)"
    43074363
    4308 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:493
     4364#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511
    43094365msgid "Externally reachable TCP port"
    43104366msgstr "Extern erreichbarer TCP-Port"
    43114367
    4312 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
     4368#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:515
    43134369msgid "Use the same port configured for UDP"
    43144370msgstr "Den selben Port wie für UDP benutzen"
    43154371
    4316 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:505
     4372#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:523
    43174373msgid "Specify Port"
    43184374msgstr "Gib den Port an"
    43194375
    4320 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:509
    4321 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:339
    4322 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:330
     4376#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527
     4377#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:357
     4378#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:348
    43234379msgid "Note"
    43244380msgstr "Hinweis"
    43254381
    4326 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:512
     4382#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:530
    43274383msgid "Changing these settings will restart your router."
    43284384msgstr "Veränderungen an diesen Werten bewirken einen Neustart des Routers."
    43294385
    4330 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:518
     4386#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536
    43314387msgid "Configuration Help"
    43324388msgstr "Konfigurationshilfe"
    43334389
    4334 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:520
    4335 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569
     4390#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538
     4391#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587
    43364392msgid "While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP."
    43374393msgstr "I2P funktioniert auch hinter den meisten Firewalls, aber die Geschwindigkeit und Integration ins I2P-Netz erhöhen sich, wenn der I2P-Port in der Firewall für TCP und UDP freigegeben und auf Ihren Computer weitergeleitet wird."
    43384394
    4339 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:522
     4395#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540
    43404396msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you."
    43414397msgstr ""
     
    43434399"TCP- und UDP-Pakete Ihren Computer unverändert erreichen."
    43444400
    4345 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:524
     4401#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542
    43464402msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic."
    43474403msgstr ""
     
    43494405"Plug and Play) und UDP-Weiterleitung mit Hilfe der „SSU-Hilfsrouter“ eingebaut."
    43504406
    4351 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:526
     4407#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544
    43524408msgid "Most of the options above are for special situations, for example where UPnP does not work correctly, or a firewall not under your control is doing harm."
    43534409msgstr ""
     
    43564412"kann und Probleme bereitet."
    43574413
    4358 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:528
     4414#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546
    43594415msgid "Certain firewalls such as symmetric NATs may not work well with I2P."
    43604416msgstr ""
     
    43624418"nicht gut mit I2P zusammen."
    43634419
    4364 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:537
     4420#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555
    43654421msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports."
    43664422msgstr ""
     
    43684424"die extern erreichbare IP-Adresse zu ermitteln und die Ports weiterzuleiten."
    43694425
    4370 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:539
     4426#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557
    43714427msgid "UPnP support is beta, and may not work for any number of reasons"
    43724428msgstr ""
     
    43744430"Gründen nicht funktionieren"
    43754431
    4376 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:541
     4432#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559
    43774433msgid "No UPnP-compatible device present"
    43784434msgstr "Kein UPnP-fähiges Gerät gefunden"
    43794435
    4380 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:543
     4436#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561
    43814437msgid "UPnP disabled on the device"
    43824438msgstr "UPnP ist für dieses Gerät deaktiviert"
    43834439
    4384 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:545
     4440#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563
    43854441msgid "Software firewall interference with UPnP"
    43864442msgstr "Die Software-Firewall stört UPnP"
    43874443
    4388 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:547
     4444#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565
    43894445msgid "Bugs in the device's UPnP implementation"
    43904446msgstr "Fehlerhafte UPnP-Integration im Gerät"
    43914447
    4392 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:549
     4448#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567
    43934449msgid "Multiple firewall/routers in the internet connection path"
    43944450msgstr "Mehrere Firewalls / Router in der Verbindung zum Internet"
    43954451
    4396 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:551
     4452#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:569
    43974453msgid "UPnP device change, reset, or address change"
    43984454msgstr "UPnP-Gerät geändert, neugestartet oder mit geänderter Adresse"
    43994455
    4400 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:553
     4456#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571
    44014457msgid "Review the UPnP status here."
    44024458msgstr "Überprüfen Sie hier den UPnP-Status."
    44034459
    4404 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:555
     4460#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:573
    44054461msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect."
    44064462msgstr ""
     
    44084464"erfordert einen Routerneustart um wirksam zu werden."
    44094465
    4410 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:557
     4466#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575
    44114467msgid "Hostnames entered above will be published in the network database."
    44124468msgstr "Oben eingegebene Hostnamen werden in der Netzwerk-Datenbank veröffentlicht."
    44134469
    4414 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:559
     4470#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:577
    44154471msgid "They are <b>not private</b>."
    44164472msgstr "Sie sind <b>nicht geheim</b>."
    44174473
    4418 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:561
     4474#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579
    44194475msgid "Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1."
    44204476msgstr ""
     
    44224478"127.0.0.1 oder 192.168.1.1 an!"
    44234479
    4424 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:563
     4480#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:581
    44254481msgid "If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially."
    44264482msgstr ""
     
    44284484"wird sich Ihre Netzwerk-Performance erheblich verschlechtern."
    44294485
    4430 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:565
     4486#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583
    44314487msgid "When in doubt, leave the settings at the defaults."
    44324488msgstr "Wenn Sie Zweifel haben, lassen Sie die Einstellungen auf den Standardwerten."
    44334489
    4434 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:567
     4490#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585
    44354491msgid "Reachability Help"
    44364492msgstr "Hilfe zur Erreichbarkeit"
    44374493
    4438 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:572
     4494#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:590
    44394495msgid "If you think you have opened up your firewall and I2P still thinks you are firewalled, remember that you may have multiple firewalls, for example both software packages and external hardware routers."
    44404496msgstr ""
     
    44434499"- zum Beispiel sowohl Software- als auch externer Hardware-Router - haben."
    44444500
    4445 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:575
     4501#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593
    44464502msgid "If there is an error, the <a href=\"logs.jsp\">logs</a> may also help diagnose the problem."
    44474503msgstr ""
     
    44494505"das Problem zu diagnostizieren."
    44504506
    4451 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:579
     4507#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:597
    44524508msgid "Your UDP port does not appear to be firewalled."
    44534509msgstr "Ihr UDP-Port wird anscheinend nicht von der Firewall geblockt."
    44544510
    4455 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:583
     4511#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:601
    44564512msgid "Your UDP port appears to be firewalled."
    44574513msgstr "Ihr UDP-Port wird anscheinend von der Firewall geblockt."
    44584514
    4459 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:585
     4515#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603
    44604516msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error."
    44614517msgstr ""
     
    44634519"Anzeige gelegentlich fehlerhaft."
    44644520
    4465 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:587
     4521#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605
    44664522msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port."
    44674523msgstr ""
     
    44694525"sowohl der externen wie auch der internen Firewall, geöffnet sind."
    44704526
    4471 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:589
     4527#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607
    44724528msgid "I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections."
    44734529msgstr ""
     
    44764532"\"Hilfsrouter\", um eingehende Verbindungen zu übertragen."
    44774533
    4478 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:591
     4534#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609
    44794535msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)."
    44804536msgstr "Falls Sie Ihre Firewall(s) öffnen, helfen Sie dem Netzwerk mehr und gleichzeitig erhöhen Sie Ihre Anonymität durch die Teilnahme an fremden Tunneln."
    44814537
    4482 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:593
     4538#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611
    44834539msgid "If you think you have already done so, remember that you may have both a hardware and a software firewall, or be behind an additional, institutional firewall you cannot control."
    44844540msgstr "Falls Sie dies schon getan haben, denken Sie bitte daran, dass Sie eine Hardware- und eine Software-Firewall haben könnten, oder aber hinter einer Firewall sind, die Sie nicht ändern können (z.B. seitens Ihres Providers)."
    44854541
    4486 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:595
     4542#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613
    44874543msgid "Also, some routers cannot correctly forward both TCP and UDP on a single port, or may have other limitations or bugs that prevent them from passing traffic through to I2P."
    44884544msgstr "Auch können manche Router nicht TCP und UDP korrekt auf dem selben Port weiterleiten, oder haben andere Beschränkungen oder Fehler, die die Portweiterleitung an den I2P-Router behindern."
    44894545
    4490 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:599
     4546#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617
    44914547msgid "The router is currently testing whether your UDP port is firewalled."
    44924548msgstr "Der Router testet gerade, ob Ihr UDP-Port offen ist."
    44934549
    4494 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:603
     4550#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621
    44954551msgid "The router is not configured to publish its address, therefore it does not expect incoming connections."
    44964552msgstr "Die Einstellungen des Routers verhindern die Veröffentlichung der Adresse, deswegen akzeptiert er keine eingehenden Verbindungen."
    44974553
    4498 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:605
     4554#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623
    44994555msgid "WARN - Firewalled and Fast"
    45004556msgstr "WARNUNG: Firewall aktiv und schnell"
    45014557
    4502 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:607
     4558#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625
    45034559msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled."
    45044560msgstr "Sie haben I2P angewiesen, mehr als 128 kbit/s Bandbreite zu teilen, aber leider sind Sie hinter einer Firewall."
    45054561
    4506 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:609
     4562#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627
    45074563msgid "While I2P will work fine in this configuration, if you really have over 128KBps of bandwidth to share, it will be much more helpful to the network if you open your firewall."
    45084564msgstr "I2P funktioniert zwar auch mit dieser Einstellung, falls Sie jedoch wirklich über mehr als 128 kbit/s Bandbreite zum Teilen verfügen, sind Sie mit einer offenen Firewall viel hilfreicher für das Netzwerk."
    45094565
    4510 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:611
     4566#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629
    45114567msgid "WARN - Firewalled and Floodfill"
    45124568msgstr "WARNUNG: Firewall und Floodfillfunktion aktiv"
    45134569
    4514 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:613
     4570#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:631
    45154571msgid "You have configured I2P to be a floodfill router, but you are firewalled."
    45164572msgstr "Sie haben I2P als Floodfill-Router eingerichtet, jedoch sind sie hinter einer Firewall."
    45174573
    4518 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:615
     4574#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:633
    45194575msgid "For best participation as a floodfill router, you should open your firewall."
    45204576msgstr "Für die beste Teilnahme als Floodfill-Router, sollten Sie Ihre Firewall öffnen."
    45214577
    4522 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:617
     4578#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:635
    45234579msgid "WARN - Firewalled with Inbound TCP Enabled"
    45244580msgstr "WARNUNG: von Firewall geblockt und ankommendes TCP aktiviert"
    45254581
    4526 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:619
     4582#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:637
    45274583msgid "You have configured inbound TCP, however your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well."
    45284584msgstr "Sie haben eingehendes TCP konfiguriert, jedoch ist ihr UDP-Port hinter einer Firewall. Deswegen ist es wahrscheinlich, dass Ihr TCP-Port auch hinter einer Firewall ist."
    45294585
    4530 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:621
     4586#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:639
    45314587msgid "If your TCP port is firewalled with inbound TCP enabled, routers will not be able to contact you via TCP, which will hurt the network."
    45324588msgstr "Falls Ihr TCP Port gesperrt ist und Sie \"eingehendes TCP\" aktiviert haben, werden andere Router Sie nicht via TCP erreichen können. Dies schadet dem Netzwerk."
    45334589
    4534 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:623
     4590#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:641
    45354591msgid "Please open your firewall or disable inbound TCP above."
    45364592msgstr "Bitte öffnen Sie Ihre Firewall oder schalten Sie ankommendes TCP oben aus"
    45374593
    4538 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:625
     4594#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:643
    45394595msgid "WARN - Firewalled with UDP Disabled"
    45404596msgstr "WARNUNG: Firewall aktiv und UDP deaktiviert"
    45414597
    4542 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:627
     4598#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:645
    45434599msgid "You have configured inbound TCP, however you have disabled UDP."
    45444600msgstr "Sie haben eingehendes TCP aktiviert, jedoch UDP deaktiviert."
    45454601
    4546 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:629
     4602