\n");
+#. tunnel depth
+#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87
+msgid "Length"
+msgstr "Lengte"
+
+#. tunnel depth variance
+#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104
+msgid "Randomization"
+msgstr "Randomisatie"
+
+#. tunnel quantity
+#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128
+msgid "Quantity"
+msgstr "Hoeveelheid"
+
+#. tunnel backup quantity
+#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145
+msgid "Backup quantity"
+msgstr "Backup hoeveelheid"
+
+#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167
+msgid "Inbound options"
+msgstr "Inkomende opties"
+
+#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180
+msgid "Outbound options"
+msgstr "Uitgaande opties"
+
+#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:31
+msgid "Theme change saved."
+msgstr "Thema wijziging opgeslagen."
+
+#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:33
+msgid "Refresh the page to view."
+msgstr "Ververs de te bekijken pagina."
+
+#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51
+msgid "English"
+msgstr "Engels"
+
+#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51
+msgid "French"
+msgstr "Frans"
+
+#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51
+msgid "German"
+msgstr "Duits"
+
+#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
+msgid "Chinese"
+msgstr "Chinees"
+
+#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
+msgid "Dutch"
+msgstr "Nederlands"
+
+#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
+msgid "Russian"
+msgstr "Russies"
+
+#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
+msgid "Swedish"
+msgstr "Zweeds"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:88
+msgid "Update available, attempting to download now"
+msgstr "Update beschikbaar, probeer nu te downloaden"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:90
+msgid "Update available, click button on left to download"
+msgstr "Update beschikbaar, klik op de linker knop om te downloaden"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:96
+msgid "No update available"
+msgstr "Geen update beschikbaar"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:104
+msgid "Updating news URL to"
+msgstr "Updaten nieuws URL in"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:112
+msgid "Updating proxy host to"
+msgstr "Updaten proxy host in"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120
+msgid "Updating proxy port to"
+msgstr "Updaten proxy poort in"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:133
+msgid "Updating refresh frequency to"
+msgstr "Updaten vernieuw frequentie in"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:140
+msgid "Updating update policy to"
+msgstr "Updaten update regels in"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:149
+msgid "Updating update URLs."
+msgstr "Updaten update URLs."
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+msgid "Updating trusted keys."
+msgstr "Updaten vertrouwde sleutels."
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:166
+msgid "Updating unsigned update URL to"
+msgstr "Updaten niet-ondertekende update URL in"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88
+#: ../java/src/net/i2p/router/web/GraphHelper.java:138
+msgid "Never"
+msgstr "Nooit"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:90
+msgid "Every"
+msgstr "Elke"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:108
+msgid "Notify only"
+msgstr "Alleen melden"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:115
+msgid "Download and verify only"
+msgstr "Download en alleen controlleren"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:123
+msgid "Download, verify, and restart"
+msgstr "Download, controlleer en herstart"
+
+#: ../java/src/net/i2p/router/web/FormHandler.java:163
+msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit."
+msgstr "Ongeldig formulier verzonden, mogelijk omdat je de 'terug' of 'vernieuw' knop in je browser hebt gebruikt. Probeer opnieuw te verzenden."
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:82
+msgid "Combined bandwidth graph"
+msgstr "Gecombineerde bandbreedte grafiek"
+
+#. e.g. "statname for 60m"
+#: ../java/src/net/i2p/router/web/GraphHelper.java:96
+#, java-format
+msgid "{0} for {1}"
+msgstr "{0} voor {1}"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:130
+msgid "Configure Graph Display"
+msgstr "Configureer Grafiek Weergave"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:130
+msgid "Select Stats"
+msgstr "Selecteer Statistieken"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:132
+msgid "Periods"
+msgstr "Perioden"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:133
+msgid "Plot averages"
+msgstr "Teken gemiddelden"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:134
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:332
+msgid "or"
+msgstr "of"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:134
+msgid "plot events"
+msgstr "teken gebeurtenissen"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:135
+msgid "Image sizes"
+msgstr "Afbeelding grootte"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:135
+msgid "width"
+msgstr "breedte"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:136
+msgid "height"
+msgstr "hoogte"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:136
+#: ../java/src/net/i2p/router/web/GraphHelper.java:137
+msgid "pixels"
+msgstr "pixels"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:138
+msgid "Refresh delay"
+msgstr "Ververs vertraging"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:138
+msgid "hour"
+msgstr "uur"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:138
+msgid "minute"
+msgstr "minuut"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:138
+msgid "minutes"
+msgstr "minuten"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:139
+msgid "Redraw"
+msgstr "Vernieuw"
+
+#: ../java/src/net/i2p/router/web/LogsHelper.java:13
+#: ../java/src/net/i2p/router/web/LogsHelper.java:37
+msgid "File location"
+msgstr "Bestands lokatie"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:77
+msgid "Network Database RouterInfo Lookup"
+msgstr "Netwerk Database RouterInfo Lookup"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:92
+#: ../java/strings/Strings.java:68
+msgid "Router"
+msgstr "Router"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:92
+msgid "not found in network database"
+msgstr "niet gevonden in netwerk database"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:104
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:212
+msgid "Network Database Contents"
+msgstr "Inhoud Netwerk Database"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+msgid "View RouterInfo"
+msgstr "Bekijk RouterInfo"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:106
+msgid "LeaseSets"
+msgstr "LeaseSets"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:128
+msgid "LeaseSet"
+msgstr "LeaseSet"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:130
+msgid "Local"
+msgstr "Lokaal"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:132
+msgid "Unpublished"
+msgstr "Niet-gepubliceerd"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:133
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:140
+msgid "Destination"
+msgstr "Bestemming"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:150
+#, java-format
+msgid "Expires in {0}"
+msgstr "Verloopt in {0}"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:152
+#, java-format
+msgid "Expired {0} ago"
+msgstr "Verliep {0} geleden"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:164
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
+msgid "Gateway"
+msgstr "Gateway"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:164
+msgid "Lease"
+msgstr "Lease"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:166
+msgid "Tunnel"
+msgstr "Tunnel"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:212
+msgid "View LeaseSets"
+msgstr "Bekijk LeaseSets"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:214
+msgid "Not initialized"
+msgstr "Niet geïnitialiseerd"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:223
+msgid "Routers"
+msgstr "Routers"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:225
+msgid "Show all routers"
+msgstr "Bekijk alle routers"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:227
+msgid "Show all routers with full stats"
+msgstr "Bekijk alle routers met volledige statistieken"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:262
+msgid "Network Database Router Statistics"
+msgstr "Netwerk Database Router Statistieken"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:268
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:282
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:300
+msgid "Count"
+msgstr "Aantal"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:282
+msgid "Transports"
+msgstr "Transports"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:300
+msgid "Country"
+msgstr "Land"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:339
+msgid "Our info"
+msgstr "Onze info"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:341
+msgid "Peer info for"
+msgstr "Peer info voor"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:345
+msgid "Full entry"
+msgstr "Volledige item"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:351
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:110
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:600
+msgid "Hidden"
+msgstr "Verborgen"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:351
+msgid "Updated"
+msgstr "Geupdate"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355
+#, java-format
+msgid "{0} ago"
+msgstr "{0} geleden"
+
+#. shouldnt happen
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358
+msgid "Published"
+msgstr "Gepubliceerd"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:360
+msgid "Address(es)"
+msgstr "Adres(sen)"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:373
+msgid "cost"
+msgstr "kosten"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:397
+msgid "Hidden or starting up"
+msgstr "Verborgen of aan het opstarten"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:397
+msgid "SSU"
+msgstr "SSU"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:397
+msgid "SSU with introducers"
+msgstr "SSU met introducers"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:398
+msgid "NTCP"
+msgstr "NTCP"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:398
+msgid "NTCP and SSU"
+msgstr "NTCP en SSU"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:398
+msgid "NTCP and SSU with introducers"
+msgstr "NTCP en SSU met introducers"
+
+#: ../java/src/net/i2p/router/web/NewsFetcher.java:82
+#, java-format
+msgid "News last updated {0} ago."
+msgstr "Nieuws {0} geleden voor het laatste geupdate."
+
+#: ../java/src/net/i2p/router/web/NewsFetcher.java:88
+#, java-format
+msgid "News last checked {0} ago."
+msgstr "Nieuws {0} geleden voor het laatste gecontrolleerd."
+
+#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:77
+#, java-format
+msgid "Cannot check, plugin {0} is not installed"
+msgstr "Kan niet controlleren, plugin {0} is niet geïnstalleerd."
+
+#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:129
+#, java-format
+msgid "Checking for update of plugin {0}"
+msgstr "Controlleren op update van plugin {0}"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:154
+#, java-format
+msgid "New plugin version {0} is available"
+msgstr "Nieuwe plugin versie {0} is beschikbaar"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:156
+#, java-format
+msgid "No new version is available for plugin {0}"
+msgstr "Geen nieuwe versie beschikbaar voor plugin {0}"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:165
+#, java-format
+msgid "Update check failed for plugin {0}"
+msgstr "Update check voor plugin {0} gefaald"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:138
+msgid "Downloading plugin"
+msgstr "Downloaden van plugin"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:145
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:179
+#, java-format
+msgid "{0}B transferred"
+msgstr "{0}B ontvangen"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:151
+msgid "Plugin downloaded"
+msgstr "Plugin gedownload"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:156
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:343
+#, java-format
+msgid "Cannot create plugin directory {0}"
+msgstr "Kan plugin directory {0} niet maken"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:220
+#, java-format
+msgid "from {0}"
+msgstr "van {0}"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:175
+#, java-format
+msgid "Plugin from {0} is corrupt"
+msgstr "Plugin van {0} is corrupt"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:186
+#, java-format
+msgid "Plugin from {0} does not contain the required configuration file"
+msgstr "Plugin van {0} bevat niet het vereiste configuratie bestand"
+
+#. updateStatus("" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "");
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:199
+#, java-format
+msgid "Plugin from {0} contains an invalid key"
+msgstr "Plugin van {0} bevat een ongeldige sleutel"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:218
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:227
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:236
+#, java-format
+msgid "Plugin signature verification of {0} failed"
+msgstr "Plugin handtekening verificatie van {0} gefaald"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:251
+#, java-format
+msgid "Plugin from {0} has invalid name or version"
+msgstr "Plugin van {0} heeft ingeldige naam of versie"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:256
+#, java-format
+msgid "Plugin {0} has mismatched versions"
+msgstr "Plugin {0} heeft een verkeerde combinatie van versies"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:264
+#, java-format
+msgid "This plugin requires I2P version {0} or higher"
+msgstr "Deze plugin heeft I2P versie {0} of hoger nodig"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:272
+#, java-format
+msgid "This plugin requires Java version {0} or higher"
+msgstr "Deze plugin heeft Java versie {0} of hoger nodig"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:280
+msgid "Downloaded plugin is for new installs only, but the plugin is already installed"
+msgstr "De gedownloaded plugin is alleen voor nieuwe installaties, maar de plugin is al geïnstalleerd"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:292
+msgid "Installed plugin does not contain the required configuration file"
+msgstr "De geïnstalleerde plugin bevat het vereiste configuratie bestand niet"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:300
+msgid "Signature of downloaded plugin does not match installed plugin"
+msgstr "De handtekening van de gedownloade plugin komt niet overeen met de geïnstalleerde plugin"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:307
+#, java-format
+msgid "Downloaded plugin version {0} is not newer than installed plugin"
+msgstr "De gedownloade plugin versie {0} is niet nieuwer dan de geïnstalleerde plugin"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:314
+#, java-format
+msgid "Plugin update requires installed plugin version {0} or higher"
+msgstr "Plugin update vereist de installatie van plugin versie {0} of hoger"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:321
+#, java-format
+msgid "Plugin update requires installed plugin version {0} or lower"
+msgstr "Plugin update vereist de installatie van plugin versie {0} of lager"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:338
+msgid "Plugin is for upgrades only, but the plugin is not installed"
+msgstr "De plugin is alleen voor upgrades, maar de plugin is niet geïnstalleerd"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351
+#, java-format
+msgid "Failed to install plugin in {0}"
+msgstr "Installatie van plugin in {0} gefaald"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:358
+#, java-format
+msgid "Plugin {0} installed, router restart required"
+msgstr "Plugin {0} geïnstalleerd, router herstart nodig"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:360
+#, java-format
+msgid "Plugin {0} installed"
+msgstr "Plugin {0} geïnstalleerd"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:369
+#, java-format
+msgid "Plugin {0} installed and started"
+msgstr "Plugin {0} geïnstalleerd en gestart"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371
+#, java-format
+msgid "Plugin {0} installed but failed to start, check logs"
+msgstr "Plugin {0} geïnstalleerd maar gefaald om te starten, kijk in de logs"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373
+#, java-format
+msgid "Plugin {0} installed but failed to start"
+msgstr "Plugin {0} geïnstalleerd maar gefaald om te starten"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:383
+#, java-format
+msgid "Failed to download plugin from {0}"
+msgstr "Kan de plugin niet downloaden van {0}"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:72
+msgid "Peer Profiles"
+msgstr "Peer Profielen"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73
+#, java-format
+msgid "Showing {0} recent profiles."
+msgstr "Toon {0} recente profielen."
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75
+#, java-format
+msgid "Hiding {0} older profiles."
+msgstr "Verberg {0} oudere profielen."
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77
+#, java-format
+msgid "Hiding {0} standard profiles."
+msgstr "Verberg {0} standaard profielen."
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82
+msgid "Groups (Caps)"
+msgstr "Groupen (Caps)"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:83
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:334
+msgid "Speed"
+msgstr "Snelheid"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:84
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:253
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:338
+msgid "Capacity"
+msgstr "Capaciteit"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255
+msgid "Integration"
+msgstr "Integratie"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:86
+msgid "Status"
+msgstr "Status"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:126
+msgid "Fast, High Capacity"
+msgstr "Snel, Hoge Capaciteit"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:127
+msgid "High Capacity"
+msgstr "Hoge Capaciteit"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:128
+msgid "Standard"
+msgstr "Standaard"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:129
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:163
+msgid "Failing"
+msgstr "Gefaald"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:268
+msgid "Integrated"
+msgstr "Geïntegreerd"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:164
+msgid "Unreachable"
+msgstr "Onbereikbaar"
+
+#. hide if < 10%
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171
+msgid "Test Fails"
+msgstr "Test Faalt"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175
+msgid "profile"
+msgstr "profiel"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184
+msgid "Floodfill and Integrated Peers"
+msgstr "Floodfill en Geïntegreerde Peers"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188
+msgid "Caps"
+msgstr "Caps"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189
+msgid "Integ. Value"
+msgstr "Integ. Waarde"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190
+msgid "Last Heard About"
+msgstr "Laatst Vernomen Over"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191
+msgid "Last Heard From"
+msgstr "Laatst Vernomen Van"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192
+msgid "Last Good Send"
+msgstr "Laatste Goede Verzending"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193
+msgid "Last Bad Send"
+msgstr "Laatste Foute Verzending"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194
+msgid "10m Resp. Time"
+msgstr "10m Resp. Tijd"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195
+msgid "1h Resp. Time"
+msgstr "1u Resp. Tijd"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196
+msgid "1d Resp. Time"
+msgstr "1d Resp. Tijd"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197
+msgid "Last Good Lookup"
+msgstr "Laatste Goede Lookup"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198
+msgid "Last Bad Lookup"
+msgstr "Laatste Foute Lookup"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199
+msgid "Last Good Store"
+msgstr "Laatste Goede Opslag"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200
+msgid "Last Bad Store"
+msgstr "Laatste Foute Opslag"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201
+msgid "1h Fail Rate"
+msgstr "1u Fout Rato"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202
+msgid "1d Fail Rate"
+msgstr "1d Four Rato"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250
+msgid "Thresholds"
+msgstr "Drempelwaarden"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252
+msgid "fast peers"
+msgstr "snelle peers"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254
+msgid "high capacity peers"
+msgstr "hoge capaciteits peers"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256
+msgid " well integrated peers"
+msgstr " goed geïntegreerde peers"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258
+msgid "as determined by the profile organizer"
+msgstr "zoals bepaald door de profiel organisator"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258
+msgid "groups"
+msgstr "groepen"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
+msgid "capabilities in the netDb, not used to determine profiles"
+msgstr "capaciteiten in de netDb, niet gebruikt om profielen te bepalen"
+
+#. capabilities
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
+#: ../java/strings/Strings.java:81
+msgid "caps"
+msgstr "caps"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
+msgid "peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel"
+msgstr "piek doorvoer (bytes per seconde) over een 1 minuut periode zoals de peer heeft ondervonden in een enkele tunnel"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
+msgid "speed"
+msgstr "snelheid"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
+msgid "capacity"
+msgstr "capaciteit"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
+msgid "how many tunnels can we ask them to join in an hour?"
+msgstr "hoeveel tunnels kunnen we ze vragen om zich in een uur bij aan te sluiten?"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
+msgid "how many new peers have they told us about lately?"
+msgstr "hoeveel nieuwe peers hebben ze ons recentelijk over verteld?"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
+msgid "integration"
+msgstr "integratie"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
+msgid "is the peer banned, or unreachable, or failing tunnel tests?"
+msgstr "is de peer verbannen, of onbereikbaar, of faalt het tunnel tests?"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
+msgid "status"
+msgstr "status"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313
+msgid "n/a"
+msgstr "nvt"
+
+#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57
+#, java-format
+msgid "Temporary ban expiring in {0}"
+msgstr "Tijdelijke verbanning verloopt in {0}"
+
+#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59
+#, java-format
+msgid "Banned until restart or in {0}"
+msgstr "Verbanning tot volgende herstart of in {0}"
+
+#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71
+msgid "unban now"
+msgstr "Hef verbanning nu op"
+
+#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:174
+msgid "Bandwidth usage"
+msgstr "Bandbreedte gebruik"
+
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:181
+msgid "Outbound bytes/sec"
+msgstr "Uitgaande bytes/sec"
+
+#. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3);
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:183
+msgid "Inbound bytes/sec"
+msgstr "Inkomende bytes / sec"
+
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:186
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:187
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:188
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:189
+msgid "bytes/sec"
+msgstr "bytes/sec"
+
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:186
+msgid "out average"
+msgstr "uit gemiddeld"
+
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:187
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:110
+msgid "max"
+msgstr "max"
+
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:188
+msgid "in average"
+msgstr "in gemiddeld"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:56
+msgid "GO"
+msgstr "GA"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:59
+msgid "Statistics gathered during this router's uptime"
+msgstr "Statistieken verzameld gedurende de uptime van deze router"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:62
+msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate."
+msgstr "De verzamelde data is gekwantiseerd over een 1 minuut peiode, dit is dus slechts een schatting."
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:108
+msgid "frequency"
+msgstr "frequentie"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:142
+msgid "No lifetime events"
+msgstr "Geen levenslange gebeurtenissen"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:154
+msgid "rate"
+msgstr "rato"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:156
+msgid "avg value"
+msgstr "gem waarde"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:185
+msgid "events"
+msgstr "gebeurtenissen"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:191
+msgid "No events"
+msgstr "Geen gebeertenissen"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:197
+msgid "lifetime average"
+msgstr "levenslange gemiddelde"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:199
+msgid "peak average"
+msgstr "piek gemiddelde"
+
+#. Display the strict average
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:217
+msgid "lifetime average value"
+msgstr "levenslange gemiddelde waarde"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:48
+msgid "Configure startup of clients and webapps (services); manually start dormant services"
+msgstr "Configureer de opstart van clients en webapps (services); start sluimerende services handmatig"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:50
+msgid "I2P Services"
+msgstr "I2P Services"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:56
+msgid "Manage your I2P hosts file here (I2P domain name resolution)"
+msgstr "Beheer je I2P hosts bestand hier (I2P domeinnaam bepaling)"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:58
+msgid "Addressbook"
+msgstr "Adresboek"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:62
+msgid "Built-in anonymous BitTorrent Client"
+msgstr "Ingebouwde anonieme BitTorrent Client"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:64
+msgid "Torrents"
+msgstr "Torrents"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:68
+msgid "Anonymous webmail client"
+msgstr "Anonieme webmail client"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:70
+msgid "Webmail"
+msgstr "Webmail"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:74
+msgid "Anonymous resident webserver"
+msgstr "Anonieme ingebouwde webserver"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:76
+msgid "Webserver"
+msgstr "Webserver"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:84
+msgid "Configure I2P Router"
+msgstr "Configureer I2P Router"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:86
+msgid "I2P Internals"
+msgstr "I2P Intern"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:92
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:361
+msgid "View existing tunnels and tunnel build status"
+msgstr "Bekijk bestaande tunnels en tunnel opbouw status"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:98
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240
+msgid "Show all current peer connections"
+msgstr "Toon alle huidige peer connecties"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:104
+msgid "Show recent peer performance profiles"
+msgstr "Toon recente peer prestatie profielen"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:106
+msgid "Profiles"
+msgstr "Profielen"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:110
+msgid "Show list of all known I2P routers"
+msgstr "Toon lijst met alle bekende I2P routers"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:112
+msgid "NetDB"
+msgstr "NetDB"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:116
+msgid "Health Report"
+msgstr "Gezondheids Rapport"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:118
+msgid "Logs"
+msgstr "Logs"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:128
+msgid "Graph router performance"
+msgstr "Grafieken router prestatie"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+msgid "Graphs"
+msgstr "Grafieken"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:134
+msgid "Textual router performance statistics"
+msgstr "Tekstuele router prestatie statistieken"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:365
+msgid "Local Destinations"
+msgstr "Lokale Bestemmingen"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:142
+#: ../java/strings/Strings.java:62
+msgid "I2PTunnel"
+msgstr "I2PTunnel"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:153
+msgid "I2P Router Help"
+msgstr "I2P Router Hulp"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
+msgid "General"
+msgstr "Algemeen"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:158
+msgid "Your unique I2P router identity is"
+msgstr "Je unique I2P router identiteit is"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:162
+msgid "never reveal it to anyone"
+msgstr "vertel dit aan niemand"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+msgid "Local Identity"
+msgstr "Lokale Identiteit"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:176
+msgid "How long we've been running for this session"
+msgstr "Hoe lang draaien we al voor deze sessie"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+msgid "Uptime"
+msgstr "Uptime"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+msgid "Help with configuring your firewall and router for optimal I2P performance"
+msgstr "Hulp bye het configureren van je firewall en router voor optimale I2P prestatie"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:213
+msgid "Download"
+msgstr "Download"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+msgid "Download Unsigned"
+msgstr "Download Niet-ondertekend"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+msgid "Active"
+msgstr "Actief"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+msgid "Fast"
+msgstr "Snel"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:262
+msgid "High capacity"
+msgstr "Grote capaciteit"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:274
+msgid "Known"
+msgstr "Bekend"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:289
+msgid "Help with firewall configuration"
+msgstr "Hulp met firewall configuratie"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:291
+msgid "Check NAT/firewall"
+msgstr "Controlleer NAT/firewall"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
+msgid "Reseed"
+msgstr "Reseed"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
+msgid "Configure router bandwidth allocation"
+msgstr "Configureer router bandbreedte toewijzing"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330
+msgid "Bandwidth in/out"
+msgstr "Bandbreedte in/uit"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+msgid "Total"
+msgstr "Totaal"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
+msgid "Used"
+msgstr "Gebruikt"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:368
+msgid "Exploratory"
+msgstr "Onderzoekend"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:380
+msgid "Participating"
+msgstr "Deelnemend"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386
+msgid "Share ratio"
+msgstr "Share rato"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:392
+msgid "What's in the router's job queue?"
+msgstr "Wat is er in de taken wachtrij van de router?"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+msgid "Congestion"
+msgstr "Verstopping"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
+msgid "Job lag"
+msgstr "Taak vertraging"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:405
+msgid "Message delay"
+msgstr "Bericht vertraging"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
+msgid "Tunnel lag"
+msgstr "Tunnel vertraging"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
+msgid "Backlog"
+msgstr "Achterstand"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:101
+msgid "ERR-Client Manager I2CP Error - check logs"
+msgstr "ERR-Client Manager I2CP Fout - controlleer logs"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:108
+#, java-format
+msgid "ERR-Clock Skew of {0}"
+msgstr "ERR-Klok Afwijking van {0}"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:117
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:576
+msgid "OK"
+msgstr "OK"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:118
+msgid "ERR-Private TCP Address"
+msgstr "ERR-Privaat TCP Adres"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:120
+msgid "ERR-SymmetricNAT"
+msgstr "ERR-SymmetricNAT"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:123
+msgid "WARN-Firewalled with Inbound TCP Enabled"
+msgstr "WARN-Firewall met Inkomende TCP Ingeschakeld"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:125
+msgid "WARN-Firewalled and Floodfill"
+msgstr "WARN-Firewall en Floodfill"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:127
+msgid "WARN-Firewalled and Fast"
+msgstr "WARN-Firewall en Snel"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:128
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:580
+msgid "Firewalled"
+msgstr "Firewall"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:130
+msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart"
+msgstr "ERR-UDP Poort in Gebruik"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:136
+msgid "ERR-No Active Peers, Check Network Connection and Firewall"
+msgstr "ERR-Geen Actieve Peers, Controlleer Network Connectie en Firewall"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:139
+msgid "ERR-UDP Disabled and Inbound TCP host/port not set"
+msgstr "ERR-UDP Uitgeschakeld en Inkomende TCP host/poort niet gezet"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:141
+msgid "WARN-Firewalled with UDP Disabled"
+msgstr "WARN-Firewall met UDP Uitgeschakeld"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:143
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:596
+msgid "Testing"
+msgstr "Testen"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:365
+msgid "Add/remove/edit & control your client and server tunnels"
+msgstr "Toevoegen/verwijderen/wijzigen & beheer je client en server tunnels"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:377
+msgid "Server"
+msgstr "Server"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:381
+msgid "Show tunnels"
+msgstr "Toon tunnels"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:392
+msgid "Leases expired"
+msgstr "Leases verlopen"
+
+#. red or yellow light
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:392
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:393
+msgid "Rebuilding"
+msgstr "Herbouwen"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:393
+msgid "ago"
+msgstr "geleden"
+
+#. green light
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:396
+msgid "Ready"
+msgstr "Gereed"
+
+#. yellow light
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:400
+msgid "Building"
+msgstr "Bouwen"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:400
+msgid "Building tunnels"
+msgstr "Tunnels aan het bouwen"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:405
+msgid "none"
+msgstr "geen"
+
+#. tunnel nicknames, taken from i2ptunnel.config so they will display
+#. nicely under 'local destinations' in the summary bar
+#. note that if the wording changes in i2ptunnel.config, we have to
+#. keep the old string here as well for existing installs
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:416
+#: ../java/strings/Strings.java:36
+msgid "shared clients"
+msgstr "gedeelde clients"
+
+#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:84
+#, java-format
+msgid "events in {0}"
+msgstr "gebeurtenissen in {0}"
+
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:86
+#, java-format
+msgid "averaged for {0}"
+msgstr "gemiddeld voor {0}"
+
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:96
+msgid "Events per period"
+msgstr "Gebeurtenissen per periode"
+
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:109
+msgid "avg"
+msgstr "gemiddeld"
+
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:111
+msgid "now"
+msgstr "nu"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:41
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:63
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:280
+msgid "configure"
+msgstr "configureer"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:65
+msgid "dead"
+msgstr "dood"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:71
+msgid "Participating tunnels"
+msgstr "Deelnemende tunnels"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72
+msgid "From"
+msgstr "Van"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72
+msgid "Receive on"
+msgstr "Ontvangen op"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73
+msgid "Expiration"
+msgstr "Verloop"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73
+msgid "Send on"
+msgstr "Verzonden op"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73
+msgid "To"
+msgstr "Naar"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74
+msgid "Rate"
+msgstr "Rato"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74
+msgid "Role"
+msgstr "Rol"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
+msgid "Usage"
+msgstr "Gebruik"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:107
+msgid "grace period"
+msgstr "overgangs periode"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:117
+msgid "Outbound Endpoint"
+msgstr "Uitgaande Eindpunt"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:119
+msgid "Inbound Gateway"
+msgstr "Inkomende Gateway"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:121
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
+msgid "Participant"
+msgstr "Deelnemer"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:126
+msgid "Inactive participating tunnels"
+msgstr "Inactieve deelnemende tunnels"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:127
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:218
+msgid "Lifetime bandwidth usage"
+msgstr "Levenslang bandbreedte gebruik"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
+msgid "Expiry"
+msgstr "Verloop"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:159
+msgid "Participants"
+msgstr "Deelnemers"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:165
+msgid "Endpoint"
+msgstr "Eindpunt"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:205
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:212
+msgid "Build in progress"
+msgstr "In aanbouw"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:205
+msgid "inbound"
+msgstr "inkomend"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:212
+msgid "outbound"
+msgstr "uitgaand"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:217
+msgid "No tunnels; waiting for the grace period to end."
+msgstr "Geen tunnels; wacht totdat de overgangs periode verlopen is."
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:219
+msgid "in"
+msgstr "in"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:220
+msgid "out"
+msgstr "uit"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:237
+msgid "Tunnel Counts By Peer"
+msgstr "Tunnel Aantallen per Peer"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238
+msgid "% of total"
+msgstr "% van totaal"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238
+msgid "Our Tunnels"
+msgstr "Onze Tunnels"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238
+msgid "Participating Tunnels"
+msgstr "Deelnemende Tunnels"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:256
+msgid "Totals"
+msgstr "Totalen"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:66
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:132
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:145
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:172
+msgid "Updating"
+msgstr "Aan het updaten"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:88
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:116
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:183
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:208
+msgid "Update downloaded"
+msgstr "Update gedownload"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:91
+#, java-format
+msgid "Unsigned update file from {0} is corrupt"
+msgstr "Niet-ondertekende update bestand van {0} is corrupt"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:203
+msgid "Restarting"
+msgstr "Herstarten"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:210
+msgid "Click Restart to install"
+msgstr "Klik Herstart om te installeren"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:212
+msgid "Click Shutdown and restart to install"
+msgstr "Klik Afsluiten and herstart om te installeren"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:214
+#, java-format
+msgid "Version {0}"
+msgstr "Versie {0}"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126
+#, java-format
+msgid "Failed copy to {0}"
+msgstr "Kopie naar {0} gefaald"
+
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:203
+msgid "Update verified"
+msgstr "Update geverifieerd"
+
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:228
+msgid "Transfer failed"
+msgstr "Overdracht gefaald"
+
+#. wars for ConfigClientsHelper
+#: ../java/strings/Strings.java:12
+msgid "addressbook"
+msgstr "adresboek"
+
+#: ../java/strings/Strings.java:13
+msgid "i2psnark"
+msgstr "i2psnark"
+
+#: ../java/strings/Strings.java:14
+msgid "i2ptunnel"
+msgstr "i2ptunnel"
+
+#: ../java/strings/Strings.java:15
+msgid "susimail"
+msgstr "susimail"
+
+#: ../java/strings/Strings.java:16
+msgid "susidns"
+msgstr "susidns"
+
+#: ../java/strings/Strings.java:17
+msgid "routerconsole"
+msgstr "routerconsole"
+
+#. clients, taken from clients.config, for ConfigClientsHelper
+#. note that if the wording changes in clients.config, we have to
+#. keep the old string here as well for existing installs
+#: ../java/strings/Strings.java:22
+msgid "Web console"
+msgstr "Web console"
+
+#: ../java/strings/Strings.java:23
+msgid "SAM application bridge"
+msgstr "SAM applicatie brug"
+
+#: ../java/strings/Strings.java:24
+msgid "Application tunnels"
+msgstr "Applicatie tunnels"
+
+#: ../java/strings/Strings.java:25
+msgid "My eepsite web server"
+msgstr "Mijn eepsite web server"
+
+#: ../java/strings/Strings.java:26
+msgid "I2P webserver (eepsite)"
+msgstr "I2P webserver (eepsite)"
+
+#: ../java/strings/Strings.java:27
+msgid "Browser launch at startup"
+msgstr "Browser start bij opstarten"
+
+#: ../java/strings/Strings.java:28
+msgid "BOB application bridge"
+msgstr "BOB applicatie brug"
+
+#: ../java/strings/Strings.java:30
+msgid "Open Router Console in web browser at startup"
+msgstr "Open Router Console in web browser bij opstarten"
+
+#: ../java/strings/Strings.java:37
+msgid "IRC proxy"
+msgstr "IRC proxy"
+
+#: ../java/strings/Strings.java:38
+msgid "eepsite"
+msgstr "eepsite"
+
+#: ../java/strings/Strings.java:39
+msgid "I2P webserver"
+msgstr "I2P webserver"
+
+#: ../java/strings/Strings.java:40
+msgid "HTTP Proxy"
+msgstr "HTTP Proxy"
+
+#. older names for pre-0.7.4 installs
+#: ../java/strings/Strings.java:42
+msgid "eepProxy"
+msgstr "eepProxy"
+
+#: ../java/strings/Strings.java:43
+msgid "ircProxy"
+msgstr "ircProxy"
+
+#. hardcoded in i2psnark
+#: ../java/strings/Strings.java:45
+msgid "I2PSnark"
+msgstr "I2PSnark"
+
+#. hardcoded in iMule?
+#: ../java/strings/Strings.java:47
+msgid "iMule"
+msgstr "iMule"
+
+#. standard themes for ConfigUIHelper
+#: ../java/strings/Strings.java:51
+msgid "classic"
+msgstr "klassiek"
+
+#: ../java/strings/Strings.java:52
+msgid "dark"
+msgstr "donker"
+
+#: ../java/strings/Strings.java:53
+msgid "light"
+msgstr "licht"
+
+#: ../java/strings/Strings.java:54
+msgid "midnight"
+msgstr "middernacht"
+
+#. stat groups for stats.jsp
+#: ../java/strings/Strings.java:57
+msgid "Bandwidth"
+msgstr "Bandwidth"
+
+#: ../java/strings/Strings.java:58
+msgid "BandwidthLimiter"
+msgstr "BandwidthLimiter"
+
+#: ../java/strings/Strings.java:59
+msgid "ClientMessages"
+msgstr "ClientMessages"
+
+#: ../java/strings/Strings.java:60
+msgid "Encryption"
+msgstr "Encryption"
+
+#: ../java/strings/Strings.java:61
+msgid "i2cp"
+msgstr "i2cp"
+
+#: ../java/strings/Strings.java:63
+msgid "InNetPool"
+msgstr "InNetPool"
+
+#: ../java/strings/Strings.java:64
+msgid "JobQueue"
+msgstr "JobQueue"
+
+#: ../java/strings/Strings.java:65
+msgid "NetworkDatabase"
+msgstr "NetworkDatabase"
+
+#: ../java/strings/Strings.java:66
+msgid "ntcp"
+msgstr "ntcp"
+
+#: ../java/strings/Strings.java:69
+msgid "Stream"
+msgstr "Stream"
+
+#: ../java/strings/Strings.java:70
+msgid "Throttle"
+msgstr "Throttle"
+
+#: ../java/strings/Strings.java:71
+msgid "Transport"
+msgstr "Transport"
+
+#: ../java/strings/Strings.java:73
+msgid "udp"
+msgstr "udp"
+
+#. parameters in transport addresses (netdb.jsp)
+#. may or may not be worth translating
+#: ../java/strings/Strings.java:77
+msgid "host"
+msgstr "host"
+
+#: ../java/strings/Strings.java:78
+msgid "key"
+msgstr "key"
+
+#: ../java/strings/Strings.java:79
+msgid "port"
+msgstr "port"
+
+#. introducer host
+#: ../java/strings/Strings.java:83
+msgid "ihost0"
+msgstr "ihost0"
+
+#: ../java/strings/Strings.java:84
+msgid "ihost1"
+msgstr "ihost1"
+
+#: ../java/strings/Strings.java:85
+msgid "ihost2"
+msgstr "ihost2"
+
+#. introducer port
+#: ../java/strings/Strings.java:87
+msgid "iport0"
+msgstr "iport0"
+
+#: ../java/strings/Strings.java:88
+msgid "iport1"
+msgstr "iport1"
+
+#: ../java/strings/Strings.java:89
+msgid "iport2"
+msgstr "iport2"
+
+#. introducer key
+#: ../java/strings/Strings.java:91
+msgid "ikey0"
+msgstr "ikey0"
+
+#: ../java/strings/Strings.java:92
+msgid "ikey1"
+msgstr "ikey1"
+
+#: ../java/strings/Strings.java:93
+msgid "ikey2"
+msgstr "ikey2"
+
+#. introducer tag
+#: ../java/strings/Strings.java:95
+msgid "itag0"
+msgstr "itag0"
+
+#: ../java/strings/Strings.java:96
+msgid "itag1"
+msgstr "itag1"
+
+#: ../java/strings/Strings.java:97
+msgid "itag2"
+msgstr "itag2"
+
+#. Descriptions for the stats that are graphed by default
+#. There are over 500 stats currently defined, we aren't going to tag them all
+#: ../java/strings/Strings.java:101
+msgid "Low-level bandwidth receive rate"
+msgstr "Low-level bandbreedte ontvangst rato"
+
+#. bw.recvRate
+#: ../java/strings/Strings.java:102
+msgid "Low-level bandwidth send rate"
+msgstr "Low-level bandbreedte verzend rato"
+
+#. bw.sendRate
+#: ../java/strings/Strings.java:103
+msgid "How many peers we are actively talking with"
+msgstr "Met hoeveel peers communiceren we actief"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106
+msgid "config networking"
+msgstr "configureer netwerk"
+
+#. We have intl defined when this is included, but not when compiled standalone.
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:218
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:231
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:218
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:228
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:223
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:216
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:216
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:216
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:216
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:216
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:216
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:235
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:216
+msgid "Refresh (s)"
+msgstr "Ververs (s)"
+
+#. ditto
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:222
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:235
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:222
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:224
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:232
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:224
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:224
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:227
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:224
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:224
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:238
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:220
+msgid "Enable"
+msgstr "Inschakelen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:241
+msgid "I2P Network Configuration"
+msgstr "I2P Netwerk Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:297
+msgid "Bandwidth limiter"
+msgstr "Bandbreedte beperker"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:299
+msgid "I2P will work best if you configure your rates to match the speed of your internet connection."
+msgstr "I2P zal beter werken wanneer je de configuratie van de bandbreedte afstemt met de snelheid van je internet verbinding."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:303
+msgid "KBps In"
+msgstr "KBps In"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:317
+msgid "KBps Out"
+msgstr "KBps Uit"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:333
+msgid "Share"
+msgstr "Share"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:340
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:303
+msgid "NOTE"
+msgstr "OPMERKING"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:342
+#, java-format
+msgid "You have configured I2P to share only {0} KBps."
+msgstr "Je hebt I2P geconfigureerd om slechts {0} KBps te delen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:345
+msgid "I2P requires at least 12KBps to enable sharing. "
+msgstr "I2P vereist tenminste 12KBps om sharing in te schakelen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346
+msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. "
+msgstr "Schakel sharing in (deelname aan tunnels) door meer bandbreedte toe te kennen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347
+msgid "It improves your anonymity by creating cover traffic, and helps the network."
+msgstr "Het verbeterd je anonimiteit door camouflage verkeer te genereren en help het netwerk."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:350
+#, java-format
+msgid "You have configured I2P to share {0} KBps."
+msgstr "Je hebt I2P geconfigureerd om {0} KBps te delen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:353
+msgid "The higher the share bandwidth the more you improve your anonymity and help the network."
+msgstr "Hoe meer bandbreedte je deelt, des te meer je anonimiteit verbeterd en je het netwerk helpt."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:357
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:513
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:303
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:326
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:320
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:373
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:341
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:321
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:364
+msgid "Cancel"
+msgstr "Annuleer"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:374
+msgid "IP and Transport Configuration"
+msgstr "IP en Transport Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376
+msgid "The default settings will work for most people."
+msgstr "De standaard instellingen zullen voor de meeste mensen werken."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:378
+msgid "There is help below."
+msgstr "Help is hieronder."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:380
+msgid "UPnP Configuration"
+msgstr "UPnP Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:384
+msgid "Enable UPnP to open firewall ports"
+msgstr "Schakel UPnP in om firewall poorten te openen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:386
+msgid "UPnP status"
+msgstr "UPnP status"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:388
+msgid "IP Configuration"
+msgstr "IP Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:390
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:460
+msgid "Externally reachable hostname or IP address"
+msgstr "Extern bereikbare hostname of IP adres"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:394
+msgid "Use all auto-detect methods"
+msgstr "Gebruik alle auto-detect methoden"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:398
+msgid "Disable UPnP IP address detection"
+msgstr "Schakel UPnP IP adres detectie uit"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:402
+msgid "Ignore local interface IP address"
+msgstr "Negeer IP adres van lokale interface"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:406
+msgid "Use SSU IP address detection only"
+msgstr "Gebruikt alleen SSU IP adres detectie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:410
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:478
+msgid "Specify hostname or IP"
+msgstr "Specificeer hostname of IP"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416
+msgid "Select Interface"
+msgstr "Selecteer Interface"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:430
+msgid "Hidden mode - do not publish IP"
+msgstr "Verborgen modus - publiceer IP niet"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:432
+msgid "(prevents participating traffic)"
+msgstr "(voorkomt deelnemend verkeer)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:434
+msgid "Action when IP changes"
+msgstr "Actie wanneer IP wijzigd"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:438
+msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity"
+msgstr "Laptop modus - Wijzig router identiteit en UDP poort wanneeer IP wijzigd for meer anonimiteit"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:440
+msgid "Experimental"
+msgstr "Experimenteel"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:442
+msgid "UDP Configuration:"
+msgstr "UDP Configuratie:"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:444
+msgid "UDP port:"
+msgstr "UDP poort:"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:458
+msgid "TCP Configuration"
+msgstr "TCP Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:464
+msgid "Use auto-detected IP address"
+msgstr "Gebruik auto-detected IP adres"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:466
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:498
+msgid "currently"
+msgstr "om dit moment"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:470
+msgid "if we are not firewalled"
+msgstr "wanneer we niet gefirewalled zijn"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:474
+msgid "Always use auto-detected IP address (Not firewalled)"
+msgstr "Gebruik altijd auto-detected IP adres (Geen firewall)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:484
+msgid "Disable inbound (Firewalled)"
+msgstr "Schakel inkomend uit (Firewall)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:488
+msgid "Completely disable"
+msgstr "Schakel volledig uit"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:490
+msgid "(select only if behind a firewall that throttles or blocks outbound TCP)"
+msgstr "(selecteer alleen wanneer je achter een firewall zit dat uitgaand TCP beperkt of blokkeert)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:492
+msgid "Externally reachable TCP port"
+msgstr "Extern bereikbare TCP poort"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:496
+msgid "Use the same port configured for UDP"
+msgstr "Gebruik dezelfde poort als geconfigureerd voor UDP"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:504
+msgid "Specify Port"
+msgstr "Specificeer Poort"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:508
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:338
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:329
+msgid "Note"
+msgstr "Opmerking"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511
+msgid "Changing these settings will restart your router."
+msgstr "Wijziging van deze instellingen herstart je router"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517
+msgid "Configuration Help"
+msgstr "Configuratie Help"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:519
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:568
+msgid "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."
+msgstr "Alhoewel I2P zal werken achter de meeste firewalls, zal de snelheid en netwerk integratie doorgaans verbeteren wanneer de I2P poort is geforward voor zowel UDP als TCP."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:521
+msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you."
+msgstr "Indien mogelijk, probeer een opening in je firewall te maken om nieuwe UDP en TCP pakketten binnen te laten."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:523
+msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic."
+msgstr "Indien dit niet mogelijk is, I2P ondersteunt UPnP (Universal Plug en Play) en UDP perforatie met \"SSU introducties\" om verkeer te herleiden."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:525
+msgid "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."
+msgstr "De meeste bovenstaande opties zijn voor speciale situaties, bijvoorbeeld wanneer UPnP niet correct werkt, of wanneer firewall buiten je beheer in de weg zit."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527
+msgid "Certain firewalls such as symmetric NATs may not work well with I2P."
+msgstr "Bepaalde firewalls zoals symmetrische NATs werken mogelijk niet goed met I2P."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536
+msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports."
+msgstr "UPnP is gebruikt om te communiceren met Internet Gateway Devices (IGDs) om het externe IP adres te detecteren en poorten door te sturen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538
+msgid "UPnP support is beta, and may not work for any number of reasons"
+msgstr "UPnP support is beta, en kan om verscheidene redenen niet goed werken"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540
+msgid "No UPnP-compatible device present"
+msgstr "Geen UPnP-compatible device aanwezig"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542
+msgid "UPnP disabled on the device"
+msgstr "UPnP uitgeschakeld op het device"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544
+msgid "Software firewall interference with UPnP"
+msgstr "Software firewall zit UPnP in de weg"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546
+msgid "Bugs in the device's UPnP implementation"
+msgstr "Bugs in de device's UPnP implementatie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:548
+msgid "Multiple firewall/routers in the internet connection path"
+msgstr "Meerdere firewall/routers in het pad van de internet verbinding"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:550
+msgid "UPnP device change, reset, or address change"
+msgstr "UPnP device wijziging, reset, of adres wijziging"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:552
+msgid "Review the UPnP status here."
+msgstr "Bekijk de UPnP status hier."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:554
+msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect."
+msgstr "UPnP kan hierboven in- en uitgeschakeld worden, maar na een wijziging is een router herstart nodig."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:556
+msgid "Hostnames entered above will be published in the network database."
+msgstr "Hierboven ingevulde hostnames zullen worden gepubliceerd in de netwerk database."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:558
+msgid "They are not private."
+msgstr "Deze zijn niet privé."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:560
+msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1."
+msgstr "Tevens, vul geen privé IP addres in zoals 127.0.0.1 of 192.168.1.1."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:562
+msgid "If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially."
+msgstr "Als je het verkeerde IP adres of hostnaam invult, of je NAT of firewall niet goed te configureert, zal je netwerk prestaties aanzienlijk verslechteren."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:564
+msgid "When in doubt, leave the settings at the defaults."
+msgstr "In geval van twijfel, laat de instellingen op de standaard waarden."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:566
+msgid "Reachability Help"
+msgstr "Bereikbaarheids Help"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571
+msgid "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."
+msgstr "Wanneer je denkt dat je je firewall open hebt gezet maar I2P nog steeds zegt dat je achter een firewall zit, bedenk dan dat je mogelijk meerdere firewalls hebt, bijvoorbeeld zowel als software pakket en een externe hardware router."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:574
+msgid "If there is an error, the logs may also help diagnose the problem."
+msgstr "Indien er een fout is zijn de logs mogelijk hulpvol om het probleem te onderzoeken."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:578
+msgid "Your UDP port does not appear to be firewalled."
+msgstr "Je UDP poort lijkt niet achter een firewall te zitten."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:582
+msgid "Your UDP port appears to be firewalled."
+msgstr "Je UDP poort lijkt achter een firewall te zitten."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:584
+msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error."
+msgstr "Omdat de firewall detectie methode niet 100% betrouwbaar is, kan dit soms foutief getoond worden."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:586
+msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port."
+msgstr "Indien dit echter consistent optreedt, controlleer in zowel externe als interne firewalls of de poort wel geopend is."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:588
+msgid "I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections."
+msgstr "Geen paniek, I2P zal werken achter een firewall. Wanneer dit het geval is maakt de router gebruik van \"introducers\" om inkomende connecties door te sturen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:590
+msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)."
+msgstr "Je krijgt meer deelnemend verkeer en helpt het netwerk meer door de firewall(s) te openen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:592
+msgid "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."
+msgstr "Indien je van mening bent dat je dit al hebt gedaan, bedenk dat er zowel een hardware als software firewall kan zijn, of dat er een additionele firewall (universiteit, provider, etc) kan zijn waar je geen invloed op hebt."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:594
+msgid "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."
+msgstr "Tevens hebben sommige routers moeite om zowel TCP als UDP op dezelfde poort correct door te laten, of hebben andere beperkingen of bugs die voorkomen dat I2P verkeer goed doorkomt."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:598
+msgid "The router is currently testing whether your UDP port is firewalled."
+msgstr "De router test op dit moment of je UDP poort achter een firewall is."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:602
+msgid "The router is not configured to publish its address, therefore it does not expect incoming connections."
+msgstr "De router is niet geconfigureerd om zijn adres te publiceren, daarom verwacht het geen inkomende verbindingen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:604
+msgid "WARN - Firewalled and Fast"
+msgstr "WARN - Firewall en Snel"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:606
+msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled."
+msgstr "Je hebt I2P geconfigureerd om meer dan 128KBps aan bandbreedte te delen, maar je zit achter een firewall."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:608
+msgid "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."
+msgstr "Alhoewel I2P met deze configuratie prima werkt, zal je 128KBps of meer aan bandbreedte het netwerk beter helpen wanneer je je firewall open zet."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:610
+msgid "WARN - Firewalled and Floodfill"
+msgstr "WARN - Firewall en Floodfill"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:612
+msgid "You have configured I2P to be a floodfill router, but you are firewalled."
+msgstr "Je hebt I2P geconfigureerd als floodfill router, maar je zit achter een firewall."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:614
+msgid "For best participation as a floodfill router, you should open your firewall."
+msgstr "Voor een betere deelname als floodfill router, moet je je firewall openen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:616
+msgid "WARN - Firewalled with Inbound TCP Enabled"
+msgstr "WARN - Firewall en Inkomende TCP Ingeschakeld"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:618
+msgid "You have configured inbound TCP, however your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well."
+msgstr "Je hebt inkomende TCP geconfigureerd, echter aangezien je UDP poort achter een firewall zit, is het waarschijnlijk dat dit ook voor je TCP poort het geval is."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:620
+msgid "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."
+msgstr "Indien je TCP poort achter een firewall zit met inkomende TCP ingeschakeld, kunnen routers geen verbinding met je maken via TCP, dit is niet goed voor het netwerk."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:622
+msgid "Please open your firewall or disable inbound TCP above."
+msgstr "Open je firewall of schakel inkomend TCP hierboven uit."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:624
+msgid "WARN - Firewalled with UDP Disabled"
+msgstr "WARN - Firewall met UDP Uitgeschakeld"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:626
+msgid "You have configured inbound TCP, however you have disabled UDP."
+msgstr "Je hebt inkomende TCP geconfigureerd, echter UDP is uitgeschakeld."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:628
+msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections."
+msgstr "Het lijkt erop dat je voor TCP achter een firewall zit, daarom kan je router geen inkomende connecties accepteren."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:630
+msgid "Please open your firewall or enable UDP."
+msgstr "Open je firewall of schakel UDP in."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:632
+msgid "ERR - Clock Skew"
+msgstr "ERR - Klok Afwijking"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:634
+msgid "Your system's clock is skewed, which will make it difficult to participate in the network."
+msgstr "Je systeemklok heeft een afwijking, dit zal het moeilijk maken om aan het netwerk deel te nemen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:636
+msgid "Correct your clock setting if this error persists."
+msgstr "Corrigeer je klok instelling indien deze fout blijft optreden."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:638
+msgid "ERR - Private TCP Address"
+msgstr "ERR - Privaat TCP Adres"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:640
+msgid "You must never advertise an unroutable IP address such as 127.0.0.1 or 192.168.1.1 as your external address."
+msgstr "Je moet nooit een niet-routeerbaar IP adres zoals 127.0.0.1 of 192.168.1.1 adverteren als je externe adres."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:642
+msgid "Correct the address or disable inbound TCP above."
+msgstr "Corrigeer het adres of schakel inkomend TCP hierboven uit."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:644
+msgid "ERR - SymmetricNAT"
+msgstr "ERR - SymmetricNAT"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:646
+msgid "I2P detected that you are firewalled by a Symmetric NAT."
+msgstr "I2P heeft gedetecteerd dat je achter een firewall zit door een Symmetric NAT."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:648
+msgid "I2P does not work well behind this type of firewall. You will probably not be able to accept inbound connections, which will limit your participation in the network."
+msgstr "I2P werkt niet goed achter dit type firewall. Waarschijnlijk kan je geen inkomende verbindingen accepteren, "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:650
+msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart"
+msgstr "ERR - UDP Poort In Gebruik - Zet i2np.udp.internalPort=xxxx in geavanceerde configuratie en herstart"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:652
+msgid "I2P was unable to bind to port 8887 or other configured port."
+msgstr "I2P kon niet binden met poort 8887 of een andere geconfigureerde poort."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:654
+msgid "Check to see if another program is using the configured port. If so, stop that program or configure I2P to use a different port."
+msgstr "Controlleer of een ander programma de geconfigureerde poort gebruikt. Als dit zo is, stop dit programma of configureer I2P op een andere poort."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:656
+msgid "This may be a transient error, if the other program is no longer using the port."
+msgstr "Dit kan een voorbijgaande fout zijn, als het andere programma de poort niet meer gebruikt."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:658
+msgid "However, a restart is always required after this error."
+msgstr "Echter, een herstart is altijd nodig na deze fout."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:660
+msgid "ERR - UDP Disabled and Inbound TCP host/port not set"
+msgstr "ERR - UDP Uitgeschakeld en Inkomende TCP host/poort niet gezet"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:662
+msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP."
+msgstr "Je hebt inkomende TCP hierboven niet geconfigureerd met een hostname en poort, echter heb je je UDP uitgeschakeld."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:664
+msgid "Therefore your router cannot accept inbound connections."
+msgstr "Daarom kan je router geen inkomende connecties accepteren."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:666
+msgid "Please configure a TCP host and port above or enable UDP."
+msgstr "Configureer een TCP host en poort hierboven of schakel UDP in."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:668
+msgid "ERR - Client Manager I2CP Error - check logs"
+msgstr "ERR - Client Manager I2CP Fout - controlleer logs"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:670
+msgid "This is usually due to a port 7654 conflict. Check the logs to verify."
+msgstr "Dit komt doorgaans door een conflict met poort 7654. Kijk in de logs om dit te bevestigen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:672
+msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P."
+msgstr "Heb je een andere I2P instantie draaien? Stop het conflicerende programma en herstart I2P."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107
+msgid "config advanced"
+msgstr "geavanceerde configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:242
+msgid "I2P Advanced Configuration"
+msgstr "I2P Geavanceerde Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:299
+msgid "Advanced I2P Configuration"
+msgstr "Geavanceerde I2P Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309
+msgid "Some changes may require a restart to take effect."
+msgstr "Voor de toepassing van sommige wijzigingen is een herstart nodig."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106
+msgid "config clients"
+msgstr "client configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:244
+msgid "I2P Client Configuration"
+msgstr "I2P Client Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:311
+msgid "Client Configuration"
+msgstr "Client Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:313
+msgid "The Java clients listed below are started by the router and run in the same JVM."
+msgstr "De Java clients in onderstaande lijst zijn gestart door de router en draaien in dezelfde JVM."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:317
+msgid "To change other client options, edit the file"
+msgstr "Om andere client opties te wijzigen, bewerk het bestand"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:324
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:344
+msgid "All changes require restart to take effect."
+msgstr "Voor alle wijzigingen is een herstart nodig."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:336
+msgid "WebApp Configuration"
+msgstr "WebApp Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338
+msgid "The Java web applications listed below are started by the webConsole client and run in the same JVM as the router. They are usually web applications accessible through the router console. They may be complete applications (e.g. i2psnark),front-ends to another client or application which must be separately enabled (e.g. susidns, i2ptunnel), or have no web interface at all (e.g. addressbook)."
+msgstr "De Java web applicaties hier beneden zijn gestart door de webConsole client en draaien in dezelfe JVM als de router. Het zijn meestal web applicaties die te benaderen zijn via de router console. Het kunnen volledige applicaties zijn (zoals i2psnark), front-ends voor een client of applicatie dat los hiervan ingeschakeld moet worden (zoals susidns, i2ptunnel), of zonder web interface (zoals addressbook)."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:340
+msgid "A web app may also be disabled by removing the .war file from the webapps directory; however the .war file and web app will reappear when you update your router to a newer version, so disabling the web app here is the preferred method."
+msgstr "Een web app kan ook uitgeschakeld worden door het .war bestand te verwijderen uit de webapps directory; ever het .war bestand en de web applicatie zal weer terugkomen wanneer je de router upgrade naar een nieuwere versie. Daarom is het aanbevolen om de web app hier uit te schakelen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:350
+msgid "Plugin Configuration"
+msgstr "Plugin Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:352
+msgid "The plugins listed below are started by the webConsole client."
+msgstr "De plugins hier beneden zijn gestart door de webConsole client."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:358
+msgid "Plugin Installation"
+msgstr "Plugin Installatie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:360
+msgid "To install a plugin, enter the download URL:"
+msgstr "Om een plugin te installeren, voer de download URL in:"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106
+msgid "config keyring"
+msgstr "configureer sleutelbos"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:228
+msgid "I2P Keyring Configuration"
+msgstr "I2P Sleutelbos Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:294
+msgid "The router keyring is used to decrypt encrypted leaseSets."
+msgstr "De sleutelbos van de router is gebruikt om versleutelde leaseSets te ontsleutelen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:297
+msgid "The keyring may contain keys for local or remote encrypted destinations."
+msgstr "De sleutelbos kan sleutels bevatten voor lokale en remote versleutelde destinations."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:307
+msgid "Manual Keyring Addition"
+msgstr "Handmatige Sleutelbos Toevoeging"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:309
+msgid "Enter keys for encrypted remote destinations here."
+msgstr "Voer sleutels in om remote destinations te versleutelen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:312
+msgid "Keys for local destinations must be entered on the"
+msgstr "Sleutels voor lokale destinations moeten worden ingevoerd op de"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:314
+msgid "I2PTunnel page"
+msgstr "I2PTunnel pagina"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:316
+msgid "Dest. name, hash, or full key"
+msgstr "Dest. naam, hash, of volledige sleutel"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:318
+msgid "Encryption Key"
+msgstr "Encryptie Sleutel"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107
+msgid "config logging"
+msgstr "configureer logging"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:242
+msgid "I2P Logging Configuration"
+msgstr "I2P Logging Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:299
+msgid "Configure I2P Logging Options"
+msgstr "Configureer I2P Logging Opties"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301
+msgid "Logging filename"
+msgstr "Logging bestandsnaam"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:305
+msgid "(the symbol '@' will be replaced during log rotation)"
+msgstr "(het symbool '@' zal worden vervangen bij het doordraaien van de log)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307
+msgid "Log record format"
+msgstr "Log regel formaat"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:311
+msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)"
+msgstr "(gebruik 'd' = datum, 'c' = class, 't' = thread, 'p' = prioriteit, 'm' = bericht)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313
+msgid "Log date format"
+msgstr "Log datum formaat"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:317
+msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)"
+msgstr "('MM' = maand, 'dd' = dag, 'HH' = uur, 'mm' = minuut, 'ss' = seconde, 'SSS' = milliseconde)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319
+msgid "Max log file size"
+msgstr "Max log bestand grootte"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:323
+msgid "Default log level"
+msgstr "Standaard log niveau"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327
+msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)"
+msgstr "(DEBUG en INFO zijn geen aanbevolen standaardwaarden, ze zullen je router drastisch vertragen)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329
+msgid "Log level overrides"
+msgstr "Log niveau overschrijving"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106
+msgid "config peers"
+msgstr "configureer peers"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:228
+msgid "I2P Peer Configuration"
+msgstr "I2P Peer Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:304
+msgid "Manual Peer Controls"
+msgstr "Handmatige Peer Beheer"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:306
+msgid "Router Hash"
+msgstr "Router Hash"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:310
+msgid "Manually Ban / Unban a Peer"
+msgstr "Handmatig een Peer Verbannen / Verbanning Opheffen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:312
+msgid "Banning will prevent the participation of this peer in tunnels you create."
+msgstr "Verbanning zorgt ervoor dat deze peer niet deelneemt aan je tunnels."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:324
+msgid "Bonuses may be positive or negative, and affect the peer's inclusion in Fast and High Capacity tiers. Fast peers are used for client tunnels, and High Capacity peers are used for some exploratory tunnels. Current bonuses are displayed on the"
+msgstr "Bonussen kunnen zowel positief als negatief zijn, en hebben invloed op de toekenning van de peer aan de category Snel en Hoge Capaciteit. Snelle peers worden gebruikt voor client tunnels, en Hoge Capaciteit peers worden gebruikt voor sommige exploratory tunnels. De huidige bonussen worden getoond op de"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:326
+msgid "profiles page"
+msgstr "profielen pagina"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:342
+msgid "Adjust peer bonuses"
+msgstr "Peer bonussen aanpassen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:344
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:253
+msgid "Banned Peers"
+msgstr "Verbannen Peers"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366
+msgid "Banned IPs"
+msgstr "Verbannen IPs"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106
+msgid "config service"
+msgstr "configureer service"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:228
+msgid "I2P Service Configuration"
+msgstr "I2P Service Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:284
+msgid "Shutdown the router"
+msgstr "Stop de router"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:286
+msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes."
+msgstr "Een gecontrolleerde afsluiting laat de router zijn reeds bestaande overeenkomsten vervullen alvorens te stoppen, maar dit kan een aantal minuten duren."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:288
+msgid "If you need to kill the router immediately, that option is available as well."
+msgstr "Indien je de router onmiddelijk wilt stoppen, dan is dit ook mogelijk."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:298
+msgid "If you want the router to restart itself after shutting down, you can choose one of the following."
+msgstr "Indien je de router wilt herstarten na het afsluiten, kies dan één van de volgende opties."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:300
+msgid "This is useful in some situations - for example, if you changed some settings that client applications only read at startup, such as the routerconsole password or the interface it listens on."
+msgstr "Dit is handig in sommige situaties - bijvoorbeeld wanneer je een configuratie hebt gewijzigd die client applicaties alleen lezen bij het opstarten, zoals het routerconsole wachtwoord of de interface waar het op luistert."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:302
+msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately."
+msgstr "Een gecontrolleerde herstart zal een aantal minuten duren (maar je peers stellen je gedult zeer op prijs), terwijl een harde herstart onmiddelijk is."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:304
+msgid "After tearing down the router, it will wait 1 minute before starting back up again."
+msgstr "Na het stoppen van de router, zal het 1 minuut wachten alvorens opnieuw te starten."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:314
+msgid "Systray integration"
+msgstr "Systray integratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:316
+msgid "On the windows platform, there is a small application to sit in the system tray, allowing you to view the router's status"
+msgstr "Op het windows platform is er een kleine applicatie die in je system tray zit, waarmee de router status te bekijken is"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:318
+msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)."
+msgstr "(in de toekomst zullen I2P client applicaties hun functionaliteit ook in de system tray kunnen integreren)."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:320
+msgid "If you are on windows, you can either enable or disable that icon here."
+msgstr "Indien je windows gebruikt kun je het icon hier in- of uitschakelen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326
+msgid "Run on startup"
+msgstr "Aan bij opstarten"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:328
+msgid "You can control whether I2P is run on startup or not by selecting one of the following options - I2P will install (or remove) a service accordingly."
+msgstr "Je kan bepalen of I2P al dan niet bij het opstarten moet starten met behulp van de volgende opties - I2P zal dan de service toevoegen (of verwijderen)."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:330
+msgid "If you prefer the command line, you can also run the "
+msgstr "Indien je de voorkeur geeft aan de command line, kan je het ook starten met "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:340
+msgid "If you are running I2P as service right now, removing it will shut down your router immediately."
+msgstr "Indien je op dit moment I2P als service draait zal het verwijderen je router onmiddelijk stoppen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:342
+msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat."
+msgstr "Overweeg om hierboven je router gecontrolleerd te stoppen, en daarna uninstall_i2p_service_winnt.bat te draaien."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:346
+msgid "Debugging"
+msgstr "Debugging"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:348
+msgid "View the job queue"
+msgstr "Bekijk de taak wachtrij"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:352
+msgid "At times, it may be helpful to debug I2P by getting a thread dump. To do so, please select the following option and review the thread dumped to wrapper.log."
+msgstr "Soms kan het handig zijn om I2P te debuggen met een thread dump. Om dit te doen, selecteer de volgende optie en bekijk de thread dump in de wrapper.log."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358
+msgid "Launch browser on router startup?"
+msgstr "Start browser bij opstarten router?"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:360
+msgid "I2P's main configuration interface is this web console, so for your convenience I2P can launch a web browser on startup pointing at"
+msgstr "De hoofd configuratie interface van I2P is deze web console, indien gewenst kan I2P na het opstarten een web browser starten die verwijst naar"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107
+msgid "config stats"
+msgstr "configureer statistieken"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:229
+msgid "I2P Stats Configuration"
+msgstr "I2P Statistieken Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:300
+msgid "Configure I2P Stat Collection"
+msgstr "Configureer I2P Statistiek Vergaring"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302
+msgid "Enable full stats?"
+msgstr "Volledige statistieken inschakelen?"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:309
+msgid "change requires restart to take effect"
+msgstr "na wijziging is een herstart nodig"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311
+msgid "Stat file"
+msgstr "Statistiek bestand"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:315
+msgid "Filter"
+msgstr "Filter"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:317
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:326
+msgid "toggle all"
+msgstr "alles aan/uit"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328
+msgid "Log"
+msgstr "Log"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330
+msgid "Graph"
+msgstr "Grafiek"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:369
+msgid "Advanced filter"
+msgstr "Geavanceerd filter"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106
+msgid "config tunnels"
+msgstr "configureer tunnels"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:241
+msgid "I2P Tunnel Configuration"
+msgstr "I2P Tunnel Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:305
+msgid "The default settings work for most people."
+msgstr "De standaard settings werken voor de meeste mensen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:309
+msgid "There is a fundamental tradeoff between anonymity and performance."
+msgstr "Er is een fundamentele afweging tussen anonimiteit en prestatie."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:312
+msgid "Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely reduce performance or reliability."
+msgstr "Tunnels langer dan 3 hops (bijvoorbeeld 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops), of een hoge hoeveelheid + backup hoeveelheid, kunnen leiden tot een vermindering van prestatie of bereikbaarheid."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:315
+msgid "High CPU and/or high outbound bandwidth usage may result."
+msgstr "CPU gebruik en/of uitgaand bandbreedte kan toenemen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:318
+msgid "Change these settings with care, and adjust them if you have problems."
+msgstr "Wijzig deze instellingen met zorg, en pas ze aan indien problemen optreden."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:332
+msgid "Exploratory tunnel setting changes are stored in the router.config file."
+msgstr "Exploratory tunnel configuratie wijzigingen zijn opgeslagen in het router.config bestand."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335
+msgid "Client tunnel changes are temporary and are not saved."
+msgstr "Client tunnel wijzigingen zijn tijdelijk en worden niet opgeslagen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:337
+msgid "To make permanent client tunnel changes see the"
+msgstr "Om permanente client tunnel wijzigingen te maken zie de"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:339
+msgid "i2ptunnel page"
+msgstr "i2ptunnel pagina"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106
+msgid "config UI"
+msgstr "configureer UI"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:241
+msgid "I2P UI Configuration"
+msgstr "I2P UI Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:291
+msgid "Router Console Theme"
+msgstr "Router Console Thema"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:309
+msgid "Theme selection disabled for Internet Explorer, sorry."
+msgstr "Thema selectie is uitgeschakeld voor Internet Explorer, sorry."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:311
+msgid "If you're not using IE, it's likely that your browser is pretending to be IE; please configure your browser (or proxy) to use a different User Agent string if you'd like to access the console themes."
+msgstr "Indien je geen IE gebruikt, is het mogelijk dat je browser zich voordoet als IE; configureer je browser (of proxy) om een andere User Agent tekst te gebruiken indien je de console thema's wilt wijzigen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315
+msgid "Router Console Language"
+msgstr "Router Console Taal"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:319
+msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help."
+msgstr "Lever een bijdrage aan het router console vertaal project! Neem contact op met de ontwikkelaars op IRC #i2p om te helpen."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:323
+msgid "Apply"
+msgstr "Toepassen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:106
+msgid "config update"
+msgstr "configureer update"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:228
+msgid "I2P Update Configuration"
+msgstr "I2P Update Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:302
+msgid "Check for I2P and news updates"
+msgstr "Controlleer op I2P en nieuws updates"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:304
+msgid "News & I2P Updates"
+msgstr "Nieuws & I2P Updates"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:308
+msgid "Update In Progress"
+msgstr "Bezig Met Upgrade"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:316
+msgid "News URL"
+msgstr "Nieuws URL"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:320
+msgid "Refresh frequency"
+msgstr "Ververs frequentie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:326
+msgid "Update policy"
+msgstr "Update regels"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:330
+msgid "Update through the eepProxy?"
+msgstr "Update door de eepProxy?"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:334
+msgid "eepProxy host"
+msgstr "eepProxy host"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:338
+msgid "eepProxy port"
+msgstr "eepProxy poort"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:342
+msgid "Update URLs"
+msgstr "Update URLs"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:346
+msgid "Trusted keys"
+msgstr "Vertrouwde sleutels"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:350
+msgid "Update with unsigned development builds?"
+msgstr "Update met niet ondertekende ontwikkel builds?"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:354
+msgid "Unsigned Build URL"
+msgstr "Niet-ondertekende Build URL"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:360
+msgid "I2P updates are disabled because you do not have write permission for the install directory."
+msgstr "I2P updates zijn uitgeschakeld omdat je geen schrijf rechten hebt op de installatie directory."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:366
+msgid "Save"
+msgstr "Opslaan"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117
+msgid "Page Not Found"
+msgstr "Pagina Niet Gevonden"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:243
+msgid "Sorry! You appear to be requesting a non-existent Router Console page or resource."
+msgstr "Sorry! Je benadert een niet bestaande Router Console pagina of bron."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:245
+msgid "Error 404"
+msgstr "Fout 404"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:250
+msgid "not found"
+msgstr "niet gevonden"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106
+msgid "graphs"
+msgstr "grafieken"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:228
+msgid "I2P Performance Graphs"
+msgstr "I2P Prestatie Grafieken"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105
+msgid "home"
+msgstr "start"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105
+msgid "job queue"
+msgstr "taak wachtrij"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:227
+msgid "I2P Router Job Queue"
+msgstr "I2P Router Taak wachtrij"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105
+msgid "logs"
+msgstr "logs"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:227
+msgid "I2P Router Logs"
+msgstr "I2P Router Logs"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:229
+msgid "I2P Version & Running Environment"
+msgstr "I2P Versie & Omgevingsinformatie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:231
+msgid "Please report bugs on trac.i2p2.i2p."
+msgstr "Rapporteer bugs op trac.i2p2.i2p."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:233
+msgid "Please include this information in bug reports"
+msgstr "Graag deze informatie in bug reports vermelden"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:274
+msgid "Critical Logs"
+msgstr "Kritieke Logs"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:278
+msgid "Router Logs"
+msgstr "Router Logs"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:284
+msgid "Service (Wrapper) Logs"
+msgstr "Service (Wrapper) Logs"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105
+msgid "network database summary"
+msgstr "samenvatting netwerk database"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:227
+msgid "I2P Network Database Summary"
+msgstr "Samenvatting I2P Netwoek Database "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109
+msgid "WebApp Not Found"
+msgstr "WebApp Niet Gevonden"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:231
+msgid "Web Application Not Running"
+msgstr "Web Applicatie Draai Niet"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:233
+msgid "The requested web application is not running."
+msgstr "De gevraagde web applicatie draait niet."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:235
+msgid "Please visit the config clients page to start it."
+msgstr "Bezoek de config clients pagina om het te starten."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105
+msgid "peer connections"
+msgstr "peer connecties"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:227
+msgid "I2P Network Peers"
+msgstr "I2P Netwerk Peers"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105
+msgid "peer profiles"
+msgstr "peer profielen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:227
+msgid "I2P Network Peer Profiles"
+msgstr "I2P Netwerk Peer Profielen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:105
+msgid "statistics"
+msgstr "statistieken"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:242
+msgid "I2P Router Statistics"
+msgstr "I2P Router Statistieken"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:244
+#, java-format
+msgid "Disable {0}s Refresh"
+msgstr "{0}s Verversing Uitschakelen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105
+msgid "tunnel summary"
+msgstr "tunnel samenvatting"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:227
+msgid "I2P Tunnel Summary"
+msgstr "I2P Tunnel Samenvatting"
+
diff --git a/history.txt b/history.txt
index 5b16d142b..365cb9161 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,6 @@
+2010-07-04 duck
+ * RouterConsole: Dutch translation (thanks to monkeybrains)
+
2010-07-03 zzz
* Build: Fix poupdate dependencies
* I2PTunnel: More error propagation fixes
From 6e517c4a1950729a2a4bbac89a96ec178d65a37b Mon Sep 17 00:00:00 2001
From: duck
Date: Sun, 4 Jul 2010 23:03:02 +0000
Subject: [PATCH 15/75] RouterConsole: Fix typos in Dutch translation
---
apps/routerconsole/locale/messages_nl.po | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/apps/routerconsole/locale/messages_nl.po b/apps/routerconsole/locale/messages_nl.po
index d9f5af53b..a941d07dd 100644
--- a/apps/routerconsole/locale/messages_nl.po
+++ b/apps/routerconsole/locale/messages_nl.po
@@ -3196,7 +3196,7 @@ msgstr "Uptime"
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
msgid "Help with configuring your firewall and router for optimal I2P performance"
-msgstr "Hulp bye het configureren van je firewall en router voor optimale I2P prestatie"
+msgstr "Hulp bij het configureren van je firewall en router voor optimale I2P prestatie"
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:213
msgid "Download"
@@ -4967,7 +4967,7 @@ msgstr "samenvatting netwerk database"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:227
msgid "I2P Network Database Summary"
-msgstr "Samenvatting I2P Netwoek Database "
+msgstr "Samenvatting I2P Netwerk Database "
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109
msgid "WebApp Not Found"
From 546a588aa5027b97d3a3ff3f1856b72e88e3dfdf Mon Sep 17 00:00:00 2001
From: duck
Date: Mon, 5 Jul 2010 13:37:36 +0000
Subject: [PATCH 16/75] I2PTunnel & I2PSnark: Dutch translation (thanks to
monkeybrains)
---
apps/i2psnark/locale/messages_nl.po | 775 +++++++++++++++++++++++++++
apps/i2ptunnel/locale/messages_nl.po | 689 ++++++++++++++++++++++++
history.txt | 3 +
3 files changed, 1467 insertions(+)
create mode 100644 apps/i2psnark/locale/messages_nl.po
create mode 100644 apps/i2ptunnel/locale/messages_nl.po
diff --git a/apps/i2psnark/locale/messages_nl.po b/apps/i2psnark/locale/messages_nl.po
new file mode 100644
index 000000000..5de0d01fc
--- /dev/null
+++ b/apps/i2psnark/locale/messages_nl.po
@@ -0,0 +1,775 @@
+# I2P
+# Copyright (C) 2009 The I2P Project
+# This file is distributed under the same license as the i2psnark package.
+# To contribute translations, see http://www.i2p2.de/newdevelopers
+# foo , 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: I2P i2psnark\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-07-05 11:48+0000\n"
+"PO-Revision-Date: 2010-06-15 09:07+0100\n"
+"Last-Translator: duck \n"
+"Language-Team: duck , monkeybrains \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Dutch\n"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:88
+#, java-format
+msgid "Adding torrents in {0} minutes"
+msgstr "Torrents toevoegen in {0} minuten"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:258
+#, java-format
+msgid "Total uploaders limit changed to {0}"
+msgstr "Totale uploaders limiet gewijzigd in {0}"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:260
+#, java-format
+msgid "Minimum total uploaders limit is {0}"
+msgstr "Minimum totale uploaders limiet is {0}"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:272
+#, java-format
+msgid "Up BW limit changed to {0}KBps"
+msgstr "Up bandbreedte limiet gewijzigd in {0}KBps"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:274
+#, java-format
+msgid "Minimum up bandwidth limit is {0}KBps"
+msgstr "Minimum up bandbreedte limiet is {0}KBps"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:286
+#, java-format
+msgid "Startup delay limit changed to {0} minutes"
+msgstr "Startup vertragings limiet gewijzigd in {0} minuten"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:333
+msgid "I2CP and tunnel changes will take effect after stopping all torrents"
+msgstr "I2CP en tunnel wijzigingen hebben pas effect na het stoppen van alle torrents"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:339
+msgid "Disconnecting old I2CP destination"
+msgstr "Oude I2CP destination wordt afgesloten"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:343
+#, java-format
+msgid "I2CP settings changed to {0}"
+msgstr "I2CP instellingen gewijzigd in {0}"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:347
+msgid ""
+"Unable to connect with the new settings, reverting to the old I2CP settings"
+msgstr "Kan geen connectie maken met de nieuwe instellingen, we keren terug naar oude I2CP instellingen"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:351
+msgid "Unable to reconnect with the old settings!"
+msgstr "Kan niet opnieuw verbinden met de oude instellingen!"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:353
+msgid "Reconnected on the new I2CP destination"
+msgstr "Opnieuw verbonden met de nieuwe I2CP destination"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:364
+#, java-format
+msgid "I2CP listener restarted for \"{0}\""
+msgstr "I2CP listener herstart voor \"{0}\""
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:375
+msgid "Enabled autostart"
+msgstr "Autostart ingeschakeld"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:377
+msgid "Disabled autostart"
+msgstr "Autostart uitgeschakeld"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:383
+msgid "Enabled open trackers - torrent restart required to take effect."
+msgstr "Open Trackers ingeschakeld - torrent herstart nodig."
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:385
+msgid "Disabled open trackers - torrent restart required to take effect."
+msgstr "Open Trackers uitgeschakeld - torrent herstart nodig."
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:392
+msgid "Open Tracker list changed - torrent restart required to take effect."
+msgstr "Open Tracker lijst gewijzigd - torrent herstart nodig."
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:399
+msgid "Configuration unchanged."
+msgstr "Configuratie ongewijzigd."
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:409
+#, java-format
+msgid "Unable to save the config to {0}"
+msgstr "Kan de configuratie niet opslaan in {0}"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:445
+msgid "Connecting to I2P"
+msgstr "Verbinden met I2P"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:448
+msgid "Error connecting to I2P - check your I2CP settings!"
+msgstr "Fout bij verbinden met I2P - controlleer je I2CP instellingen!"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:457
+#, java-format
+msgid "Error: Could not add the torrent {0}"
+msgstr "Fout: Kan de torrent {0} niet toevoegen"
+
+#. catch this here so we don't try do delete it below
+#: ../java/src/org/klomp/snark/SnarkManager.java:479
+#, java-format
+msgid "Cannot open \"{0}\""
+msgstr "Kan \"{0}\" niet openen"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:492
+#, java-format
+msgid ""
+"Warning - Ignoring non-i2p tracker in \"{0}\", will announce to i2p open "
+"trackers only"
+msgstr "Waarschuwing - Niet-I2P tracker in \"{0}\" wordt genegeerd, zal alleen aankondigen naar i2p open trackers"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:494
+#, java-format
+msgid ""
+"Warning - Ignoring non-i2p tracker in \"{0}\", and open trackers are "
+"disabled, you must enable open trackers before starting the torrent!"
+msgstr "Waarschuwing - Niet-I2P tracker in \"{0}\" wordt genegeerd, en open trackers zijn uitgeschakeld, je moet open trackers inschakelen voor het starten van de torrent!"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:513
+#, java-format
+msgid "Torrent in \"{0}\" is invalid"
+msgstr "Torrent in \"{0}\" is ongeldig"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:528
+#, java-format
+msgid "Torrent added and started: \"{0}\""
+msgstr "Torrent toegevoegd en gestart: \"{0}\""
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:530
+#, java-format
+msgid "Torrent added: \"{0}\""
+msgstr "Torrent toegevoegd: \"{0}\""
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:627
+#, java-format
+msgid "Too many files in \"{0}\" ({1}), deleting it!"
+msgstr "Te veel bestanden in \"{0}\" ({1}), wordt verwijderd!"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:629
+#, java-format
+msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
+msgstr "Torrent bestand \"{0}\" kan niet eindigen in \".torrent\", wordt verwijderd!"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:631
+#, java-format
+msgid "No pieces in \"{0}\", deleting it!"
+msgstr "Geen stukken in \"{0}\", wordt verwijderd!"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:633
+#, java-format
+msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
+msgstr "Te veel stukken in \"{0}\", limiet is {1}, wordt verwijderd!"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:635
+#, java-format
+msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
+msgstr "Stukken zijn te groot in \"{0}\" ({1}B), wordt verwijderd."
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:636
+#, java-format
+msgid "Limit is {0}B"
+msgstr "Limiet is {0}B"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:644
+#, java-format
+msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
+msgstr "Torrents groter dan {0}B worden nog niet ondersteund, verwijder \"{1}\""
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:660
+#, java-format
+msgid "Error: Could not remove the torrent {0}"
+msgstr "Fout: Kan de torrent {0} niet verwijderen"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:681
+#, java-format
+msgid "Torrent stopped: \"{0}\""
+msgstr "Torrent gestopt: \"{0}\""
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:696
+#, java-format
+msgid "Torrent removed: \"{0}\""
+msgstr "Torrent verwijderd: \"{0}\""
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:729
+#, java-format
+msgid "Download finished: \"{0}\""
+msgstr "Download gereed: \"{0}\""
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:729
+#, java-format
+msgid "size: {0}B"
+msgstr "grootte: {0}B"
+
+#: ../java/src/org/klomp/snark/SnarkManager.java:757
+msgid "Unable to connect to I2P!"
+msgstr "Kan niet verbinden met I2P!"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:174
+msgid "I2PSnark - Anonymous BitTorrent Client"
+msgstr "I2PSnark - Anonieme BitTorrent Client"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:185
+msgid "Torrents"
+msgstr "Torrents"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837
+msgid "I2PSnark"
+msgstr "I2PSnark"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:191
+msgid "Refresh page"
+msgstr "Ververs pagina"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:195
+msgid "Forum"
+msgstr "Forum"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1289
+msgid "Status"
+msgstr "Status"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246
+msgid "Hide Peers"
+msgstr "Verberg Peers"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:249
+msgid "Show Peers"
+msgstr "Toon Peers"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:254
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
+msgid "Torrent"
+msgstr "Torrent"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:256
+msgid "ETA"
+msgstr "ETA"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:258
+msgid "Downloaded"
+msgstr "Gedownload"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:260
+msgid "Uploaded"
+msgstr "Geupload"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:262
+msgid "Down Rate"
+msgstr "Down Snelheid"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:264
+msgid "Up Rate"
+msgstr "Up Snelheid"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:271
+msgid "Stop all torrents and the I2P tunnel"
+msgstr "Stop alle torrents en de I2P tunnel"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
+msgid "Stop All"
+msgstr "Stop Alle"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:278
+msgid "Start all torrents and the I2P tunnel"
+msgstr "Start alle torrents en de I2P tunnel"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:280
+msgid "Start All"
+msgstr "Start Alle"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297
+msgid "No torrents loaded."
+msgstr "Geen torrents geladen."
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:302
+msgid "Totals"
+msgstr "Totalen"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:304
+#, java-format
+msgid "1 torrent"
+msgid_plural "{0} torrents"
+msgstr[0] "1 torrent"
+msgstr[1] "{0} torrents"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:307
+#, java-format
+msgid "1 connected peer"
+msgid_plural "{0} connected peers"
+msgstr[0] "1 verbonden peer"
+msgstr[1] "{0} verbonden peers"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:336
+#, java-format
+msgid "Torrent file {0} does not exist"
+msgstr "Torrent bestand {0} bestaat niet"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
+#, java-format
+msgid "Torrent already running: {0}"
+msgstr "Torrent draait al: {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1478
+#, java-format
+msgid "Torrent already in the queue: {0}"
+msgstr "Torrent zit al in de wachtrij: {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:352
+#, java-format
+msgid "Copying torrent to {0}"
+msgstr "Kopieer torrent naar {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:355
+#, java-format
+msgid "Unable to copy the torrent to {0}"
+msgstr "Kan de de torrent niet kopieren naar {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:355
+#, java-format
+msgid "from {0}"
+msgstr "van {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:363
+#, java-format
+msgid "Fetching {0}"
+msgstr "Downloaden {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367
+msgid "Invalid URL - must start with http://"
+msgstr "Ongeldige URL - moet beginnen met http://"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397
+#, java-format
+msgid "Starting up torrent {0}"
+msgstr "Starten met torrent {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:417
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:435
+#, java-format
+msgid "Torrent file deleted: {0}"
+msgstr "Torrent bestand verwijderd: {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:441
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
+#, java-format
+msgid "Data file deleted: {0}"
+msgstr "Data bestand verwijderd: {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:443
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:453
+#, java-format
+msgid "Data file could not be deleted: {0}"
+msgstr "Kan data bestand niet verwijderen: {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
+#, java-format
+msgid "Data dir deleted: {0}"
+msgstr "Data directory verwijderd: {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:494
+msgid "Error creating torrent - you must select a tracker"
+msgstr "Fout bij maken van torrent - je moet een tracker selecteren"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
+#, java-format
+msgid "Torrent created for \"{0}\""
+msgstr "Torrent gemaakt voor \"{0}\""
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
+#, java-format
+msgid ""
+"Many I2P trackers require you to register new torrents before seeding - "
+"please do so before starting \"{0}\""
+msgstr "Veel I2P trackers vereisen dat je de nieuwe torrent registreert voor het seeden - "
+"doe dit voordat je \"{0}\" start"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:514
+#, java-format
+msgid "Error creating a torrent for \"{0}\""
+msgstr "Fout bij het maken van een torrent voor \"{0}\""
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:517
+#, java-format
+msgid "Cannot create a torrent for the nonexistent data: {0}"
+msgstr "Kan geen torrent maken voor niet-bestaande data: {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:520
+msgid "Error creating torrent - you must enter a file or directory"
+msgstr "Fout bij het maken van de torrent - je moet een bestand of directory invullen"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:523
+msgid "Stopping all torrents and closing the I2P tunnel."
+msgstr "Stoppen van alle torrents en sluiten van I2P tunnel."
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:532
+msgid "I2P tunnel closed."
+msgstr "I2P tunnel gesloten."
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
+msgid "Opening the I2P tunnel and starting all torrents."
+msgstr "Openen van de I2P tunnel en starten van alle torrents."
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:851
+msgid "Unknown"
+msgstr "Onbekend"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:670
+msgid "TrackerErr"
+msgstr "TrackerErr"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:691
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699
+#, java-format
+msgid "1 peer"
+msgid_plural "{0} peers"
+msgstr[0] "1 peer"
+msgstr[1] "{0} peers"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679
+msgid "Seeding"
+msgstr "Seeding"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:682
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1327
+msgid "Complete"
+msgstr "Voltooid"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:690
+msgid "OK"
+msgstr "OK"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:693
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698
+msgid "Stalled"
+msgstr "Vastgelopen"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701
+msgid "No Peers"
+msgstr "Geen Peers"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:703
+msgid "Stopped"
+msgstr "Gestopt"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718
+msgid "View files"
+msgstr "Bekijk bestanden"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720
+msgid "Open file"
+msgstr "Open bestand"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:750
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967
+msgid "Tracker"
+msgstr "Tracker"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751
+msgid "Details"
+msgstr "Details"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:785
+msgid "Stop the torrent"
+msgstr "Stop de torrent"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787
+msgid "Stop"
+msgstr "Stop"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:793
+msgid "Start the torrent"
+msgstr "Start de torrent"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:795
+msgid "Start"
+msgstr "Start"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:800
+msgid "Remove the torrent from the active list, deleting the .torrent file"
+msgstr "Verwijder de torrent van de actieve lijst, het .torrent bestand wordt verwijderd"
+
+#. Can't figure out how to escape double quotes inside the onclick string.
+#. Single quotes in translate strings with parameters must be doubled.
+#. Then the remaining single quite must be escaped
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805
+#, java-format
+msgid ""
+"Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded "
+"data will not be deleted) ?"
+msgstr "Weet je zeker dat je het bestand \\''{0}.torrent\\'' wilt verwijderen (gedownloade data zal niet worden verwijderd) ?"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807
+msgid "Remove"
+msgstr "Weghalen"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+msgid "Delete the .torrent file and the associated data file(s)"
+msgstr "Verwijder het .torrent bestand en de gerelateerde data bestand(en)"
+
+#. Can't figure out how to escape double quotes inside the onclick string.
+#. Single quotes in translate strings with parameters must be doubled.
+#. Then the remaining single quite must be escaped
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:816
+#, java-format
+msgid ""
+"Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
+"data?"
+msgstr "Weet je zeker dat je de torrent \\''{0}\\'' en alle gedownloade data wilt verwijderen?"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818
+msgid "Delete"
+msgstr "Verwijderen"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:861
+msgid "Seed"
+msgstr "Seed"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:879
+msgid "Uninteresting (The peer has no pieces we need)"
+msgstr "Niet interessant (De peer heeft geen stukken die we nodig hebben)"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:881
+msgid "Choked (The peer is not allowing us to request pieces)"
+msgstr "Verstikt (De peer laat ons niet toe om stukken op te vragen)"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:895
+msgid "Uninterested (We have no pieces the peer needs)"
+msgstr "Niet geïnteresseerd (We heben geen stukken die de peer nodig heeft)"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897
+msgid "Choking (We are not allowing the peer to request pieces)"
+msgstr "Verstikt (We laten de peer niet toe om stukken op te vragen)"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:927
+msgid "Add Torrent"
+msgstr "Torrent Toevoegen"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:929
+msgid "From URL"
+msgstr "Van URL"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:934
+msgid "Add torrent"
+msgstr "Torrent toevoegen"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:937
+#, java-format
+msgid "Alternately, you can copy .torrent files to the directory {0}."
+msgstr "Als alternatief kan je het .torrent bestand kopieren naar de directory {0}."
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939
+msgid "Removing a .torrent file will cause the torrent to stop."
+msgstr "Verwijderen van een .torrent bestand zorgt dat de torrent stopt."
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
+msgid "Create Torrent"
+msgstr "Creëer Torrent"
+
+#. out.write("From file: \n");
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:961
+msgid "Data to seed"
+msgstr "Data om te seeden"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:965
+msgid "File or directory to seed (must be within the specified path)"
+msgstr "Bestand of directory om te seeden (moet binnen het gespecificeerde pad zijn)"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969
+msgid "Select a tracker"
+msgstr "Selecteer een tracker"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982
+msgid "or"
+msgstr "of"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
+msgid "Specify custom tracker announce URL"
+msgstr "Specificeer aangepaste tracker aankondigings URL"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988
+msgid "Create torrent"
+msgstr "Creëer torrent"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1133
+msgid "Configuration"
+msgstr "Configuratie"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
+msgid "Data directory"
+msgstr "Data directory"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1012
+msgid "Directory to store torrents and data"
+msgstr "Directory om torrents en data op te slaan"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
+msgid "Edit i2psnark.config and restart to change"
+msgstr "Bewerk i2psnark.config en herstart de wijziging"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1018
+msgid "Auto start"
+msgstr "Auto start"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
+msgid "If checked, automatically start torrents that are added"
+msgstr "Indien aangevinkt, start toegevoegde torrents automatisch"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+msgid "Startup delay"
+msgstr "Startup vertraging"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028
+msgid "minutes"
+msgstr "minuten"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1052
+msgid "Total uploader limit"
+msgstr "Totale uploader limiet"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+msgid "peers"
+msgstr "peers"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1059
+msgid "Up bandwidth limit"
+msgstr "Up bandbreedte limiet"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1062
+msgid "Half available bandwidth recommended."
+msgstr "Helft van beschikbare bandbreedte aanbevolen."
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1064
+msgid "View or change router bandwidth"
+msgstr "Bekijk of wijzig router bandbreedte"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+msgid "Use open trackers also"
+msgstr "Gebruik ook open trackers"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+msgid ""
+"If checked, announce torrents to open trackers as well as the tracker listed "
+"in the torrent file"
+msgstr "Indien aangevinkt, kondig torrents ook aan bij de tracker uit het torrent bestand"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1076
+msgid "Open tracker announce URLs"
+msgstr "Open tracker aankondigings URLs"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1088
+msgid "Inbound Settings"
+msgstr "Inkomende Instellingen"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1094
+msgid "Outbound Settings"
+msgstr "Uitgaande Instellingen"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
+msgid "I2CP host"
+msgstr "I2CP host"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1106
+msgid "I2CP port"
+msgstr "I2CP poort"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118
+msgid "I2CP options"
+msgstr "I2CP opties"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1124
+msgid "Save configuration"
+msgstr "Configuratie opslaan"
+
+#. * dummies for translation
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1141
+#, java-format
+msgid "1 hop"
+msgid_plural "{0} hops"
+msgstr[0] "1 hop"
+msgstr[1] "{0} hops"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#, java-format
+msgid "1 tunnel"
+msgid_plural "{0} tunnels"
+msgstr[0] "1 tunnel"
+msgstr[1] "{0} tunnels"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283
+msgid "Up to higher level directory"
+msgstr "Naar bovenliggende directory"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+msgid "File"
+msgstr "Bestand"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+msgid "Size"
+msgstr "Grootte"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1311
+msgid "Directory"
+msgstr "Directory"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1316
+msgid "Torrent not found?"
+msgstr "Torrent niet gevonden?"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1324
+msgid "File not found in torrent?"
+msgstr "Bestand niet gevonden in torrent?"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1330
+msgid "complete"
+msgstr "voltooid"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1331
+msgid "bytes remaining"
+msgstr "bytes resterend"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1456
+#, java-format
+msgid "Torrent fetched from {0}"
+msgstr "Torrent gedownload van {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1484
+#, java-format
+msgid "Torrent at {0} was not valid"
+msgstr "Torrent op {0} was niet geldig"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
+#, java-format
+msgid "Torrent was not retrieved from {0}"
+msgstr "Torrent was niet ontvangen van {0}"
diff --git a/apps/i2ptunnel/locale/messages_nl.po b/apps/i2ptunnel/locale/messages_nl.po
new file mode 100644
index 000000000..39c31def2
--- /dev/null
+++ b/apps/i2ptunnel/locale/messages_nl.po
@@ -0,0 +1,689 @@
+# I2P
+# Copyright (C) 2009 The I2P Project
+# This file is distributed under the same license as the i2ptunnel package.
+# To contribute translations, see http://www.i2p2.de/newdevelopers
+# foo , 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: I2P i2ptunnel\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-07-04 16:39+0000\n"
+"PO-Revision-Date: 2010-06-15 14:09+0100\n"
+"Last-Translator: duck \n"
+"Language-Team: duck , monkeybrains \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Dutch\n"
+
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:492
+#, java-format
+msgid ""
+"To visit the destination in your host database, click here"
+"a>. To visit the conflicting addresshelper destination, click here."
+msgstr "Om de destination in je host database te bezoeken, klik here. Om de conflicterende adreshelper destination te bezoeken, klik here."
+
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:909
+msgid ""
+"Click a link below to look for an address helper by using a \"jump\" service:"
+msgstr "Klik op een onderstaande link om te zoeken naar een adreshelper via een \"jump\" service:"
+
+#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:372
+msgid "New Tunnel"
+msgstr "Nieuwe Tunnel"
+
+#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:392
+msgid "Standard client"
+msgstr "Standaard client"
+
+#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:393
+msgid "HTTP client"
+msgstr "HTTP client"
+
+#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:394
+msgid "IRC client"
+msgstr "IRC client"
+
+#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:395
+msgid "Standard server"
+msgstr "Standaard server"
+
+#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:396
+msgid "HTTP server"
+msgstr "HTTP server"
+
+#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:397
+msgid "SOCKS 4/4a/5 proxy"
+msgstr "SOCKS 4/4a/5 proxy"
+
+#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:398
+msgid "SOCKS IRC proxy"
+msgstr "SOCKS IRC proxy"
+
+#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:399
+msgid "CONNECT/SSL/HTTPS proxy"
+msgstr "CONNECT/SSL/HTTPS proxy"
+
+#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:400
+msgid "IRC server"
+msgstr "IRC server"
+
+#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:401
+msgid "Streamr client"
+msgstr "Streamr client"
+
+#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:402
+msgid "Streamr server"
+msgstr "Streamr server"
+
+#: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:403
+msgid "HTTP bidir"
+msgstr "HTTP bidir"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:73
+msgid "I2P Tunnel Manager - Edit Client Tunnel"
+msgstr "I2P Tunnel Manager - Bewerk Client Tunnel"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:93
+msgid "Edit proxy settings"
+msgstr "Bewerk proxy instellingen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:101
+msgid "New proxy settings"
+msgstr "Nieuwe proxy instellingen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:112
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:112
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:107
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:121
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:242
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:257
+msgid "Name"
+msgstr "Naam"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:116
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:116
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:246
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:270
+msgid "Type"
+msgstr "Type"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:120
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:120
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:226
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:358
+msgid "Description"
+msgstr "Omschrijving"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:126
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:136
+msgid "Target"
+msgstr "Doel"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:130
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:132
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:167
+msgid "Access Point"
+msgstr "Toegangspunt"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:137
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:179
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:207
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:157
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:172
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:228
+msgid "required"
+msgstr "vereist"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:150
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:142
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:183
+msgid "Reachable by"
+msgstr "Bereikbaar voor"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:162
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:195
+msgid "Locally (127.0.0.1)"
+msgstr "Lokaal (127.0.0.1)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:166
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:199
+msgid "Everyone (0.0.0.0)"
+msgstr "Iedereen (0.0.0.0)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:170
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:203
+msgid "LAN Hosts (Please specify your LAN address)"
+msgstr "LAN Hosts (Specificeer je LAN adres)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:186
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:205
+msgid "Other"
+msgstr "Anders"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:195
+msgid "Outproxies"
+msgstr "Uitgaande proxies"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:202
+msgid "Tunnel Destination"
+msgstr "Tunnel Destinations"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:214
+msgid "name or destination"
+msgstr "naam of destination"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:220
+msgid "Shared Client"
+msgstr "Gedeelde Client"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:224
+msgid ""
+"(Share tunnels with other clients and irc/httpclients? Change requires "
+"restart of client proxy)"
+msgstr "(Deel tunnels met andere clients en irc/httpclients? Wijziging vereist herstart van de client proxy)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:228
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:124
+msgid "Auto Start"
+msgstr "Auto Start"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:232
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:128
+msgid "(Check the Box for 'YES')"
+msgstr "(Markeer de Box voor 'JA')"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:234
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:249
+msgid "Advanced networking options"
+msgstr "Geavanceerde netwerk opties"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:236
+msgid ""
+"(NOTE: when this client proxy is configured to share tunnels, then these "
+"options are for all the shared proxy clients!)"
+msgstr "(OPMERKING: wanneer deze client proxy is geconfigureerd om tunnels te delen, dan zijn deze opties van toepassing voor alle gedeelde proxy clients!)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:238
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:251
+msgid "Tunnel Options"
+msgstr "Tunnel Opties"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:240
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:253
+msgid "Length"
+msgstr "Lengte"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:247
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:260
+msgid "0 hop tunnel (low anonymity, low latency)"
+msgstr "0 hop tunnel (lage anonimiteit, weinig vertraging)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:251
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:264
+msgid "1 hop tunnel (medium anonymity, medium latency)"
+msgstr "1 hop tunnel (gemiddelde anonimiteit, gemiddelde vertraging)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:255
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:268
+msgid "2 hop tunnel (high anonymity, high latency)"
+msgstr "2 hop tunnel (hoge anonimiteit, hoge vertraging)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:259
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:272
+msgid "3 hop tunnel (very high anonymity, poor performance)"
+msgstr "3 hop tunnel (zeer hoge anonimiteit, slechte prestatie)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:268
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:281
+msgid "hop tunnel (very poor performance)"
+msgstr "hop tunnel (zeer slechte prestatie)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:273
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:286
+msgid "Variance"
+msgstr "Variantie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:280
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:293
+msgid "0 hop variance (no randomisation, consistant performance)"
+msgstr "0 hop variantie (geen randomisatie, consistente prestatie)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:284
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:297
+msgid ""
+"+ 0-1 hop variance (medium additive randomisation, subtractive performance)"
+msgstr "+ 0-1 hop variantie (gemiddeld toegevoegde randomisatie, minder prestatie)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:288
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:301
+msgid ""
+"+ 0-2 hop variance (high additive randomisation, subtractive performance)"
+msgstr "+ 0-2 hop variantie (hoge toegevoegde randomisatie, minder prestatie)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:292
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:305
+msgid "+/- 0-1 hop variance (standard randomisation, standard performance)"
+msgstr "+/- 0-1 hop variantie (standaard randomisatie, standaard prestatie)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:296
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:309
+msgid "+/- 0-2 hop variance (not recommended)"
+msgstr "+/- 0-2 hop variantie (niet aanbevolen)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:308
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:321
+msgid "hop variance"
+msgstr "hop variantie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:313
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:326
+msgid "Count"
+msgstr "Aantal"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:320
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:333
+msgid "1 inbound, 1 outbound tunnel (low bandwidth usage, less reliability)"
+msgstr "1 inkomende, 1 uitgaande tunnel (laag bandbreedte gebruik, minder betrouwbaar)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:324
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:337
+msgid ""
+"2 inbound, 2 outbound tunnels (standard bandwidth usage, standard "
+"reliability)"
+msgstr "2 inkomende, 2 uitgaande tunnels (standaard bandbreedte gebruik, standaard betrouwbaarheid)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:328
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:341
+msgid ""
+"3 inbound, 3 outbound tunnels (higher bandwidth usage, higher reliability)"
+msgstr "3 inkomende, 3 uitgaande tunnels (hoge bandbreedte gebruik, hogere betrouwbaarheid)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:337
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:350
+msgid "tunnels"
+msgstr "tunnels"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:342
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:355
+msgid "Backup Count"
+msgstr "Backup Aantal"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:349
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:362
+msgid "0 backup tunnels (0 redundancy, no added resource usage)"
+msgstr "0 backup tunnels (0 redundantie, geen additionele bronnen gebruikt)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:353
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:366
+msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
+msgstr "1 backup tunnel in beide richting (lage redundantie, lage aantal bronnen gebruikt)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:357
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:370
+msgid ""
+"2 backup tunnels each direction (medium redundancy, medium resource usage)"
+msgstr "2 backup tunnels in beide richting (gemiddelde redundantie, gemiddeld aantal bronnen gebruikt)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:361
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:374
+msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
+msgstr "3 backup tunnels in beide richting (hoge redundantie, hoog aantal bronnen gebruikt)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:370
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:383
+msgid "backup tunnels"
+msgstr "backup tunnels"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:377
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:390
+msgid "Profile"
+msgstr "Profiel"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:384
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:397
+msgid "interactive connection"
+msgstr "interactieve connectie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:388
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:401
+msgid "bulk connection (downloads/websites/BT)"
+msgstr "bulk connection (downloads/websites/BT)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:390
+msgid "Delay Connect"
+msgstr "Vertraagde Connectie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:394
+msgid "for request/response connections"
+msgstr "voor request/response connecties"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:398
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:405
+msgid "I2CP Options"
+msgstr "I2CP Opties"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:400
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:146
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:407
+msgid "Host"
+msgstr "Host"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:404
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:152
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:244
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:266
+msgid "Port"
+msgstr "Poort"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:410
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:443
+msgid "Reduce tunnel quantity when idle"
+msgstr "Verminder tunnel aantal wanneer in rust"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:412
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:426
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:434
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:446
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:456
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:417
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:433
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:445
+msgid "Enable"
+msgstr "Ingeschakeld"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:416
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:449
+msgid "Reduced tunnel count"
+msgstr "Verminder tunnel aantal"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:420
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:440
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:453
+msgid "Idle minutes"
+msgstr "Rust minuten"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:424
+msgid "Close tunnels when idle"
+msgstr "Sluit tunnels wanneer in rust"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:430
+msgid "New Keys on Reopen"
+msgstr "Nieuwe Sleutels bij Heropenen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:438
+msgid "Disable"
+msgstr "Uitgeschakeld"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:444
+msgid "Delay tunnel open until required"
+msgstr "Vertraag tunnel opening totdat het nodig is"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:454
+msgid "Persistent private key"
+msgstr "Persistente private sleutel"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:460
+msgid "File"
+msgstr "Bestand"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:464
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:235
+msgid "Local destination"
+msgstr "Lokale destination"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:468
+msgid "(if known)"
+msgstr "(indien bekend)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:472
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:489
+msgid "Custom options"
+msgstr "Aangepaste opties"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:476
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:493
+msgid ""
+"NOTE: If tunnel is currently running, most changes will not take effect "
+"until tunnel is stopped and restarted."
+msgstr "OPMERKING: Indien de tunnel op dit moment draait, zullen de meeste wijzigingen pas effect hebben na het stoppen en herstarten van de tunnel."
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:478
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:495
+msgid "Cancel"
+msgstr "Annuleer"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:482
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:499
+msgid "Delete"
+msgstr "Verwijder"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:484
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:501
+msgid "Save"
+msgstr "Opslaan"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:73
+msgid "I2P Tunnel Manager - Edit Server Tunnel"
+msgstr "I2P Tunnel Manager - Bewerk Server Tunnel"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:93
+msgid "Edit server settings"
+msgstr "Bewerk server instellingen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:101
+msgid "New server settings"
+msgstr "Nieuwe server instellingen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:214
+msgid "Website name"
+msgstr "Website naam"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:218
+msgid "(leave blank for outproxies)"
+msgstr "(leeg laten voor uitgaande proxies)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:223
+msgid "Private key file"
+msgstr "Private sleutel bestand"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:245
+msgid "Add to local addressbook"
+msgstr "Toevoegen aan lokaal adresboek"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:415
+msgid "Encrypt Leaseset"
+msgstr "Versleutel Leaseset"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:421
+msgid "Encryption Key"
+msgstr "Encryptie Sleutel"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:425
+msgid "Generate New Key"
+msgstr "Genereer Nieuwe Sleutel"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:427
+msgid "Generate"
+msgstr "Genereer"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:429
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:487
+msgid "(Tunnel must be stopped first)"
+msgstr "(Tunnel moet eerst gestopt worden)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:431
+msgid "Restricted Access List"
+msgstr "Beperkte Toegangs Lijst"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:437
+msgid "Access List"
+msgstr "Toegangs Lijst"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:441
+msgid "(Restrict to these clients only)"
+msgstr "(Beperkt tot slechts deze clients)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:457
+msgid "New Certificate type"
+msgstr "Nieuw Certificaat type"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:459
+msgid "None"
+msgstr "Geen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:463
+msgid "Hashcash (effort)"
+msgstr "Hashcash (effort)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:469
+msgid "Hashcash Calc Time"
+msgstr "Hashcash Reken Tijd"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:471
+msgid "Estimate"
+msgstr "Inschatten"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:473
+msgid "Hidden"
+msgstr "Verborgen"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:477
+msgid "Signed (signed by)"
+msgstr "Ondertekend (ondertekend door)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:483
+msgid "Modify Certificate"
+msgstr "Wijzig Certificaat"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:485
+msgid "Modify"
+msgstr "Wijzig"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:71
+msgid "I2P Tunnel Manager - List"
+msgstr "I2P Tunnel Manager - Lijst"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:83
+msgid "Status Messages"
+msgstr "Status Berichten"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:87
+msgid "Refresh"
+msgstr "Ververs"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:91
+msgid "Stop All"
+msgstr "Stop Alles"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:95
+msgid "Start All"
+msgstr "Start Alles"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:99
+msgid "Restart All"
+msgstr "Herstart Alles"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:103
+msgid "Reload Config"
+msgstr "Herlaad Configuratie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:105
+msgid "I2P Server Tunnels"
+msgstr "I2P Server Tunnels"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:109
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130
+msgid "Points at"
+msgstr "Verwijst naar"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:111
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:153
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:157
+msgid "Preview"
+msgstr "Preview"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:113
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:177
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:250
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:278
+msgid "Status"
+msgstr "Status"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:163
+msgid "Base32 Address"
+msgstr "Base32 Adres"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:171
+msgid "No Preview"
+msgstr "Geen Preview"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:184
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:285
+msgid "Starting..."
+msgstr "Starten..."
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:191
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:205
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:292
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:306
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:320
+msgid "Stop"
+msgstr "Stop"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:198
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:313
+msgid "Running"
+msgstr "Draait"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:212
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:327
+msgid "Stopped"
+msgstr "Gestopt"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:219
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:334
+msgid "Start"
+msgstr "Start"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:234
+msgid "New server tunnel"
+msgstr "Nieuwe server tunnel"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:236
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:368
+msgid "Standard"
+msgstr "Standaard"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:238
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:370
+msgid "Create"
+msgstr "Creëer"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:240
+msgid "I2P Client Tunnels"
+msgstr "I2P Client Tunnels"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:248
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:274
+msgid "Interface"
+msgstr "Interface"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:299
+msgid "Standby"
+msgstr "Stand-by"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:346
+msgid "Outproxy"
+msgstr "Uitgaande proxy"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:350
+msgid "Destination"
+msgstr "Destination"
+
+#: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:366
+msgid "New client tunnel"
+msgstr "Nieuwe client tunnel"
diff --git a/history.txt b/history.txt
index 365cb9161..988a506c6 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,6 @@
+2010-07-05 duck
+ * I2PTunnel & I2PSnark: Dutch translation (thanks to monkeybrains)
+
2010-07-04 duck
* RouterConsole: Dutch translation (thanks to monkeybrains)
From 378c85590274aee74551873e086aad7fae70614d Mon Sep 17 00:00:00 2001
From: zzz
Date: Mon, 5 Jul 2010 14:20:02 +0000
Subject: [PATCH 17/75] cleanup
---
.../src/org/klomp/snark/PeerCoordinator.java | 62 ++++++++++---------
1 file changed, 32 insertions(+), 30 deletions(-)
diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
index 2a2e40e7d..6d3895036 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
@@ -62,7 +62,7 @@ public class PeerCoordinator implements PeerListener
private long downloaded_old[] = {-1,-1,-1,-1,-1,-1};
// synchronize on this when changing peers or downloaders
- final List peers = new ArrayList();
+ final List peers = new ArrayList();
/** estimate of the peers, without requiring any synchronization */
volatile int peerCount;
@@ -72,7 +72,7 @@ public class PeerCoordinator implements PeerListener
private final byte[] id;
// Some random wanted pieces
- private List wantedPieces;
+ private List wantedPieces;
private boolean halted = false;
@@ -117,7 +117,7 @@ public class PeerCoordinator implements PeerListener
public CoordinatorListener getListener() { return listener; }
// for web page detailed stats
- public List peerList()
+ public List peerList()
{
synchronized(peers)
{
@@ -135,8 +135,10 @@ public class PeerCoordinator implements PeerListener
return storage.complete();
}
+ /** might be wrong */
public int getPeerCount() { return peerCount; }
+ /** should be right */
public int getPeers()
{
synchronized(peers)
@@ -260,7 +262,7 @@ public class PeerCoordinator implements PeerListener
public void halt()
{
halted = true;
- List removed = new ArrayList();
+ List removed = new ArrayList();
synchronized(peers)
{
// Stop peer checker task.
@@ -273,7 +275,7 @@ public class PeerCoordinator implements PeerListener
}
while (!removed.isEmpty()) {
- Peer peer = (Peer)removed.remove(0);
+ Peer peer = removed.remove(0);
peer.disconnect();
removePeerFromPieces(peer);
}
@@ -340,9 +342,9 @@ public class PeerCoordinator implements PeerListener
// caller must synchronize on peers
private static Peer peerIDInList(PeerID pid, List peers)
{
- Iterator it = peers.iterator();
+ Iterator it = peers.iterator();
while (it.hasNext()) {
- Peer cur = (Peer)it.next();
+ Peer cur = it.next();
if (pid.sameID(cur.getPeerID()))
return cur;
}
@@ -406,15 +408,15 @@ public class PeerCoordinator implements PeerListener
// linked list will contain all interested peers that we choke.
// At the start are the peers that have us unchoked at the end the
// other peer that are interested, but are choking us.
- List interested = new LinkedList();
+ List interested = new LinkedList();
synchronized (peers) {
int count = 0;
int unchokedCount = 0;
int maxUploaders = allowedUploaders();
- Iterator it = peers.iterator();
+ Iterator it = peers.iterator();
while (it.hasNext())
{
- Peer peer = (Peer)it.next();
+ Peer peer = it.next();
if (peer.isChoking() && peer.isInterested())
{
count++;
@@ -430,7 +432,7 @@ public class PeerCoordinator implements PeerListener
while (uploaders < maxUploaders && !interested.isEmpty())
{
- Peer peer = (Peer)interested.remove(0);
+ Peer peer = interested.remove(0);
if (_log.shouldLog(Log.DEBUG))
_log.debug("Unchoke: " + peer);
peer.setChoking(false);
@@ -475,10 +477,10 @@ public class PeerCoordinator implements PeerListener
synchronized(wantedPieces)
{
- Iterator it = wantedPieces.iterator();
+ Iterator it = wantedPieces.iterator();
while (it.hasNext())
{
- Piece p = (Piece)it.next();
+ Piece p = it.next();
int i = p.getId();
if (bitfield.get(i)) {
p.addPeer(peer);
@@ -512,11 +514,11 @@ public class PeerCoordinator implements PeerListener
{
Piece piece = null;
Collections.sort(wantedPieces); // Sort in order of rarest first.
- List requested = new ArrayList();
- Iterator it = wantedPieces.iterator();
+ List requested = new ArrayList();
+ Iterator it = wantedPieces.iterator();
while (piece == null && it.hasNext())
{
- Piece p = (Piece)it.next();
+ Piece p = it.next();
if (havePieces.get(p.getId()) && !p.isRequested())
{
piece = p;
@@ -536,10 +538,10 @@ public class PeerCoordinator implements PeerListener
return -1; // nothing to request and not in end game
// let's not all get on the same piece
Collections.shuffle(requested);
- Iterator it2 = requested.iterator();
+ Iterator it2 = requested.iterator();
while (piece == null && it2.hasNext())
{
- Piece p = (Piece)it2.next();
+ Piece p = it2.next();
if (havePieces.get(p.getId()))
{
piece = p;
@@ -659,11 +661,11 @@ public class PeerCoordinator implements PeerListener
// Disconnect from other seeders when we get the last piece
synchronized(peers)
{
- List toDisconnect = new ArrayList();
- Iterator it = peers.iterator();
+ List toDisconnect = new ArrayList();
+ Iterator it = peers.iterator();
while (it.hasNext())
{
- Peer p = (Peer)it.next();
+ Peer p = it.next();
if (p.isConnected())
{
if (completed() && p.isCompleted())
@@ -675,7 +677,7 @@ public class PeerCoordinator implements PeerListener
it = toDisconnect.iterator();
while (it.hasNext())
{
- Peer p = (Peer)it.next();
+ Peer p = it.next();
p.disconnect(true);
}
}
@@ -741,8 +743,8 @@ public class PeerCoordinator implements PeerListener
*/
public void removePeerFromPieces(Peer peer) {
synchronized(wantedPieces) {
- for(Iterator iter = wantedPieces.iterator(); iter.hasNext(); ) {
- Piece piece = (Piece)iter.next();
+ for(Iterator iter = wantedPieces.iterator(); iter.hasNext(); ) {
+ Piece piece = iter.next();
piece.removePeer(peer);
}
}
@@ -796,8 +798,8 @@ public class PeerCoordinator implements PeerListener
}
synchronized(wantedPieces)
{
- for(Iterator iter = wantedPieces.iterator(); iter.hasNext(); ) {
- Piece piece = (Piece)iter.next();
+ for(Iterator iter = wantedPieces.iterator(); iter.hasNext(); ) {
+ Piece piece = iter.next();
if (piece.getId() == savedRequest.piece) {
Request req = savedRequest;
piece.setRequested(true);
@@ -822,9 +824,9 @@ public class PeerCoordinator implements PeerListener
// see if anybody else is requesting
synchronized (peers)
{
- Iterator it = peers.iterator();
+ Iterator it = peers.iterator();
while (it.hasNext()) {
- Peer p = (Peer)it.next();
+ Peer p = it.next();
if (p.equals(peer))
continue;
if (p.state == null)
@@ -842,9 +844,9 @@ public class PeerCoordinator implements PeerListener
// nobody is, so mark unrequested
synchronized(wantedPieces)
{
- Iterator it = wantedPieces.iterator();
+ Iterator it = wantedPieces.iterator();
while (it.hasNext()) {
- Piece p = (Piece)it.next();
+ Piece p = it.next();
if (p.getId() == piece) {
p.setRequested(false);
if (_log.shouldLog(Log.DEBUG))
From 29bc53d618bbe6a0ad5bff801846fb75d2c35d3f Mon Sep 17 00:00:00 2001
From: zzz
Date: Mon, 5 Jul 2010 14:20:34 +0000
Subject: [PATCH 18/75] * i2psnark: Fix transition to end game
---
.../java/src/org/klomp/snark/PeerState.java | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java
index d1865a2b9..5e9250e22 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java
@@ -523,8 +523,10 @@ class PeerState
_log.debug(peer + " requests " + outstandingRequests);
}
- // Starts requesting first chunk of next piece. Returns true if
- // something has been added to the requests, false otherwise.
+ /**
+ * Starts requesting first chunk of next piece. Returns true if
+ * something has been added to the requests, false otherwise.
+ */
private boolean requestNextPiece()
{
// Check that we already know what the other side has.
@@ -556,6 +558,15 @@ class PeerState
if (nextPiece != -1
&& (lastRequest == null || lastRequest.piece != nextPiece))
{
+ // Fail safe to make sure we are interested
+ // When we transition into the end game we may not be interested...
+ if (!interesting) {
+ if (_log.shouldLog(Log.DEBUG))
+ _log.debug(peer + " transition to end game, setting interesting");
+ interesting = true;
+ out.sendInterest(true);
+ }
+
int piece_length = metainfo.getPieceLength(nextPiece);
//Catch a common place for OOMs esp. on 1MB pieces
byte[] bs;
From 5f52edf831d80e830a39f04ed9dcf38e60fed4ab Mon Sep 17 00:00:00 2001
From: zzz
Date: Mon, 5 Jul 2010 14:21:38 +0000
Subject: [PATCH 19/75] * I2PTunnelIRCClient: Filter PART messages like we
do for QUIT
---
.../java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java | 7 ++++++-
history.txt | 4 ++++
router/java/src/net/i2p/router/RouterVersion.java | 2 +-
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java
index a1cd1256e..4d8b85a81 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java
@@ -387,7 +387,7 @@ public class I2PTunnelIRCClient extends I2PTunnelClientBase implements Runnable
// "QUIT", // replace with a filtered QUIT to hide client quit messages
"SILENCE",
"MAP", // seems safe enough, the ircd should protect themselves though
- "PART",
+ // "PART", // replace with filtered PART to hide client part messages
"OPER",
// "PONG", // replaced with a filtered PING/PONG since some clients send the server IP (thanks aardvax!)
// "PING",
@@ -491,6 +491,11 @@ public class I2PTunnelIRCClient extends I2PTunnelClientBase implements Runnable
return ret;
}
+ if ("PART".equals(command)) {
+ // hide client message
+ return "PART " + field[1] + " :leaving";
+ }
+
if ("QUIT".equals(command)) {
return "QUIT :leaving";
}
diff --git a/history.txt b/history.txt
index 988a506c6..c2fbc0efc 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,7 @@
+2010-07-05 zzz
+ * i2psnark: Fix transition to end game
+ * I2PTunnelIRCClient: Filter PART messages like we do for QUIT
+
2010-07-05 duck
* I2PTunnel & I2PSnark: Dutch translation (thanks to monkeybrains)
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index fecba78d6..a6204817e 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -18,7 +18,7 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = CoreVersion.VERSION;
- public final static long BUILD = 7;
+ public final static long BUILD = 8;
/** for example "-test" */
public final static String EXTRA = "";
From 826951536bb2a291eb7189530f8175cb3c191253 Mon Sep 17 00:00:00 2001
From: privateer
Date: Mon, 5 Jul 2010 14:35:22 +0000
Subject: [PATCH 20/75] - anged user agent for outproxy from Wget/1.11.4 to
Firefox 3.6.6 on WinXP to avoid getting blocked as a crawler
---
.../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
index cfcfaca01..930f8eb22 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
@@ -644,12 +644,13 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
}
if (!Boolean.valueOf(getTunnel().getClientOptions().getProperty(PROP_USER_AGENT)).booleanValue()) {
// let's not advertise to external sites that we are from I2P
+ UASwitcher ua_switcher = new UASwitcher();
if (usingWWWProxy)
- newRequest.append("User-Agent: Wget/1.11.4\r\n");
+ newRequest.append("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6\r\n");
else
newRequest.append("User-Agent: MYOB/6.66 (AN/ON)\r\n");
}
- newRequest.append("Connection: close\r\n\r\n");
+ newRequest.append("Connection: close\r\n\r\n");
break;
} else {
newRequest.append(line).append("\r\n"); // HTTP spec
From c43ca7de8768c4246cbdbc1a82bf76c2d467b608 Mon Sep 17 00:00:00 2001
From: privateer
Date: Mon, 5 Jul 2010 15:34:39 +0000
Subject: [PATCH 21/75] - removed one useless line of code
---
.../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
index 930f8eb22..b6c72821e 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
@@ -644,7 +644,6 @@ public class I2PTunnelHTTPClient extends I2PTunnelClientBase implements Runnable
}
if (!Boolean.valueOf(getTunnel().getClientOptions().getProperty(PROP_USER_AGENT)).booleanValue()) {
// let's not advertise to external sites that we are from I2P
- UASwitcher ua_switcher = new UASwitcher();
if (usingWWWProxy)
newRequest.append("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6\r\n");
else
From b312fdeac1d149954bcdcf0ef06ae119da485b13 Mon Sep 17 00:00:00 2001
From: duck
Date: Mon, 5 Jul 2010 23:07:19 +0000
Subject: [PATCH 22/75] susidns: Dutch translation (thanks do monkeybrains)
---
apps/susidns/locale/messages_nl.po | 532 +++++++++++++++++++++++++++++
history.txt | 3 +
2 files changed, 535 insertions(+)
create mode 100644 apps/susidns/locale/messages_nl.po
diff --git a/apps/susidns/locale/messages_nl.po b/apps/susidns/locale/messages_nl.po
new file mode 100644
index 000000000..c3afac128
--- /dev/null
+++ b/apps/susidns/locale/messages_nl.po
@@ -0,0 +1,532 @@
+# I2P
+# Copyright (C) 2009 The I2P Project
+# This file is distributed under the same license as the susidns package.
+# To contribute translations, see http://www.i2p2.de/newdevelopers
+# foo , 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: I2P susidns\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-07-05 22:40+0000\n"
+"PO-Revision-Date: 2010-06-15 11:22+0100\n"
+"Last-Translator: duck \n"
+"Language-Team: duck , monkeybrains \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Dutch\n"
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:199
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:193
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:197
+msgid "Search"
+msgstr "Zoek"
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:203
+msgid "Search within filtered list"
+msgstr "Zoek binnen gefilterde lijst"
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:205
+msgid "Filtered list"
+msgstr "Gefilterde lijst"
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:209
+msgid "no matches"
+msgstr "geen resultaten"
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:212
+msgid "Addressbook"
+msgstr "Adresboek"
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:214
+msgid "contains no entries"
+msgstr "bevat geen items"
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:216
+msgid "contains 1 entry"
+msgstr "bevat 1 item"
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:218
+#, java-format
+msgid "contains {0} entries"
+msgstr "bevat {0} items"
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:228
+#, java-format
+msgid "Showing {0} of {1}"
+msgstr "Toon {0} van {1}"
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:259
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:368
+msgid "Add"
+msgstr "Toevoegen"
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:259
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:264
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:366
+msgid "Replace"
+msgstr "Vervang"
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:263
+#, java-format
+msgid "Host name {0} is already in addressbook, unchanged."
+msgstr "Host naam {0} is al in het adresboek, ongewijzigd."
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:265
+#, java-format
+msgid ""
+"Host name {0} is already in addressbook with a different destination. Click "
+"\"Replace\" to overwrite."
+msgstr ""
+"Host naam {0} is al in het adresboek met een andere destination. Klik op "
+"\"Vervang\" om te overschrijven."
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:277
+#, java-format
+msgid "Destination added for {0}."
+msgstr "Destination toegevoegd voor {0}."
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:279
+#, java-format
+msgid "Destination changed for {0}."
+msgstr "Destination gewijzigd voor {0}."
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:284
+msgid "Invalid Base 64 destination."
+msgstr "Ongeldige Base 64 destination."
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:288
+msgid "Please enter a host name and destination"
+msgstr "Voer een host naam en destination in"
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:292
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:314
+msgid "Delete Selected"
+msgstr "Verwijderen Selectie"
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:302
+#, java-format
+msgid "Destination {0} deleted."
+msgstr "Destination {0} verwijderd."
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:304
+#, java-format
+msgid "{0} destinations deleted."
+msgstr "{0} destinations verwijderd."
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:310
+msgid "Addressbook saved."
+msgstr "Adresboek opgeslagen."
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:313
+msgid "ERROR: Could not write addressbook file."
+msgstr "ERROR: Kan het adresboek bestand niet wegschrijven."
+
+#: ../src/java/src/i2p/susi/dns/AddressbookBean.java:318
+#: ../src/java/src/i2p/susi/dns/ConfigBean.java:148
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:150
+msgid ""
+"Invalid form submission, probably because you used the \"back\" or \"reload"
+"\" button on your browser. Please resubmit."
+msgstr ""
+"Ongeldig formulier verzonden, waarschijnlijk omdat je de \"terug\" or "
+"\"vernieuw\" knop in je browser hebt gebruikt. Probeer opnieuw te verzenden."
+
+#: ../src/java/src/i2p/susi/dns/ConfigBean.java:139
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:129
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:130
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:130
+msgid "Save"
+msgstr "Opgeslagen"
+
+#: ../src/java/src/i2p/susi/dns/ConfigBean.java:141
+msgid "Configuration saved."
+msgstr "Configuratie opgeslagen."
+
+#: ../src/java/src/i2p/susi/dns/ConfigBean.java:142
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:128
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:128
+msgid "Reload"
+msgstr "Herladen"
+
+#: ../src/java/src/i2p/susi/dns/ConfigBean.java:144
+msgid "Configuration reloaded."
+msgstr "Configuratie herladen."
+
+#. Yes this is a hack.
+#. No it doesn't work on a text-mode browser.
+#. Fetching from the addressbook servlet
+#. with the correct parameters will kick off a
+#. config reload and fetch.
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:138
+msgid ""
+"Subscriptions saved, updating addressbook from subscription sources now."
+msgstr ""
+"Subscriptions opgeslagen, adresboek wordt nu vernieuwd van de subscription "
+"bronnen."
+
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:142
+msgid "Subscriptions saved."
+msgstr "Subscriptions opgeslagen."
+
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:146
+msgid "Subscriptions reloaded."
+msgstr "Subscriptions herladen."
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:125
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:145
+msgid "addressbook"
+msgstr "adresboek"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:127
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:104
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:93
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:104
+msgid "addressbooks"
+msgstr "adresboeken"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:129
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:106
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:95
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:106
+msgid "private"
+msgstr "privé"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:131
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:108
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:97
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:108
+msgid "master"
+msgstr "hoofd"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:133
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:110
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:99
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:110
+msgid "router"
+msgstr "router"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:135
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:112
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:101
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:112
+msgid "published"
+msgstr "gepubliceerd"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:137
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:114
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:103
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:102
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:114
+msgid "subscriptions"
+msgstr "subscriptions"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:139
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:102
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:116
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:105
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:116
+msgid "configuration"
+msgstr "configuratie"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:141
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:118
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:107
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:118
+msgid "overview"
+msgstr "overzicht"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:163
+msgid "Filter"
+msgstr "Filter"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:166
+msgid "all"
+msgstr "alle"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:177
+msgid "Current filter"
+msgstr "Huidige filter"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:182
+msgid "clear filter"
+msgstr "wis filter"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:224
+msgid "Name"
+msgstr "Naam"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:226
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:362
+msgid "Destination"
+msgstr "Destination"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:257
+msgid "Mark for deletion"
+msgstr "Markeer voor verwijdering"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:279
+msgid "address helper link"
+msgstr "adres helper link"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:312
+msgid "Cancel"
+msgstr "Annuleer"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:345
+msgid "This addressbook is empty."
+msgstr "Dit adresboek is leeg."
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:356
+msgid "Add new destination"
+msgstr "Nieuwe destination toevoegen"
+
+#: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:358
+msgid "Hostname"
+msgstr "Hostnaam"
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:132
+msgid "Hints"
+msgstr "Hints"
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:134
+msgid ""
+"File and directory paths here are relative to the addressbook's working "
+"directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P"
+"\\addressbook\\ (Windows)."
+msgstr ""
+"De bestands en directory paden hier zijn relatief aan de werk directory van "
+"het adresboek. Dit is gewoonlijk ~/.i2p/addressbook/ (Linux) or %APPDATA%"
+"\\I2P\\addressbook\\ (Windows)."
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:136
+msgid ""
+"If you want to manually add lines to an addressbook, add them to the private "
+"or master addressbooks."
+msgstr ""
+"Indien je handmatig regels wilt toevoegen aan het adresboek, voeg ze toe aan "
+"het privé of hoofd adresboek."
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:138
+msgid ""
+"The router addressbook and the published addressbook are updated by the "
+"addressbook application."
+msgstr ""
+"Het router adresboek en het gepubliceerde adresboek worden geupdate door de "
+"adresboek applicatie."
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:140
+msgid ""
+"When you publish your addressbook, ALL destinations from the master and "
+"router addressbooks appear there."
+msgstr ""
+"Wanneer je je adresboek publiceert, zullen ALLE destinations uit de hoofd en "
+"router adresboeken hierin verschijnen."
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:142
+msgid ""
+"Use the private addressbook for private destinations, these are not "
+"published."
+msgstr ""
+"Gebruik het privé adresboek voor privé destinations, deze worden niet "
+"gepubliceerd."
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:144
+msgid "Options"
+msgstr "Opties"
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:146
+msgid "File containing the list of subscriptions URLs (no need to change)"
+msgstr "Bestand bevat de lijst met subscription URLs (wijzigen niet nodig)"
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:148
+msgid "Update interval in hours"
+msgstr "Vernieuw interval in uren"
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:150
+msgid ""
+"Your public hosts.txt file (choose a path within your webserver document "
+"root)"
+msgstr ""
+"Je publieke hosts.txt bestand (specificeer een pad binnen de document root "
+"van je webserver)"
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:152
+msgid "Your hosts.txt (don't change)"
+msgstr "Je hosts.txt (niet wijzigen)"
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:154
+msgid "Your personal addressbook, these hosts will be published"
+msgstr "Je persoonlijke adresboek, deze hosts zullen worden gepubliceerd"
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:156
+msgid "Your private addressbook, it is never published"
+msgstr "Je privé adresboek, dit wordt nooit gepubliceerd"
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
+msgid "Port for your eepProxy (no need to change)"
+msgstr "Poort voor je eepProxy (wijzigen niet nodig)"
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
+msgid "Hostname for your eepProxy (no need to change)"
+msgstr "Hostnaam voor je eepProxy (wijzigen niet nodig)"
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
+msgid "Whether to update the published addressbook"
+msgstr "Of het gepubliceerde adresboek geupdate moet worden"
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164
+msgid ""
+"File containing the etags header from the fetched subscription URLs (no need "
+"to change)"
+msgstr ""
+"Bestand bevat de etags header van de gedownloade subscription URLs "
+"(wijzigens niet nodig)"
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:166
+msgid ""
+"File containing the modification timestamp for each fetched subscription URL "
+"(no need to change)"
+msgstr ""
+"Bestand bevat de wijzigings timestap voor elke gedownloade subscription URLs "
+"(wijzigens niet nodig)"
+
+#: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:168
+msgid "File to log activity to (change to /dev/null if you like)"
+msgstr ""
+"Bestand om activiteit naar te loggen (wijzig naar /dev/null indien gewenst)"
+
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:91
+msgid "Introduction"
+msgstr "Introductie"
+
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:109
+msgid "What is the addressbook?"
+msgstr "Wat is het adresboek?"
+
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:111
+msgid "The addressbook application is part of your i2p installation."
+msgstr "De adresboek applicatie is een onderdeel van je i2p installatie."
+
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:113
+msgid ""
+"It regularly updates your hosts.txt file from distributed sources or "
+"\"subscriptions\"."
+msgstr ""
+"Het update je hosts.txt bestand regelmatig vanaf gedistribueerde bronnen of "
+"\"subscriptions\"."
+
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
+msgid ""
+"In the default configuration, the addressbook is only subscribed to www.i2p2."
+"i2p."
+msgstr ""
+"In de standaard configuratie heeft het adresboek alleen subscriptions op www."
+"i2p2.i2p."
+
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:117
+msgid ""
+"Subscribing to additional sites is easy, just add them to your subscriptions file."
+msgstr ""
+"Subscriptions op andere sites toevoegen is eenvoudig, voeg ze toe aan het subscriptions bestand."
+
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:119
+msgid ""
+"For more information on naming in i2p, see the overview on www.i2p2.i2p."
+msgstr ""
+"Voor meer informatie over naamgeving in i2p, zie het overzicht op www.i2p2.i2p."
+
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:121
+msgid "How does the addressbook work?"
+msgstr "Hoe werkt het adresboek?"
+
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:123
+msgid ""
+"The addressbook application regularly polls your subscriptions and merges "
+"their content into your \"router\" addressbook, stored in the hosts.txt file."
+msgstr ""
+"De adresboek applicatie polst je subscripties regelmatig en voegt hun inhoud "
+"bij je \"router\" adresboek, opgeslagen in het hosts.txt bestand."
+
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:125
+msgid ""
+"Then it merges your \"master\" addressbook (userhosts.txt) into the router "
+"addressbook as well."
+msgstr ""
+"Vervolgens voegt het ook je \"hoofd\" adresboek (userhosts.txt) samen in het "
+"router adresboek."
+
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:127
+msgid ""
+"If configured, the router addressbook is now written to the \"published\" "
+"addressbook, which will be publicly available if you are running an eepsite."
+msgstr ""
+"Indien geconfigureerd wordt het router adresboek geschreven naar het "
+"\"gepubliceerde\" adresboek, welke publiekelijk beschikbaar is indien je een "
+"eepsite hebt."
+
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:129
+msgid ""
+"The router also uses a private addressbook (privatehosts.txt, not shown in "
+"the picture), which is not merged or published."
+msgstr ""
+"De router gebruikt tevens een privé adresboek (privatehosts.txt, niet "
+"getoond in de afbeelding), deze wordt niet samengevoegd of gepubliceerd."
+
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:131
+msgid ""
+"Hosts in the private addressbook can be accessed by you but their addresses "
+"are never distributed to others."
+msgstr ""
+"Hosts in het privé adresboek kunnen door jou benaderd worden, maar worden "
+"nooit gedistribueerd naar anderen."
+
+#: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:133
+msgid ""
+"The private addressbook can also be used for aliases of hosts in your other "
+"addressbooks."
+msgstr ""
+"Het privé adresboek kan ook gebruikt worden voor aliassen van hosts in je "
+"andere adresboeken."
+
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:132
+msgid "The subscription file contains a list of i2p URLs."
+msgstr "Het subscription bestand bevat een lijst met i2p URLs."
+
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
+#, fuzzy
+msgid ""
+"The addressbook application regularly checks this list for new eepsites."
+msgstr ""
+"De adresboek applicatie controlleert deze lijst regelmatig op nieuwe "
+"eepsites."
+
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:136
+msgid "Those URLs refer to published hosts.txt files."
+msgstr "Deze URLs verwijzen naar gepubliceerde hosts.txt bestanden."
+
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:138
+msgid ""
+"The default subscription is the hosts.txt from www.i2p2.i2p, which is "
+"updated infrequently."
+msgstr ""
+"De standaard subscription is het hosts.txt bestand van www.i2p2.i2p, deze "
+"wordt slechts sporadisch geupdate."
+
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:140
+msgid ""
+"So it is a good idea to add additional subscriptions to sites that have the "
+"latest addresses."
+msgstr ""
+"Dus is het een goed idee om extra subscriptions toe te voegen op sites met "
+"de laatste adressen."
+
+#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:142
+msgid "See the FAQ for a list of subscription URLs."
+msgstr "Zie de FAQ voor een lijst met subscription URLs."
diff --git a/history.txt b/history.txt
index c2fbc0efc..03c8135ca 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,6 @@
+2010-07-06 duck
+ * susidns: Dutch translation (thanks to monkeybrains)
+
2010-07-05 zzz
* i2psnark: Fix transition to end game
* I2PTunnelIRCClient: Filter PART messages like we do for QUIT
From d04ce7a2b794b1dbb8c16da02db1fe9124c080ca Mon Sep 17 00:00:00 2001
From: zzz
Date: Tue, 6 Jul 2010 17:14:41 +0000
Subject: [PATCH 23/75] launch browser sooner
---
installer/resources/clients.config | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/installer/resources/clients.config b/installer/resources/clients.config
index 85c30da7f..db6fa628e 100644
--- a/installer/resources/clients.config
+++ b/installer/resources/clients.config
@@ -35,7 +35,7 @@ clientApp.3.startOnLoad=true
clientApp.4.main=net.i2p.apps.systray.UrlLauncher
clientApp.4.name=Open Router Console in web browser at startup
clientApp.4.args=http://127.0.0.1:7657/index.jsp
-clientApp.4.delay=15
+clientApp.4.delay=3
clientApp.4.startOnLoad=true
# BOB bridge
From 3a767d84df06d7df926534ddb4f1b27016d854a7 Mon Sep 17 00:00:00 2001
From: zzz
Date: Tue, 6 Jul 2010 17:14:57 +0000
Subject: [PATCH 24/75] concurrentify with LBQ
---
.../src/net/i2p/crypto/SHA256Generator.java | 23 +++++--------------
1 file changed, 6 insertions(+), 17 deletions(-)
diff --git a/core/java/src/net/i2p/crypto/SHA256Generator.java b/core/java/src/net/i2p/crypto/SHA256Generator.java
index d24915ed5..aa4d041f0 100644
--- a/core/java/src/net/i2p/crypto/SHA256Generator.java
+++ b/core/java/src/net/i2p/crypto/SHA256Generator.java
@@ -2,8 +2,7 @@ package net.i2p.crypto;
import gnu.crypto.hash.Sha256Standalone;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.concurrent.LinkedBlockingQueue;
import net.i2p.I2PAppContext;
import net.i2p.data.Base64;
@@ -15,11 +14,9 @@ import net.i2p.data.Hash;
*
*/
public final class SHA256Generator {
- private List _digests;
- private final List _digestsGnu;
+ private final LinkedBlockingQueue _digestsGnu;
public SHA256Generator(I2PAppContext context) {
- _digests = new ArrayList(32);
- _digestsGnu = new ArrayList(32);
+ _digestsGnu = new LinkedBlockingQueue(32);
}
public static final SHA256Generator getInstance() {
@@ -50,11 +47,7 @@ public final class SHA256Generator {
}
private Sha256Standalone acquireGnu() {
- Sha256Standalone rv = null;
- synchronized (_digestsGnu) {
- if (!_digestsGnu.isEmpty())
- rv = (Sha256Standalone)_digestsGnu.remove(0);
- }
+ Sha256Standalone rv = _digestsGnu.poll();
if (rv != null)
rv.reset();
else
@@ -63,11 +56,7 @@ public final class SHA256Generator {
}
private void releaseGnu(Sha256Standalone digest) {
- synchronized (_digestsGnu) {
- if (_digestsGnu.size() < 32) {
- _digestsGnu.add(digest);
- }
- }
+ _digestsGnu.offer(digest);
}
public static void main(String args[]) {
@@ -75,4 +64,4 @@ public final class SHA256Generator {
for (int i = 0; i < args.length; i++)
System.out.println("SHA256 [" + args[i] + "] = [" + Base64.encode(ctx.sha().calculateHash(args[i].getBytes()).getData()) + "]");
}
-}
\ No newline at end of file
+}
From 5c61c28772cf48c5cc36e26cb340e031b4092569 Mon Sep 17 00:00:00 2001
From: duck
Date: Tue, 6 Jul 2010 20:09:26 +0000
Subject: [PATCH 25/75] Dutch news
---
installer/resources/initialNews.xml | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/installer/resources/initialNews.xml b/installer/resources/initialNews.xml
index 728a67058..e87a7dbab 100644
--- a/installer/resources/initialNews.xml
+++ b/installer/resources/initialNews.xml
@@ -42,6 +42,26 @@ Verbinde deinen IRC Klienten mit dem Server auf localhost:6668 und sage H
+
+
Gefeliciteerd met de installatie van I2P!
+
+Welkom bij I2P!
+Heb wat geduld terwijl I2P opstart en peers zoekt.
+
+
+Terwijl je wacht, pas je bandbreedte instellingen aan op de
+configuratie pagina.
+
+
+Wanneer je een "gedeelde clients" destination in de linker lijst hebt,
+lees dan aub onze FAQ.
+
+
+Verbind je IRC client met localhost:6668 en zeg Hallo in
+#i2p-help of #i2p.
+
+De eepsite was niet bereikbaar.
+De eepsite is offline, er is een netwerk verstopping,
+of je router is niet goed geïntegreerd met peers.
+Probeer opnieuw.
+Kan de volgende destination niet vinden:
diff --git a/installer/resources/proxy/dnfb-header_nl.ht b/installer/resources/proxy/dnfb-header_nl.ht
new file mode 100644
index 000000000..541542fb0
--- /dev/null
+++ b/installer/resources/proxy/dnfb-header_nl.ht
@@ -0,0 +1,25 @@
+HTTP/1.1 400 Destination Not Found
+Content-Type: text/html; charset=UTF-8
+Cache-control: no-cache
+Connection: close
+Proxy-Connection: close
+
+
+I2P Waarschuwing: Ongeldige eepsite destination
+
+
+
+
+
+De gespecificeerde eepsite destination is ongeldig,
+of anderzijds onbereikbaar. Mogelijk heb je de
+BASE64 string niet goed gekopieerd of is de link
+die je probeert te volgen ongeldig. De I2P host kan
+ook offline zijn. Probeer
+opnieuw.
+Kon de volgende destination niet vinden:
diff --git a/installer/resources/proxy/dnfh-header_nl.ht b/installer/resources/proxy/dnfh-header_nl.ht
new file mode 100644
index 000000000..0d7dc2131
--- /dev/null
+++ b/installer/resources/proxy/dnfh-header_nl.ht
@@ -0,0 +1,27 @@
+HTTP/1.1 404 Domain Not Found
+Content-Type: text/html; charset=UTF-8
+Cache-control: no-cache
+Connection: close
+Proxy-Connection: close
+
+
+I2P Warning: Eepsite onbekend
+
+
+
+
+
+De eepsite was niet gevonden in je router's adresboek.
+Controlleer de link of zoek een BASE64 adres.
+Indien je een BASE64 adres hebt, plak het in je userhosts.txt via
+SusiDNS,
+gebruikt een BASE64 adres helper, of gebruik een jump service link hieronder.
+Zie je deze pagina vaak? Lees de FAQ
+for hulp bij het toevoegen van subscriptions
+aan je adresboek.
+Kan de volgende destination niet vinden:
diff --git a/installer/resources/proxy/dnfp-header_nl.ht b/installer/resources/proxy/dnfp-header_nl.ht
new file mode 100644
index 000000000..293900d92
--- /dev/null
+++ b/installer/resources/proxy/dnfp-header_nl.ht
@@ -0,0 +1,28 @@
+HTTP/1.1 504 Gateway Timeout
+Content-Type: text/html; charset=UTF-8
+Cache-control: no-cache
+Connection: close
+Proxy-Connection: close
+
+
+I2P Waarschuwing: Outproxy Niet Gevonden
+
+
+
+
+
+De WWW Outproxy was niet gevonden.
+Het is offline, er is een netwerk verstopping,
+of je router is niet goed geïntegreerd met peers.
+Probeer opnieuw
+aangezien dit willekeurig een outproxy van de groep zal selecteren die
+hier gedefinieerd
+(indien er meer van één geconfigureerd is).
+Wanneer de problemen blijven volhouden dan kan je de outproxy lijst
+hier bewerken.
+Kan de volgende bestemming niet vinden:
+De aanvraag gebruikt een verkeerd protocol.
+De I2P HTTP Proxy ondersteunt ALLEEN http:// requests. Andere protocollen zoals https:// en ftp:// zijn niet toegestaan.
+
");
File lpath = new File(_context.getBaseDir(), "docs/toolbar.html");
// you better have target="_top" for the links in there...
@@ -153,19 +159,24 @@ public class SummaryBarRenderer {
.append(_("I2P Router Help"))
.append("\">")
.append(_("General"))
- .append("" +
- "
\n");
diff --git a/history.txt b/history.txt
index 03c8135ca..7b7113ccf 100644
--- a/history.txt
+++ b/history.txt
@@ -1,13 +1,10 @@
-2010-07-06 duck
- * susidns: Dutch translation (thanks to monkeybrains)
+2010-07-07 duck
+ * RouterConsole: Add Help & FAQ link, minor label improvements.
2010-07-05 zzz
* i2psnark: Fix transition to end game
* I2PTunnelIRCClient: Filter PART messages like we do for QUIT
-2010-07-05 duck
- * I2PTunnel & I2PSnark: Dutch translation (thanks to monkeybrains)
-
2010-07-04 duck
* RouterConsole: Dutch translation (thanks to monkeybrains)
From 2ca5802e4de48bbcf5a12c87c09f16ba7a21a3bf Mon Sep 17 00:00:00 2001
From: duck
Date: Wed, 7 Jul 2010 19:49:07 +0000
Subject: [PATCH 30/75] Include logo in updater now that it is themeable.
(thanks RN!)
---
build.xml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/build.xml b/build.xml
index b9b532831..9768eadd6 100644
--- a/build.xml
+++ b/build.xml
@@ -419,19 +419,19 @@
-
+
-
+
-
+
-
+
From 3c0d0dfeee4a340f3be64392f63a00a0514257b2 Mon Sep 17 00:00:00 2001
From: forget
Date: Wed, 7 Jul 2010 20:30:05 +0000
Subject: [PATCH 31/75] Russian translation updated (help & faq link, local
identity link)
---
apps/routerconsole/locale/messages_ru.po | 10154 +++++++++++----------
1 file changed, 5084 insertions(+), 5070 deletions(-)
diff --git a/apps/routerconsole/locale/messages_ru.po b/apps/routerconsole/locale/messages_ru.po
index 9e35993e9..ddbbc7fdb 100644
--- a/apps/routerconsole/locale/messages_ru.po
+++ b/apps/routerconsole/locale/messages_ru.po
@@ -1,5070 +1,5084 @@
-# I2P
-# Copyright (C) 2009 The I2P Project
-# This file is distributed under the same license as the routerconsole package.
-# To contribute translations, see http://www.i2p2.de/newdevelopers
-# foo , 2009.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: I2P routerconsole\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-03 03:14+0000\n"
-"PO-Revision-Date: 2010-06-03 03:55+0000\n"
-"Last-Translator: 4get \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Russian\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
-"X-Poedit-Bookmarks: 283,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
-
-#: ../../../router/java/src/net/i2p/router/Blocklist.java:126
-#, java-format
-msgid "Banned by router hash: {0}"
-msgstr "Забанен по хэшу маршрутизатора: {0}"
-
-#: ../../../router/java/src/net/i2p/router/Blocklist.java:128
-msgid "Banned by router hash"
-msgstr "Забанен по хэшу маршрутизатора"
-
-#. Temporary reason, until the job finishes
-#: ../../../router/java/src/net/i2p/router/Blocklist.java:673
-msgid "IP banned"
-msgstr "IP заблокирован"
-
-#: ../../../router/java/src/net/i2p/router/Blocklist.java:743
-#, java-format
-msgid "IP banned by blocklist.txt entry {0}"
-msgstr "IP заблокирован по записи в blocklist.txt: {0}"
-
-#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:92
-msgid "Rejecting tunnels: Shutting down"
-msgstr "Не принимаем туннели: Маршрутизатор в процессе остановки"
-
-#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:141
-msgid "Rejecting tunnels: High message delay"
-msgstr "Не принимаем туннели: Слишком большая задержка сообщений"
-
-#. hard to do {0} from here
-#. setTunnelStatus("Rejecting " + (100 - (int) probAccept*100) + "% of tunnels: High number of requests");
-#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:177
-msgid "Rejecting most tunnels: High number of requests"
-msgstr "Не принимаем большую часть туннелей: Слишком много запросов"
-
-#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:233
-msgid "Rejecting tunnels: Limit reached"
-msgstr "Не принимаем туннели: Достигнут предел количества туннелей"
-
-#. .067KBps
-#. * also limited to 90% - see below
-#. always leave at least 4KBps free when allowing
-#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:301
-msgid "Rejecting tunnels: Bandwidth limit"
-msgstr "Не принимаем туннели: Достигнут предел пропускной способности"
-
-#. hard to do {0} from here
-#. setTunnelStatus("Rejecting " + ((int)(100.0*probReject)) + "% of tunnels: Bandwidth limit");
-#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:371
-msgid "Rejecting most tunnels: Bandwidth limit"
-msgstr "Не принимаем большую часть туннелей: Достигнут предел пропускной способности"
-
-#. hard to do {0} from here
-#. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels");
-#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:375
-msgid "Accepting most tunnels"
-msgstr "Принимаем большую часть туннелей"
-
-#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:377
-msgid "Accepting tunnels"
-msgstr "Принимаем туннели"
-
-#. NPE, too early
-#. if (_context.router().getRouterInfo().getBandwidthTier().equals("K"))
-#. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too low");
-#. else
-#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:487
-msgid "Rejecting tunnels"
-msgstr "Не принимаем туннели"
-
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:49
-msgid "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the FAQ about reseeding manually."
-msgstr "Убедитесь, что исходящие HTTP-запросы ничем не блокируются, загляните в журналы ошибок и если ничто не помогло, прочтите в FAQ инструкцию по начальной загрузке вручную."
-
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:81
-msgid "Reseeding"
-msgstr "Производится начальная загрузка"
-
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:145
-msgid "Reseeding: fetching seed URL."
-msgstr "Производится начальная загрузка: загружается URL каталога маршрутизаторов."
-
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:151
-msgid "Last reseed failed fully (failed reading seed URL)."
-msgstr "Предыдущая попытка начальной загрузки полностью провалилась (не удалось загрузить URL каталога маршрутизаторов)"
-
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:177
-msgid "Last reseed failed fully (no routerInfo URLs at seed URL)."
-msgstr "Предыдущая попытка начальной загрузки полностью провалилась (не удалось найти список routerInfo-ссылок в загруженном каталоге)"
-
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:190
-#, java-format
-msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
-msgstr "Производится начальная загрузка: получение информации о маршрутизаторах ({0} удачно, {1} ошибок)."
-
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:211
-#, java-format
-msgid "Last reseed failed partly ({0}% of {1})."
-msgstr "Предыдущая попытка начальной загрузки частично не удалась ({0}% из {1})."
-
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:216
-#, java-format
-msgid "Last reseed failed ({0}% of {1})."
-msgstr "Предыдущая попытка начальной загрузки почти полностью провалилась ({0}% из {1})."
-
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:226
-msgid "Last reseed failed fully (exception caught)."
-msgstr "Предыдущая попытка начальной загрузки полностью провалилась (произошла необрабатываемая ошибка)."
-
-#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:498
-msgid "NetDb entry"
-msgstr "показать описание в NetDb"
-
-#. This used to be "no common transports" but it is almost always no transports at all
-#: ../../../router/java/src/net/i2p/router/transport/GetBidsJob.java:70
-msgid "No transports (hidden or starting up?)"
-msgstr "Нет транспортных протоколов (в скрытом режиме или запущен недавно?)"
-
-#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:457
-msgid "Unreachable on any transport"
-msgstr "Недоступен по всем транспортным протоколам"
-
-#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:503
-msgid "Router Transport Addresses"
-msgstr "Адреса транспортов маршрутизатора"
-
-#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:509
-#, java-format
-msgid "{0} is used for outbound connections only"
-msgstr "{0} используется только для исходящих соединений"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:380
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:594
-#, java-format
-msgid "Excessive clock skew: {0}"
-msgstr "Чрезмерное расхождение времени: {0}"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:710
-msgid "NTCP connections"
-msgstr "NTCP соединения"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:711
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1881
-msgid "Limit"
-msgstr "Ограничение"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:712
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1882
-msgid "Timeout"
-msgstr "Таймаут"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:715
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2158
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:81
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:187
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:237
-msgid "Peer"
-msgstr "Пир"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:716
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1889
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2159
-msgid "Dir"
-msgstr "Направление"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:717
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2167
-msgid "Idle"
-msgstr "Неактивен"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:718
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2168
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
-msgid "In/Out"
-msgstr "Приём/Передача"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:719
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2169
-msgid "Up"
-msgstr "Подключен"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:720
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1902
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2170
-msgid "Skew"
-msgstr "Сдвиг"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:721
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1919
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2180
-msgid "TX"
-msgstr "Передано"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:722
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1921
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2181
-msgid "RX"
-msgstr "Принято"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:723
-msgid "Out Queue"
-msgstr "Исходящая очередь"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:724
-msgid "Backlogged?"
-msgstr "В очереди?"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1944
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82
-msgid "Inbound"
-msgstr "Входящие"
-
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1946
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82
-msgid "Outbound"
-msgstr "Исходящие"
-
-#. buf.append("
\n");
-#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:787
-msgid "peers"
-msgstr "пиров"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1880
-msgid "UDP connections"
-msgstr "UDP соединения"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887
-msgid "Sort by peer hash"
-msgstr "Сортировать по идентификатору пира"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1889
-msgid "Direction/Introduction"
-msgstr "Направление / Посредничество"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1891
-msgid "Sort by idle inbound"
-msgstr "Сортировать по неактивности приёма"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1893
-msgid "Sort by idle outbound"
-msgstr "Сортировать по неактивности передачи"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896
-msgid "Sort by inbound rate"
-msgstr "Сортировать по скорости приёма"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898
-msgid "Sort by outbound rate"
-msgstr "Сортировать по скорости передачи"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901
-msgid "Sort by connection uptime"
-msgstr "Сортировать по времени жизни соединения"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903
-msgid "Sort by clock skew"
-msgstr "Сортировать по расхождению часов"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906
-msgid "Sort by congestion window"
-msgstr "Сортировать по размеру окна насыщения"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908
-msgid "Sort by slow start threshold"
-msgstr "Сортировать по размеру порога медленного старта"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911
-msgid "Sort by round trip time"
-msgstr "Сортировать по времени прохождения сигнала"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1912
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2177
-msgid "Dev"
-msgstr "Отклонение"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913
-msgid "Sort by round trip time deviation"
-msgstr "Сортировать по отклонению времени прохождения сигнала"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1915
-msgid "Sort by retransmission timeout"
-msgstr "Сортировать по таймауту передачи"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918
-msgid "Sort by outbound maximum transmit unit"
-msgstr "Сортировать по размеру исходящего MTU"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920
-msgid "Sort by packets sent"
-msgstr "Сортировать по количеству посланных пакетов"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1922
-msgid "Sort by packets received"
-msgstr "Сортировать по количеству принятых пакетов"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2182
-msgid "Dup TX"
-msgstr "Повт. принято"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925
-msgid "Sort by packets retransmitted"
-msgstr "Сортировать по количеству повторно посланных пакетов"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2183
-msgid "Dup RX"
-msgstr "Повт. передано"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927
-msgid "Sort by packets received more than once"
-msgstr "Сортировать по количеству повторно принятых пакетов"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1948
-msgid "We offered to introduce them"
-msgstr "Мы предлагаем себя в качестве посредника для этого пира"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1950
-msgid "They offered to introduce us"
-msgstr "Этот пир предлагает себя в качестве нашего посредника"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1954
-msgid "Choked"
-msgstr "Дросселирован"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1962
-msgid "1 fail"
-msgstr "1 сбой"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1964
-#, java-format
-msgid "{0} fails"
-msgstr "{0} сбоя(-ев)"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1970
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162
-msgid "Banned"
-msgstr "Забанен"
-
-#. buf.append("
\n");
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2102
-msgid "SUMMARY"
-msgstr "ИТОГО"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2157
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257
-msgid "Definitions"
-msgstr "Условные обозначения"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2158
-msgid "The remote peer, identified by router hash"
-msgstr "Уникальный идентификатор пира (несколько начальных символов из хеша его маршрутизатора)"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2160
-msgid "Inbound connection"
-msgstr "Входящее соединение"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2162
-msgid "Outbound connection"
-msgstr "Исходящее соединение"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2164
-msgid "They offered to introduce us (help other peers traverse our firewall)"
-msgstr "Этот пир предлагает себя в качестве нашего посредника (для того, чтобы другие пиры могли соединяться с нами в обход нашего брандмауэра)"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2166
-msgid "We offered to introduce them (help other peers traverse their firewall)"
-msgstr "Мы предлагаем себя в качестве посредника для этого пира (для того, чтобы другие пиры могли соединяться с ним в обход его брандмауэра)"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2167
-msgid "How long since a packet has been received / sent"
-msgstr "Сколько прошло времени после приёма/передачи последнего пакета"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2168
-msgid "The smoothed inbound / outbound transfer rate (KBytes per second)"
-msgstr "Усреднённые скорости приёма / передачи (КБайт/сек) "
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2169
-msgid "How long ago this connection was established"
-msgstr "Время жизни соединения"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2170
-msgid "The difference between the peer's clock and your own"
-msgstr "Разница хода часов между пиром и нами"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2171
-msgid "The congestion window, which is how many bytes can be sent without an acknowledgement"
-msgstr "Congestion Window. Окно насыщения — количество байт, которое мы можем послать до ожидания подтверждения"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2172
-msgid "The number of sent messages awaiting acknowledgement"
-msgstr "Количество отправленных сообщений ожидающих подтверждения"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2173
-msgid "The maximum number of concurrent messages to send"
-msgstr "Максимальное количество параллельно отправляемых сообщений"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2174
-msgid "The number of pending sends which exceed congestion window"
-msgstr "Количество ожидающих посылок превосходящих размер окна насыщения"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2175
-msgid "The slow start threshold"
-msgstr "Slow Start Threshold. Величина порога медленного старта"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2176
-msgid "The round trip time in milliseconds"
-msgstr "Round-Trip Time. Время между отправкой запроса и получением ответа (миллисекунды)"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2177
-msgid "The standard deviation of the round trip time in milliseconds"
-msgstr "Среднеквадратическое отклонение RTT (миллисекунды)"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2178
-msgid "The retransmit timeout in milliseconds"
-msgstr "Retransmit Time-Out. Время ожидания подтверждения перед повторной посылкой пакета (миллисекунды)"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2179
-msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)"
-msgstr "Maximum Transfer Unit. Текущий максимальный размер исходящего пакета / максимальный размер принятого пакета (байт) "
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2180
-msgid "The total number of packets sent to the peer"
-msgstr "Общее количество посланных пиру пакетов"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2181
-msgid "The total number of packets received from the peer"
-msgstr "Общее количество принятых от пира пакетов"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2182
-msgid "The total number of packets retransmitted to the peer"
-msgstr "Общее количество повторно посланных пиру пакетов"
-
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2183
-msgid "The total number of duplicate packets received from the peer"
-msgstr "Общее количество повторно принятых от пира пакетов"
-
-#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:145
-msgid "Dropping tunnel requests: Too slow"
-msgstr "Игнорируем запросы туннелей: Время выполнения превысило ожидаемое"
-
-#. don't even bother, since we are so overloaded locally
-#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:352
-msgid "Dropping tunnel requests: Overloaded"
-msgstr "Игнорируем запросы туннелей: Слишком высокая нагрузка"
-
-#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:523
-msgid "Rejecting tunnels: Request overload"
-msgstr "Не принимаем туннели: Слишком много запросов"
-
-#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:548
-msgid "Rejecting tunnels: Connection limit"
-msgstr "Не принимаем туннели: Достигнут предел количества соединений"
-
-#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:742
-msgid "Dropping tunnel requests: High load"
-msgstr "Игнорируем запросы туннелей: Высокая нагрузка"
-
-#: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:751
-msgid "Dropping tunnel requests: Queue time"
-msgstr "Игнорируем запросы туннелей: Слишком большое время пребывания в очереди"
-
-#. Automatically generated pseudo-java for xgettext - do not edit
-#. Translators may wish to translate a few of these, do not bother to translate all of them!!
-#: ../java/build/Countries.java:3
-msgid "Andorra"
-msgstr "Андорра"
-
-#: ../java/build/Countries.java:4
-msgid "United Arab Emirates"
-msgstr "Объединенные Арабские Эмираты"
-
-#: ../java/build/Countries.java:5
-msgid "Afghanistan"
-msgstr "Афганистан"
-
-#: ../java/build/Countries.java:6
-msgid "Antigua and Barbuda"
-msgstr "Антигуа и Барбуда"
-
-#: ../java/build/Countries.java:7
-msgid "Anguilla"
-msgstr "Ангилья"
-
-#: ../java/build/Countries.java:8
-msgid "Albania"
-msgstr "Албания"
-
-#: ../java/build/Countries.java:9
-msgid "Armenia"
-msgstr "Армения"
-
-#: ../java/build/Countries.java:10
-msgid "Netherlands Antilles"
-msgstr "Нидерландские Антильские острова"
-
-#: ../java/build/Countries.java:11
-msgid "Angola"
-msgstr "Ангола"
-
-#: ../java/build/Countries.java:12
-msgid "Antarctica"
-msgstr "Антарктида"
-
-#: ../java/build/Countries.java:13
-msgid "Argentina"
-msgstr "Аргентина"
-
-#: ../java/build/Countries.java:14
-msgid "American Samoa"
-msgstr "Американское Самоа"
-
-#: ../java/build/Countries.java:15
-msgid "Austria"
-msgstr "Австрия"
-
-#: ../java/build/Countries.java:16
-msgid "Australia"
-msgstr "Австралия"
-
-#: ../java/build/Countries.java:17
-msgid "Aruba"
-msgstr "Аруба"
-
-#: ../java/build/Countries.java:19
-msgid "Azerbaijan"
-msgstr "Азербайджан"
-
-#: ../java/build/Countries.java:20
-msgid "Bosnia and Herzegovina"
-msgstr "Босния и Герцеговина"
-
-#: ../java/build/Countries.java:21
-msgid "Barbados"
-msgstr "Барбадос"
-
-#: ../java/build/Countries.java:22
-msgid "Bangladesh"
-msgstr "Бангладеш"
-
-#: ../java/build/Countries.java:23
-msgid "Belgium"
-msgstr "Бельгия"
-
-#: ../java/build/Countries.java:24
-msgid "Burkina Faso"
-msgstr "Буркина-Фасо"
-
-#: ../java/build/Countries.java:25
-msgid "Bulgaria"
-msgstr "Болгария"
-
-#: ../java/build/Countries.java:26
-msgid "Bahrain"
-msgstr "Бахрейн"
-
-#: ../java/build/Countries.java:27
-msgid "Burundi"
-msgstr "Бурунди"
-
-#: ../java/build/Countries.java:28
-msgid "Benin"
-msgstr "Бенин"
-
-#: ../java/build/Countries.java:29
-msgid "Bermuda"
-msgstr "Бермудские Острова"
-
-#: ../java/build/Countries.java:30
-msgid "Brunei Darussalam"
-msgstr "Бруней-Даруссалам"
-
-#: ../java/build/Countries.java:31
-msgid "Bolivia"
-msgstr "Боливия"
-
-#: ../java/build/Countries.java:32
-msgid "Brazil"
-msgstr "Бразилия"
-
-#: ../java/build/Countries.java:33
-msgid "Bahamas"
-msgstr "Багамские острова"
-
-#: ../java/build/Countries.java:34
-msgid "Bhutan"
-msgstr "Бутан"
-
-#: ../java/build/Countries.java:35
-msgid "Bouvet Island"
-msgstr "Остров Буве"
-
-#: ../java/build/Countries.java:36
-msgid "Botswana"
-msgstr "Ботсвана"
-
-#: ../java/build/Countries.java:37
-msgid "Belarus"
-msgstr "Беларусь"
-
-#: ../java/build/Countries.java:38
-msgid "Belize"
-msgstr "Белиз"
-
-#: ../java/build/Countries.java:39
-msgid "Canada"
-msgstr "Канада"
-
-#: ../java/build/Countries.java:40
-msgid "The Democratic Republic of the Congo"
-msgstr "Демократическая Республика Конго"
-
-#: ../java/build/Countries.java:41
-msgid "Central African Republic"
-msgstr "Центральноафриканская Республика"
-
-#: ../java/build/Countries.java:42
-msgid "Congo"
-msgstr "Конго"
-
-#: ../java/build/Countries.java:43
-msgid "Switzerland"
-msgstr "Швейцария"
-
-#: ../java/build/Countries.java:44
-msgid "Cote D'Ivoire"
-msgstr "Кот-д'Ивуар"
-
-#: ../java/build/Countries.java:45
-msgid "Cook Islands"
-msgstr "Острова Кука"
-
-#: ../java/build/Countries.java:46
-msgid "Chile"
-msgstr "Чили"
-
-#: ../java/build/Countries.java:47
-msgid "Cameroon"
-msgstr "Камерун"
-
-#: ../java/build/Countries.java:48
-msgid "China"
-msgstr "Китай"
-
-#: ../java/build/Countries.java:49
-msgid "Colombia"
-msgstr "Колумбия"
-
-#: ../java/build/Countries.java:50
-msgid "Costa Rica"
-msgstr "Коста-Рика"
-
-#: ../java/build/Countries.java:51
-msgid "Serbia and Montenegro"
-msgstr "Сербия и Черногория"
-
-#: ../java/build/Countries.java:52
-msgid "Cuba"
-msgstr "Куба"
-
-#: ../java/build/Countries.java:53
-msgid "Cape Verde"
-msgstr "Кабо-Верде"
-
-#: ../java/build/Countries.java:54
-msgid "Cyprus"
-msgstr "Кипр"
-
-#: ../java/build/Countries.java:55
-msgid "Czech Republic"
-msgstr "Чехия"
-
-#: ../java/build/Countries.java:56
-msgid "Germany"
-msgstr "Германия"
-
-#: ../java/build/Countries.java:57
-msgid "Djibouti"
-msgstr "Джибути"
-
-#: ../java/build/Countries.java:58
-msgid "Denmark"
-msgstr "Дания"
-
-#: ../java/build/Countries.java:59
-msgid "Dominica"
-msgstr "Доминика"
-
-#: ../java/build/Countries.java:60
-msgid "Dominican Republic"
-msgstr "Доминиканская Республика"
-
-#: ../java/build/Countries.java:61
-msgid "Algeria"
-msgstr "Алжир"
-
-#: ../java/build/Countries.java:62
-msgid "Ecuador"
-msgstr "Эквадор"
-
-#: ../java/build/Countries.java:63
-msgid "Estonia"
-msgstr "Эстония"
-
-#: ../java/build/Countries.java:64
-msgid "Egypt"
-msgstr "Египет"
-
-#: ../java/build/Countries.java:65
-msgid "Eritrea"
-msgstr "Эритрея"
-
-#: ../java/build/Countries.java:66
-msgid "Spain"
-msgstr "Испания"
-
-#: ../java/build/Countries.java:67
-msgid "Ethiopia"
-msgstr "Эфиопия"
-
-#: ../java/build/Countries.java:68
-msgid "Finland"
-msgstr "Финляндия"
-
-#: ../java/build/Countries.java:69
-msgid "Fiji"
-msgstr "Фиджи"
-
-#: ../java/build/Countries.java:70
-msgid "Falkland Islands (Malvinas)"
-msgstr "Фолклендские (Мальвинские) острова"
-
-#: ../java/build/Countries.java:71
-msgid "Federated States of Micronesia"
-msgstr "Федеративные Штаты Микронезии"
-
-#: ../java/build/Countries.java:72
-msgid "Faroe Islands"
-msgstr "Фарерские острова"
-
-#: ../java/build/Countries.java:73
-msgid "France"
-msgstr "Франция"
-
-#: ../java/build/Countries.java:74
-msgid "Gabon"
-msgstr "Габон"
-
-#: ../java/build/Countries.java:75
-msgid "United Kingdom"
-msgstr "Великобритания"
-
-#: ../java/build/Countries.java:76
-msgid "Grenada"
-msgstr "Гренада"
-
-#: ../java/build/Countries.java:77
-msgid "Georgia"
-msgstr "Грузия"
-
-#: ../java/build/Countries.java:78
-msgid "French Guiana"
-msgstr "Французская Гвиана"
-
-#: ../java/build/Countries.java:79
-msgid "Ghana"
-msgstr "Гана"
-
-#: ../java/build/Countries.java:80
-msgid "Gibraltar"
-msgstr "Гибралтар"
-
-#: ../java/build/Countries.java:81
-msgid "Greenland"
-msgstr "Гренландия"
-
-#: ../java/build/Countries.java:82
-msgid "Gambia"
-msgstr "Гамбия"
-
-#: ../java/build/Countries.java:83
-msgid "Guinea"
-msgstr "Гвинея"
-
-#: ../java/build/Countries.java:84
-msgid "Guadeloupe"
-msgstr "Гваделупа"
-
-#: ../java/build/Countries.java:85
-msgid "Equatorial Guinea"
-msgstr "Экваториальная Гвинея"
-
-#: ../java/build/Countries.java:86
-msgid "Greece"
-msgstr "Греция"
-
-#: ../java/build/Countries.java:87
-msgid "South Georgia and the South Sandwich Islands"
-msgstr "Южная Джорджия и Южные Сандвичевы Острова"
-
-#: ../java/build/Countries.java:88
-msgid "Guatemala"
-msgstr "Гватемала"
-
-#: ../java/build/Countries.java:89
-msgid "Guam"
-msgstr "Гуам"
-
-#: ../java/build/Countries.java:90
-msgid "Guinea-Bissau"
-msgstr "Гвинея-Бисау"
-
-#: ../java/build/Countries.java:91
-msgid "Guyana"
-msgstr "Гайана"
-
-#: ../java/build/Countries.java:92
-msgid "Hong Kong"
-msgstr "Гонконг"
-
-#: ../java/build/Countries.java:93
-msgid "Honduras"
-msgstr "Гондурас"
-
-#: ../java/build/Countries.java:94
-msgid "Croatia"
-msgstr "Хорватия"
-
-#: ../java/build/Countries.java:95
-msgid "Haiti"
-msgstr "Гаити"
-
-#: ../java/build/Countries.java:96
-msgid "Hungary"
-msgstr "Венгрия"
-
-#: ../java/build/Countries.java:97
-msgid "Indonesia"
-msgstr "Индонезия"
-
-#: ../java/build/Countries.java:98
-msgid "Ireland"
-msgstr "Ирландия"
-
-#: ../java/build/Countries.java:99
-msgid "Israel"
-msgstr "Израиль"
-
-#: ../java/build/Countries.java:101
-msgid "India"
-msgstr "Индия"
-
-#: ../java/build/Countries.java:102
-msgid "British Indian Ocean Territory"
-msgstr "Британская территория в Индийском океане"
-
-#: ../java/build/Countries.java:103
-msgid "Iraq"
-msgstr "Ирак"
-
-#: ../java/build/Countries.java:104
-msgid "Islamic Republic of Iran"
-msgstr "Исламская Республика Иран"
-
-#: ../java/build/Countries.java:105
-msgid "Iceland"
-msgstr "Исландия"
-
-#: ../java/build/Countries.java:106
-msgid "Italy"
-msgstr "Италия"
-
-#: ../java/build/Countries.java:108
-msgid "Jamaica"
-msgstr "Ямайка"
-
-#: ../java/build/Countries.java:109
-msgid "Jordan"
-msgstr "Иордания"
-
-#: ../java/build/Countries.java:110
-msgid "Japan"
-msgstr "Япония"
-
-#: ../java/build/Countries.java:111
-msgid "Kenya"
-msgstr "Кения"
-
-#: ../java/build/Countries.java:112
-msgid "Kyrgyzstan"
-msgstr "Кыргызстан"
-
-#: ../java/build/Countries.java:113
-msgid "Cambodia"
-msgstr "Камбоджа"
-
-#: ../java/build/Countries.java:114
-msgid "Kiribati"
-msgstr "Кирибати"
-
-#: ../java/build/Countries.java:115
-msgid "Comoros"
-msgstr "Коморские Острова"
-
-#: ../java/build/Countries.java:116
-msgid "Saint Kitts and Nevis"
-msgstr "Сент-Китс и Невис"
-
-#: ../java/build/Countries.java:117
-msgid "Republic of Korea"
-msgstr "Республика Корея"
-
-#: ../java/build/Countries.java:118
-msgid "Kuwait"
-msgstr "Кувейт"
-
-#: ../java/build/Countries.java:119
-msgid "Cayman Islands"
-msgstr "Каймановы острова"
-
-#: ../java/build/Countries.java:120
-msgid "Kazakhstan"
-msgstr "Казахстан"
-
-#: ../java/build/Countries.java:121
-msgid "Lao People's Democratic Republic"
-msgstr "Лаосская Народно-Демократическая Республика"
-
-#: ../java/build/Countries.java:122
-msgid "Lebanon"
-msgstr "Ливан"
-
-#: ../java/build/Countries.java:123
-msgid "Saint Lucia"
-msgstr "Сент-Люсия"
-
-#: ../java/build/Countries.java:124
-msgid "Liechtenstein"
-msgstr "Лихтенштейн"
-
-#: ../java/build/Countries.java:125
-msgid "Sri Lanka"
-msgstr "Шри-Ланка"
-
-#: ../java/build/Countries.java:126
-msgid "Liberia"
-msgstr "Либерия"
-
-#: ../java/build/Countries.java:127
-msgid "Lesotho"
-msgstr "Лесото"
-
-#: ../java/build/Countries.java:128
-msgid "Lithuania"
-msgstr "Литва"
-
-#: ../java/build/Countries.java:129
-msgid "Luxembourg"
-msgstr "Люксембург"
-
-#: ../java/build/Countries.java:130
-msgid "Latvia"
-msgstr "Латвия"
-
-#: ../java/build/Countries.java:131
-msgid "Libyan Arab Jamahiriya"
-msgstr "Ливийская Арабская Джамахирия"
-
-#: ../java/build/Countries.java:132
-msgid "Morocco"
-msgstr "Марокко"
-
-#: ../java/build/Countries.java:133
-msgid "Monaco"
-msgstr "Монако"
-
-#: ../java/build/Countries.java:134
-msgid "Republic of Moldova"
-msgstr "Республика Молдова"
-
-#: ../java/build/Countries.java:137
-msgid "Madagascar"
-msgstr "Мадагаскар"
-
-#: ../java/build/Countries.java:138
-msgid "Marshall Islands"
-msgstr "Маршалловы Острова"
-
-#: ../java/build/Countries.java:139
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Бывшая югославская Республика Македония"
-
-#: ../java/build/Countries.java:140
-msgid "Mali"
-msgstr "Мали"
-
-#: ../java/build/Countries.java:141
-msgid "Myanmar"
-msgstr "Мьянма"
-
-#: ../java/build/Countries.java:142
-msgid "Mongolia"
-msgstr "Монголия"
-
-#: ../java/build/Countries.java:143
-msgid "Macao"
-msgstr "Макао"
-
-#: ../java/build/Countries.java:144
-msgid "Northern Mariana Islands"
-msgstr "Северные Марианские острова"
-
-#: ../java/build/Countries.java:145
-msgid "Martinique"
-msgstr "Мартиника"
-
-#: ../java/build/Countries.java:146
-msgid "Mauritania"
-msgstr "Мавритания"
-
-#: ../java/build/Countries.java:147
-msgid "Montserrat"
-msgstr "Монтсеррат"
-
-#: ../java/build/Countries.java:148
-msgid "Malta"
-msgstr "Мальта"
-
-#: ../java/build/Countries.java:149
-msgid "Mauritius"
-msgstr "Маврикий"
-
-#: ../java/build/Countries.java:150
-msgid "Maldives"
-msgstr "Мальдивы"
-
-#: ../java/build/Countries.java:151
-msgid "Malawi"
-msgstr "Малави"
-
-#: ../java/build/Countries.java:152
-msgid "Mexico"
-msgstr "Мексика"
-
-#: ../java/build/Countries.java:153
-msgid "Malaysia"
-msgstr "Малайзия"
-
-#: ../java/build/Countries.java:154
-msgid "Mozambique"
-msgstr "Мозамбик"
-
-#: ../java/build/Countries.java:155
-msgid "Namibia"
-msgstr "Намибия"
-
-#: ../java/build/Countries.java:156
-msgid "New Caledonia"
-msgstr "Новая Каледония"
-
-#: ../java/build/Countries.java:157
-msgid "Niger"
-msgstr "Нигер"
-
-#: ../java/build/Countries.java:158
-msgid "Norfolk Island"
-msgstr "Остров Норфолк"
-
-#: ../java/build/Countries.java:159
-msgid "Nigeria"
-msgstr "Нигерия"
-
-#: ../java/build/Countries.java:160
-msgid "Nicaragua"
-msgstr "Никарагуа"
-
-#: ../java/build/Countries.java:161
-msgid "Netherlands"
-msgstr "Нидерланды"
-
-#: ../java/build/Countries.java:162
-msgid "Norway"
-msgstr "Норвегия"
-
-#: ../java/build/Countries.java:163
-msgid "Nepal"
-msgstr "Непал"
-
-#: ../java/build/Countries.java:164
-msgid "Nauru"
-msgstr "Науру"
-
-#: ../java/build/Countries.java:165
-msgid "Niue"
-msgstr "Ниуэ"
-
-#: ../java/build/Countries.java:166
-msgid "New Zealand"
-msgstr "Новая Зеландия"
-
-#: ../java/build/Countries.java:167
-msgid "Oman"
-msgstr "Оман"
-
-#: ../java/build/Countries.java:168
-msgid "Panama"
-msgstr "Панама"
-
-#: ../java/build/Countries.java:169
-msgid "Peru"
-msgstr "Перу"
-
-#: ../java/build/Countries.java:170
-msgid "French Polynesia"
-msgstr "Французская Полинезия"
-
-#: ../java/build/Countries.java:171
-msgid "Papua New Guinea"
-msgstr "Папуа - Новая Гвинея"
-
-#: ../java/build/Countries.java:172
-msgid "Philippines"
-msgstr "Филиппины"
-
-#: ../java/build/Countries.java:173
-msgid "Pakistan"
-msgstr "Пакистан"
-
-#: ../java/build/Countries.java:174
-msgid "Poland"
-msgstr "Польша"
-
-#: ../java/build/Countries.java:175
-msgid "Saint Pierre and Miquelon"
-msgstr "Сен-Пьер и Микелон"
-
-#: ../java/build/Countries.java:176
-msgid "Puerto Rico"
-msgstr "Пуэрто-Рико"
-
-#: ../java/build/Countries.java:177
-msgid "Palestinian Territory"
-msgstr "Палестинская автономия"
-
-#: ../java/build/Countries.java:178
-msgid "Portugal"
-msgstr "Португалия"
-
-#: ../java/build/Countries.java:179
-msgid "Palau"
-msgstr "Палау"
-
-#: ../java/build/Countries.java:180
-msgid "Paraguay"
-msgstr "Парагвай"
-
-#: ../java/build/Countries.java:181
-msgid "Qatar"
-msgstr "Катар"
-
-#: ../java/build/Countries.java:182
-msgid "Reunion"
-msgstr "Реюньон"
-
-#: ../java/build/Countries.java:183
-msgid "Romania"
-msgstr "Румыния"
-
-#: ../java/build/Countries.java:184
-msgid "Serbia"
-msgstr "Сербия"
-
-#: ../java/build/Countries.java:185
-msgid "Russian Federation"
-msgstr "Российская Федерация"
-
-#: ../java/build/Countries.java:186
-msgid "Rwanda"
-msgstr "Руанда"
-
-#: ../java/build/Countries.java:187
-msgid "Saudi Arabia"
-msgstr "Саудовская Аравия"
-
-#: ../java/build/Countries.java:188
-msgid "Solomon Islands"
-msgstr "Соломоновы Острова"
-
-#: ../java/build/Countries.java:189
-msgid "Seychelles"
-msgstr "Сейшельские Острова"
-
-#: ../java/build/Countries.java:190
-msgid "Sudan"
-msgstr "Судан"
-
-#: ../java/build/Countries.java:191
-msgid "Sweden"
-msgstr "Швеция"
-
-#: ../java/build/Countries.java:192
-msgid "Singapore"
-msgstr "Сингапур"
-
-#: ../java/build/Countries.java:193
-msgid "Slovenia"
-msgstr "Словения"
-
-#: ../java/build/Countries.java:194
-msgid "Slovakia"
-msgstr "Словакия"
-
-#: ../java/build/Countries.java:195
-msgid "Sierra Leone"
-msgstr "Сьерра-Леоне"
-
-#: ../java/build/Countries.java:196
-msgid "San Marino"
-msgstr "Сан-Марино"
-
-#: ../java/build/Countries.java:197
-msgid "Senegal"
-msgstr "Сенегал"
-
-#: ../java/build/Countries.java:198
-msgid "Somalia"
-msgstr "Сомали"
-
-#: ../java/build/Countries.java:199
-msgid "Suriname"
-msgstr "Суринам"
-
-#: ../java/build/Countries.java:200
-msgid "Sao Tome and Principe"
-msgstr "Сан-Томе и Принсипи"
-
-#: ../java/build/Countries.java:201
-msgid "El Salvador"
-msgstr "Сальвадор"
-
-#: ../java/build/Countries.java:202
-msgid "Syrian Arab Republic"
-msgstr "Сирийская Арабская Республика"
-
-#: ../java/build/Countries.java:203
-msgid "Swaziland"
-msgstr "Свазиленд"
-
-#: ../java/build/Countries.java:204
-msgid "Turks and Caicos Islands"
-msgstr "Острова Теркс и Кайкос"
-
-#: ../java/build/Countries.java:205
-msgid "Chad"
-msgstr "Чад"
-
-#: ../java/build/Countries.java:206
-msgid "French Southern Territories"
-msgstr "Французские Южные Территории"
-
-#: ../java/build/Countries.java:207
-msgid "Togo"
-msgstr "Того"
-
-#: ../java/build/Countries.java:208
-msgid "Thailand"
-msgstr "Таиланд"
-
-#: ../java/build/Countries.java:209
-msgid "Tajikistan"
-msgstr "Таджикистан"
-
-#: ../java/build/Countries.java:210
-msgid "Tokelau"
-msgstr "Токелау"
-
-#: ../java/build/Countries.java:211
-msgid "Timor-Leste"
-msgstr "Восточный Тимор"
-
-#: ../java/build/Countries.java:212
-msgid "Turkmenistan"
-msgstr "Туркменистан"
-
-#: ../java/build/Countries.java:213
-msgid "Tunisia"
-msgstr "Тунис"
-
-#: ../java/build/Countries.java:214
-msgid "Tonga"
-msgstr "Тонга"
-
-#: ../java/build/Countries.java:215
-msgid "Turkey"
-msgstr "Турция"
-
-#: ../java/build/Countries.java:216
-msgid "Trinidad and Tobago"
-msgstr "Тринидад и Тобаго"
-
-#: ../java/build/Countries.java:217
-msgid "Tuvalu"
-msgstr "Тувалу"
-
-#: ../java/build/Countries.java:218
-msgid "Taiwan"
-msgstr "Тайвань"
-
-#: ../java/build/Countries.java:219
-msgid "United Republic of Tanzania"
-msgstr "Объединённая Республика Танзания"
-
-#: ../java/build/Countries.java:220
-msgid "Ukraine"
-msgstr "Украина"
-
-#: ../java/build/Countries.java:221
-msgid "Uganda"
-msgstr "Уганда"
-
-#: ../java/build/Countries.java:222
-msgid "United States Minor Outlying Islands"
-msgstr "Внешние малые острова (США)"
-
-#: ../java/build/Countries.java:223
-msgid "United States"
-msgstr "Соединённые Штаты Америки"
-
-#: ../java/build/Countries.java:224
-msgid "Uruguay"
-msgstr "Уругвай"
-
-#: ../java/build/Countries.java:225
-msgid "Uzbekistan"
-msgstr "Узбекистан"
-
-#: ../java/build/Countries.java:226
-msgid "Holy See (Vatican City State)"
-msgstr "Святой Престол (Ватикан)"
-
-#: ../java/build/Countries.java:227
-msgid "Saint Vincent and the Grenadines"
-msgstr "Сент-Винсент и Гренадины"
-
-#: ../java/build/Countries.java:228
-msgid "Venezuela"
-msgstr "Венесуэла"
-
-#: ../java/build/Countries.java:229 ../java/build/Countries.java:230
-msgid "Virgin Islands"
-msgstr "Виргинские острова"
-
-#: ../java/build/Countries.java:231
-msgid "Viet Nam"
-msgstr "Вьетнам"
-
-#: ../java/build/Countries.java:232
-msgid "Vanuatu"
-msgstr "Вануату"
-
-#: ../java/build/Countries.java:233
-msgid "Wallis and Futuna"
-msgstr "Уоллис и Футуна"
-
-#: ../java/build/Countries.java:234
-msgid "Samoa"
-msgstr "Самоа"
-
-#: ../java/build/Countries.java:235
-msgid "Yemen"
-msgstr "Йемен"
-
-#: ../java/build/Countries.java:236
-msgid "Mayotte"
-msgstr "Майотта"
-
-#: ../java/build/Countries.java:237
-msgid "South Africa"
-msgstr "Южная Африка"
-
-#: ../java/build/Countries.java:238
-msgid "Zambia"
-msgstr "Замбия"
-
-#: ../java/build/Countries.java:239
-msgid "Zimbabwe"
-msgstr "Зимбабве"
-
-#: ../java/src/net/i2p/router/web/CSSHelper.java:57
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:30
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:32
-#: ../java/strings/Strings.java:29
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:234
-msgid "I2P Router Console"
-msgstr "Консоль маршрутизатора I2P"
-
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:57
-msgid "Error updating the configuration - please see the error logs"
-msgstr "Не удалось обновить настройки — загляните в журнал ошибок"
-
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:69
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:266
-msgid "Configuration saved successfully"
-msgstr "Настройки сохранены"
-
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:268
-msgid "Error saving the configuration (applied but not saved) - please see the error logs"
-msgstr "Не удалось сохранить настройки (применены, но не сохранены) — загляните в журнал ошибок"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:34
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:334
-msgid "Save Client Configuration"
-msgstr "Сохранить настройки клиентов"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:38
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:346
-msgid "Save WebApp Configuration"
-msgstr "Сохранить настройки веб-апплетов"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:42
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:356
-msgid "Save Plugin Configuration"
-msgstr "Сохранить настройки плагинов"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:46
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:362
-msgid "Install Plugin"
-msgstr "Установить плагин"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:82
-#, java-format
-msgid "Deleted plugin {0}"
-msgstr "Удален плагин {0}"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:84
-#, java-format
-msgid "Error deleting plugin {0}"
-msgstr "Ошибка при удалении плагина {0}"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:96
-#, java-format
-msgid "Stopped plugin {0}"
-msgstr "Остановлен плагин {0}"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:98
-#, java-format
-msgid "Error stopping plugin {0}"
-msgstr "Ошибка при остановке плагина {0}"
-
-#. label (IE)
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:119
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:189
-msgid "Start"
-msgstr "Запустить"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:138
-#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:49
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61
-msgid "Unsupported"
-msgstr "Не поддерживается"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:184
-msgid "New client added"
-msgstr "Добавлен новый клиент"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:188
-msgid "Client configuration saved successfully - restart required to take effect."
-msgstr "Настройки клиентов сохранены, требуется перезагрузка маршрутизатора для вступления в силу."
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:202
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:213
-msgid "Bad client index."
-msgstr "Индекс клиента не найден в списке."
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:379
-msgid "Client"
-msgstr "Клиент"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:266
-msgid "started"
-msgstr "запущен"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218
-msgid "deleted"
-msgstr "удален"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:235
-msgid "WebApp configuration saved."
-msgstr "Настройки веб-апплета сохранены."
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:251
-msgid "Plugin configuration saved."
-msgstr "Настройки плагина сохранены."
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:266
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:58
-msgid "WebApp"
-msgstr "Веб-апплет"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:268
-msgid "Failed to start"
-msgstr "Не удалось запустить"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:273
-msgid "Failed to find server."
-msgstr "Не удалось найти сервер."
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:279
-msgid "No plugin URL specified."
-msgstr "Не указан URL загрузки плагина"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:289
-#, java-format
-msgid "No update URL specified for {0}"
-msgstr "Не указан URL загрузки плагина {0}"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:297
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:302
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:315
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:320
-msgid "Plugin or update download already in progress."
-msgstr "Загрузка плагина или обновления уже запущена."
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:306
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:117
-#, java-format
-msgid "Downloading plugin from {0}"
-msgstr "Производится загрузка плагина с {0}"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:324
-#, java-format
-msgid "Checking plugin {0} for updates"
-msgstr "Проверяется наличие обновления для плагина {0}"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:334
-#, java-format
-msgid "Started plugin {0}"
-msgstr "Запущен плагин {0}"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:336
-#, java-format
-msgid "Error starting plugin {0}"
-msgstr "Ошибка при запуске плагина {0}"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:21
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:192
-msgid "Edit"
-msgstr "Редактировать"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:30
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:330
-msgid "Add Client"
-msgstr "Добавить клиент"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38
-msgid "Class and arguments"
-msgstr "Название класса и параметры"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:58
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:82
-msgid "Control"
-msgstr "Управление"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:58
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:82
-msgid "Run at Startup?"
-msgstr "Запускать автоматически?"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:58
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:82
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:131
-msgid "Description"
-msgstr "Описание"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:82
-msgid "Plugin"
-msgstr "Плагин"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:95
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:165
-msgid "Version"
-msgstr "Версия"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:97
-msgid "Signed by"
-msgstr "Подписано"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:114
-msgid "Date"
-msgstr "Дата"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:120
-msgid "Author"
-msgstr "Автор"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:136
-msgid "License"
-msgstr "Лицензия"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:141
-msgid "Website"
-msgstr "Веб-сайт"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:146
-msgid "Update link"
-msgstr "Адрес обновления"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:194
-msgid "Stop"
-msgstr "Остановить"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:196
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:62
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:312
-msgid "Check for updates"
-msgstr "Проверить обновления"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197
-#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:213
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:220
-msgid "Update"
-msgstr "Обновление"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202
-#, java-format
-msgid "Are you sure you want to delete {0}?"
-msgstr "Вы действительно хотите удалить {0}?"
-
-#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:204
-msgid "Delete"
-msgstr "Удалить"
-
-#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:324
-msgid "Add key"
-msgstr "Добавить ключ"
-
-#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:19
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:322
-msgid "Delete key"
-msgstr "Удалить ключ"
-
-#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:21
-msgid "You must enter a destination"
-msgstr "Вы должны ввести адрес назначения"
-
-#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:23
-msgid "You must enter a key"
-msgstr "Вы должны ввести ключ"
-
-#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:34
-#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41
-#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:43
-msgid "Key for"
-msgstr "Ключ для"
-
-#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:34
-msgid "added to keyring"
-msgstr "добавлен в связку ключей"
-
-#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:36
-msgid "Invalid destination or key"
-msgstr "Некорректный адрес назначения или ключ"
-
-#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41
-msgid "removed from keyring"
-msgstr "удален из связки ключей"
-
-#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:43
-msgid "not found in keyring"
-msgstr "не найден в связке ключей"
-
-#: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:45
-msgid "Invalid destination"
-msgstr "Некорректный адрес назначения"
-
-#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:46
-msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN"
-msgstr "Впишите выше дополнительные настройки уровней детальности журнала. Пример: net.i2p.router.tunnel=WARN"
-
-#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:47
-msgid "Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN"
-msgstr "Либо добавьте эти записи в файл logger.config. Пример: logger.record.net.i2p.router.tunnel=WARN"
-
-#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48
-msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT"
-msgstr "Поддерживаемые уровни: DEBUG, INFO, WARN, ERROR, CRIT"
-
-# This term intentionally left in English
-#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52
-msgid "CRIT"
-msgstr "CRIT"
-
-# This term intentionally left in English
-#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52
-msgid "DEBUG"
-msgstr "DEBUG"
-
-# This term intentionally left in English
-#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52
-msgid "ERROR"
-msgstr "ERROR"
-
-# This term intentionally left in English
-#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52
-msgid "INFO"
-msgstr "INFO"
-
-# This term intentionally left in English
-#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:52
-msgid "WARN"
-msgstr "WARN"
-
-#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
-msgid "Network"
-msgstr "Сеть"
-
-#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
-msgid "Service"
-msgstr "Служба"
-
-#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:90
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:359
-#: ../java/strings/Strings.java:72
-msgid "Tunnels"
-msgstr "Туннели"
-
-#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
-msgid "UI"
-msgstr "Интерфейс"
-
-#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19
-msgid "Clients"
-msgstr "Апплеты"
-
-#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:292
-msgid "Keyring"
-msgstr "Ключи"
-
-#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19
-msgid "Logging"
-msgstr "Журнал"
-
-#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:96
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:238
-#: ../java/strings/Strings.java:67
-msgid "Peers"
-msgstr "Пиры"
-
-#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:373
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
-msgid "Stats"
-msgstr "Статистика"
-
-#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:20
-msgid "Advanced"
-msgstr "Дополнительно"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:48
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:264
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:35
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:359
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:515
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:305
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:335
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:375
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:343
-msgid "Save changes"
-msgstr "Сохранить настройки"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:121
-msgid "Rechecking router reachability..."
-msgstr "Перепроверяем доступность маршрутизатора..."
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:153
-msgid "Updating IP address"
-msgstr "Обновляем IP-адрес"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:171
-msgid "Disabling TCP completely"
-msgstr "Полностью отключаем использование TCP"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:175
-msgid "Updating inbound TCP address to"
-msgstr "Адрес для входящих TCP соединений изменен на"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:179
-msgid "Disabling inbound TCP"
-msgstr "Отключаем использование TCP на вход"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:181
-msgid "Updating inbound TCP address to auto"
-msgstr "Адрес для входящих TCP соединений будет определяться автоматически"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:190
-msgid "Updating inbound TCP port to"
-msgstr "Порт для входящих TCP соединений изменен на"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:193
-msgid "Updating inbound TCP port to auto"
-msgstr "Порт для входящих TCP соединений будет выбираться автоматически"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205
-msgid "Updating UDP port from"
-msgstr "Порт для UDP соединений изменен с"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:205
-msgid "to"
-msgstr "на"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:221
-msgid "Gracefully restarting into Hidden Router Mode"
-msgstr "Плавная перезагрузка для перехода в скрытый режим"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:223
-msgid "Gracefully restarting to exit Hidden Router Mode"
-msgstr "Плавная перезагрузка для выхода из скрытого режима"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:232
-msgid "Enabling UPnP, restart required to take effect"
-msgstr "UPnP включен, необходима перезагрузка маршрутизатора"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:234
-msgid "Disabling UPnP, restart required to take effect"
-msgstr "UPnP выключен, необходима перезагрузка маршрутизатора"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:242
-msgid "Enabling laptop mode"
-msgstr "Включение laptop mode"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:244
-msgid "Disabling laptop mode"
-msgstr "Выключение laptop mode"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:250
-msgid "Requiring SSU introducers"
-msgstr "Запрашиваем SSU-посредников"
-
-#. There's a few changes that don't really require restart (e.g. enabling inbound TCP)
-#. But it would be hard to get right, so just do a restart.
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:291
-msgid "Gracefully restarting I2P to change published router address"
-msgstr "Плавная перезагрузка для изменения публикуемого адреса"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:314
-msgid "Updating bandwidth share percentage"
-msgstr "Обновление доли транзитного трафика"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:397
-msgid "Updated bandwidth limits"
-msgstr "Настройки ограничений скорости сохранены"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:39
-#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:47
-#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:50
-#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:57
-#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:60
-msgid "unknown"
-msgstr "неизвестен"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:169
-msgid "bits per second"
-msgstr "бит/секунду"
-
-#: ../java/src/net/i2p/router/web/ConfigNetHelper.java:170
-#, java-format
-msgid "or {0} bytes per month maximum"
-msgstr "или {0} байт/месяц максимум"
-
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:314
-msgid "Ban peer until restart"
-msgstr "Забанить пира до перезагрузки маршрутизатора"
-
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23
-#, java-format
-msgid "Manually banned via {0}"
-msgstr "Забанен вручную через {0}"
-
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
-msgid "banned until restart"
-msgstr "забанен до перезагрузки"
-
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:27
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:38
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:59
-msgid "Invalid peer"
-msgstr "Некорректное описание пира"
-
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:28
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:316
-msgid "Unban peer"
-msgstr "Разбанить пира"
-
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
-msgid "unbanned"
-msgstr "разбанен"
-
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
-msgid "is not currently banned"
-msgstr "на данный момент не забанен"
-
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:39
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:322
-msgid "Adjust Profile Bonuses"
-msgstr "Настроить бонусы для этого пира"
-
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:47
-msgid "Bad speed value"
-msgstr "Некорректное значение скорости"
-
-#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:52
-msgid "Bad capacity value"
-msgstr "Некорректное значение ёмкости"
-
-#. Normal browsers send value, IE sends button label
-#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:32
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:57
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:292
-msgid "Shutdown immediately"
-msgstr "Выключить немедленно"
-
-#. ctx.router().shutdown(Router.EXIT_HARD); // never returns
-#. give the UI time to respond
-#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:36
-msgid "Cancel shutdown"
-msgstr "Отменить выключение"
-
-#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:37
-msgid "Cancel restart"
-msgstr "Отменить перезагрузку"
-
-#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:39
-msgid "Restart immediately"
-msgstr "Перезагрузить немедленно"
-
-#. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
-#. give the UI time to respond
-#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:43
-msgid "Restart"
-msgstr "Перезагрузить"
-
-#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:46
-msgid "Shutdown"
-msgstr "Выключить"
-
-#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:59
-msgid "Restart imminent"
-msgstr "Неотменяемая перезагрузка"
-
-#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:61
-msgid "Shutdown imminent"
-msgstr "Неотменяемое выключение"
-
-#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:65
-#, java-format
-msgid "Shutdown in {0}"
-msgstr "Выключение через {0}"
-
-#: ../java/src/net/i2p/router/web/ConfigRestartBean.java:70
-#, java-format
-msgid "Restart in {0}"
-msgstr "Перезагрузка через {0}"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:53
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:290
-msgid "Shutdown gracefully"
-msgstr "Выключить плавно"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:56
-msgid "Graceful shutdown initiated"
-msgstr "Запущено плавное выключение"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:60
-msgid "Shutdown immediately! boom bye bye bad bwoy"
-msgstr "Выключаем немедленно!"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:61
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:294
-msgid "Cancel graceful shutdown"
-msgstr "Отменить плавное выключение"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:63
-msgid "Graceful shutdown cancelled"
-msgstr "Плавное отключение отменено"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:64
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:306
-msgid "Graceful restart"
-msgstr "Перезагрузить плавно"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:67
-msgid "Graceful restart requested"
-msgstr "Запущена плавная перезагрузка"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:68
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:308
-msgid "Hard restart"
-msgstr "Перезагрузить немедленно"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:71
-msgid "Hard restart requested"
-msgstr "Запрошена быстрая перезагрузка"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:72
-msgid "Rekey and Restart"
-msgstr "Сменить ключ и перезагрузить"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:73
-msgid "Rekeying after graceful restart"
-msgstr "Смена ключа после плавной перезагрузки"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:76
-msgid "Rekey and Shutdown"
-msgstr "Сменить ключ и выключить"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:77
-msgid "Rekeying after graceful shutdown"
-msgstr "Смена ключа после плавного выключения"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:80
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:334
-msgid "Run I2P on startup"
-msgstr "Запускать I2P при старте"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:82
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:336
-msgid "Don't run I2P on startup"
-msgstr "Не запускать I2P при старте"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:84
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:354
-msgid "Dump threads"
-msgstr "Вывести список тредов"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:91
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:322
-msgid "Show systray icon"
-msgstr "Показать значок статуса"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:96
-msgid "System tray icon enabled."
-msgstr "Включен значок-индикатор статуса в области уведомлений."
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:98
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:110
-msgid "System tray icon feature not supported on this platform. Sorry!"
-msgstr "Вывод индикаторов в области уведомлений на этой платформе не поддерживается. Извините!"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:101
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:113
-msgid "Warning: unable to contact the systray manager"
-msgstr "Предупреждение: Не удалось соединиться с менеджером области уведомлений"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:103
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:324
-msgid "Hide systray icon"
-msgstr "Спрятать значок статуса"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:108
-msgid "System tray icon disabled."
-msgstr "Выключен значок-индикатор статуса в области уведомлений."
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:115
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:362
-msgid "View console on startup"
-msgstr "Открывать веб-консоль при запуске I2P"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:117
-msgid "Console is to be shown on startup"
-msgstr "Веб-консоль будет открываться при запуске I2P"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:118
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:364
-msgid "Do not view console on startup"
-msgstr "Не открывать веб-консоль при запуске I2P"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:120
-msgid "Console is not to be shown on startup"
-msgstr "Веб-консоль не будет открываться при запуске I2P"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:129
-msgid "Service installed"
-msgstr "Служба установлена"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:131
-msgid "Warning: unable to install the service"
-msgstr "Предупреждение: не удалось установить службу"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:137
-msgid "Service removed"
-msgstr "Служба удалена"
-
-#: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:139
-msgid "Warning: unable to remove the service"
-msgstr "Предупреждение: не удалось удалить службу"
-
-#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:118
-msgid "Stat filter and location updated successfully to"
-msgstr "Обновлены настройки файла и фильтра статистики. Новый фильтр"
-
-#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:120
-msgid "Failed to update the stat filter and location"
-msgstr "Не удалось обновить настройки файла и фильтра статистики."
-
-#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:121
-msgid "Graph list updated, may take up to 60s to be reflected here and on the Graphs Page"
-msgstr "Список графиков обновлен, для обновления содержимого страницы графиков может потребоваться до 60 секунд."
-
-#. the count isn't really correct anyway, since we don't check for actual changes
-#. addFormNotice("Updated settings for " + updated + " pools.");
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:137
-msgid "Updated settings for all pools."
-msgstr "Обновлены настройки для всех пулов."
-
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:142
-msgid "Exploratory tunnel configuration saved successfully."
-msgstr "Настройки зондирующих туннелей сохранены."
-
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:144
-#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36
-msgid "Error saving the configuration (applied but not saved) - please see the error logs."
-msgstr "Не удалось сохранить настройки (применены, но не сохранены) — загляните в журнал ошибок"
-
-#. * dummies for translation
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14
-#, java-format
-msgid "1 hop"
-msgid_plural "{0} hops"
-msgstr[0] "{0} хоп"
-msgstr[1] "{0} хопа"
-msgstr[2] "{0} хопов"
-
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:15
-#, java-format
-msgid "1 tunnel"
-msgid_plural "{0} tunnels"
-msgstr[0] "{0} туннель"
-msgstr[1] "{0} туннеля"
-msgstr[2] "{0} туннелей"
-
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:26
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:41
-msgid "Exploratory tunnels"
-msgstr "Зондирующие туннели"
-
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:46
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:61
-msgid "Client tunnels for"
-msgstr "Клиентские туннели для:"
-
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:69
-msgid "ANONYMITY WARNING - Settings include 0-hop tunnels."
-msgstr "ОПАСНО ДЛЯ АНОНИМНОСТИ — Настройки задают 0-хоповые туннели."
-
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:74
-msgid "ANONYMITY WARNING - Settings include 1-hop tunnels."
-msgstr "ОПАСНО ДЛЯ АНОНИМНОСТИ — Настройки задают 1-хоповые туннели."
-
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:77
-msgid "PERFORMANCE WARNING - Settings include very long tunnels."
-msgstr "ОПАСНО ДЛЯ ПРОИЗВОДИТЕЛЬНОСТИ — Настройки задают слишком длинные туннели."
-
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:80
-msgid "PERFORMANCE WARNING - Settings include high tunnel quantities."
-msgstr "ОПАСНО ДЛЯ ПРОИЗВОДИТЕЛЬНОСТИ — Настройки задают слишком большие количества туннелей."
-
-#. buf.append("
Inbound
Outbound
\n");
-#. tunnel depth
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87
-msgid "Length"
-msgstr "Длина"
-
-#. tunnel depth variance
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104
-msgid "Randomization"
-msgstr "Разброс"
-
-#. tunnel quantity
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128
-msgid "Quantity"
-msgstr "Количество"
-
-#. tunnel backup quantity
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145
-msgid "Backup quantity"
-msgstr "Резервное количество"
-
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167
-msgid "Inbound options"
-msgstr "Дополнительные параметры для входящих"
-
-#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180
-msgid "Outbound options"
-msgstr "Дополнительные параметры для исходящих"
-
-#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:31
-msgid "Theme change saved."
-msgstr "Изменение темы оформления сохранено."
-
-#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:33
-msgid "Refresh the page to view."
-msgstr "Обновите страницу для просмотра."
-
-#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51
-msgid "English"
-msgstr "English"
-
-#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51
-msgid "French"
-msgstr "Français"
-
-#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51
-msgid "German"
-msgstr "Deutsch"
-
-#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
-msgid "Chinese"
-msgstr "中文"
-
-#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
-msgid "Dutch"
-msgstr "Nederlands"
-
-#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
-msgid "Russian"
-msgstr "Русский"
-
-#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
-msgid "Swedish"
-msgstr "Svenska"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:69
-msgid "Update available, attempting to download now"
-msgstr "Доступно обновление, пытаемся загрузить"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:71
-msgid "Update available, click button on left to download"
-msgstr "Доступно обновление, нажмите кнопку слева для загрузки"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:77
-msgid "No update available"
-msgstr "Нет доступных обновлений"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:85
-msgid "Updating news URL to"
-msgstr "Новый URL новостей"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93
-msgid "Updating proxy host to"
-msgstr "Новый адрес I2P-прокси"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101
-msgid "Updating proxy port to"
-msgstr "Новый порт I2P-прокси"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:114
-msgid "Updating refresh frequency to"
-msgstr "Новый интервал проверки обновлений"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:121
-msgid "Updating update policy to"
-msgstr "Новый режим обновлений"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130
-msgid "Updating update URLs."
-msgstr "Новые URL обновлений"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:139
-msgid "Updating trusted keys."
-msgstr "Обновление списка доверенных ключей."
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:147
-msgid "Updating unsigned update URL to"
-msgstr "Новый URL неподписанной тестовой сборки"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88
-#: ../java/src/net/i2p/router/web/GraphHelper.java:138
-msgid "Never"
-msgstr "Никогда"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:90
-msgid "Every"
-msgstr "Каждые"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:108
-msgid "Notify only"
-msgstr "Только уведомлять"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:115
-msgid "Download and verify only"
-msgstr "Только скачать и проверить целостность"
-
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:123
-msgid "Download, verify, and restart"
-msgstr "Скачать, проверить и обновить I2P"
-
-#: ../java/src/net/i2p/router/web/FormHandler.java:163
-msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit."
-msgstr "Форма не принята, скорее всего это произошло из-за того, что Вы нажимали кнопку \"Назад\" или \"Обновить\" в браузере. Пожалуйста, заполните форму заново."
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:82
-msgid "Combined bandwidth graph"
-msgstr "График загрузки канала"
-
-#. e.g. "statname for 60m"
-#: ../java/src/net/i2p/router/web/GraphHelper.java:96
-#, java-format
-msgid "{0} for {1}"
-msgstr "{0} за {1}"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:130
-msgid "Configure Graph Display"
-msgstr "Настройка показа графиков"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:130
-msgid "Select Stats"
-msgstr "Выбрать параметры"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:132
-msgid "Periods"
-msgstr "Количество интервалов"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:133
-msgid "Plot averages"
-msgstr "Строить график средних значений"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:134
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:332
-msgid "or"
-msgstr "или"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:134
-msgid "plot events"
-msgstr "строить график количества событий"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:135
-msgid "Image sizes"
-msgstr "Размеры графиков"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:135
-msgid "width"
-msgstr "ширина"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:136
-msgid "height"
-msgstr "высота"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:136
-#: ../java/src/net/i2p/router/web/GraphHelper.java:137
-msgid "pixels"
-msgstr "пикселей"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:138
-msgid "Refresh delay"
-msgstr "Интервал обновления"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:138
-msgid "hour"
-msgstr "час"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:138
-msgid "minute"
-msgstr "минута"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:138
-msgid "minutes"
-msgstr "минут(ы)"
-
-#: ../java/src/net/i2p/router/web/GraphHelper.java:139
-msgid "Redraw"
-msgstr "Перерисовать"
-
-#: ../java/src/net/i2p/router/web/LogsHelper.java:13
-#: ../java/src/net/i2p/router/web/LogsHelper.java:37
-msgid "File location"
-msgstr "Путь к файлу журнала"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:75
-msgid "Network Database RouterInfo Lookup"
-msgstr "Просмотр RouterInfo"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:90
-#: ../java/strings/Strings.java:68
-msgid "Router"
-msgstr "Маршрутизатор"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:90
-msgid "not found in network database"
-msgstr "не найден в сетевой базе данных"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:102
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:210
-msgid "Network Database Contents"
-msgstr "Просмотр сетевой базы данных"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:103
-msgid "View RouterInfo"
-msgstr "Показать список RouterInfo"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:104
-msgid "LeaseSets"
-msgstr "Список LeaseSet"
-
-# This term intentionally left in English
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:126
-msgid "LeaseSet"
-msgstr "LeaseSet"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:128
-msgid "Local"
-msgstr "Локальный"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:130
-msgid "Unpublished"
-msgstr "Неопубликованный"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:131
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:138
-msgid "Destination"
-msgstr "Адрес назначения"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:148
-#, java-format
-msgid "Expires in {0}"
-msgstr "Истекает через {0}"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:150
-#, java-format
-msgid "Expired {0} ago"
-msgstr "Истек {0} назад"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:162
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
-msgid "Gateway"
-msgstr "Шлюз"
-
-# This term intentionally left in English
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:162
-msgid "Lease"
-msgstr "Lease"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:164
-msgid "Tunnel"
-msgstr "Туннель"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:210
-msgid "View LeaseSets"
-msgstr "Показать список LeaseSet"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:212
-msgid "Not initialized"
-msgstr "База не инициализирована"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:221
-msgid "Routers"
-msgstr "Маршрутизаторы"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:223
-msgid "Show all routers"
-msgstr "Показать полный список"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:225
-msgid "Show all routers with full stats"
-msgstr "Показать полный список с полной статистикой"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:260
-msgid "Network Database Router Statistics"
-msgstr "Статистика маршрутизаторов"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:298
-msgid "Count"
-msgstr "Количество"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
-msgid "Transports"
-msgstr "Транспортный протокол"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:298
-msgid "Country"
-msgstr "Страна"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
-msgid "Our info"
-msgstr "Информация о нас"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:332
-msgid "Peer info for"
-msgstr "Информация о пире"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:336
-msgid "Full entry"
-msgstr "Показать полную запись"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:110
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:600
-msgid "Hidden"
-msgstr "Скрытый"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342
-msgid "Updated"
-msgstr "Обновленный"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:343
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:346
-#, java-format
-msgid "{0} ago"
-msgstr "{0} назад"
-
-#. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:345
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:349
-msgid "Published"
-msgstr "Опубликовано"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:351
-msgid "Address(es)"
-msgstr "Адрес(а)"
-
-# This term intentionally left in English
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:364
-msgid "cost"
-msgstr "cost"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:388
-msgid "Hidden or starting up"
-msgstr "В скрытом режиме или недавно запущен"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:388
-msgid "SSU"
-msgstr "SSU"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:388
-msgid "SSU with introducers"
-msgstr "SSU через посредников"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:389
-msgid "NTCP"
-msgstr "NTCP"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:389
-msgid "NTCP and SSU"
-msgstr "NTCP и SSU"
-
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:389
-msgid "NTCP and SSU with introducers"
-msgstr "NTCP и SSU через посредников"
-
-#: ../java/src/net/i2p/router/web/NewsFetcher.java:82
-#, java-format
-msgid "News last updated {0} ago."
-msgstr "Новости последний раз обновлялись {0} назад."
-
-#: ../java/src/net/i2p/router/web/NewsFetcher.java:88
-#, java-format
-msgid "News last checked {0} ago."
-msgstr "Новости последний раз проверялись {0} назад."
-
-#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:77
-#, java-format
-msgid "Cannot check, plugin {0} is not installed"
-msgstr "Проверка невозможна — плагин {0} не установлен"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:129
-#, java-format
-msgid "Checking for update of plugin {0}"
-msgstr "Проверяется наличие обновления для плагина {0}"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:154
-#, java-format
-msgid "New plugin version {0} is available"
-msgstr "Доступна новая версия {0}"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:156
-#, java-format
-msgid "No new version is available for plugin {0}"
-msgstr "Для плагина {0} нет обновлений"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:165
-#, java-format
-msgid "Update check failed for plugin {0}"
-msgstr "Ошибка при проверке наличия обновлений для плагина {0}"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:138
-msgid "Downloading plugin"
-msgstr "Загружается плагин"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:145
-#: ../java/src/net/i2p/router/web/UpdateHandler.java:179
-#, java-format
-msgid "{0}B transferred"
-msgstr "{0} байт скачано"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:151
-msgid "Plugin downloaded"
-msgstr "Плагин загружен"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:156
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:343
-#, java-format
-msgid "Cannot create plugin directory {0}"
-msgstr "Не удалось создать директорию плагина {0}"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:165
-#: ../java/src/net/i2p/router/web/UpdateHandler.java:220
-#, java-format
-msgid "from {0}"
-msgstr "из {0}"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:175
-#, java-format
-msgid "Plugin from {0} is corrupt"
-msgstr "Загруженный из {0} плагин поврежден"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:186
-#, java-format
-msgid "Plugin from {0} does not contain the required configuration file"
-msgstr "Загруженный из {0} плагин не содержит необходимого файла настроек"
-
-#. updateStatus("" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "");
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:199
-#, java-format
-msgid "Plugin from {0} contains an invalid key"
-msgstr "Загруженный из {0} плагин содержит некорректный ключ"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:218
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:227
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:236
-#, java-format
-msgid "Plugin signature verification of {0} failed"
-msgstr "Плагин {0} содержит недействительную подпись"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:251
-#, java-format
-msgid "Plugin from {0} has invalid name or version"
-msgstr "Загруженный из {0} плагин имеет некорректное название или версию"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:256
-#, java-format
-msgid "Plugin {0} has mismatched versions"
-msgstr "Плагин {0} содержит несовпадающие версии"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:264
-#, java-format
-msgid "This plugin requires I2P version {0} or higher"
-msgstr "Для этого плагина требуется версия I2P {0} и выше"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:272
-#, java-format
-msgid "This plugin requires Java version {0} or higher"
-msgstr "Для этого плагина требуется версия Java {0} и выше"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:280
-msgid "Downloaded plugin is for new installs only, but the plugin is already installed"
-msgstr "Загруженный инсталлятор плагина предназначен только для первоначальной установки, но такой плагин уже установлен"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:292
-msgid "Installed plugin does not contain the required configuration file"
-msgstr "Установленный плагин не содержит необходимого файла настроек"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:300
-msgid "Signature of downloaded plugin does not match installed plugin"
-msgstr "Подпись загруженного плагина не совпадает с установленным плагином"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:307
-#, java-format
-msgid "Downloaded plugin version {0} is not newer than installed plugin"
-msgstr "Версия скачанного плагина {0} не новее версии уже установленного плагина"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:314
-#, java-format
-msgid "Plugin update requires installed plugin version {0} or higher"
-msgstr "Для обновления плагина требуется установленная версия плагина {0} и выше"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:321
-#, java-format
-msgid "Plugin update requires installed plugin version {0} or lower"
-msgstr "Для обновления плагина требуется установленная версия плагина {0} и ниже"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:338
-msgid "Plugin is for upgrades only, but the plugin is not installed"
-msgstr "Загруженный инсталлятор плагина предназначен только для обновления, но такой плагин ещё не был установлен"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351
-#, java-format
-msgid "Failed to install plugin in {0}"
-msgstr "Не удалось установить плагин в {0}"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:358
-#, java-format
-msgid "Plugin {0} installed, router restart required"
-msgstr "Плагин {0} установлен, требуется перезагрузка маршрутизатора"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:360
-#, java-format
-msgid "Plugin {0} installed"
-msgstr "Плагин {0} установлен"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:369
-#, java-format
-msgid "Plugin {0} installed and started"
-msgstr "Плагин {0} установлен и запущен"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371
-#, java-format
-msgid "Plugin {0} installed but failed to start, check logs"
-msgstr "Плагин {0} установлен, но при его запуске произошел сбой, загляните в журнал ошибок"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373
-#, java-format
-msgid "Plugin {0} installed but failed to start"
-msgstr "Плагин {0} установлен, но при его запуске произошел сбой"
-
-#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:383
-#, java-format
-msgid "Failed to download plugin from {0}"
-msgstr "Не удалось скачать плагин из {0}"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:72
-msgid "Peer Profiles"
-msgstr "Профили пиров"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73
-#, java-format
-msgid "Showing {0} recent profiles."
-msgstr "Показано {0} недавно обновленных профилей"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75
-#, java-format
-msgid "Hiding {0} older profiles."
-msgstr "Скрыто {0} устаревших профилей."
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77
-#, java-format
-msgid "Hiding {0} standard profiles."
-msgstr "Также скрыто {0} стандартных профилей (кликните для показа)."
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82
-msgid "Groups (Caps)"
-msgstr "Входит в группы (Caps)"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:83
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:334
-msgid "Speed"
-msgstr "Скорость"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:84
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:253
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:338
-msgid "Capacity"
-msgstr "Ёмкость"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255
-msgid "Integration"
-msgstr "Интеграция"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:86
-msgid "Status"
-msgstr "Статус"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:126
-msgid "Fast, High Capacity"
-msgstr "Быстрые, Высокоёмкие"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:127
-msgid "High Capacity"
-msgstr "Высокоёмкие"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:128
-msgid "Standard"
-msgstr "Стандартные"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:129
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:163
-msgid "Failing"
-msgstr "Сбоит"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
-msgid "Integrated"
-msgstr "Интегрированные"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:164
-msgid "Unreachable"
-msgstr "Недоступен"
-
-#. hide if < 10%
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171
-msgid "Test Fails"
-msgstr "Неудачных тестов"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175
-msgid "profile"
-msgstr "профиль"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184
-msgid "Floodfill and Integrated Peers"
-msgstr "Floodfill и хорошо интегрированные пиры"
-
-# This term intentionally left in English
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188
-msgid "Caps"
-msgstr "Caps"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189
-msgid "Integ. Value"
-msgstr "Интег. Значение"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190
-msgid "Last Heard About"
-msgstr "Последний раз слышали о"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191
-msgid "Last Heard From"
-msgstr "Последний приём"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192
-msgid "Last Good Send"
-msgstr "Последняя удачная передача"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193
-msgid "Last Bad Send"
-msgstr "Последняя неудачная передача"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194
-msgid "10m Resp. Time"
-msgstr "Время отклика (последние 10 мин)"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195
-msgid "1h Resp. Time"
-msgstr "Время отклика (последний 1 час)"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196
-msgid "1d Resp. Time"
-msgstr "Время отклика (последний 1 день)"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197
-msgid "Last Good Lookup"
-msgstr "Последний удачный поиск"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198
-msgid "Last Bad Lookup"
-msgstr "Последний неудачный поиск"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199
-msgid "Last Good Store"
-msgstr "Последнее удачное размещение"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200
-msgid "Last Bad Store"
-msgstr "Последнее неудачное размещение"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201
-msgid "1h Fail Rate"
-msgstr "Уровень отказов за 1 час"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202
-msgid "1d Fail Rate"
-msgstr "Уровень отказов за 1 день"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250
-msgid "Thresholds"
-msgstr "Пороговые значения"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252
-msgid "fast peers"
-msgstr "быстрые пиры"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254
-msgid "high capacity peers"
-msgstr "высокоёмкие пиры"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256
-msgid " well integrated peers"
-msgstr "хорошо интегрированные пиры"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258
-msgid "as determined by the profile organizer"
-msgstr "определяется автоматически модулем ProfileOrganizer на основании собранной информации о производительности пира"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258
-msgid "groups"
-msgstr "группы"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
-msgid "capabilities in the netDb, not used to determine profiles"
-msgstr "информация о пире, предоставленная сетевой базой данных; для профилирования не используется"
-
-# This term intentionally left in English
-#. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
-#: ../java/strings/Strings.java:81
-msgid "caps"
-msgstr "caps"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
-msgid "peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel"
-msgstr "пиковая скорость (байты/секунду) выданная пиром на одном туннеле за 1-минутый период"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
-msgid "speed"
-msgstr "скорость"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
-msgid "capacity"
-msgstr "ёмкость"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
-msgid "how many tunnels can we ask them to join in an hour?"
-msgstr "к скольким туннелям мы можем попросить этого пира подсоединиться за час?"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
-msgid "how many new peers have they told us about lately?"
-msgstr "о скольких новых пирах этот пир нам сообщил в последнее время?"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
-msgid "integration"
-msgstr "интеграция"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
-msgid "is the peer banned, or unreachable, or failing tunnel tests?"
-msgstr "забанен ли этот пир, недоступен, дает ошибки на тестах?"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
-msgid "status"
-msgstr "статус"
-
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313
-msgid "n/a"
-msgstr "нет данных"
-
-#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57
-#, java-format
-msgid "Temporary ban expiring in {0}"
-msgstr "Временный бан истекает через {0}"
-
-#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59
-#, java-format
-msgid "Banned until restart or in {0}"
-msgstr "Забанен до перезагрузки или истечения {0}"
-
-#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71
-msgid "unban now"
-msgstr "разбанить"
-
-#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD
-#: ../java/src/net/i2p/router/web/StatSummarizer.java:174
-msgid "Bandwidth usage"
-msgstr "Загрузка канала"
-
-#: ../java/src/net/i2p/router/web/StatSummarizer.java:181
-msgid "Outbound bytes/sec"
-msgstr "Исходящ. байт/сек"
-
-#. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3);
-#: ../java/src/net/i2p/router/web/StatSummarizer.java:183
-msgid "Inbound bytes/sec"
-msgstr "Входящ. байт/сек"
-
-#: ../java/src/net/i2p/router/web/StatSummarizer.java:186
-#: ../java/src/net/i2p/router/web/StatSummarizer.java:187
-#: ../java/src/net/i2p/router/web/StatSummarizer.java:188
-#: ../java/src/net/i2p/router/web/StatSummarizer.java:189
-msgid "bytes/sec"
-msgstr "байт/сек"
-
-#: ../java/src/net/i2p/router/web/StatSummarizer.java:186
-msgid "out average"
-msgstr "исх. сред."
-
-#: ../java/src/net/i2p/router/web/StatSummarizer.java:187
-#: ../java/src/net/i2p/router/web/StatSummarizer.java:189
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:110
-msgid "max"
-msgstr "макс."
-
-#: ../java/src/net/i2p/router/web/StatSummarizer.java:188
-msgid "in average"
-msgstr "вх. сред."
-
-#: ../java/src/net/i2p/router/web/StatsGenerator.java:56
-msgid "GO"
-msgstr "Перейти"
-
-#: ../java/src/net/i2p/router/web/StatsGenerator.java:59
-msgid "Statistics gathered during this router's uptime"
-msgstr "Статистика собрана за время с последнего запуска маршрутизатора"
-
-#: ../java/src/net/i2p/router/web/StatsGenerator.java:62
-msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate."
-msgstr "Собираемые данные округляются за 1-минутные промежутки, поэтому используйте эту информацию только для приблизительной оценки."
-
-#: ../java/src/net/i2p/router/web/StatsGenerator.java:108
-msgid "frequency"
-msgstr "частота"
-
-#: ../java/src/net/i2p/router/web/StatsGenerator.java:142
-msgid "No lifetime events"
-msgstr "Счетчик lifetime событий пуст"
-
-#: ../java/src/net/i2p/router/web/StatsGenerator.java:154
-msgid "rate"
-msgstr "интервал"
-
-#: ../java/src/net/i2p/router/web/StatsGenerator.java:156
-msgid "avg value"
-msgstr "среднее значение"
-
-#: ../java/src/net/i2p/router/web/StatsGenerator.java:185
-msgid "events"
-msgstr "событий"
-
-#: ../java/src/net/i2p/router/web/StatsGenerator.java:191
-msgid "No events"
-msgstr "Нет событий"
-
-#: ../java/src/net/i2p/router/web/StatsGenerator.java:197
-msgid "lifetime average"
-msgstr "среднее за время работы"
-
-#: ../java/src/net/i2p/router/web/StatsGenerator.java:199
-msgid "peak average"
-msgstr "пиковое среднее"
-
-#. Display the strict average
-#: ../java/src/net/i2p/router/web/StatsGenerator.java:217
-msgid "lifetime average value"
-msgstr "среднее значение за время работы"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:44
-msgid "Configure startup of clients and webapps (services); manually start dormant services"
-msgstr "Настройка автозапуска клиентов и веб-апплетов, ручной запуск неактивных приложений"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:46
-msgid "I2P Services"
-msgstr "I2P сервисы"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:52
-msgid "Manage your I2P hosts file here (I2P domain name resolution)"
-msgstr "Здесь можно управлять hosts-файлами (единственный механизм, используемый I2P для отображения доменных имен)"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:54
-msgid "Addressbook"
-msgstr "Адресная Книга"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:58
-msgid "Built-in anonymous BitTorrent Client"
-msgstr "Встроенный анонимный Bittorrent-клиент"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:60
-msgid "Torrents"
-msgstr "Торренты"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:64
-msgid "Anonymous webmail client"
-msgstr "Анонимный почтовый клиент с веб-интерфейсом"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:66
-msgid "Webmail"
-msgstr "Веб-почта"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:70
-msgid "Anonymous resident webserver"
-msgstr "Встроенный анонимный веб-сервер"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:72
-msgid "Webserver"
-msgstr "Веб-сервер"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:80
-msgid "Configure I2P Router"
-msgstr "Настройка Маршрутизатора I2P"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:82
-msgid "I2P Internals"
-msgstr "I2P свойства"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:88
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:357
-msgid "View existing tunnels and tunnel build status"
-msgstr "Обзор списка существующих туннелей и статуса строящихся"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:94
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:236
-msgid "Show all current peer connections"
-msgstr "Просмотр списка текущих соединения с пирами"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:100
-msgid "Show recent peer performance profiles"
-msgstr "Просмотр профилей пиров"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:102
-msgid "Profiles"
-msgstr "Профили"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:106
-msgid "Show list of all known I2P routers"
-msgstr "Показать список всех известных I2P маршрутизаторов"
-
-# This term intentionally left in English
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:108
-msgid "NetDB"
-msgstr "NetDB"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:112
-msgid "Health Report"
-msgstr "Журналы сообщений маршрутизатора"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:114
-msgid "Logs"
-msgstr "Журналы"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:124
-msgid "Graph router performance"
-msgstr "График производительности маршрутизатора"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:126
-msgid "Graphs"
-msgstr "Графики"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
-msgid "Textual router performance statistics"
-msgstr "Статистика производительности маршрутизатора в текстовом виде"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:136
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:365
-msgid "Local Destinations"
-msgstr "Локальные туннели"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
-#: ../java/strings/Strings.java:62
-msgid "I2PTunnel"
-msgstr "Менеджер Туннелей"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149
-msgid "I2P Router Help"
-msgstr "Справка Маршрутизатора I2P"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:151
-msgid "General"
-msgstr "Общая информация"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:154
-msgid "Your unique I2P router identity is"
-msgstr "Уникальный идентификатор Вашего I2P маршрутизатора:"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:158
-msgid "never reveal it to anyone"
-msgstr "никому его не показывайте."
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:160
-msgid "Local Identity"
-msgstr "Локальный идентификатор"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-msgid "How long we've been running for this session"
-msgstr "Время работы маршрутизатора с последнего запуска"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175
-msgid "Uptime"
-msgstr "Аптайм"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:182
-msgid "Help with configuring your firewall and router for optimal I2P performance"
-msgstr "Помощь в настройке брандмауэра и маршрутизатора для обеспечения оптимальной производительности I2P"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
-msgid "Download"
-msgstr "Скачать"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
-msgid "Download Unsigned"
-msgstr "Скачать неподписанное"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:244
-msgid "Active"
-msgstr "Активные"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:252
-msgid "Fast"
-msgstr "Быстрые"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
-msgid "High capacity"
-msgstr "Высокоёмкие"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-msgid "Known"
-msgstr "Известные"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
-msgid "Help with firewall configuration"
-msgstr "Помощь в настройке брандмауэра"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287
-msgid "Check NAT/firewall"
-msgstr "Проверьте настройки NAT/брандмауэров."
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:307
-msgid "Reseed"
-msgstr "Повторить начальную загрузку"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:324
-msgid "Configure router bandwidth allocation"
-msgstr "Настройка ограничений скорости"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
-msgid "Bandwidth in/out"
-msgstr "Трафик (вх./исх.)"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342
-msgid "Total"
-msgstr "Всего"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349
-msgid "Used"
-msgstr "Объем"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:364
-msgid "Exploratory"
-msgstr "Зондирующие"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
-msgid "Participating"
-msgstr "Транзитные"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:382
-msgid "Share ratio"
-msgstr "Доля транзита"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
-msgid "What's in the router's job queue?"
-msgstr "Просмотр очереди заданий маршрутизатора."
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
-msgid "Congestion"
-msgstr "Занятость"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:395
-msgid "Job lag"
-msgstr "Задержка задач"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:401
-msgid "Message delay"
-msgstr "Задежка сообщений"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:407
-msgid "Tunnel lag"
-msgstr "Задержка туннелей"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:413
-msgid "Backlog"
-msgstr "Очередь"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:101
-msgid "ERR-Client Manager I2CP Error - check logs"
-msgstr "ОШИБКА - ошибка менеджера I2CP - загляните в журнал ошибок"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:108
-#, java-format
-msgid "ERR-Clock Skew of {0}"
-msgstr "ОШИБКА - Часы сбиты (расхождение {0})"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:117
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:576
-msgid "OK"
-msgstr "OK"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:118
-msgid "ERR-Private TCP Address"
-msgstr "ОШИБКА - Частный TCP Адрес"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:120
-msgid "ERR-SymmetricNAT"
-msgstr "ОШИБКА - Симмметричный NAT"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:123
-msgid "WARN-Firewalled with Inbound TCP Enabled"
-msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при включенном на вход TCP"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:125
-msgid "WARN-Firewalled and Floodfill"
-msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Floodfill"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:127
-msgid "WARN-Firewalled and Fast"
-msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Быстрый"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:128
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:580
-msgid "Firewalled"
-msgstr "Заблокирован извне"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:130
-msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart"
-msgstr "ОШИБКА - UDP-порт уже занят - перенастройте i2np.udp.internalPort=xxxx в дополнительных настройках и перезапустите маршрутизатор"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:136
-msgid "ERR-No Active Peers, Check Network Connection and Firewall"
-msgstr "ОШИБКА - Нет активных пиров, проверьте подключение к сети и брандмауэр"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:139
-msgid "ERR-UDP Disabled and Inbound TCP host/port not set"
-msgstr "ОШИБКА - UDP отключено и не заданы адрес/порт для входящих TCP-соединений"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:141
-msgid "WARN-Firewalled with UDP Disabled"
-msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при отключенном UDP"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:143
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:596
-msgid "Testing"
-msgstr "Проверка"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:365
-msgid "Add/remove/edit & control your client and server tunnels"
-msgstr "Управление клиентскими и серверными туннелями"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:377
-msgid "Server"
-msgstr "Сервер"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:381
-msgid "Show tunnels"
-msgstr "Перейти к списку туннелей"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:392
-msgid "Leases expired"
-msgstr "Срок аренды истек"
-
-#. red or yellow light
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:392
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:393
-msgid "Rebuilding"
-msgstr "Построение заново"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:393
-msgid "ago"
-msgstr "назад"
-
-#. green light
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:396
-msgid "Ready"
-msgstr "Готов к работе"
-
-#. yellow light
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:400
-msgid "Building"
-msgstr "Построение"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:400
-msgid "Building tunnels"
-msgstr "Построение туннелей"
-
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:405
-msgid "none"
-msgstr "нет"
-
-#. tunnel nicknames, taken from i2ptunnel.config so they will display
-#. nicely under 'local destinations' in the summary bar
-#. note that if the wording changes in i2ptunnel.config, we have to
-#. keep the old string here as well for existing installs
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:416
-#: ../java/strings/Strings.java:36
-msgid "shared clients"
-msgstr "коллективные клиенты"
-
-#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:84
-#, java-format
-msgid "events in {0}"
-msgstr "событий за {0}"
-
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:86
-#, java-format
-msgid "averaged for {0}"
-msgstr "усреднённое за {0}"
-
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:96
-msgid "Events per period"
-msgstr "Событий за период"
-
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:109
-msgid "avg"
-msgstr "сред."
-
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:111
-msgid "now"
-msgstr "текущ."
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:41
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:63
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:275
-msgid "configure"
-msgstr "настроить"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:65
-msgid "dead"
-msgstr "мертв"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:71
-msgid "Participating tunnels"
-msgstr "Транзитные туннели"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72
-msgid "From"
-msgstr "От кого"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72
-msgid "Receive on"
-msgstr "ID принимающего туннеля"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73
-msgid "Expiration"
-msgstr "Истечение срока работы"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73
-msgid "Send on"
-msgstr "ID передающего туннеля"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73
-msgid "To"
-msgstr "Кому"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74
-msgid "Rate"
-msgstr "Скорость"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74
-msgid "Role"
-msgstr "Роль"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
-msgid "Usage"
-msgstr "Трафик"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:107
-msgid "grace period"
-msgstr "резервный период"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:117
-msgid "Outbound Endpoint"
-msgstr "Выходная конечная точка"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:119
-msgid "Inbound Gateway"
-msgstr "Входной шлюз"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:121
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
-msgid "Participant"
-msgstr "Участник"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:126
-msgid "Inactive participating tunnels"
-msgstr "Неактивных транзитных туннелей"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:127
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:218
-msgid "Lifetime bandwidth usage"
-msgstr "Трафик за время существования"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
-msgid "Expiry"
-msgstr "Истечение срока работы"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:159
-msgid "Participants"
-msgstr "Участники"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:165
-msgid "Endpoint"
-msgstr "Конечная точка"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:205
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:212
-msgid "Build in progress"
-msgstr "В процессе построения"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:205
-msgid "inbound"
-msgstr "входящий"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:212
-msgid "outbound"
-msgstr "исходящий"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:217
-msgid "No tunnels; waiting for the grace period to end."
-msgstr "Нет туннелей. Ожидаем окончания резервного периода."
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:218
-msgid "in"
-msgstr "(входящий)"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:219
-msgid "out"
-msgstr "(исходящий)"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:236
-msgid "Tunnel Counts By Peer"
-msgstr "Статистика участия пиров в туннелях"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:237
-msgid "% of total"
-msgstr "% от всех"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:237
-msgid "Our Tunnels"
-msgstr "Наших туннелей"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:237
-msgid "Participating Tunnels"
-msgstr "Транзитных туннелей"
-
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:255
-msgid "Totals"
-msgstr "Всего"
-
-#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:66
-#: ../java/src/net/i2p/router/web/UpdateHandler.java:132
-#: ../java/src/net/i2p/router/web/UpdateHandler.java:145
-#: ../java/src/net/i2p/router/web/UpdateHandler.java:172
-msgid "Updating"
-msgstr "Загружается обновление"
-
-#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:88
-#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111
-#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:116
-#: ../java/src/net/i2p/router/web/UpdateHandler.java:183
-#: ../java/src/net/i2p/router/web/UpdateHandler.java:208
-msgid "Update downloaded"
-msgstr "Обновление загружено"
-
-#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:91
-#, java-format
-msgid "Unsigned update file from {0} is corrupt"
-msgstr "Обнаружено повреждение в неподписанном обновлении загруженном из {0}"
-
-#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111
-#: ../java/src/net/i2p/router/web/UpdateHandler.java:203
-msgid "Restarting"
-msgstr "Производится перезагрузка"
-
-#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118
-#: ../java/src/net/i2p/router/web/UpdateHandler.java:210
-msgid "Click Restart to install"
-msgstr "Перезагрузите I2P-маршрутизатор для установки"
-
-#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120
-#: ../java/src/net/i2p/router/web/UpdateHandler.java:212
-msgid "Click Shutdown and restart to install"
-msgstr "Остановите и снова запустите I2P-маршрутизатор для установки"
-
-#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121
-#: ../java/src/net/i2p/router/web/UpdateHandler.java:214
-#, java-format
-msgid "Version {0}"
-msgstr "Версия {0}"
-
-#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126
-#, java-format
-msgid "Failed copy to {0}"
-msgstr "Не удалось скопировать в {0}"
-
-#: ../java/src/net/i2p/router/web/UpdateHandler.java:203
-msgid "Update verified"
-msgstr "Подлинность обновления проверена"
-
-#: ../java/src/net/i2p/router/web/UpdateHandler.java:228
-msgid "Transfer failed"
-msgstr "Не удалось загрузить"
-
-#. wars for ConfigClientsHelper
-#: ../java/strings/Strings.java:12
-msgid "addressbook"
-msgstr "адресная книга"
-
-#: ../java/strings/Strings.java:13
-msgid "i2psnark"
-msgstr "i2psnark (bittorrent-клиент)"
-
-#: ../java/strings/Strings.java:14
-msgid "i2ptunnel"
-msgstr "менеджер туннелей i2p"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:15
-msgid "susimail"
-msgstr "susimail (почтовый клиент)"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:16
-msgid "susidns"
-msgstr "susidns"
-
-#: ../java/strings/Strings.java:17
-msgid "routerconsole"
-msgstr "консоль маршрутизатора i2p"
-
-#. clients, taken from clients.config, for ConfigClientsHelper
-#. note that if the wording changes in clients.config, we have to
-#. keep the old string here as well for existing installs
-#: ../java/strings/Strings.java:22
-msgid "Web console"
-msgstr "Веб-консоль"
-
-#: ../java/strings/Strings.java:23
-msgid "SAM application bridge"
-msgstr "интерфейс SAM"
-
-#: ../java/strings/Strings.java:24
-msgid "Application tunnels"
-msgstr "Клиентские туннели"
-
-#: ../java/strings/Strings.java:25
-msgid "My eepsite web server"
-msgstr "i2p-вебсервер (eepsite)"
-
-#: ../java/strings/Strings.java:26
-msgid "I2P webserver (eepsite)"
-msgstr "i2p-вебсервер (eepsite)"
-
-#: ../java/strings/Strings.java:27
-msgid "Browser launch at startup"
-msgstr "Запуск браузера при старте I2P"
-
-#: ../java/strings/Strings.java:28
-msgid "BOB application bridge"
-msgstr "интерфейс BOB"
-
-#: ../java/strings/Strings.java:30
-msgid "Open Router Console in web browser at startup"
-msgstr "Открыть консоль маршрутизатора в веб-браузере при старте I2P"
-
-#: ../java/strings/Strings.java:37
-msgid "IRC proxy"
-msgstr "IRC-прокси"
-
-#: ../java/strings/Strings.java:38
-msgid "eepsite"
-msgstr "i2p-сайт"
-
-#: ../java/strings/Strings.java:39
-msgid "I2P webserver"
-msgstr "i2p-вебсервер"
-
-#: ../java/strings/Strings.java:40
-msgid "HTTP Proxy"
-msgstr "HTTP-прокси"
-
-#. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
-msgid "eepProxy"
-msgstr "I2P-прокси"
-
-#: ../java/strings/Strings.java:43
-msgid "ircProxy"
-msgstr "IRC-прокси"
-
-# This term intentionally left in English
-#. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
-msgid "I2PSnark"
-msgstr "I2PSnark"
-
-# This term intentionally left in English
-#. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
-msgid "iMule"
-msgstr "iMule"
-
-#. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
-msgid "classic"
-msgstr "классическая"
-
-#: ../java/strings/Strings.java:52
-msgid "dark"
-msgstr "тёмная"
-
-#: ../java/strings/Strings.java:53
-msgid "light"
-msgstr "светлая"
-
-#: ../java/strings/Strings.java:54
-msgid "midnight"
-msgstr "полуночная"
-
-#. stat groups for stats.jsp
-#: ../java/strings/Strings.java:57
-msgid "Bandwidth"
-msgstr "Трафик"
-
-#: ../java/strings/Strings.java:58
-msgid "BandwidthLimiter"
-msgstr "Ограничитель скорости"
-
-#: ../java/strings/Strings.java:59
-msgid "ClientMessages"
-msgstr "Клиентские сообщения"
-
-#: ../java/strings/Strings.java:60
-msgid "Encryption"
-msgstr "Шифрование"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:61
-msgid "i2cp"
-msgstr "i2cp"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:63
-msgid "InNetPool"
-msgstr "InNetPool"
-
-#: ../java/strings/Strings.java:64
-msgid "JobQueue"
-msgstr "Очередь заданий"
-
-#: ../java/strings/Strings.java:65
-msgid "NetworkDatabase"
-msgstr "Сетевая база данных"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:66
-msgid "ntcp"
-msgstr "ntcp"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:69
-msgid "Stream"
-msgstr "Stream"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:70
-msgid "Throttle"
-msgstr "Throttle"
-
-#: ../java/strings/Strings.java:71
-msgid "Transport"
-msgstr "Транспортные протоколы"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:73
-msgid "udp"
-msgstr "udp"
-
-# This term intentionally left in English
-#. parameters in transport addresses (netdb.jsp)
-#. may or may not be worth translating
-#: ../java/strings/Strings.java:77
-msgid "host"
-msgstr "host"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:78
-msgid "key"
-msgstr "key"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:79
-msgid "port"
-msgstr "port"
-
-# This term intentionally left in English
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-# This term intentionally left in English
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-# This term intentionally left in English
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-# This term intentionally left in English
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-# This term intentionally left in English
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
-#. Descriptions for the stats that are graphed by default
-#. There are over 500 stats currently defined, we aren't going to tag them all
-#: ../java/strings/Strings.java:101
-msgid "Low-level bandwidth receive rate"
-msgstr "Низкоуровневая скорость приёма"
-
-#. bw.recvRate
-#: ../java/strings/Strings.java:102
-msgid "Low-level bandwidth send rate"
-msgstr "Низкоуровневая скорость передачи"
-
-#. bw.sendRate
-#: ../java/strings/Strings.java:103
-msgid "How many peers we are actively talking with"
-msgstr "Количество пиров, с которыми мы активно общаемся"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106
-msgid "config networking"
-msgstr "настройки сети"
-
-#. We have intl defined when this is included, but not when compiled standalone.
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:217
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:218
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:217
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:217
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:231
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:217
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:217
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:218
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:217
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:217
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:217
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:220
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:228
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:217
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:220
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:220
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:223
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:216
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:216
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:216
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:220
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:220
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:216
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:216
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:216
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:235
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:216
-msgid "Refresh (s)"
-msgstr "Интервал автообновления панели (сек.)"
-
-#. ditto
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:221
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:222
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:221
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:221
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:235
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:221
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:221
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:222
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:221
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:221
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:221
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:224
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:232
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:221
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:224
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:224
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:227
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:220
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:220
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:220
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:224
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:224
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:220
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:220
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:220
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:238
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:220
-msgid "Enable"
-msgstr "Включить"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:241
-msgid "I2P Network Configuration"
-msgstr "Настройки сетевых свойств I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:297
-msgid "Bandwidth limiter"
-msgstr "Ограничение скорости"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:299
-msgid "I2P will work best if you configure your rates to match the speed of your internet connection."
-msgstr "I2P будет работать лучше, если Вы настроите ограничение скорости в соответствии со скоростью Вашего подключения к Интернету."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:303
-msgid "KBps In"
-msgstr "Килобайт/секунду (на приём)"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:317
-msgid "KBps Out"
-msgstr "Килобайт/секунду (на отдачу)"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:333
-msgid "Share"
-msgstr "Доля транзитного трафика"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:340
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:303
-msgid "NOTE"
-msgstr "ПРИМЕЧАНИЕ"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:342
-#, java-format
-msgid "You have configured I2P to share only {0} KBps."
-msgstr "Вы настроили очень низкий лимит для транзитного трафика (всего {0} килобайт/секунду)."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:345
-msgid "I2P requires at least 12KBps to enable sharing. "
-msgstr "I2P нужно как минимум 12 килобайт/секунду для включения этой функции. "
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346
-msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. "
-msgstr "Пожалуйста, повысьте долю транзитного трафика. "
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347
-msgid "It improves your anonymity by creating cover traffic, and helps the network."
-msgstr "Это одновременно повысит Вашу анонимность (благодаря маскирующему транзитному трафику) и поможет сети."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:350
-#, java-format
-msgid "You have configured I2P to share {0} KBps."
-msgstr "Вы задали долю транзитного трафика {0} килобайт/секунду."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:353
-msgid "The higher the share bandwidth the more you improve your anonymity and help the network."
-msgstr "Чем выше доля транзитного трафика, тем выше Ваша анонимность и больше Ваша помощь сети."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:357
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:513
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:303
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:326
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:320
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:373
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:341
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:321
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:364
-msgid "Cancel"
-msgstr "Отменить"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:374
-msgid "IP and Transport Configuration"
-msgstr "Настройки IP и транспортных протоколов"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376
-msgid "The default settings will work for most people."
-msgstr "Большинству пользователей подойдут настройки по умолчанию."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:378
-msgid "There is help below."
-msgstr "В конце страницы приведена справка по настройкам."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:380
-msgid "UPnP Configuration"
-msgstr "Настройки UPnP"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:384
-msgid "Enable UPnP to open firewall ports"
-msgstr "Использовать UPnP для автоматического открытия портов на брандмауэре/роутере"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:386
-msgid "UPnP status"
-msgstr "статус UPnP"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:388
-msgid "IP Configuration"
-msgstr "Настройки IP"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:390
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:460
-msgid "Externally reachable hostname or IP address"
-msgstr " Имя хоста или IP-адрес доступные из интернета"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:394
-msgid "Use all auto-detect methods"
-msgstr "Определять автоматически всеми доступными способами"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:398
-msgid "Disable UPnP IP address detection"
-msgstr "Определять автоматически (без использования UPnP)"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:402
-msgid "Ignore local interface IP address"
-msgstr "Определять автоматически (без использования IP-адресов локальных сетевых интерфейсов)"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:406
-msgid "Use SSU IP address detection only"
-msgstr "Определять автоматически (только через SSU)"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:410
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:478
-msgid "Specify hostname or IP"
-msgstr "Задать хост или IP вручную"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416
-msgid "Select Interface"
-msgstr "Выбрать сетевой интерфейс"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:430
-msgid "Hidden mode - do not publish IP"
-msgstr "Скрытый режим, не публиковать IP"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:432
-msgid "(prevents participating traffic)"
-msgstr "(такой режим предотвращает транзит трафика)"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:434
-msgid "Action when IP changes"
-msgstr "Действие при смене IP"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:438
-msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity"
-msgstr "Режим мобильного компьютера: автоматически менять идентификатор маршрутизатора и UDP-порт после смены IP"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:440
-msgid "Experimental"
-msgstr "экспериментальный режим, повышает анонимность"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:442
-msgid "UDP Configuration:"
-msgstr "Настройки UDP"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:444
-msgid "UDP port:"
-msgstr "UDP-порт:"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:458
-msgid "TCP Configuration"
-msgstr "Настройки TCP"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:464
-msgid "Use auto-detected IP address"
-msgstr "Использовать автоматически определенный IP-адрес"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:466
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:498
-msgid "currently"
-msgstr "сейчас"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:470
-msgid "if we are not firewalled"
-msgstr "если входящий порт не заблокирован"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:474
-msgid "Always use auto-detected IP address (Not firewalled)"
-msgstr "Всегда использовать автоматически определенный IP-адрес"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:484
-msgid "Disable inbound (Firewalled)"
-msgstr "Отключить поддержку входящих соединений"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:488
-msgid "Completely disable"
-msgstr "Полностью отключить поддержку TCP"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:490
-msgid "(select only if behind a firewall that throttles or blocks outbound TCP)"
-msgstr "(используйте этот режим только при наличии в системе брандмауэра, который замедляет или блокирует исходящие TCP-соединения)"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:492
-msgid "Externally reachable TCP port"
-msgstr "Доступный из интернета TCP-порт"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:496
-msgid "Use the same port configured for UDP"
-msgstr "Использовать настройки UDP-порта"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:504
-msgid "Specify Port"
-msgstr "Задать порт вручную"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:508
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:338
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:329
-msgid "Note"
-msgstr "ВНИМАНИЕ"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511
-msgid "Changing these settings will restart your router."
-msgstr "Изменение этих настрок повлечет перезагрузку I2P маршрутизатора."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517
-msgid "Configuration Help"
-msgstr "Справка по настройкам сети"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:519
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:568
-msgid "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."
-msgstr "Хотя I2P без проблем работает за большинством брандмауэров, скорость и уровень интеграции в сеть будут гораздо лучше, если открыть порт Вашего I2P-маршрутизатора для UDP и TCP соединений из интернета."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:521
-msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you."
-msgstr "Попробуйте открыть доступ на Вашем брандмауэре для произвольных входящих UDP и TCP пакетов на порт I2P."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:523
-msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic."
-msgstr "Ничего страшного, если такой возможности нет. I2P поддерживает UPnP (Universal Plug and Play) и обход NAT с помощью SSU-посредников."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:525
-msgid "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."
-msgstr "Настройки выше, в основном, предназначены для особых ситуаций. Например, некорректно сработал UPnP или возник конфликт брандмауэра и I2P."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527
-msgid "Certain firewalls such as symmetric NATs may not work well with I2P."
-msgstr "Некоторые виды брандмауэров могут быть частично несовместимы с I2P (например, симметричные NAT)."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536
-msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports."
-msgstr "UPnP используется для взаимодействия с IGD (Internet Gateway Devices) при определении внешнего IP-адреса и переадресации портов."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538
-msgid "UPnP support is beta, and may not work for any number of reasons"
-msgstr "Поддержка UPnP находится в разработке (бета-версия). В следующих случаях UPnP возможно не будет работать"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540
-msgid "No UPnP-compatible device present"
-msgstr "Не обнаружено UPnP-совместимых устройств"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542
-msgid "UPnP disabled on the device"
-msgstr "UPnP отключено на устройстве"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544
-msgid "Software firewall interference with UPnP"
-msgstr "Программный брандмауэр мешает корректной работе UPnP"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546
-msgid "Bugs in the device's UPnP implementation"
-msgstr "UPnP в устройстве реализовано с ошибками "
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:548
-msgid "Multiple firewall/routers in the internet connection path"
-msgstr "Несколько маршрутизаторов/брандмауэров на пути к интернету"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:550
-msgid "UPnP device change, reset, or address change"
-msgstr "Смена/сброс UPnP-устройства или изменение адреса "
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:552
-msgid "Review the UPnP status here."
-msgstr "Посмотреть статус UPnP можно тут."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:554
-msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect."
-msgstr "UPnP можно включить/выключить в настройках выше. Настройка вступит в силу только после перезагрузки I2P-маршрутизатора."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:556
-msgid "Hostnames entered above will be published in the network database."
-msgstr "Если Вы задали вручную имена хостов, они будут опубликованы в сетевой базе."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:558
-msgid "They are not private."
-msgstr "Не вводите локальные внутрисетевые имена."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:560
-msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1."
-msgstr "Также не вводите IP из локальных диапазонов, такие как 127.0.0.1 или 192.168.1.1."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:562
-msgid "If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially."
-msgstr "Производительность Вашего соединения с I2P-сетью может сильно пострадать, если Вы введете неверный IP-адрес, неверное имя хоста или неправильно настроите NAT/брандмауэр."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:564
-msgid "When in doubt, leave the settings at the defaults."
-msgstr "Если сомневаетесь — оставьте настройки по умолчанию."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:566
-msgid "Reachability Help"
-msgstr "Справка по статусу сетевой доступности"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571
-msgid "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."
-msgstr "Возможно Вы собственноручно открыли порт на Вашем брандмауэре, а I2P все еще показывает, что порт закрыт. Имейте в виду, что брандмауэров может быть несколько, например, локальный программный и внешний аппаратный."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:574
-msgid "If there is an error, the logs may also help diagnose the problem."
-msgstr "В случае ошибок журналы могут помочь диагностировать проблему."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:578
-msgid "Your UDP port does not appear to be firewalled."
-msgstr "Ваш UDP-порт доступен извне."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:582
-msgid "Your UDP port appears to be firewalled."
-msgstr "Ваш UDP-порт заблокирован брандмауэром и не может принимать входящие соединения."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:584
-msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error."
-msgstr "Иногда это сообщение не соответствует действительности (методы обнаружения брандмауэров пока не идеальны)."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:586
-msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port."
-msgstr "Но если оно появляется постоянно, Вам следует проверить, что на всех брандмауэрах порт для I2P открыт."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:588
-msgid "I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections."
-msgstr "Повода для паники нет, I2P сможет работать даже с заблокированным портом при помощи заранее выбранных «посредников» для ретрансляции входящих соединений."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:590
-msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)."
-msgstr "С другой стороны, при работе с открытым портом Вы получите гораздо больше транзитного трафика и сможете помочь сети."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:592
-msgid "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."
-msgstr "Возможно Вы собственноручно открыли порт на Вашем брандмауэре, но ошибка всё равно появляется. Имейте в виду, что Вы можете быть одновременно за программным и аппаратным брандмауэрами или за дополнительным корпоративным брандмауэром (который Вы не можете контролировать)."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:594
-msgid "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."
-msgstr "Кроме того, некоторые маршрутизаторы не могут корректно переадресовать одновременно TCP и UDP на один порт или имеют другие ограничения, мешающие нормальному прохождению трафика до I2P."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:598
-msgid "The router is currently testing whether your UDP port is firewalled."
-msgstr "Маршрутизатор проверяет возможность принятия входящих соединений на UDP-порт."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:602
-msgid "The router is not configured to publish its address, therefore it does not expect incoming connections."
-msgstr "В настройках I2P-маршрутизатора запрещена публикация его адреса, как результат, маршрутизатор не ожидает входящих соединений."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:604
-msgid "WARN - Firewalled and Fast"
-msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Быстрый"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:606
-msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled."
-msgstr "Вы настроили долю транзитного трафика выше 128 килобайт/секунду, при этом у Вас заблокирован входящий порт."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:608
-msgid "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."
-msgstr "I2P будет работать нормально в такой конфигурации, но Вы можете помочь сети разблокировав входящий порт, если у Вас действительно быстрый интернет."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:610
-msgid "WARN - Firewalled and Floodfill"
-msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Floodfill"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:612
-msgid "You have configured I2P to be a floodfill router, but you are firewalled."
-msgstr "Вы настроили I2P работать в режиме floodfill-маршрутизатора, при этом у Вас заблокирован входящий порт."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:614
-msgid "For best participation as a floodfill router, you should open your firewall."
-msgstr "Для оптимальной работы в качестве floodfill-маршрутизатора Вам нужно разблокировать входящий порт."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:616
-msgid "WARN - Firewalled with Inbound TCP Enabled"
-msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при включенном на вход TCP"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:618
-msgid "You have configured inbound TCP, however your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well."
-msgstr "Вы разрешили входящие TCP-соединения, но при этом Ваш UDP-порт заблокирован, следовательно, скорее всего, TCP-порт тоже заблокирован."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:620
-msgid "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."
-msgstr "Если у Вас разрешены входящие TCP-соединения при заблокированном TCP-порте, то другие маршрутизаторы не смогут к Вам подсоединиться по TCP. Это повредит производительности сети. "
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:622
-msgid "Please open your firewall or disable inbound TCP above."
-msgstr "Пожалуйста, проверьте состояние TCP-порта и разблокируйте его или отключите поддержку входящих TCP-соединений."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:624
-msgid "WARN - Firewalled with UDP Disabled"
-msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при отключенном UDP"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:626
-msgid "You have configured inbound TCP, however you have disabled UDP."
-msgstr "Вы отключили поддержку UDP, однако Ваш TCP-порт заблокирован и в результате Ваш маршрутизатор не может принимать входящие соединения."
-
-# This string intentionally left blank
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:628
-msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections."
-msgstr " "
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:630
-msgid "Please open your firewall or enable UDP."
-msgstr "Пожалуйста, разблокируйте порт или включите поддержку UDP."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:632
-msgid "ERR - Clock Skew"
-msgstr "ОШИБКА - Часы сбиты"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:634
-msgid "Your system's clock is skewed, which will make it difficult to participate in the network."
-msgstr "Ваши системные часы сильно отстают/спешат. Это помешает Вашему участию в сети."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:636
-msgid "Correct your clock setting if this error persists."
-msgstr "Поправьте настройки времени, если Вы постоянно видите это сообщение об ошибке."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:638
-msgid "ERR - Private TCP Address"
-msgstr "ОШИБКА - Частный TCP Адрес"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:640
-msgid "You must never advertise an unroutable IP address such as 127.0.0.1 or 192.168.1.1 as your external address."
-msgstr "Не публикуйте локальные IP-адреса (такие как 127.0.0.1 или 192.168.1.1) в качестве своего внешнего IP-адреса."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:642
-msgid "Correct the address or disable inbound TCP above."
-msgstr "Исправьте адрес или отключите поддержку входящих TCP-соединений."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:644
-msgid "ERR - SymmetricNAT"
-msgstr "ОШИБКА - Симметричный NAT"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:646
-msgid "I2P detected that you are firewalled by a Symmetric NAT."
-msgstr "I2P обнаружил, что Вы за симметричным NAT."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:648
-msgid "I2P does not work well behind this type of firewall. You will probably not be able to accept inbound connections, which will limit your participation in the network."
-msgstr "I2P не очень хорошо работает за таким типом брандмауэров. Скорее всего Вы не сможете принимать входящие соединения и это снизит эффективность Вашего участия в сети."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:650
-msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart"
-msgstr "ОШИБКА - UDP-порт уже занят - перенастройте i2np.udp.internalPort=xxxx в дополнительных настройках и перезапустите маршрутизатор"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:652
-msgid "I2P was unable to bind to port 8887 or other configured port."
-msgstr "I2P не удалось связать порт 8887 (или тот, что у Вас настроен)."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:654
-msgid "Check to see if another program is using the configured port. If so, stop that program or configure I2P to use a different port."
-msgstr "Проверьте, не занят ли этот порт другим приложением. Если такое приложение нашлось, остановите его или задайте другой порт в настройках I2P."
-
-# This string intentionally left blank
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:656
-msgid "This may be a transient error, if the other program is no longer using the port."
-msgstr " "
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:658
-msgid "However, a restart is always required after this error."
-msgstr "После возникновения этой ошибки необходим перезапуск I2P."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:660
-msgid "ERR - UDP Disabled and Inbound TCP host/port not set"
-msgstr "ОШИБКА - UDP отключено и не заданы адрес/порт для входящих TCP-соединений"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:662
-msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP."
-msgstr "Вы не задали адрес/порт для входящих TCP-соединений и одновременно отключили поддержку UDP, в результате Ваш маршрутизатор не может принимать входящие соединения."
-
-# This string intentionally left blank
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:664
-msgid "Therefore your router cannot accept inbound connections."
-msgstr " "
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:666
-msgid "Please configure a TCP host and port above or enable UDP."
-msgstr "Пожалуйста, настройте адрес/порт для TCP или включите поддержку UDP."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:668
-msgid "ERR - Client Manager I2CP Error - check logs"
-msgstr "ОШИБКА - ошибка менеджера I2CP - загляните в журнал ошибок"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:670
-msgid "This is usually due to a port 7654 conflict. Check the logs to verify."
-msgstr "Эта ошибка обычно возникает из-за конфликта порта 7654. Загляните в журнал ошибок."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:672
-msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P."
-msgstr "Не запущена ли у вас ещё одна копия I2P? Остановите вызвавшую конфликт программу и перезапустите I2P."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107
-msgid "config advanced"
-msgstr "дополнительные настройки"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:242
-msgid "I2P Advanced Configuration"
-msgstr "Дополнительные настройки I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:299
-msgid "Advanced I2P Configuration"
-msgstr "Дополнительные настройки I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309
-msgid "Some changes may require a restart to take effect."
-msgstr "Для вступления некоторых изменений в силу может потребоваться перезагрузка I2P-маршрутизатора."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106
-msgid "config clients"
-msgstr "настройки клиентов"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:244
-msgid "I2P Client Configuration"
-msgstr "Настройки клиентов I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:311
-msgid "Client Configuration"
-msgstr "Настройки клиентов"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:313
-msgid "The Java clients listed below are started by the router and run in the same JVM."
-msgstr "Перечисленные ниже Java-клиенты запускаются маршрутизатором внутри своей JVM."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:317
-msgid "To change other client options, edit the file"
-msgstr "Для изменения других клиентских настроек отредактируйте файл"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:324
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:344
-msgid "All changes require restart to take effect."
-msgstr "Для вступления изменённых настроек в силу потребуется перезагрузка маршрутизатора."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:336
-msgid "WebApp Configuration"
-msgstr "Настройки веб-апплетов"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338
-msgid "The Java web applications listed below are started by the webConsole client and run in the same JVM as the router. They are usually web applications accessible through the router console. They may be complete applications (e.g. i2psnark),front-ends to another client or application which must be separately enabled (e.g. susidns, i2ptunnel), or have no web interface at all (e.g. addressbook)."
-msgstr "Перечисленные ниже Java веб-апплеты запускаются консолью маршрутизатора внутри JVM маршрутизатора. Обычно эти приложения доступны через консоль маршрутизатора. Это могут быть как самостоятельные приложения (например, i2psnark), так и интерфейсы к другим приложениям или клиентам, которые надо включать отдельно (например, susidns, i2ptunnel), либо могут вообще не иметь веб-интерфейса (например, addressbook)."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:340
-msgid "A web app may also be disabled by removing the .war file from the webapps directory; however the .war file and web app will reappear when you update your router to a newer version, so disabling the web app here is the preferred method."
-msgstr "Веб-апплет также можно отключить, просто удалив .war-файл из директории webapps. Однако при обновлении маршрутизатора и .war-файл и соответствующее приложение будут возвращены на свои места, поэтому отключение веб-апплетов через эту страницу это более корректный способ."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:350
-msgid "Plugin Configuration"
-msgstr "Настройки плагинов"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:352
-msgid "The plugins listed below are started by the webConsole client."
-msgstr "Перечисленные ниже плагины запускаются клиентом webConsole."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:358
-msgid "Plugin Installation"
-msgstr "Установка плагина"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:360
-msgid "To install a plugin, enter the download URL:"
-msgstr "Для установки нового плагина введите URL:"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106
-msgid "config keyring"
-msgstr "настройки ключей"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:228
-msgid "I2P Keyring Configuration"
-msgstr "Настройки связки ключей I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:294
-msgid "The router keyring is used to decrypt encrypted leaseSets."
-msgstr "Маршрутизатор использует связку ключей для дешифровки зашифрованных LeaseSet."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:297
-msgid "The keyring may contain keys for local or remote encrypted destinations."
-msgstr "Связка ключей может хранить ключи как для локальных, так и для удаленных зашифрованных адресов назначения."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:307
-msgid "Manual Keyring Addition"
-msgstr "Добавление ключей"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:309
-msgid "Enter keys for encrypted remote destinations here."
-msgstr "Здесь добавляются ключи для удаленных адресов назначения."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:312
-msgid "Keys for local destinations must be entered on the"
-msgstr "Ключи для локальных адресов назначения настраиваются в"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:314
-msgid "I2PTunnel page"
-msgstr "Менеджере Туннелей"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:316
-msgid "Dest. name, hash, or full key"
-msgstr "Имя адреса назначения, хэш или полный ключ"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:318
-msgid "Encryption Key"
-msgstr "Ключ шифрования"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107
-msgid "config logging"
-msgstr "настройки журнала"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:242
-msgid "I2P Logging Configuration"
-msgstr "Настройки журнала I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:299
-msgid "Configure I2P Logging Options"
-msgstr "Настройки журнала I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301
-msgid "Logging filename"
-msgstr "Файл журнала"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:305
-msgid "(the symbol '@' will be replaced during log rotation)"
-msgstr "(во время ротации журнала символ @ будет заменен на номер)"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307
-msgid "Log record format"
-msgstr "Формат записи"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:311
-msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)"
-msgstr "(d = дата, c = класс, t = тред, p = приоритет, m = сообщение)"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313
-msgid "Log date format"
-msgstr "Формат даты"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:317
-msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)"
-msgstr "(MM = месяц, dd = день, HH = часы, mm = минуты, ss = секунды, SSS = миллисекунды)"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319
-msgid "Max log file size"
-msgstr "Максимальный размер файла журнала"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:323
-msgid "Default log level"
-msgstr "Уровень детальности журнала"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327
-msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)"
-msgstr "(не рекомендуется использовать уровни DEBUG и INFO для постоянного использования, так как они сильно замедлят работу Вашего маршрутизатора)"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329
-msgid "Log level overrides"
-msgstr "Дополнительные настройки"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106
-msgid "config peers"
-msgstr "настройки пиров"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:228
-msgid "I2P Peer Configuration"
-msgstr "Настройки пиров I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:304
-msgid "Manual Peer Controls"
-msgstr "Ручное управление пирами"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:306
-msgid "Router Hash"
-msgstr "Хеш маршрутизатора"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:310
-msgid "Manually Ban / Unban a Peer"
-msgstr "Вручную забанить/разбанить этого пира"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:312
-msgid "Banning will prevent the participation of this peer in tunnels you create."
-msgstr "Бан запретит участие указанного пира в создаваемых Вами туннелях."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:324
-msgid "Bonuses may be positive or negative, and affect the peer's inclusion in Fast and High Capacity tiers. Fast peers are used for client tunnels, and High Capacity peers are used for some exploratory tunnels. Current bonuses are displayed on the"
-msgstr "Бонусы могут быть положительными и отрицательными и вводятся для управления включением пира в группы «Быстрые» и «Высокоёмкие» (Быстрые пиры используются для построения клиентских туннелей, Высокоёмкие пиры используются для некоторых зондирующих туннелей). Текущие бонусы можно посмотреть на"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:326
-msgid "profiles page"
-msgstr "странице профилей пиров"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:342
-msgid "Adjust peer bonuses"
-msgstr "Изменить бонусы"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:344
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:253
-msgid "Banned Peers"
-msgstr "Забаненные пиры"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366
-msgid "Banned IPs"
-msgstr "Забаненные IP-адреса"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106
-msgid "config service"
-msgstr "настройки службы"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:228
-msgid "I2P Service Configuration"
-msgstr "Настройки службы I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:284
-msgid "Shutdown the router"
-msgstr "Выключить маршрутизатор"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:286
-msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes."
-msgstr "Плавное выключение позволяет маршрутизатору перед остановкой отработать все поставленные задачи, но при этом на процесс выключения потребуется дополнительное время."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:288
-msgid "If you need to kill the router immediately, that option is available as well."
-msgstr "Если маршрутизатор должен быть выключен немедленно, Вы можете выбрать соответствующую команду."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:298
-msgid "If you want the router to restart itself after shutting down, you can choose one of the following."
-msgstr "Иногда, Вам нужно перегрузить маршрутизатор (например, после изменения базовых настроек, которые считываются приложением только во время запуска). В этом случае, Вам доступны два варианта. Плавная перезагрузка займет несколько минут (но зато пиры, использующие Ваш маршрутизатор, будут Вам благодарны за терпение). Если Вы не можете ждать, выбирайте немедленную перезагрузку. В случае немедленной перезагрузки маршрутизатор запустится через одну минуту."
-
-# This string intentionally left blank
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:300
-msgid "This is useful in some situations - for example, if you changed some settings that client applications only read at startup, such as the routerconsole password or the interface it listens on."
-msgstr " "
-
-# This string intentionally left blank
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:302
-msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately."
-msgstr " "
-
-# This string intentionally left blank
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:304
-msgid "After tearing down the router, it will wait 1 minute before starting back up again."
-msgstr " "
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:314
-msgid "Systray integration"
-msgstr "Интеграция в область уведомлений"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:316
-msgid "On the windows platform, there is a small application to sit in the system tray, allowing you to view the router's status"
-msgstr "Если Вы работаете под Windows, у Вас есть возможность отслеживать статус маршрутизатора через значок в области уведомлений"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:318
-msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)."
-msgstr "(когда-нибудь и клиентские приложения для I2P будут там доступны)."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:320
-msgid "If you are on windows, you can either enable or disable that icon here."
-msgstr "Если Вы пользуетесь I2P под Windows, то здесь Вы можете настроить отображение этого значка."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326
-msgid "Run on startup"
-msgstr "Автоматический запуск I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:328
-msgid "You can control whether I2P is run on startup or not by selecting one of the following options - I2P will install (or remove) a service accordingly."
-msgstr "Вы можете настроить автоматическую загрузку маршрутизатора при каждом запуске Windows. В зависимости от выбранной кнопки I2P немедленно установит или удалит свою службу из списка служб Windows."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:330
-msgid "If you prefer the command line, you can also run the "
-msgstr "Если Вам удобно работать через командную строку, попробуйте использовать "
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:340
-msgid "If you are running I2P as service right now, removing it will shut down your router immediately."
-msgstr "Если служба I2P уже была запущена, при выборе варианта \"Не запускать I2P при старте\" маршрутизатор будет моментально остановлен."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:342
-msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat."
-msgstr "Возможно лучше плавно остановить маршрутизатор и после этого запустить файл C:\\Program Files\\I2P\\uninstall_i2p_service_winnt.bat."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:346
-msgid "Debugging"
-msgstr "Отладка"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:348
-msgid "View the job queue"
-msgstr "Просмотр очереди заданий"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:352
-msgid "At times, it may be helpful to debug I2P by getting a thread dump. To do so, please select the following option and review the thread dumped to wrapper.log."
-msgstr "В некоторых случаях для отладки может пригодиться список состояний тредов I2P-маршутизатора. Для получения такого списка нажмите эту кнопку. Список будет сохранен в файле wrapper.log."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358
-msgid "Launch browser on router startup?"
-msgstr "Запускать браузер при старте I2P?"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:360
-msgid "I2P's main configuration interface is this web console, so for your convenience I2P can launch a web browser on startup pointing at"
-msgstr "Основной интерфейс настройки I2P это веб-консоль. Здесь можно выбрать автоматическое открытие при запуске маршрутизатора страницы"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107
-msgid "config stats"
-msgstr "настройки статистики"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:229
-msgid "I2P Stats Configuration"
-msgstr "Настройки статистики I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:300
-msgid "Configure I2P Stat Collection"
-msgstr "Настройки сбора статистики I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302
-msgid "Enable full stats?"
-msgstr "Включить полную статистику?"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:309
-msgid "change requires restart to take effect"
-msgstr "изменения вступят в силу только после перезагрузки маршрутизатора"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311
-msgid "Stat file"
-msgstr "Файл статистики"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:315
-msgid "Filter"
-msgstr "Фильтр"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:317
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:326
-msgid "toggle all"
-msgstr "переключить все"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328
-msgid "Log"
-msgstr "Журнал"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330
-msgid "Graph"
-msgstr "График"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:369
-msgid "Advanced filter"
-msgstr "Дополнительный фильтр"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106
-msgid "config tunnels"
-msgstr "настройки туннелей"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:241
-msgid "I2P Tunnel Configuration"
-msgstr "Настройки туннелей I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:305
-msgid "The default settings work for most people."
-msgstr "Большинству пользователей подойдут настройки по умолчанию. "
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:309
-msgid "There is a fundamental tradeoff between anonymity and performance."
-msgstr "Примите во внимание, что между анонимностью и эффективностью есть обратная связь — длинные туннели более анонимны, но хуже работают."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:312
-msgid "Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely reduce performance or reliability."
-msgstr " Туннели длиннее 3 хопов, а также большое количество туннелей (как обычных, так и резервных) могут привести к снижению производительности/надежности работы маршрутизатора."
-
-# This string intentionally left blank
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:315
-msgid "High CPU and/or high outbound bandwidth usage may result."
-msgstr " "
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:318
-msgid "Change these settings with care, and adjust them if you have problems."
-msgstr "Осторожно вносите изменения в существующие настройки и возвращайте в положение по умолчанию, если у Вас возникли проблемы."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:332
-msgid "Exploratory tunnel setting changes are stored in the router.config file."
-msgstr "Настройки зондирующих туннелей сохраняются в файле router.config."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335
-msgid "Client tunnel changes are temporary and are not saved."
-msgstr "Настройки клиентских туннелей нигде не сохраняются и действуют только до перезагрузки."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:337
-msgid "To make permanent client tunnel changes see the"
-msgstr "Для задания перманентных изменений в настройках клиентских туннелей воспользуйтесь"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:339
-msgid "i2ptunnel page"
-msgstr "менеджером туннелей"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106
-msgid "config UI"
-msgstr "настройки интерфейса"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:241
-msgid "I2P UI Configuration"
-msgstr "Настройки пользовательского интерфейса I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:291
-msgid "Router Console Theme"
-msgstr "Тема оформления консоли маршрутизатора"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:309
-msgid "Theme selection disabled for Internet Explorer, sorry."
-msgstr "Переключатель тем отключен для Internet Explorer, извините"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:311
-msgid "If you're not using IE, it's likely that your browser is pretending to be IE; please configure your browser (or proxy) to use a different User Agent string if you'd like to access the console themes."
-msgstr "Если вы не используете IE, то, скорее всего, Ваш браузер сконфигурирован представляться как IE. Пожалуйста измените строку User-Agent в настройках Вашего браузера (или прокси-сервера), если хотите использовать темы оформления"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315
-msgid "Router Console Language"
-msgstr "Язык консоли маршрутизатора"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:319
-msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help."
-msgstr "Пожалуйста, помогите проекту перевода консоли маршрутизатора! Разработчики доступны для связи на IRC-канале #i2p"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:323
-msgid "Apply"
-msgstr "Применить"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:106
-msgid "config update"
-msgstr "настройки обновления"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:228
-msgid "I2P Update Configuration"
-msgstr "Настройки обновлений I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:302
-msgid "Check for I2P and news updates"
-msgstr "Настройки проверки обновлений и новостей I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:304
-msgid "News & I2P Updates"
-msgstr "Новости и обновления I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:308
-msgid "Update In Progress"
-msgstr "Выполняется обновление"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:316
-msgid "News URL"
-msgstr "URL новостей"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:320
-msgid "Refresh frequency"
-msgstr "Интервал проверки"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:326
-msgid "Update policy"
-msgstr "Режим обновления"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:330
-msgid "Update through the eepProxy?"
-msgstr "Обновлять через I2P-прокси?"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:334
-msgid "eepProxy host"
-msgstr "Адрес I2P-прокси"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:338
-msgid "eepProxy port"
-msgstr "Порт I2P-прокси"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:342
-msgid "Update URLs"
-msgstr "URL обновлений"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:346
-msgid "Trusted keys"
-msgstr "Доверенные ключи"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:350
-msgid "Update with unsigned development builds?"
-msgstr "Обновлять до неподписанной тестовой сборки?"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:354
-msgid "Unsigned Build URL"
-msgstr "URL неподписанной тестовой сборки"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:360
-msgid "I2P updates are disabled because you do not have write permission for the install directory."
-msgstr "Функция автообновления I2P недоступна: у Вас нет прав на запись в директорию I2P."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:366
-msgid "Save"
-msgstr "Сохранить"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117
-msgid "Page Not Found"
-msgstr "Страница не найдена"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:243
-msgid "Sorry! You appear to be requesting a non-existent Router Console page or resource."
-msgstr "Страница консоли маршрутизатора, которую вы запросили, не существует."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:245
-msgid "Error 404"
-msgstr "Ошибка 404"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:250
-msgid "not found"
-msgstr "не найдено"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106
-msgid "graphs"
-msgstr "графики"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:228
-msgid "I2P Performance Graphs"
-msgstr "Графики производительности I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105
-msgid "home"
-msgstr "Домашняя страница"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105
-msgid "job queue"
-msgstr "очередь заданий"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:227
-msgid "I2P Router Job Queue"
-msgstr "Очередь заданий маршрутизатора I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105
-msgid "logs"
-msgstr "журналы"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:227
-msgid "I2P Router Logs"
-msgstr "Журналы маршрутизатора I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:229
-msgid "I2P Version & Running Environment"
-msgstr "Версия I2P & Информация о среде выполнения"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:231
-msgid "Please report bugs on trac.i2p2.i2p."
-msgstr "Сообщайте об ошибках в багтрекер проекта I2P: trac.i2p2.i2p."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:233
-msgid "Please include this information in bug reports"
-msgstr "Пожалуйста, добавляйте эту информацию в Ваши сообщения об ошибках"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:269
-msgid "Critical Logs"
-msgstr "Журнал критических ошибок"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:273
-msgid "Router Logs"
-msgstr "Журнал маршрутизатора"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:279
-msgid "Service (Wrapper) Logs"
-msgstr "Журнал службы (wrapper)"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105
-msgid "network database summary"
-msgstr "сетевая база данных"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:227
-msgid "I2P Network Database Summary"
-msgstr "Обзор сетевой базы данных I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109
-msgid "WebApp Not Found"
-msgstr "Веб-апплет не найден"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:231
-msgid "Web Application Not Running"
-msgstr "Веб-приложение не запущено"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:233
-msgid "The requested web application is not running."
-msgstr "Запрошенное веб-приложение не запущено."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:235
-msgid "Please visit the config clients page to start it."
-msgstr "Пожалуйста, запустите его со страницы настроек веб-апплетов."
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105
-msgid "peer connections"
-msgstr "обзор пиров"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:227
-msgid "I2P Network Peers"
-msgstr "Соединения с пирами I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105
-msgid "peer profiles"
-msgstr "профили пиров"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:227
-msgid "I2P Network Peer Profiles"
-msgstr "Профили пиров сети I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:105
-msgid "statistics"
-msgstr "статистика"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:242
-msgid "I2P Router Statistics"
-msgstr "Статистика маршрутизатора I2P"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:244
-#, java-format
-msgid "Disable {0}s Refresh"
-msgstr "Отключить автообновление панели ({0} сек.)"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105
-msgid "tunnel summary"
-msgstr "обзор туннелей"
-
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:227
-msgid "I2P Tunnel Summary"
-msgstr "Обзор туннелей I2P"
-
+# I2P
+# Copyright (C) 2009 The I2P Project
+# This file is distributed under the same license as the routerconsole package.
+# To contribute translations, see http://www.i2p2.de/newdevelopers
+# foo , 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: I2P routerconsole\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-07-07 20:03+0000\n"
+"PO-Revision-Date: 2010-07-07 20:06+0000\n"
+"Last-Translator: 4get \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Russian\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+"X-Poedit-Bookmarks: 283,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
+
+#: ../../../router/java/src/net/i2p/router/Blocklist.java:126
+#, java-format
+msgid "Banned by router hash: {0}"
+msgstr "Забанен по хэшу маршрутизатора: {0}"
+
+#: ../../../router/java/src/net/i2p/router/Blocklist.java:128
+msgid "Banned by router hash"
+msgstr "Забанен по хэшу маршрутизатора"
+
+#. Temporary reason, until the job finishes
+#: ../../../router/java/src/net/i2p/router/Blocklist.java:673
+msgid "IP banned"
+msgstr "IP заблокирован"
+
+#: ../../../router/java/src/net/i2p/router/Blocklist.java:743
+#, java-format
+msgid "IP banned by blocklist.txt entry {0}"
+msgstr "IP заблокирован по записи в blocklist.txt: {0}"
+
+#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:92
+msgid "Rejecting tunnels: Shutting down"
+msgstr "Не принимаем туннели: Маршрутизатор в процессе остановки"
+
+#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:141
+msgid "Rejecting tunnels: High message delay"
+msgstr "Не принимаем туннели: Слишком большая задержка сообщений"
+
+#. hard to do {0} from here
+#. setTunnelStatus("Rejecting " + (100 - (int) probAccept*100) + "% of tunnels: High number of requests");
+#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:177
+msgid "Rejecting most tunnels: High number of requests"
+msgstr "Не принимаем большую часть туннелей: Слишком много запросов"
+
+#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:233
+msgid "Rejecting tunnels: Limit reached"
+msgstr "Не принимаем туннели: Достигнут предел количества туннелей"
+
+#. .067KBps
+#. * also limited to 90% - see below
+#. always leave at least 4KBps free when allowing
+#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:301
+msgid "Rejecting tunnels: Bandwidth limit"
+msgstr "Не принимаем туннели: Достигнут предел пропускной способности"
+
+#. hard to do {0} from here
+#. setTunnelStatus("Rejecting " + ((int)(100.0*probReject)) + "% of tunnels: Bandwidth limit");
+#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:371
+msgid "Rejecting most tunnels: Bandwidth limit"
+msgstr "Не принимаем большую часть туннелей: Достигнут предел пропускной способности"
+
+#. hard to do {0} from here
+#. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of tunnels");
+#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:375
+msgid "Accepting most tunnels"
+msgstr "Принимаем большую часть туннелей"
+
+#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:377
+msgid "Accepting tunnels"
+msgstr "Принимаем туннели"
+
+#. NPE, too early
+#. if (_context.router().getRouterInfo().getBandwidthTier().equals("K"))
+#. setTunnelStatus("Not expecting tunnel requests: Advertised bandwidth too low");
+#. else
+#: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:487
+msgid "Rejecting tunnels"
+msgstr "Не принимаем туннели"
+
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:48
+msgid "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the FAQ about reseeding manually."
+msgstr "Убедитесь, что исходящие HTTP-запросы ничем не блокируются, загляните в журналы ошибок и если ничто не помогло, прочтите в FAQ инструкцию по начальной загрузке вручную."
+
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:80
+msgid "Reseeding"
+msgstr "Производится начальная загрузка"
+
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:144
+msgid "Reseeding: fetching seed URL."
+msgstr "Производится начальная загрузка: загружается URL каталога маршрутизаторов."
+
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:150
+msgid "Last reseed failed fully (failed reading seed URL)."
+msgstr "Предыдущая попытка начальной загрузки полностью провалилась (не удалось загрузить URL каталога маршрутизаторов)"
+
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:176
+msgid "Last reseed failed fully (no routerInfo URLs at seed URL)."
+msgstr "Предыдущая попытка начальной загрузки полностью провалилась (не удалось найти список routerInfo-ссылок в загруженном каталоге)"
+
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:189
+#, java-format
+msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
+msgstr "Производится начальная загрузка: получение информации о маршрутизаторах ({0} удачно, {1} ошибок)."
+
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#, java-format
+msgid "Last reseed failed partly ({0}% of {1})."
+msgstr "Предыдущая попытка начальной загрузки частично не удалась ({0}% из {1})."
+
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:215
+#, java-format
+msgid "Last reseed failed ({0}% of {1})."
+msgstr "Предыдущая попытка начальной загрузки почти полностью провалилась ({0}% из {1})."
+
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:225
+msgid "Last reseed failed fully (exception caught)."
+msgstr "Предыдущая попытка начальной загрузки полностью провалилась (произошла необрабатываемая ошибка)."
+
+#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:510
+msgid "NetDb entry"
+msgstr "показать описание в NetDb"
+
+#. This used to be "no common transports" but it is almost always no transports at all
+#: ../../../router/java/src/net/i2p/router/transport/GetBidsJob.java:70
+msgid "No transports (hidden or starting up?)"
+msgstr "Нет транспортных протоколов (в скрытом режиме или запущен недавно?)"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:457
+msgid "Unreachable on any transport"
+msgstr "Недоступен по всем транспортным протоколам"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:508
+msgid "Router Transport Addresses"
+msgstr "Адреса транспортов маршрутизатора"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:514
+#, java-format
+msgid "{0} is used for outbound connections only"
+msgstr "{0} используется только для исходящих соединений"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:528
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:257
+msgid "Definitions"
+msgstr "Условные обозначения"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:715
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1885
+#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
+#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
+#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:187
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238
+msgid "Peer"
+msgstr "Пир"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:529
+msgid "The remote peer, identified by router hash"
+msgstr "Уникальный идентификатор пира (несколько начальных символов из хеша его маршрутизатора)"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:530
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:716
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1889
+msgid "Dir"
+msgstr "Направление"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531
+msgid "Inbound connection"
+msgstr "Входящее соединение"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:533
+msgid "Outbound connection"
+msgstr "Исходящее соединение"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535
+msgid "They offered to introduce us (help other peers traverse our firewall)"
+msgstr "Этот пир предлагает себя в качестве нашего посредника (для того, чтобы другие пиры могли соединяться с нами в обход нашего брандмауэра)"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537
+msgid "We offered to introduce them (help other peers traverse their firewall)"
+msgstr "Мы предлагаем себя в качестве посредника для этого пира (для того, чтобы другие пиры могли соединяться с ним в обход его брандмауэра)"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538
+msgid "How long since a packet has been received / sent"
+msgstr "Сколько прошло времени после приёма/передачи последнего пакета"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:717
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1890
+msgid "Idle"
+msgstr "Неактивен"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:718
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1895
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
+msgid "In/Out"
+msgstr "Приём/Передача"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539
+msgid "The smoothed inbound / outbound transfer rate (KBytes per second)"
+msgstr "Усреднённые скорости приёма / передачи (КБайт/сек) "
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540
+msgid "How long ago this connection was established"
+msgstr "Время жизни соединения"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:719
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1900
+msgid "Up"
+msgstr "Подключен"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:720
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1902
+msgid "Skew"
+msgstr "Сдвиг"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:541
+msgid "The difference between the peer's clock and your own"
+msgstr "Разница хода часов между пиром и нами"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542
+msgid "The congestion window, which is how many bytes can be sent without an acknowledgement"
+msgstr "Congestion Window. Окно насыщения — количество байт, которое мы можем послать до ожидания подтверждения"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543
+msgid "The number of sent messages awaiting acknowledgement"
+msgstr "Количество отправленных сообщений ожидающих подтверждения"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:544
+msgid "The maximum number of concurrent messages to send"
+msgstr "Максимальное количество параллельно отправляемых сообщений"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545
+msgid "The number of pending sends which exceed congestion window"
+msgstr "Количество ожидающих посылок превосходящих размер окна насыщения"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546
+msgid "The slow start threshold"
+msgstr "Slow Start Threshold. Величина порога медленного старта"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:547
+msgid "The round trip time in milliseconds"
+msgstr "Round-Trip Time. Время между отправкой запроса и получением ответа (миллисекунды)"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1912
+msgid "Dev"
+msgstr "Отклонение"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548
+msgid "The standard deviation of the round trip time in milliseconds"
+msgstr "Среднеквадратическое отклонение RTT (миллисекунды)"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:549
+msgid "The retransmit timeout in milliseconds"
+msgstr "Retransmit Time-Out. Время ожидания подтверждения перед повторной посылкой пакета (миллисекунды)"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550
+msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)"
+msgstr "Maximum Transfer Unit. Текущий максимальный размер исходящего пакета / максимальный размер принятого пакета (байт) "
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:721
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1919
+msgid "TX"
+msgstr "Передано"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551
+msgid "The total number of packets sent to the peer"
+msgstr "Общее количество посланных пиру пакетов"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:722
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1921
+msgid "RX"
+msgstr "Принято"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:552
+msgid "The total number of packets received from the peer"
+msgstr "Общее количество принятых от пира пакетов"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:553
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1924
+msgid "Dup TX"
+msgstr "Повт. принято"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:553
+msgid "The total number of packets retransmitted to the peer"
+msgstr "Общее количество повторно посланных пиру пакетов"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:554
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1926
+msgid "Dup RX"
+msgstr "Повт. передано"
+
+#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:554
+msgid "The total number of duplicate packets received from the peer"
+msgstr "Общее количество повторно принятых от пира пакетов"
+
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:380
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:594
+#, java-format
+msgid "Excessive clock skew: {0}"
+msgstr "Чрезмерное расхождение времени: {0}"
+
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:710
+msgid "NTCP connections"
+msgstr "NTCP соединения"
+
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:711
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1881
+msgid "Limit"
+msgstr "Ограничение"
+
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:712
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1882
+msgid "Timeout"
+msgstr "Таймаут"
+
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:723
+msgid "Out Queue"
+msgstr "Исходящая очередь"
+
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:724
+msgid "Backlogged?"
+msgstr "В очереди?"
+
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:738
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1944
+#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82
+msgid "Inbound"
+msgstr "Входящие"
+
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:740
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1946
+#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:82
+msgid "Outbound"
+msgstr "Исходящие"
+
+#. buf.append("
\n");
+#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:787
+msgid "peers"
+msgstr "пиров"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1880
+msgid "UDP connections"
+msgstr "UDP соединения"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1887
+msgid "Sort by peer hash"
+msgstr "Сортировать по идентификатору пира"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1889
+msgid "Direction/Introduction"
+msgstr "Направление / Посредничество"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1891
+msgid "Sort by idle inbound"
+msgstr "Сортировать по неактивности приёма"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1893
+msgid "Sort by idle outbound"
+msgstr "Сортировать по неактивности передачи"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1896
+msgid "Sort by inbound rate"
+msgstr "Сортировать по скорости приёма"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1898
+msgid "Sort by outbound rate"
+msgstr "Сортировать по скорости передачи"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1901
+msgid "Sort by connection uptime"
+msgstr "Сортировать по времени жизни соединения"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1903
+msgid "Sort by clock skew"
+msgstr "Сортировать по расхождению часов"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1906
+msgid "Sort by congestion window"
+msgstr "Сортировать по размеру окна насыщения"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1908
+msgid "Sort by slow start threshold"
+msgstr "Сортировать по размеру порога медленного старта"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1911
+msgid "Sort by round trip time"
+msgstr "Сортировать по времени прохождения сигнала"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1913
+msgid "Sort by round trip time deviation"
+msgstr "Сортировать по отклонению времени прохождения сигнала"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1915
+msgid "Sort by retransmission timeout"
+msgstr "Сортировать по таймауту передачи"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1918
+msgid "Sort by outbound maximum transmit unit"
+msgstr "Сортировать по размеру исходящего MTU"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1920
+msgid "Sort by packets sent"
+msgstr "Сортировать по количеству посланных пакетов"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1922
+msgid "Sort by packets received"
+msgstr "Сортировать по количеству принятых пакетов"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1925
+msgid "Sort by packets retransmitted"
+msgstr "Сортировать по количеству повторно посланных пакетов"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1927
+msgid "Sort by packets received more than once"
+msgstr "Сортировать по количеству повторно принятых пакетов"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1948
+msgid "We offered to introduce them"
+msgstr "Мы предлагаем себя в качестве посредника для этого пира"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1950
+msgid "They offered to introduce us"
+msgstr "Этот пир предлагает себя в качестве нашего посредника"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1954
+msgid "Choked"
+msgstr "Дросселирован"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1962
+msgid "1 fail"
+msgstr "1 сбой"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1964
+#, java-format
+msgid "{0} fails"
+msgstr "{0} сбоя(-ев)"
+
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1970
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:162
+msgid "Banned"
+msgstr "Забанен"
+
+#. buf.append("
\n");
+#. tunnel depth
+#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:87
+msgid "Length"
+msgstr "Длина"
+
+#. tunnel depth variance
+#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:104
+msgid "Randomization"
+msgstr "Разброс"
+
+#. tunnel quantity
+#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:128
+msgid "Quantity"
+msgstr "Количество"
+
+#. tunnel backup quantity
+#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:145
+msgid "Backup quantity"
+msgstr "Резервное количество"
+
+#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:167
+msgid "Inbound options"
+msgstr "Дополнительные параметры для входящих"
+
+#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:180
+msgid "Outbound options"
+msgstr "Дополнительные параметры для исходящих"
+
+#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:31
+msgid "Theme change saved."
+msgstr "Изменение темы оформления сохранено."
+
+#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:33
+msgid "Refresh the page to view."
+msgstr "Обновите страницу для просмотра."
+
+#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51
+msgid "English"
+msgstr "English"
+
+#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51
+msgid "French"
+msgstr "Français"
+
+#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:51
+msgid "German"
+msgstr "Deutsch"
+
+#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
+msgid "Chinese"
+msgstr "中文"
+
+#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
+msgid "Dutch"
+msgstr "Nederlands"
+
+#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
+msgid "Russian"
+msgstr "Русский"
+
+#: ../java/src/net/i2p/router/web/ConfigUIHelper.java:52
+msgid "Swedish"
+msgstr "Svenska"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:88
+msgid "Update available, attempting to download now"
+msgstr "Доступно обновление, пытаемся загрузить"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:90
+msgid "Update available, click button on left to download"
+msgstr "Доступно обновление, нажмите кнопку слева для загрузки"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:96
+msgid "No update available"
+msgstr "Нет доступных обновлений"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:104
+msgid "Updating news URL to"
+msgstr "Новый URL новостей"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:112
+msgid "Updating proxy host to"
+msgstr "Новый адрес I2P-прокси"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120
+msgid "Updating proxy port to"
+msgstr "Новый порт I2P-прокси"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:133
+msgid "Updating refresh frequency to"
+msgstr "Новый интервал проверки обновлений"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:140
+msgid "Updating update policy to"
+msgstr "Новый режим обновлений"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:149
+msgid "Updating update URLs."
+msgstr "Новые URL обновлений"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+msgid "Updating trusted keys."
+msgstr "Обновление списка доверенных ключей."
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:166
+msgid "Updating unsigned update URL to"
+msgstr "Новый URL неподписанной тестовой сборки"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:88
+#: ../java/src/net/i2p/router/web/GraphHelper.java:138
+msgid "Never"
+msgstr "Никогда"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:90
+msgid "Every"
+msgstr "Каждые"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:108
+msgid "Notify only"
+msgstr "Только уведомлять"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:115
+msgid "Download and verify only"
+msgstr "Только скачать и проверить целостность"
+
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:123
+msgid "Download, verify, and restart"
+msgstr "Скачать, проверить и обновить I2P"
+
+#: ../java/src/net/i2p/router/web/FormHandler.java:163
+msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit."
+msgstr "Форма не принята, скорее всего это произошло из-за того, что Вы нажимали кнопку \"Назад\" или \"Обновить\" в браузере. Пожалуйста, заполните форму заново."
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:82
+msgid "Combined bandwidth graph"
+msgstr "График загрузки канала"
+
+#. e.g. "statname for 60m"
+#: ../java/src/net/i2p/router/web/GraphHelper.java:96
+#, java-format
+msgid "{0} for {1}"
+msgstr "{0} за {1}"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:130
+msgid "Configure Graph Display"
+msgstr "Настройка показа графиков"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:130
+msgid "Select Stats"
+msgstr "Выбрать параметры"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:132
+msgid "Periods"
+msgstr "Количество интервалов"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:133
+msgid "Plot averages"
+msgstr "Строить график средних значений"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:134
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:332
+msgid "or"
+msgstr "или"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:134
+msgid "plot events"
+msgstr "строить график количества событий"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:135
+msgid "Image sizes"
+msgstr "Размеры графиков"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:135
+msgid "width"
+msgstr "ширина"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:136
+msgid "height"
+msgstr "высота"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:136
+#: ../java/src/net/i2p/router/web/GraphHelper.java:137
+msgid "pixels"
+msgstr "пикселей"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:138
+msgid "Refresh delay"
+msgstr "Интервал обновления"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:138
+msgid "hour"
+msgstr "час"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:138
+msgid "minute"
+msgstr "минута"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:138
+msgid "minutes"
+msgstr "минут(ы)"
+
+#: ../java/src/net/i2p/router/web/GraphHelper.java:139
+msgid "Redraw"
+msgstr "Перерисовать"
+
+#: ../java/src/net/i2p/router/web/LogsHelper.java:13
+#: ../java/src/net/i2p/router/web/LogsHelper.java:37
+msgid "File location"
+msgstr "Путь к файлу журнала"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:77
+msgid "Network Database RouterInfo Lookup"
+msgstr "Просмотр RouterInfo"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:92
+#: ../java/strings/Strings.java:68
+msgid "Router"
+msgstr "Маршрутизатор"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:92
+msgid "not found in network database"
+msgstr "не найден в сетевой базе данных"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:104
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:212
+msgid "Network Database Contents"
+msgstr "Просмотр сетевой базы данных"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+msgid "View RouterInfo"
+msgstr "Показать список RouterInfo"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:106
+msgid "LeaseSets"
+msgstr "Список LeaseSet"
+
+# This term intentionally left in English
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:128
+msgid "LeaseSet"
+msgstr "LeaseSet"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:130
+msgid "Local"
+msgstr "Локальный"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:132
+msgid "Unpublished"
+msgstr "Неопубликованный"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:133
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:140
+msgid "Destination"
+msgstr "Адрес назначения"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:150
+#, java-format
+msgid "Expires in {0}"
+msgstr "Истекает через {0}"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:152
+#, java-format
+msgid "Expired {0} ago"
+msgstr "Истек {0} назад"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:164
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
+msgid "Gateway"
+msgstr "Шлюз"
+
+# This term intentionally left in English
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:164
+msgid "Lease"
+msgstr "Lease"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:166
+msgid "Tunnel"
+msgstr "Туннель"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:212
+msgid "View LeaseSets"
+msgstr "Показать список LeaseSet"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:214
+msgid "Not initialized"
+msgstr "База не инициализирована"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:223
+msgid "Routers"
+msgstr "Маршрутизаторы"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:225
+msgid "Show all routers"
+msgstr "Показать полный список"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:227
+msgid "Show all routers with full stats"
+msgstr "Показать полный список с полной статистикой"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:262
+msgid "Network Database Router Statistics"
+msgstr "Статистика маршрутизаторов"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:268
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:282
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:300
+msgid "Count"
+msgstr "Количество"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:282
+msgid "Transports"
+msgstr "Транспортный протокол"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:300
+msgid "Country"
+msgstr "Страна"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:339
+msgid "Our info"
+msgstr "Информация о нас"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:341
+msgid "Peer info for"
+msgstr "Информация о пире"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:345
+msgid "Full entry"
+msgstr "Показать полную запись"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:351
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:110
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:600
+msgid "Hidden"
+msgstr "Скрытый"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:351
+msgid "Updated"
+msgstr "Обновленный"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355
+#, java-format
+msgid "{0} ago"
+msgstr "{0} назад"
+
+#. shouldnt happen
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358
+msgid "Published"
+msgstr "Опубликовано"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:360
+msgid "Address(es)"
+msgstr "Адрес(а)"
+
+# This term intentionally left in English
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:373
+msgid "cost"
+msgstr "cost"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:397
+msgid "Hidden or starting up"
+msgstr "В скрытом режиме или недавно запущен"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:397
+msgid "SSU"
+msgstr "SSU"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:397
+msgid "SSU with introducers"
+msgstr "SSU через посредников"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:398
+msgid "NTCP"
+msgstr "NTCP"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:398
+msgid "NTCP and SSU"
+msgstr "NTCP и SSU"
+
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:398
+msgid "NTCP and SSU with introducers"
+msgstr "NTCP и SSU через посредников"
+
+#: ../java/src/net/i2p/router/web/NewsFetcher.java:82
+#, java-format
+msgid "News last updated {0} ago."
+msgstr "Новости последний раз обновлялись {0} назад."
+
+#: ../java/src/net/i2p/router/web/NewsFetcher.java:88
+#, java-format
+msgid "News last checked {0} ago."
+msgstr "Новости последний раз проверялись {0} назад."
+
+#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:77
+#, java-format
+msgid "Cannot check, plugin {0} is not installed"
+msgstr "Проверка невозможна — плагин {0} не установлен"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:129
+#, java-format
+msgid "Checking for update of plugin {0}"
+msgstr "Проверяется наличие обновления для плагина {0}"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:154
+#, java-format
+msgid "New plugin version {0} is available"
+msgstr "Доступна новая версия {0}"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:156
+#, java-format
+msgid "No new version is available for plugin {0}"
+msgstr "Для плагина {0} нет обновлений"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateChecker.java:165
+#, java-format
+msgid "Update check failed for plugin {0}"
+msgstr "Ошибка при проверке наличия обновлений для плагина {0}"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:138
+msgid "Downloading plugin"
+msgstr "Загружается плагин"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:145
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:179
+#, java-format
+msgid "{0}B transferred"
+msgstr "{0} байт скачано"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:151
+msgid "Plugin downloaded"
+msgstr "Плагин загружен"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:156
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:343
+#, java-format
+msgid "Cannot create plugin directory {0}"
+msgstr "Не удалось создать директорию плагина {0}"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:220
+#, java-format
+msgid "from {0}"
+msgstr "из {0}"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:175
+#, java-format
+msgid "Plugin from {0} is corrupt"
+msgstr "Загруженный из {0} плагин поврежден"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:186
+#, java-format
+msgid "Plugin from {0} does not contain the required configuration file"
+msgstr "Загруженный из {0} плагин не содержит необходимого файла настроек"
+
+#. updateStatus("" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "");
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:199
+#, java-format
+msgid "Plugin from {0} contains an invalid key"
+msgstr "Загруженный из {0} плагин содержит некорректный ключ"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:218
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:227
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:236
+#, java-format
+msgid "Plugin signature verification of {0} failed"
+msgstr "Плагин {0} содержит недействительную подпись"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:251
+#, java-format
+msgid "Plugin from {0} has invalid name or version"
+msgstr "Загруженный из {0} плагин имеет некорректное название или версию"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:256
+#, java-format
+msgid "Plugin {0} has mismatched versions"
+msgstr "Плагин {0} содержит несовпадающие версии"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:264
+#, java-format
+msgid "This plugin requires I2P version {0} or higher"
+msgstr "Для этого плагина требуется версия I2P {0} и выше"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:272
+#, java-format
+msgid "This plugin requires Java version {0} or higher"
+msgstr "Для этого плагина требуется версия Java {0} и выше"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:280
+msgid "Downloaded plugin is for new installs only, but the plugin is already installed"
+msgstr "Загруженный инсталлятор плагина предназначен только для первоначальной установки, но такой плагин уже установлен"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:292
+msgid "Installed plugin does not contain the required configuration file"
+msgstr "Установленный плагин не содержит необходимого файла настроек"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:300
+msgid "Signature of downloaded plugin does not match installed plugin"
+msgstr "Подпись загруженного плагина не совпадает с установленным плагином"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:307
+#, java-format
+msgid "Downloaded plugin version {0} is not newer than installed plugin"
+msgstr "Версия скачанного плагина {0} не новее версии уже установленного плагина"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:314
+#, java-format
+msgid "Plugin update requires installed plugin version {0} or higher"
+msgstr "Для обновления плагина требуется установленная версия плагина {0} и выше"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:321
+#, java-format
+msgid "Plugin update requires installed plugin version {0} or lower"
+msgstr "Для обновления плагина требуется установленная версия плагина {0} и ниже"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:338
+msgid "Plugin is for upgrades only, but the plugin is not installed"
+msgstr "Загруженный инсталлятор плагина предназначен только для обновления, но такой плагин ещё не был установлен"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351
+#, java-format
+msgid "Failed to install plugin in {0}"
+msgstr "Не удалось установить плагин в {0}"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:358
+#, java-format
+msgid "Plugin {0} installed, router restart required"
+msgstr "Плагин {0} установлен, требуется перезагрузка маршрутизатора"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:360
+#, java-format
+msgid "Plugin {0} installed"
+msgstr "Плагин {0} установлен"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:369
+#, java-format
+msgid "Plugin {0} installed and started"
+msgstr "Плагин {0} установлен и запущен"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:371
+#, java-format
+msgid "Plugin {0} installed but failed to start, check logs"
+msgstr "Плагин {0} установлен, но при его запуске произошел сбой, загляните в журнал ошибок"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:373
+#, java-format
+msgid "Plugin {0} installed but failed to start"
+msgstr "Плагин {0} установлен, но при его запуске произошел сбой"
+
+#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:383
+#, java-format
+msgid "Failed to download plugin from {0}"
+msgstr "Не удалось скачать плагин из {0}"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:72
+msgid "Peer Profiles"
+msgstr "Профили пиров"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:73
+#, java-format
+msgid "Showing {0} recent profiles."
+msgstr "Показано {0} недавно обновленных профилей"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:75
+#, java-format
+msgid "Hiding {0} older profiles."
+msgstr "Скрыто {0} устаревших профилей."
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:77
+#, java-format
+msgid "Hiding {0} standard profiles."
+msgstr "Также скрыто {0} стандартных профилей (кликните для показа)."
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:82
+msgid "Groups (Caps)"
+msgstr "Входит в группы (Caps)"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:83
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:251
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:334
+msgid "Speed"
+msgstr "Скорость"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:84
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:253
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:338
+msgid "Capacity"
+msgstr "Ёмкость"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:85
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:255
+msgid "Integration"
+msgstr "Интеграция"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:86
+msgid "Status"
+msgstr "Статус"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:126
+msgid "Fast, High Capacity"
+msgstr "Быстрые, Высокоёмкие"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:127
+msgid "High Capacity"
+msgstr "Высокоёмкие"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:128
+msgid "Standard"
+msgstr "Стандартные"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:129
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:163
+msgid "Failing"
+msgstr "Сбоит"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281
+msgid "Integrated"
+msgstr "Интегрированные"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:164
+msgid "Unreachable"
+msgstr "Недоступен"
+
+#. hide if < 10%
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:171
+msgid "Test Fails"
+msgstr "Неудачных тестов"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:175
+msgid "profile"
+msgstr "профиль"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:184
+msgid "Floodfill and Integrated Peers"
+msgstr "Floodfill и хорошо интегрированные пиры"
+
+# This term intentionally left in English
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:188
+msgid "Caps"
+msgstr "Caps"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:189
+msgid "Integ. Value"
+msgstr "Интег. Значение"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:190
+msgid "Last Heard About"
+msgstr "Последний раз слышали о"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:191
+msgid "Last Heard From"
+msgstr "Последний приём"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:192
+msgid "Last Good Send"
+msgstr "Последняя удачная передача"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:193
+msgid "Last Bad Send"
+msgstr "Последняя неудачная передача"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:194
+msgid "10m Resp. Time"
+msgstr "Время отклика (последние 10 мин)"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:195
+msgid "1h Resp. Time"
+msgstr "Время отклика (последний 1 час)"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:196
+msgid "1d Resp. Time"
+msgstr "Время отклика (последний 1 день)"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:197
+msgid "Last Good Lookup"
+msgstr "Последний удачный поиск"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:198
+msgid "Last Bad Lookup"
+msgstr "Последний неудачный поиск"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:199
+msgid "Last Good Store"
+msgstr "Последнее удачное размещение"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:200
+msgid "Last Bad Store"
+msgstr "Последнее неудачное размещение"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:201
+msgid "1h Fail Rate"
+msgstr "Уровень отказов за 1 час"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:202
+msgid "1d Fail Rate"
+msgstr "Уровень отказов за 1 день"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:250
+msgid "Thresholds"
+msgstr "Пороговые значения"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:252
+msgid "fast peers"
+msgstr "быстрые пиры"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:254
+msgid "high capacity peers"
+msgstr "высокоёмкие пиры"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:256
+msgid " well integrated peers"
+msgstr "хорошо интегрированные пиры"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258
+msgid "as determined by the profile organizer"
+msgstr "определяется автоматически модулем ProfileOrganizer на основании собранной информации о производительности пира"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:258
+msgid "groups"
+msgstr "группы"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
+msgid "capabilities in the netDb, not used to determine profiles"
+msgstr "информация о пире, предоставленная сетевой базой данных; для профилирования не используется"
+
+# This term intentionally left in English
+#. capabilities
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
+#: ../java/strings/Strings.java:81
+msgid "caps"
+msgstr "caps"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
+msgid "peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel"
+msgstr "пиковая скорость (байты/секунду) выданная пиром на одном туннеле за 1-минутый период"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
+msgid "speed"
+msgstr "скорость"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
+msgid "capacity"
+msgstr "ёмкость"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
+msgid "how many tunnels can we ask them to join in an hour?"
+msgstr "к скольким туннелям мы можем попросить этого пира подсоединиться за час?"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
+msgid "how many new peers have they told us about lately?"
+msgstr "о скольких новых пирах этот пир нам сообщил в последнее время?"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
+msgid "integration"
+msgstr "интеграция"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
+msgid "is the peer banned, or unreachable, or failing tunnel tests?"
+msgstr "забанен ли этот пир, недоступен, дает ошибки на тестах?"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
+msgid "status"
+msgstr "статус"
+
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:313
+msgid "n/a"
+msgstr "нет данных"
+
+#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:57
+#, java-format
+msgid "Temporary ban expiring in {0}"
+msgstr "Временный бан истекает через {0}"
+
+#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:59
+#, java-format
+msgid "Banned until restart or in {0}"
+msgstr "Забанен до перезагрузки или истечения {0}"
+
+#: ../java/src/net/i2p/router/web/ShitlistRenderer.java:71
+msgid "unban now"
+msgstr "разбанить"
+
+#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:174
+msgid "Bandwidth usage"
+msgstr "Загрузка канала"
+
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:181
+msgid "Outbound bytes/sec"
+msgstr "Исходящ. байт/сек"
+
+#. def.line(sendName, Color.BLUE, "Outbound bytes/sec", 3);
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:183
+msgid "Inbound bytes/sec"
+msgstr "Входящ. байт/сек"
+
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:186
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:187
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:188
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:189
+msgid "bytes/sec"
+msgstr "байт/сек"
+
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:186
+msgid "out average"
+msgstr "исх. сред."
+
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:187
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:110
+msgid "max"
+msgstr "макс."
+
+#: ../java/src/net/i2p/router/web/StatSummarizer.java:188
+msgid "in average"
+msgstr "вх. сред."
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:56
+msgid "GO"
+msgstr "Перейти"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:59
+msgid "Statistics gathered during this router's uptime"
+msgstr "Статистика собрана за время с последнего запуска маршрутизатора"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:62
+msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate."
+msgstr "Собираемые данные округляются за 1-минутные промежутки, поэтому используйте эту информацию только для приблизительной оценки."
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:108
+msgid "frequency"
+msgstr "частота"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:142
+msgid "No lifetime events"
+msgstr "Счетчик lifetime событий пуст"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:154
+msgid "rate"
+msgstr "интервал"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:156
+msgid "avg value"
+msgstr "среднее значение"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:185
+msgid "events"
+msgstr "событий"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:191
+msgid "No events"
+msgstr "Нет событий"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:197
+msgid "lifetime average"
+msgstr "среднее за время работы"
+
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:199
+msgid "peak average"
+msgstr "пиковое среднее"
+
+#. Display the strict average
+#: ../java/src/net/i2p/router/web/StatsGenerator.java:217
+msgid "lifetime average value"
+msgstr "среднее значение за время работы"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:40
+msgid "I2P Router Help & FAQ"
+msgstr "Справка и FAQ Маршрутизатора I2P"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:42
+msgid "Help & FAQ"
+msgstr "Справка и FAQ"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:54
+msgid "Configure startup of clients and webapps (services); manually start dormant services"
+msgstr "Настройка автозапуска клиентов и веб-апплетов, ручной запуск неактивных приложений"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:56
+msgid "I2P Services"
+msgstr "I2P сервисы"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:62
+msgid "Manage your I2P hosts file here (I2P domain name resolution)"
+msgstr "Здесь можно управлять hosts-файлами (единственный механизм, используемый I2P для отображения доменных имен)"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:64
+msgid "Addressbook"
+msgstr "Адресная Книга"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:68
+msgid "Built-in anonymous BitTorrent Client"
+msgstr "Встроенный анонимный Bittorrent-клиент"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:70
+msgid "Torrents"
+msgstr "Торренты"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:74
+msgid "Anonymous webmail client"
+msgstr "Анонимный почтовый клиент с веб-интерфейсом"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:76
+msgid "Webmail"
+msgstr "Веб-почта"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:80
+msgid "Anonymous resident webserver"
+msgstr "Встроенный анонимный веб-сервер"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:82
+msgid "Webserver"
+msgstr "Веб-сервер"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:90
+msgid "Configure I2P Router"
+msgstr "Настройка Маршрутизатора I2P"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:92
+msgid "I2P Internals"
+msgstr "I2P свойства"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:98
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:374
+msgid "View existing tunnels and tunnel build status"
+msgstr "Обзор списка существующих туннелей и статуса строящихся"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:104
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+msgid "Show all current peer connections"
+msgstr "Просмотр списка текущих соединения с пирами"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:110
+msgid "Show recent peer performance profiles"
+msgstr "Просмотр профилей пиров"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:112
+msgid "Profiles"
+msgstr "Профили"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:116
+msgid "Show list of all known I2P routers"
+msgstr "Показать список всех известных I2P маршрутизаторов"
+
+# This term intentionally left in English
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:118
+msgid "NetDB"
+msgstr "NetDB"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+msgid "Health Report"
+msgstr "Журналы сообщений маршрутизатора"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:124
+msgid "Logs"
+msgstr "Журналы"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:134
+msgid "Graph router performance"
+msgstr "График производительности маршрутизатора"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:136
+msgid "Graphs"
+msgstr "Графики"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+msgid "Textual router performance statistics"
+msgstr "Статистика производительности маршрутизатора в текстовом виде"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:365
+msgid "Local Destinations"
+msgstr "Локальные туннели"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:148
+#: ../java/strings/Strings.java:62
+msgid "I2PTunnel"
+msgstr "Менеджер Туннелей"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:159
+msgid "I2P Router Help"
+msgstr "Справка Маршрутизатора I2P"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:161
+msgid "General"
+msgstr "Общая информация"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+msgid "Local Identity"
+msgstr "Локальный идентификатор"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:170
+msgid "Your unique I2P router identity is"
+msgstr "Уникальный идентификатор Вашего I2P маршрутизатора:"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
+msgid "never reveal it to anyone"
+msgstr "никому его не показывайте."
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:176
+msgid "show"
+msgstr "показать"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:187
+msgid "How long we've been running for this session"
+msgstr "Время работы маршрутизатора с последнего запуска"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+msgid "Uptime"
+msgstr "Аптайм"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
+msgid "Help with configuring your firewall and router for optimal I2P performance"
+msgstr "Помощь в настройке брандмауэра и маршрутизатора для обеспечения оптимальной производительности I2P"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:226
+msgid "Download"
+msgstr "Скачать"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
+msgid "Download Unsigned"
+msgstr "Скачать неподписанное"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
+msgid "Active"
+msgstr "Активные"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
+msgid "Fast"
+msgstr "Быстрые"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+msgid "High capacity"
+msgstr "Высокоёмкие"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287
+msgid "Known"
+msgstr "Известные"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:302
+msgid "Help with firewall configuration"
+msgstr "Помощь в настройке брандмауэра"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
+msgid "Check NAT/firewall"
+msgstr "Проверьте настройки NAT/брандмауэров."
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:324
+msgid "Reseed"
+msgstr "Повторить начальную загрузку"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:341
+msgid "Configure router bandwidth allocation"
+msgstr "Настройка ограничений скорости"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:343
+msgid "Bandwidth in/out"
+msgstr "Трафик (вх./исх.)"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:359
+msgid "Total"
+msgstr "Всего"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:366
+msgid "Used"
+msgstr "Объем"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
+msgid "Exploratory"
+msgstr "Зондирующие"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
+msgid "Participating"
+msgstr "Транзитные"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
+msgid "Share ratio"
+msgstr "Доля транзита"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:405
+msgid "What's in the router's job queue?"
+msgstr "Просмотр очереди заданий маршрутизатора."
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:407
+msgid "Congestion"
+msgstr "Занятость"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+msgid "Job lag"
+msgstr "Задержка задач"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:418
+msgid "Message delay"
+msgstr "Задежка сообщений"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:424
+msgid "Tunnel lag"
+msgstr "Задержка туннелей"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:430
+msgid "Backlog"
+msgstr "Очередь"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:101
+msgid "ERR-Client Manager I2CP Error - check logs"
+msgstr "ОШИБКА - ошибка менеджера I2CP - загляните в журнал ошибок"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:108
+#, java-format
+msgid "ERR-Clock Skew of {0}"
+msgstr "ОШИБКА - Часы сбиты (расхождение {0})"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:117
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:576
+msgid "OK"
+msgstr "OK"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:118
+msgid "ERR-Private TCP Address"
+msgstr "ОШИБКА - Частный TCP Адрес"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:120
+msgid "ERR-SymmetricNAT"
+msgstr "ОШИБКА - Симмметричный NAT"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:123
+msgid "WARN-Firewalled with Inbound TCP Enabled"
+msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при включенном на вход TCP"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:125
+msgid "WARN-Firewalled and Floodfill"
+msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Floodfill"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:127
+msgid "WARN-Firewalled and Fast"
+msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Быстрый"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:128
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:580
+msgid "Firewalled"
+msgstr "Заблокирован извне"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:130
+msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart"
+msgstr "ОШИБКА - UDP-порт уже занят - перенастройте i2np.udp.internalPort=xxxx в дополнительных настройках и перезапустите маршрутизатор"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:136
+msgid "ERR-No Active Peers, Check Network Connection and Firewall"
+msgstr "ОШИБКА - Нет активных пиров, проверьте подключение к сети и брандмауэр"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:139
+msgid "ERR-UDP Disabled and Inbound TCP host/port not set"
+msgstr "ОШИБКА - UDP отключено и не заданы адрес/порт для входящих TCP-соединений"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:141
+msgid "WARN-Firewalled with UDP Disabled"
+msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при отключенном UDP"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:143
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:596
+msgid "Testing"
+msgstr "Проверка"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:365
+msgid "Add/remove/edit & control your client and server tunnels"
+msgstr "Управление клиентскими и серверными туннелями"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:377
+msgid "Server"
+msgstr "Сервер"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:381
+msgid "Show tunnels"
+msgstr "Перейти к списку туннелей"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:392
+msgid "Leases expired"
+msgstr "Срок аренды истек"
+
+#. red or yellow light
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:392
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:393
+msgid "Rebuilding"
+msgstr "Построение заново"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:393
+msgid "ago"
+msgstr "назад"
+
+#. green light
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:396
+msgid "Ready"
+msgstr "Готов к работе"
+
+#. yellow light
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:400
+msgid "Building"
+msgstr "Построение"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:400
+msgid "Building tunnels"
+msgstr "Построение туннелей"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:405
+msgid "none"
+msgstr "нет"
+
+#. tunnel nicknames, taken from i2ptunnel.config so they will display
+#. nicely under 'local destinations' in the summary bar
+#. note that if the wording changes in i2ptunnel.config, we have to
+#. keep the old string here as well for existing installs
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:416
+#: ../java/strings/Strings.java:36
+msgid "shared clients"
+msgstr "коллективные клиенты"
+
+#. Note to translators: all runtime zh translation disabled in this file, no font available in RRD
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:84
+#, java-format
+msgid "events in {0}"
+msgstr "событий за {0}"
+
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:86
+#, java-format
+msgid "averaged for {0}"
+msgstr "усреднённое за {0}"
+
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:96
+msgid "Events per period"
+msgstr "Событий за период"
+
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:109
+msgid "avg"
+msgstr "сред."
+
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:111
+msgid "now"
+msgstr "текущ."
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:41
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:63
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:280
+msgid "configure"
+msgstr "настроить"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:65
+msgid "dead"
+msgstr "мертв"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:71
+msgid "Participating tunnels"
+msgstr "Транзитные туннели"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72
+msgid "From"
+msgstr "От кого"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:72
+msgid "Receive on"
+msgstr "ID принимающего туннеля"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73
+msgid "Expiration"
+msgstr "Истечение срока работы"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73
+msgid "Send on"
+msgstr "ID передающего туннеля"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:73
+msgid "To"
+msgstr "Кому"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74
+msgid "Rate"
+msgstr "Скорость"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74
+msgid "Role"
+msgstr "Роль"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
+msgid "Usage"
+msgstr "Трафик"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:107
+msgid "grace period"
+msgstr "резервный период"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:117
+msgid "Outbound Endpoint"
+msgstr "Выходная конечная точка"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:119
+msgid "Inbound Gateway"
+msgstr "Входной шлюз"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:121
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
+msgid "Participant"
+msgstr "Участник"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:126
+msgid "Inactive participating tunnels"
+msgstr "Неактивных транзитных туннелей"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:127
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:218
+msgid "Lifetime bandwidth usage"
+msgstr "Трафик за время существования"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
+msgid "Expiry"
+msgstr "Истечение срока работы"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:159
+msgid "Participants"
+msgstr "Участники"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:165
+msgid "Endpoint"
+msgstr "Конечная точка"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:205
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:212
+msgid "Build in progress"
+msgstr "В процессе построения"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:205
+msgid "inbound"
+msgstr "входящий"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:212
+msgid "outbound"
+msgstr "исходящий"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:217
+msgid "No tunnels; waiting for the grace period to end."
+msgstr "Нет туннелей. Ожидаем окончания резервного периода."
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:219
+msgid "in"
+msgstr "(входящий)"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:220
+msgid "out"
+msgstr "(исходящий)"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:237
+msgid "Tunnel Counts By Peer"
+msgstr "Статистика участия пиров в туннелях"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238
+msgid "% of total"
+msgstr "% от всех"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238
+msgid "Our Tunnels"
+msgstr "Наших туннелей"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238
+msgid "Participating Tunnels"
+msgstr "Транзитных туннелей"
+
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:256
+msgid "Totals"
+msgstr "Всего"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:66
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:132
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:145
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:172
+msgid "Updating"
+msgstr "Загружается обновление"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:88
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:116
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:183
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:208
+msgid "Update downloaded"
+msgstr "Обновление загружено"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:91
+#, java-format
+msgid "Unsigned update file from {0} is corrupt"
+msgstr "Обнаружено повреждение в неподписанном обновлении загруженном из {0}"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:111
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:203
+msgid "Restarting"
+msgstr "Производится перезагрузка"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:118
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:210
+msgid "Click Restart to install"
+msgstr "Перезагрузите I2P-маршрутизатор для установки"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:120
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:212
+msgid "Click Shutdown and restart to install"
+msgstr "Остановите и снова запустите I2P-маршрутизатор для установки"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:121
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:214
+#, java-format
+msgid "Version {0}"
+msgstr "Версия {0}"
+
+#: ../java/src/net/i2p/router/web/UnsignedUpdateHandler.java:126
+#, java-format
+msgid "Failed copy to {0}"
+msgstr "Не удалось скопировать в {0}"
+
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:203
+msgid "Update verified"
+msgstr "Подлинность обновления проверена"
+
+#: ../java/src/net/i2p/router/web/UpdateHandler.java:228
+msgid "Transfer failed"
+msgstr "Не удалось загрузить"
+
+#. wars for ConfigClientsHelper
+#: ../java/strings/Strings.java:12
+msgid "addressbook"
+msgstr "адресная книга"
+
+#: ../java/strings/Strings.java:13
+msgid "i2psnark"
+msgstr "i2psnark (bittorrent-клиент)"
+
+#: ../java/strings/Strings.java:14
+msgid "i2ptunnel"
+msgstr "менеджер туннелей i2p"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:15
+msgid "susimail"
+msgstr "susimail (почтовый клиент)"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:16
+msgid "susidns"
+msgstr "susidns"
+
+#: ../java/strings/Strings.java:17
+msgid "routerconsole"
+msgstr "консоль маршрутизатора i2p"
+
+#. clients, taken from clients.config, for ConfigClientsHelper
+#. note that if the wording changes in clients.config, we have to
+#. keep the old string here as well for existing installs
+#: ../java/strings/Strings.java:22
+msgid "Web console"
+msgstr "Веб-консоль"
+
+#: ../java/strings/Strings.java:23
+msgid "SAM application bridge"
+msgstr "интерфейс SAM"
+
+#: ../java/strings/Strings.java:24
+msgid "Application tunnels"
+msgstr "Клиентские туннели"
+
+#: ../java/strings/Strings.java:25
+msgid "My eepsite web server"
+msgstr "i2p-вебсервер (eepsite)"
+
+#: ../java/strings/Strings.java:26
+msgid "I2P webserver (eepsite)"
+msgstr "i2p-вебсервер (eepsite)"
+
+#: ../java/strings/Strings.java:27
+msgid "Browser launch at startup"
+msgstr "Запуск браузера при старте I2P"
+
+#: ../java/strings/Strings.java:28
+msgid "BOB application bridge"
+msgstr "интерфейс BOB"
+
+#: ../java/strings/Strings.java:30
+msgid "Open Router Console in web browser at startup"
+msgstr "Открыть консоль маршрутизатора в веб-браузере при старте I2P"
+
+#: ../java/strings/Strings.java:37
+msgid "IRC proxy"
+msgstr "IRC-прокси"
+
+#: ../java/strings/Strings.java:38
+msgid "eepsite"
+msgstr "i2p-сайт"
+
+#: ../java/strings/Strings.java:39
+msgid "I2P webserver"
+msgstr "i2p-вебсервер"
+
+#: ../java/strings/Strings.java:40
+msgid "HTTP Proxy"
+msgstr "HTTP-прокси"
+
+#. older names for pre-0.7.4 installs
+#: ../java/strings/Strings.java:42
+msgid "eepProxy"
+msgstr "I2P-прокси"
+
+#: ../java/strings/Strings.java:43
+msgid "ircProxy"
+msgstr "IRC-прокси"
+
+# This term intentionally left in English
+#. hardcoded in i2psnark
+#: ../java/strings/Strings.java:45
+msgid "I2PSnark"
+msgstr "I2PSnark"
+
+# This term intentionally left in English
+#. hardcoded in iMule?
+#: ../java/strings/Strings.java:47
+msgid "iMule"
+msgstr "iMule"
+
+#. standard themes for ConfigUIHelper
+#: ../java/strings/Strings.java:51
+msgid "classic"
+msgstr "классическая"
+
+#: ../java/strings/Strings.java:52
+msgid "dark"
+msgstr "тёмная"
+
+#: ../java/strings/Strings.java:53
+msgid "light"
+msgstr "светлая"
+
+#: ../java/strings/Strings.java:54
+msgid "midnight"
+msgstr "полуночная"
+
+#. stat groups for stats.jsp
+#: ../java/strings/Strings.java:57
+msgid "Bandwidth"
+msgstr "Трафик"
+
+#: ../java/strings/Strings.java:58
+msgid "BandwidthLimiter"
+msgstr "Ограничитель скорости"
+
+#: ../java/strings/Strings.java:59
+msgid "ClientMessages"
+msgstr "Клиентские сообщения"
+
+#: ../java/strings/Strings.java:60
+msgid "Encryption"
+msgstr "Шифрование"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:61
+msgid "i2cp"
+msgstr "i2cp"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:63
+msgid "InNetPool"
+msgstr "InNetPool"
+
+#: ../java/strings/Strings.java:64
+msgid "JobQueue"
+msgstr "Очередь заданий"
+
+#: ../java/strings/Strings.java:65
+msgid "NetworkDatabase"
+msgstr "Сетевая база данных"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:66
+msgid "ntcp"
+msgstr "ntcp"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:69
+msgid "Stream"
+msgstr "Stream"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:70
+msgid "Throttle"
+msgstr "Throttle"
+
+#: ../java/strings/Strings.java:71
+msgid "Transport"
+msgstr "Транспортные протоколы"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:73
+msgid "udp"
+msgstr "udp"
+
+# This term intentionally left in English
+#. parameters in transport addresses (netdb.jsp)
+#. may or may not be worth translating
+#: ../java/strings/Strings.java:77
+msgid "host"
+msgstr "host"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:78
+msgid "key"
+msgstr "key"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:79
+msgid "port"
+msgstr "port"
+
+# This term intentionally left in English
+#. introducer host
+#: ../java/strings/Strings.java:83
+msgid "ihost0"
+msgstr "ihost0"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:84
+msgid "ihost1"
+msgstr "ihost1"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:85
+msgid "ihost2"
+msgstr "ihost2"
+
+# This term intentionally left in English
+#. introducer port
+#: ../java/strings/Strings.java:87
+msgid "iport0"
+msgstr "iport0"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:88
+msgid "iport1"
+msgstr "iport1"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:89
+msgid "iport2"
+msgstr "iport2"
+
+# This term intentionally left in English
+#. introducer key
+#: ../java/strings/Strings.java:91
+msgid "ikey0"
+msgstr "ikey0"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:92
+msgid "ikey1"
+msgstr "ikey1"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:93
+msgid "ikey2"
+msgstr "ikey2"
+
+# This term intentionally left in English
+#. introducer tag
+#: ../java/strings/Strings.java:95
+msgid "itag0"
+msgstr "itag0"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:96
+msgid "itag1"
+msgstr "itag1"
+
+# This term intentionally left in English
+#: ../java/strings/Strings.java:97
+msgid "itag2"
+msgstr "itag2"
+
+#. Descriptions for the stats that are graphed by default
+#. There are over 500 stats currently defined, we aren't going to tag them all
+#: ../java/strings/Strings.java:101
+msgid "Low-level bandwidth receive rate"
+msgstr "Низкоуровневая скорость приёма"
+
+#. bw.recvRate
+#: ../java/strings/Strings.java:102
+msgid "Low-level bandwidth send rate"
+msgstr "Низкоуровневая скорость передачи"
+
+#. bw.sendRate
+#: ../java/strings/Strings.java:103
+msgid "How many peers we are actively talking with"
+msgstr "Количество пиров, с которыми мы активно общаемся"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:106
+msgid "config networking"
+msgstr "настройки сети"
+
+#. We have intl defined when this is included, but not when compiled standalone.
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:218
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:231
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:218
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:228
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:217
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:223
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:216
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:216
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:216
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:216
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:216
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:216
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:235
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:216
+msgid "Refresh (s)"
+msgstr "Интервал автообновления панели (сек.)"
+
+#. ditto
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:222
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:235
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:222
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/debug_jsp.java:224
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:232
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:221
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_005fru_jsp.java:224
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/help_jsp.java:224
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:227
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:224
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/oldconsole_jsp.java:224
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:220
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:238
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:220
+msgid "Enable"
+msgstr "Включить"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:241
+msgid "I2P Network Configuration"
+msgstr "Настройки сетевых свойств I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:297
+msgid "Bandwidth limiter"
+msgstr "Ограничение скорости"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:299
+msgid "I2P will work best if you configure your rates to match the speed of your internet connection."
+msgstr "I2P будет работать лучше, если Вы настроите ограничение скорости в соответствии со скоростью Вашего подключения к Интернету."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:303
+msgid "KBps In"
+msgstr "Килобайт/секунду (на приём)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:317
+msgid "KBps Out"
+msgstr "Килобайт/секунду (на отдачу)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:333
+msgid "Share"
+msgstr "Доля транзитного трафика"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:340
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:307
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:303
+msgid "NOTE"
+msgstr "ПРИМЕЧАНИЕ"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:342
+#, java-format
+msgid "You have configured I2P to share only {0} KBps."
+msgstr "Вы настроили очень низкий лимит для транзитного трафика (всего {0} килобайт/секунду)."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:345
+msgid "I2P requires at least 12KBps to enable sharing. "
+msgstr "I2P нужно как минимум 12 килобайт/секунду для включения этой функции. "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346
+msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. "
+msgstr "Пожалуйста, повысьте долю транзитного трафика. "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347
+msgid "It improves your anonymity by creating cover traffic, and helps the network."
+msgstr "Это одновременно повысит Вашу анонимность (благодаря маскирующему транзитному трафику) и поможет сети."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:350
+#, java-format
+msgid "You have configured I2P to share {0} KBps."
+msgstr "Вы задали долю транзитного трафика {0} килобайт/секунду."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:353
+msgid "The higher the share bandwidth the more you improve your anonymity and help the network."
+msgstr "Чем выше доля транзитного трафика, тем выше Ваша анонимность и больше Ваша помощь сети."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:357
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:513
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:303
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:326
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:320
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:333
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:373
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:341
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:321
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:364
+msgid "Cancel"
+msgstr "Отменить"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:374
+msgid "IP and Transport Configuration"
+msgstr "Настройки IP и транспортных протоколов"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:376
+msgid "The default settings will work for most people."
+msgstr "Большинству пользователей подойдут настройки по умолчанию."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:378
+msgid "There is help below."
+msgstr "В конце страницы приведена справка по настройкам."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:380
+msgid "UPnP Configuration"
+msgstr "Настройки UPnP"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:384
+msgid "Enable UPnP to open firewall ports"
+msgstr "Использовать UPnP для автоматического открытия портов на брандмауэре/роутере"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:386
+msgid "UPnP status"
+msgstr "статус UPnP"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:388
+msgid "IP Configuration"
+msgstr "Настройки IP"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:390
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:460
+msgid "Externally reachable hostname or IP address"
+msgstr " Имя хоста или IP-адрес доступные из интернета"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:394
+msgid "Use all auto-detect methods"
+msgstr "Определять автоматически всеми доступными способами"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:398
+msgid "Disable UPnP IP address detection"
+msgstr "Определять автоматически (без использования UPnP)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:402
+msgid "Ignore local interface IP address"
+msgstr "Определять автоматически (без использования IP-адресов локальных сетевых интерфейсов)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:406
+msgid "Use SSU IP address detection only"
+msgstr "Определять автоматически (только через SSU)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:410
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:478
+msgid "Specify hostname or IP"
+msgstr "Задать хост или IP вручную"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416
+msgid "Select Interface"
+msgstr "Выбрать сетевой интерфейс"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:430
+msgid "Hidden mode - do not publish IP"
+msgstr "Скрытый режим, не публиковать IP"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:432
+msgid "(prevents participating traffic)"
+msgstr "(такой режим предотвращает транзит трафика)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:434
+msgid "Action when IP changes"
+msgstr "Действие при смене IP"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:438
+msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity"
+msgstr "Режим мобильного компьютера: автоматически менять идентификатор маршрутизатора и UDP-порт после смены IP"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:440
+msgid "Experimental"
+msgstr "экспериментальный режим, повышает анонимность"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:442
+msgid "UDP Configuration:"
+msgstr "Настройки UDP"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:444
+msgid "UDP port:"
+msgstr "UDP-порт:"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:458
+msgid "TCP Configuration"
+msgstr "Настройки TCP"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:464
+msgid "Use auto-detected IP address"
+msgstr "Использовать автоматически определенный IP-адрес"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:466
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:498
+msgid "currently"
+msgstr "сейчас"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:470
+msgid "if we are not firewalled"
+msgstr "если входящий порт не заблокирован"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:474
+msgid "Always use auto-detected IP address (Not firewalled)"
+msgstr "Всегда использовать автоматически определенный IP-адрес"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:484
+msgid "Disable inbound (Firewalled)"
+msgstr "Отключить поддержку входящих соединений"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:488
+msgid "Completely disable"
+msgstr "Полностью отключить поддержку TCP"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:490
+msgid "(select only if behind a firewall that throttles or blocks outbound TCP)"
+msgstr "(используйте этот режим только при наличии в системе брандмауэра, который замедляет или блокирует исходящие TCP-соединения)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:492
+msgid "Externally reachable TCP port"
+msgstr "Доступный из интернета TCP-порт"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:496
+msgid "Use the same port configured for UDP"
+msgstr "Использовать настройки UDP-порта"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:504
+msgid "Specify Port"
+msgstr "Задать порт вручную"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:508
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:338
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:329
+msgid "Note"
+msgstr "ВНИМАНИЕ"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:511
+msgid "Changing these settings will restart your router."
+msgstr "Изменение этих настрок повлечет перезагрузку I2P маршрутизатора."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:517
+msgid "Configuration Help"
+msgstr "Справка по настройкам сети"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:519
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:568
+msgid "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."
+msgstr "Хотя I2P без проблем работает за большинством брандмауэров, скорость и уровень интеграции в сеть будут гораздо лучше, если открыть порт Вашего I2P-маршрутизатора для UDP и TCP соединений из интернета."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:521
+msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you."
+msgstr "Попробуйте открыть доступ на Вашем брандмауэре для произвольных входящих UDP и TCP пакетов на порт I2P."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:523
+msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic."
+msgstr "Ничего страшного, если такой возможности нет. I2P поддерживает UPnP (Universal Plug and Play) и обход NAT с помощью SSU-посредников."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:525
+msgid "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."
+msgstr "Настройки выше, в основном, предназначены для особых ситуаций. Например, некорректно сработал UPnP или возник конфликт брандмауэра и I2P."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527
+msgid "Certain firewalls such as symmetric NATs may not work well with I2P."
+msgstr "Некоторые виды брандмауэров могут быть частично несовместимы с I2P (например, симметричные NAT)."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536
+msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports."
+msgstr "UPnP используется для взаимодействия с IGD (Internet Gateway Devices) при определении внешнего IP-адреса и переадресации портов."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538
+msgid "UPnP support is beta, and may not work for any number of reasons"
+msgstr "Поддержка UPnP находится в разработке (бета-версия). В следующих случаях UPnP возможно не будет работать"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:540
+msgid "No UPnP-compatible device present"
+msgstr "Не обнаружено UPnP-совместимых устройств"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:542
+msgid "UPnP disabled on the device"
+msgstr "UPnP отключено на устройстве"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:544
+msgid "Software firewall interference with UPnP"
+msgstr "Программный брандмауэр мешает корректной работе UPnP"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:546
+msgid "Bugs in the device's UPnP implementation"
+msgstr "UPnP в устройстве реализовано с ошибками "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:548
+msgid "Multiple firewall/routers in the internet connection path"
+msgstr "Несколько маршрутизаторов/брандмауэров на пути к интернету"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:550
+msgid "UPnP device change, reset, or address change"
+msgstr "Смена/сброс UPnP-устройства или изменение адреса "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:552
+msgid "Review the UPnP status here."
+msgstr "Посмотреть статус UPnP можно тут."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:554
+msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect."
+msgstr "UPnP можно включить/выключить в настройках выше. Настройка вступит в силу только после перезагрузки I2P-маршрутизатора."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:556
+msgid "Hostnames entered above will be published in the network database."
+msgstr "Если Вы задали вручную имена хостов, они будут опубликованы в сетевой базе."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:558
+msgid "They are not private."
+msgstr "Не вводите локальные внутрисетевые имена."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:560
+msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1."
+msgstr "Также не вводите IP из локальных диапазонов, такие как 127.0.0.1 или 192.168.1.1."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:562
+msgid "If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially."
+msgstr "Производительность Вашего соединения с I2P-сетью может сильно пострадать, если Вы введете неверный IP-адрес, неверное имя хоста или неправильно настроите NAT/брандмауэр."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:564
+msgid "When in doubt, leave the settings at the defaults."
+msgstr "Если сомневаетесь — оставьте настройки по умолчанию."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:566
+msgid "Reachability Help"
+msgstr "Справка по статусу сетевой доступности"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571
+msgid "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."
+msgstr "Возможно Вы собственноручно открыли порт на Вашем брандмауэре, а I2P все еще показывает, что порт закрыт. Имейте в виду, что брандмауэров может быть несколько, например, локальный программный и внешний аппаратный."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:574
+msgid "If there is an error, the logs may also help diagnose the problem."
+msgstr "В случае ошибок журналы могут помочь диагностировать проблему."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:578
+msgid "Your UDP port does not appear to be firewalled."
+msgstr "Ваш UDP-порт доступен извне."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:582
+msgid "Your UDP port appears to be firewalled."
+msgstr "Ваш UDP-порт заблокирован брандмауэром и не может принимать входящие соединения."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:584
+msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error."
+msgstr "Иногда это сообщение не соответствует действительности (методы обнаружения брандмауэров пока не идеальны)."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:586
+msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port."
+msgstr "Но если оно появляется постоянно, Вам следует проверить, что на всех брандмауэрах порт для I2P открыт."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:588
+msgid "I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections."
+msgstr "Повода для паники нет, I2P сможет работать даже с заблокированным портом при помощи заранее выбранных «посредников» для ретрансляции входящих соединений."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:590
+msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)."
+msgstr "С другой стороны, при работе с открытым портом Вы получите гораздо больше транзитного трафика и сможете помочь сети."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:592
+msgid "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."
+msgstr "Возможно Вы собственноручно открыли порт на Вашем брандмауэре, но ошибка всё равно появляется. Имейте в виду, что Вы можете быть одновременно за программным и аппаратным брандмауэрами или за дополнительным корпоративным брандмауэром (который Вы не можете контролировать)."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:594
+msgid "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."
+msgstr "Кроме того, некоторые маршрутизаторы не могут корректно переадресовать одновременно TCP и UDP на один порт или имеют другие ограничения, мешающие нормальному прохождению трафика до I2P."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:598
+msgid "The router is currently testing whether your UDP port is firewalled."
+msgstr "Маршрутизатор проверяет возможность принятия входящих соединений на UDP-порт."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:602
+msgid "The router is not configured to publish its address, therefore it does not expect incoming connections."
+msgstr "В настройках I2P-маршрутизатора запрещена публикация его адреса, как результат, маршрутизатор не ожидает входящих соединений."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:604
+msgid "WARN - Firewalled and Fast"
+msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Быстрый"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:606
+msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled."
+msgstr "Вы настроили долю транзитного трафика выше 128 килобайт/секунду, при этом у Вас заблокирован входящий порт."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:608
+msgid "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."
+msgstr "I2P будет работать нормально в такой конфигурации, но Вы можете помочь сети разблокировав входящий порт, если у Вас действительно быстрый интернет."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:610
+msgid "WARN - Firewalled and Floodfill"
+msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне и Floodfill"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:612
+msgid "You have configured I2P to be a floodfill router, but you are firewalled."
+msgstr "Вы настроили I2P работать в режиме floodfill-маршрутизатора, при этом у Вас заблокирован входящий порт."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:614
+msgid "For best participation as a floodfill router, you should open your firewall."
+msgstr "Для оптимальной работы в качестве floodfill-маршрутизатора Вам нужно разблокировать входящий порт."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:616
+msgid "WARN - Firewalled with Inbound TCP Enabled"
+msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при включенном на вход TCP"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:618
+msgid "You have configured inbound TCP, however your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well."
+msgstr "Вы разрешили входящие TCP-соединения, но при этом Ваш UDP-порт заблокирован, следовательно, скорее всего, TCP-порт тоже заблокирован."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:620
+msgid "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."
+msgstr "Если у Вас разрешены входящие TCP-соединения при заблокированном TCP-порте, то другие маршрутизаторы не смогут к Вам подсоединиться по TCP. Это повредит производительности сети. "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:622
+msgid "Please open your firewall or disable inbound TCP above."
+msgstr "Пожалуйста, проверьте состояние TCP-порта и разблокируйте его или отключите поддержку входящих TCP-соединений."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:624
+msgid "WARN - Firewalled with UDP Disabled"
+msgstr "ПРЕДУПРЕЖДЕНИЕ - Заблокирован извне при отключенном UDP"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:626
+msgid "You have configured inbound TCP, however you have disabled UDP."
+msgstr "Вы отключили поддержку UDP, однако Ваш TCP-порт заблокирован и в результате Ваш маршрутизатор не может принимать входящие соединения."
+
+# This string intentionally left blank
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:628
+msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections."
+msgstr " "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:630
+msgid "Please open your firewall or enable UDP."
+msgstr "Пожалуйста, разблокируйте порт или включите поддержку UDP."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:632
+msgid "ERR - Clock Skew"
+msgstr "ОШИБКА - Часы сбиты"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:634
+msgid "Your system's clock is skewed, which will make it difficult to participate in the network."
+msgstr "Ваши системные часы сильно отстают/спешат. Это помешает Вашему участию в сети."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:636
+msgid "Correct your clock setting if this error persists."
+msgstr "Поправьте настройки времени, если Вы постоянно видите это сообщение об ошибке."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:638
+msgid "ERR - Private TCP Address"
+msgstr "ОШИБКА - Частный TCP Адрес"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:640
+msgid "You must never advertise an unroutable IP address such as 127.0.0.1 or 192.168.1.1 as your external address."
+msgstr "Не публикуйте локальные IP-адреса (такие как 127.0.0.1 или 192.168.1.1) в качестве своего внешнего IP-адреса."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:642
+msgid "Correct the address or disable inbound TCP above."
+msgstr "Исправьте адрес или отключите поддержку входящих TCP-соединений."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:644
+msgid "ERR - SymmetricNAT"
+msgstr "ОШИБКА - Симметричный NAT"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:646
+msgid "I2P detected that you are firewalled by a Symmetric NAT."
+msgstr "I2P обнаружил, что Вы за симметричным NAT."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:648
+msgid "I2P does not work well behind this type of firewall. You will probably not be able to accept inbound connections, which will limit your participation in the network."
+msgstr "I2P не очень хорошо работает за таким типом брандмауэров. Скорее всего Вы не сможете принимать входящие соединения и это снизит эффективность Вашего участия в сети."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:650
+msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart"
+msgstr "ОШИБКА - UDP-порт уже занят - перенастройте i2np.udp.internalPort=xxxx в дополнительных настройках и перезапустите маршрутизатор"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:652
+msgid "I2P was unable to bind to port 8887 or other configured port."
+msgstr "I2P не удалось связать порт 8887 (или тот, что у Вас настроен)."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:654
+msgid "Check to see if another program is using the configured port. If so, stop that program or configure I2P to use a different port."
+msgstr "Проверьте, не занят ли этот порт другим приложением. Если такое приложение нашлось, остановите его или задайте другой порт в настройках I2P."
+
+# This string intentionally left blank
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:656
+msgid "This may be a transient error, if the other program is no longer using the port."
+msgstr " "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:658
+msgid "However, a restart is always required after this error."
+msgstr "После возникновения этой ошибки необходим перезапуск I2P."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:660
+msgid "ERR - UDP Disabled and Inbound TCP host/port not set"
+msgstr "ОШИБКА - UDP отключено и не заданы адрес/порт для входящих TCP-соединений"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:662
+msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP."
+msgstr "Вы не задали адрес/порт для входящих TCP-соединений и одновременно отключили поддержку UDP, в результате Ваш маршрутизатор не может принимать входящие соединения."
+
+# This string intentionally left blank
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:664
+msgid "Therefore your router cannot accept inbound connections."
+msgstr " "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:666
+msgid "Please configure a TCP host and port above or enable UDP."
+msgstr "Пожалуйста, настройте адрес/порт для TCP или включите поддержку UDP."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:668
+msgid "ERR - Client Manager I2CP Error - check logs"
+msgstr "ОШИБКА - ошибка менеджера I2CP - загляните в журнал ошибок"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:670
+msgid "This is usually due to a port 7654 conflict. Check the logs to verify."
+msgstr "Эта ошибка обычно возникает из-за конфликта порта 7654. Загляните в журнал ошибок."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:672
+msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P."
+msgstr "Не запущена ли у вас ещё одна копия I2P? Остановите вызвавшую конфликт программу и перезапустите I2P."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107
+msgid "config advanced"
+msgstr "дополнительные настройки"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:242
+msgid "I2P Advanced Configuration"
+msgstr "Дополнительные настройки I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:299
+msgid "Advanced I2P Configuration"
+msgstr "Дополнительные настройки I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:309
+msgid "Some changes may require a restart to take effect."
+msgstr "Для вступления некоторых изменений в силу может потребоваться перезагрузка I2P-маршрутизатора."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:106
+msgid "config clients"
+msgstr "настройки клиентов"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:244
+msgid "I2P Client Configuration"
+msgstr "Настройки клиентов I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:311
+msgid "Client Configuration"
+msgstr "Настройки клиентов"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:313
+msgid "The Java clients listed below are started by the router and run in the same JVM."
+msgstr "Перечисленные ниже Java-клиенты запускаются маршрутизатором внутри своей JVM."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:317
+msgid "To change other client options, edit the file"
+msgstr "Для изменения других клиентских настроек отредактируйте файл"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:324
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:344
+msgid "All changes require restart to take effect."
+msgstr "Для вступления изменённых настроек в силу потребуется перезагрузка маршрутизатора."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:336
+msgid "WebApp Configuration"
+msgstr "Настройки веб-апплетов"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338
+msgid "The Java web applications listed below are started by the webConsole client and run in the same JVM as the router. They are usually web applications accessible through the router console. They may be complete applications (e.g. i2psnark),front-ends to another client or application which must be separately enabled (e.g. susidns, i2ptunnel), or have no web interface at all (e.g. addressbook)."
+msgstr "Перечисленные ниже Java веб-апплеты запускаются консолью маршрутизатора внутри JVM маршрутизатора. Обычно эти приложения доступны через консоль маршрутизатора. Это могут быть как самостоятельные приложения (например, i2psnark), так и интерфейсы к другим приложениям или клиентам, которые надо включать отдельно (например, susidns, i2ptunnel), либо могут вообще не иметь веб-интерфейса (например, addressbook)."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:340
+msgid "A web app may also be disabled by removing the .war file from the webapps directory; however the .war file and web app will reappear when you update your router to a newer version, so disabling the web app here is the preferred method."
+msgstr "Веб-апплет также можно отключить, просто удалив .war-файл из директории webapps. Однако при обновлении маршрутизатора и .war-файл и соответствующее приложение будут возвращены на свои места, поэтому отключение веб-апплетов через эту страницу это более корректный способ."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:350
+msgid "Plugin Configuration"
+msgstr "Настройки плагинов"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:352
+msgid "The plugins listed below are started by the webConsole client."
+msgstr "Перечисленные ниже плагины запускаются клиентом webConsole."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:358
+msgid "Plugin Installation"
+msgstr "Установка плагина"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:360
+msgid "To install a plugin, enter the download URL:"
+msgstr "Для установки нового плагина введите URL:"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:106
+msgid "config keyring"
+msgstr "настройки ключей"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:228
+msgid "I2P Keyring Configuration"
+msgstr "Настройки связки ключей I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:294
+msgid "The router keyring is used to decrypt encrypted leaseSets."
+msgstr "Маршрутизатор использует связку ключей для дешифровки зашифрованных LeaseSet."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:297
+msgid "The keyring may contain keys for local or remote encrypted destinations."
+msgstr "Связка ключей может хранить ключи как для локальных, так и для удаленных зашифрованных адресов назначения."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:307
+msgid "Manual Keyring Addition"
+msgstr "Добавление ключей"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:309
+msgid "Enter keys for encrypted remote destinations here."
+msgstr "Здесь добавляются ключи для удаленных адресов назначения."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:312
+msgid "Keys for local destinations must be entered on the"
+msgstr "Ключи для локальных адресов назначения настраиваются в"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:314
+msgid "I2PTunnel page"
+msgstr "Менеджере Туннелей"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:316
+msgid "Dest. name, hash, or full key"
+msgstr "Имя адреса назначения, хэш или полный ключ"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:318
+msgid "Encryption Key"
+msgstr "Ключ шифрования"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:107
+msgid "config logging"
+msgstr "настройки журнала"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:242
+msgid "I2P Logging Configuration"
+msgstr "Настройки журнала I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:299
+msgid "Configure I2P Logging Options"
+msgstr "Настройки журнала I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:301
+msgid "Logging filename"
+msgstr "Файл журнала"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:305
+msgid "(the symbol '@' will be replaced during log rotation)"
+msgstr "(во время ротации журнала символ @ будет заменен на номер)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:307
+msgid "Log record format"
+msgstr "Формат записи"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:311
+msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)"
+msgstr "(d = дата, c = класс, t = тред, p = приоритет, m = сообщение)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313
+msgid "Log date format"
+msgstr "Формат даты"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:317
+msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)"
+msgstr "(MM = месяц, dd = день, HH = часы, mm = минуты, ss = секунды, SSS = миллисекунды)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319
+msgid "Max log file size"
+msgstr "Максимальный размер файла журнала"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:323
+msgid "Default log level"
+msgstr "Уровень детальности журнала"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327
+msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)"
+msgstr "(не рекомендуется использовать уровни DEBUG и INFO для постоянного использования, так как они сильно замедлят работу Вашего маршрутизатора)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329
+msgid "Log level overrides"
+msgstr "Дополнительные настройки"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:106
+msgid "config peers"
+msgstr "настройки пиров"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:228
+msgid "I2P Peer Configuration"
+msgstr "Настройки пиров I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:304
+msgid "Manual Peer Controls"
+msgstr "Ручное управление пирами"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:306
+msgid "Router Hash"
+msgstr "Хеш маршрутизатора"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:310
+msgid "Manually Ban / Unban a Peer"
+msgstr "Вручную забанить/разбанить этого пира"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:312
+msgid "Banning will prevent the participation of this peer in tunnels you create."
+msgstr "Бан запретит участие указанного пира в создаваемых Вами туннелях."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:324
+msgid "Bonuses may be positive or negative, and affect the peer's inclusion in Fast and High Capacity tiers. Fast peers are used for client tunnels, and High Capacity peers are used for some exploratory tunnels. Current bonuses are displayed on the"
+msgstr "Бонусы могут быть положительными и отрицательными и вводятся для управления включением пира в группы «Быстрые» и «Высокоёмкие» (Быстрые пиры используются для построения клиентских туннелей, Высокоёмкие пиры используются для некоторых зондирующих туннелей). Текущие бонусы можно посмотреть на"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:326
+msgid "profiles page"
+msgstr "странице профилей пиров"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:342
+msgid "Adjust peer bonuses"
+msgstr "Изменить бонусы"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:344
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:253
+msgid "Banned Peers"
+msgstr "Забаненные пиры"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:366
+msgid "Banned IPs"
+msgstr "Забаненные IP-адреса"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:106
+msgid "config service"
+msgstr "настройки службы"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:228
+msgid "I2P Service Configuration"
+msgstr "Настройки службы I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:284
+msgid "Shutdown the router"
+msgstr "Выключить маршрутизатор"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:286
+msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes."
+msgstr "Плавное выключение позволяет маршрутизатору перед остановкой отработать все поставленные задачи, но при этом на процесс выключения потребуется дополнительное время."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:288
+msgid "If you need to kill the router immediately, that option is available as well."
+msgstr "Если маршрутизатор должен быть выключен немедленно, Вы можете выбрать соответствующую команду."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:298
+msgid "If you want the router to restart itself after shutting down, you can choose one of the following."
+msgstr "Иногда, Вам нужно перегрузить маршрутизатор (например, после изменения базовых настроек, которые считываются приложением только во время запуска). В этом случае, Вам доступны два варианта. Плавная перезагрузка займет несколько минут (но зато пиры, использующие Ваш маршрутизатор, будут Вам благодарны за терпение). Если Вы не можете ждать, выбирайте немедленную перезагрузку. В случае немедленной перезагрузки маршрутизатор запустится через одну минуту."
+
+# This string intentionally left blank
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:300
+msgid "This is useful in some situations - for example, if you changed some settings that client applications only read at startup, such as the routerconsole password or the interface it listens on."
+msgstr " "
+
+# This string intentionally left blank
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:302
+msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately."
+msgstr " "
+
+# This string intentionally left blank
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:304
+msgid "After tearing down the router, it will wait 1 minute before starting back up again."
+msgstr " "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:314
+msgid "Systray integration"
+msgstr "Интеграция в область уведомлений"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:316
+msgid "On the windows platform, there is a small application to sit in the system tray, allowing you to view the router's status"
+msgstr "Если Вы работаете под Windows, у Вас есть возможность отслеживать статус маршрутизатора через значок в области уведомлений"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:318
+msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)."
+msgstr "(когда-нибудь и клиентские приложения для I2P будут там доступны)."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:320
+msgid "If you are on windows, you can either enable or disable that icon here."
+msgstr "Если Вы пользуетесь I2P под Windows, то здесь Вы можете настроить отображение этого значка."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:326
+msgid "Run on startup"
+msgstr "Автоматический запуск I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:328
+msgid "You can control whether I2P is run on startup or not by selecting one of the following options - I2P will install (or remove) a service accordingly."
+msgstr "Вы можете настроить автоматическую загрузку маршрутизатора при каждом запуске Windows. В зависимости от выбранной кнопки I2P немедленно установит или удалит свою службу из списка служб Windows."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:330
+msgid "If you prefer the command line, you can also run the "
+msgstr "Если Вам удобно работать через командную строку, попробуйте использовать "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:340
+msgid "If you are running I2P as service right now, removing it will shut down your router immediately."
+msgstr "Если служба I2P уже была запущена, при выборе варианта \"Не запускать I2P при старте\" маршрутизатор будет моментально остановлен."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:342
+msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat."
+msgstr "Возможно лучше плавно остановить маршрутизатор и после этого запустить файл C:\\Program Files\\I2P\\uninstall_i2p_service_winnt.bat."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:346
+msgid "Debugging"
+msgstr "Отладка"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:348
+msgid "View the job queue"
+msgstr "Просмотр очереди заданий"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:352
+msgid "At times, it may be helpful to debug I2P by getting a thread dump. To do so, please select the following option and review the thread dumped to wrapper.log."
+msgstr "В некоторых случаях для отладки может пригодиться список состояний тредов I2P-маршутизатора. Для получения такого списка нажмите эту кнопку. Список будет сохранен в файле wrapper.log."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358
+msgid "Launch browser on router startup?"
+msgstr "Запускать браузер при старте I2P?"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:360
+msgid "I2P's main configuration interface is this web console, so for your convenience I2P can launch a web browser on startup pointing at"
+msgstr "Основной интерфейс настройки I2P это веб-консоль. Здесь можно выбрать автоматическое открытие при запуске маршрутизатора страницы"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107
+msgid "config stats"
+msgstr "настройки статистики"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:229
+msgid "I2P Stats Configuration"
+msgstr "Настройки статистики I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:300
+msgid "Configure I2P Stat Collection"
+msgstr "Настройки сбора статистики I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:302
+msgid "Enable full stats?"
+msgstr "Включить полную статистику?"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:309
+msgid "change requires restart to take effect"
+msgstr "изменения вступят в силу только после перезагрузки маршрутизатора"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:311
+msgid "Stat file"
+msgstr "Файл статистики"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:315
+msgid "Filter"
+msgstr "Фильтр"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:317
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:326
+msgid "toggle all"
+msgstr "переключить все"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:328
+msgid "Log"
+msgstr "Журнал"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:330
+msgid "Graph"
+msgstr "График"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:369
+msgid "Advanced filter"
+msgstr "Дополнительный фильтр"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:106
+msgid "config tunnels"
+msgstr "настройки туннелей"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:241
+msgid "I2P Tunnel Configuration"
+msgstr "Настройки туннелей I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:305
+msgid "The default settings work for most people."
+msgstr "Большинству пользователей подойдут настройки по умолчанию. "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:309
+msgid "There is a fundamental tradeoff between anonymity and performance."
+msgstr "Примите во внимание, что между анонимностью и эффективностью есть обратная связь — длинные туннели более анонимны, но хуже работают."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:312
+msgid "Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely reduce performance or reliability."
+msgstr " Туннели длиннее 3 хопов, а также большое количество туннелей (как обычных, так и резервных) могут привести к снижению производительности/надежности работы маршрутизатора."
+
+# This string intentionally left blank
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:315
+msgid "High CPU and/or high outbound bandwidth usage may result."
+msgstr " "
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:318
+msgid "Change these settings with care, and adjust them if you have problems."
+msgstr "Осторожно вносите изменения в существующие настройки и возвращайте в положение по умолчанию, если у Вас возникли проблемы."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:332
+msgid "Exploratory tunnel setting changes are stored in the router.config file."
+msgstr "Настройки зондирующих туннелей сохраняются в файле router.config."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335
+msgid "Client tunnel changes are temporary and are not saved."
+msgstr "Настройки клиентских туннелей нигде не сохраняются и действуют только до перезагрузки."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:337
+msgid "To make permanent client tunnel changes see the"
+msgstr "Для задания перманентных изменений в настройках клиентских туннелей воспользуйтесь"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:339
+msgid "i2ptunnel page"
+msgstr "менеджером туннелей"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:106
+msgid "config UI"
+msgstr "настройки интерфейса"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:241
+msgid "I2P UI Configuration"
+msgstr "Настройки пользовательского интерфейса I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:291
+msgid "Router Console Theme"
+msgstr "Тема оформления консоли маршрутизатора"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:309
+msgid "Theme selection disabled for Internet Explorer, sorry."
+msgstr "Переключатель тем отключен для Internet Explorer, извините"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:311
+msgid "If you're not using IE, it's likely that your browser is pretending to be IE; please configure your browser (or proxy) to use a different User Agent string if you'd like to access the console themes."
+msgstr "Если вы не используете IE, то, скорее всего, Ваш браузер сконфигурирован представляться как IE. Пожалуйста измените строку User-Agent в настройках Вашего браузера (или прокси-сервера), если хотите использовать темы оформления"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315
+msgid "Router Console Language"
+msgstr "Язык консоли маршрутизатора"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:319
+msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help."
+msgstr "Пожалуйста, помогите проекту перевода консоли маршрутизатора! Разработчики доступны для связи на IRC-канале #i2p"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:323
+msgid "Apply"
+msgstr "Применить"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:106
+msgid "config update"
+msgstr "настройки обновления"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:228
+msgid "I2P Update Configuration"
+msgstr "Настройки обновлений I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:302
+msgid "Check for I2P and news updates"
+msgstr "Настройки проверки обновлений и новостей I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:304
+msgid "News & I2P Updates"
+msgstr "Новости и обновления I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:308
+msgid "Update In Progress"
+msgstr "Выполняется обновление"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:316
+msgid "News URL"
+msgstr "URL новостей"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:320
+msgid "Refresh frequency"
+msgstr "Интервал проверки"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:326
+msgid "Update policy"
+msgstr "Режим обновления"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:330
+msgid "Update through the eepProxy?"
+msgstr "Обновлять через I2P-прокси?"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:334
+msgid "eepProxy host"
+msgstr "Адрес I2P-прокси"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:338
+msgid "eepProxy port"
+msgstr "Порт I2P-прокси"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:342
+msgid "Update URLs"
+msgstr "URL обновлений"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:346
+msgid "Trusted keys"
+msgstr "Доверенные ключи"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:350
+msgid "Update with unsigned development builds?"
+msgstr "Обновлять до неподписанной тестовой сборки?"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:354
+msgid "Unsigned Build URL"
+msgstr "URL неподписанной тестовой сборки"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:360
+msgid "I2P updates are disabled because you do not have write permission for the install directory."
+msgstr "Функция автообновления I2P недоступна: у Вас нет прав на запись в директорию I2P."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:366
+msgid "Save"
+msgstr "Сохранить"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:117
+msgid "Page Not Found"
+msgstr "Страница не найдена"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:243
+msgid "Sorry! You appear to be requesting a non-existent Router Console page or resource."
+msgstr "Страница консоли маршрутизатора, которую вы запросили, не существует."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:245
+msgid "Error 404"
+msgstr "Ошибка 404"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:250
+msgid "not found"
+msgstr "не найдено"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:106
+msgid "graphs"
+msgstr "графики"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:228
+msgid "I2P Performance Graphs"
+msgstr "Графики производительности I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:105
+msgid "home"
+msgstr "Домашняя страница"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:105
+msgid "job queue"
+msgstr "очередь заданий"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/jobs_jsp.java:227
+msgid "I2P Router Job Queue"
+msgstr "Очередь заданий маршрутизатора I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:105
+msgid "logs"
+msgstr "журналы"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:227
+msgid "I2P Router Logs"
+msgstr "Журналы маршрутизатора I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:229
+msgid "I2P Version & Running Environment"
+msgstr "Версия I2P & Информация о среде выполнения"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:231
+msgid "Please report bugs on trac.i2p2.i2p."
+msgstr "Сообщайте об ошибках в багтрекер проекта I2P: trac.i2p2.i2p."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:233
+msgid "Please include this information in bug reports"
+msgstr "Пожалуйста, добавляйте эту информацию в Ваши сообщения об ошибках"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:274
+msgid "Critical Logs"
+msgstr "Журнал критических ошибок"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:278
+msgid "Router Logs"
+msgstr "Журнал маршрутизатора"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:284
+msgid "Service (Wrapper) Logs"
+msgstr "Журнал службы (wrapper)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:105
+msgid "network database summary"
+msgstr "сетевая база данных"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/netdb_jsp.java:227
+msgid "I2P Network Database Summary"
+msgstr "Обзор сетевой базы данных I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:109
+msgid "WebApp Not Found"
+msgstr "Веб-апплет не найден"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:231
+msgid "Web Application Not Running"
+msgstr "Веб-приложение не запущено"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:233
+msgid "The requested web application is not running."
+msgstr "Запрошенное веб-приложение не запущено."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:235
+msgid "Please visit the config clients page to start it."
+msgstr "Пожалуйста, запустите его со страницы настроек веб-апплетов."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105
+msgid "peer connections"
+msgstr "обзор пиров"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:227
+msgid "I2P Network Peers"
+msgstr "Соединения с пирами I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:105
+msgid "peer profiles"
+msgstr "профили пиров"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/profiles_jsp.java:227
+msgid "I2P Network Peer Profiles"
+msgstr "Профили пиров сети I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:105
+msgid "statistics"
+msgstr "статистика"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/stats_jsp.java:242
+msgid "I2P Router Statistics"
+msgstr "Статистика маршрутизатора I2P"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/summaryframe_jsp.java:244
+#, java-format
+msgid "Disable {0}s Refresh"
+msgstr "Отключить автообновление панели ({0} сек.)"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:105
+msgid "tunnel summary"
+msgstr "обзор туннелей"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:227
+msgid "I2P Tunnel Summary"
+msgstr "Обзор туннелей I2P"
+
From 906bce637a6d65d639f350114e6b83d09c3bf755 Mon Sep 17 00:00:00 2001
From: echelon
Date: Thu, 8 Jul 2010 08:25:17 +0000
Subject: [PATCH 32/75] new strings, corrections in german translation
---
apps/i2psnark/locale/messages_de.po | 292 ++++++++++----------
apps/routerconsole/locale/messages_de.po | 335 ++++++++++++-----------
2 files changed, 320 insertions(+), 307 deletions(-)
diff --git a/apps/i2psnark/locale/messages_de.po b/apps/i2psnark/locale/messages_de.po
index 0c437790e..cdb9c9337 100644
--- a/apps/i2psnark/locale/messages_de.po
+++ b/apps/i2psnark/locale/messages_de.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P i2psnark\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-13 19:23+0000\n"
-"PO-Revision-Date: 2010-06-15 09:07+0100\n"
+"POT-Creation-Date: 2010-07-08 08:03+0000\n"
+"PO-Revision-Date: 2010-07-08 10:15+0100\n"
"Last-Translator: echelon \n"
"Language-Team: foo \n"
"MIME-Version: 1.0\n"
@@ -208,554 +208,554 @@ msgstr "Download beendet:\"{0}\""
#: ../java/src/org/klomp/snark/SnarkManager.java:729
#, java-format
msgid "size: {0}B"
-msgstr "Größe: \"{0}\"Byte"
+msgstr "Größe: {0}Byte"
#: ../java/src/org/klomp/snark/SnarkManager.java:757
msgid "Unable to connect to I2P!"
msgstr "Konnte nicht mit I2P verbinden!"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:174
msgid "I2PSnark - Anonymous BitTorrent Client"
msgstr "I2PSnark - Anonymer BitTorrent Klient"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:179
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:185
msgid "Torrents"
msgstr "Torrents"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:181
#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:187
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837
msgid "I2PSnark"
msgstr "I2PSnark"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:185
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:191
msgid "Refresh page"
msgstr "Aktualisiere Seite"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:189
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:195
msgid "Forum"
msgstr "Forum"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:234
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1278
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1289
msgid "Status"
msgstr "Status"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:246
msgid "Hide Peers"
msgstr "Verstecke Teilnehmer"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:243
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:249
msgid "Show Peers"
msgstr "Zeige Teilnehmer"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:248
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1260
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:254
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
msgid "Torrent"
msgstr "Torrent"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:250
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:256
msgid "ETA"
msgstr "ETA"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:252
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:258
msgid "Downloaded"
msgstr "Heruntergeladen"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:254
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:260
msgid "Uploaded"
msgstr "Hochgeladen"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:256
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:262
msgid "Down Rate"
msgstr "Down Rate"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:258
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:264
msgid "Up Rate"
msgstr "Up Rate"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:265
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:271
msgid "Stop all torrents and the I2P tunnel"
msgstr "Stoppe alle Torrents und den I2P Tunnel"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:267
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
msgid "Stop All"
msgstr "Stoppe alle"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:272
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:278
msgid "Start all torrents and the I2P tunnel"
msgstr "Starte alle Torrents und den I2P Tunnel"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:274
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:280
msgid "Start All"
msgstr "Starte alle"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:291
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:297
msgid "No torrents loaded."
msgstr "Keine Torrents geladen."
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:296
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:302
msgid "Totals"
msgstr "Total"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:298
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:304
#, java-format
msgid "1 torrent"
msgid_plural "{0} torrents"
msgstr[0] "1 Torrent"
msgstr[1] "{0} Torrents"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:301
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:307
#, java-format
msgid "1 connected peer"
msgid_plural "{0} connected peers"
msgstr[0] "1 verbundener Teilnehmer"
msgstr[1] "{0} verbundene Teilnehmer"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:336
#, java-format
msgid "Torrent file {0} does not exist"
msgstr "Torrent Datei {0} existiert nicht"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:340
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1465
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
#, java-format
msgid "Torrent already running: {0}"
msgstr "Torrent rennt schon: {0}"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:342
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1478
#, java-format
msgid "Torrent already in the queue: {0}"
msgstr "Torrent ist schon in der Queue: {0}"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:352
#, java-format
msgid "Copying torrent to {0}"
msgstr "Kopiere Torrent nach {0}"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:349
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:355
#, java-format
msgid "Unable to copy the torrent to {0}"
msgstr "Konnte den Torrent nicht nach {0} kopieren"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:349
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:355
#, java-format
msgid "from {0}"
msgstr "von {0}"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:357
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:363
#, java-format
msgid "Fetching {0}"
msgstr "Hole {0}"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:367
msgid "Invalid URL - must start with http://"
msgstr "Ungültige URL - muß mit http:// anfangen"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:391
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:397
#, java-format
msgid "Starting up torrent {0}"
msgstr "Starte Torrent {0}"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:411
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:429
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:417
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:435
#, java-format
msgid "Torrent file deleted: {0}"
msgstr "Torrent Datei gelöscht: {0}"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:435
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:445
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:441
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
#, java-format
msgid "Data file deleted: {0}"
msgstr "Daten Datei gelöscht: {0}"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:437
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:447
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:443
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:453
#, java-format
msgid "Data file could not be deleted: {0}"
msgstr "Datendatei konnte nicht gelöscht werden: {0}"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:456
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
#, java-format
msgid "Data dir deleted: {0}"
msgstr "Datenverzeichnis wurde gelöscht: {0}"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:488
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:494
msgid "Error creating torrent - you must select a tracker"
msgstr "Fehler beim Erstellen des Torrent - Sie müssen einen Tracker auswählen"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:503
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
#, java-format
msgid "Torrent created for \"{0}\""
msgstr "Torrent erstellt für \"{0}\""
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:506
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
#, java-format
msgid "Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\""
msgstr "Viele I2P Tracker erfordern eine Registrierung bevor der Torrent verteilt wird - bitte machen Sie dieses vor dem Start von \"{0}\""
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:514
#, java-format
msgid "Error creating a torrent for \"{0}\""
msgstr "Fehler beim Erstellen eines Torrent für \"{0}\""
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:517
#, java-format
msgid "Cannot create a torrent for the nonexistent data: {0}"
msgstr "Kann keinen Torrent für nicht existierende Daten erstellen: {0}"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:514
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:520
msgid "Error creating torrent - you must enter a file or directory"
msgstr "Fehler beim Erstellen des Torrent - Sie müssen eine Datei oder Verzeichnis angeben."
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:517
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:523
msgid "Stopping all torrents and closing the I2P tunnel."
msgstr "Stoppt alle Torrents und beendet den I2P Tunnel."
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:526
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:532
msgid "I2P tunnel closed."
msgstr "I2P Tunnel geschlossen."
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
msgid "Opening the I2P tunnel and starting all torrents."
msgstr "Öffnet den I2P Tunnel und startet alle Torrents."
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:651
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:845
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:851
msgid "Unknown"
msgstr "Unbekannt"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:654
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:659
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:664
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:665
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:670
msgid "TrackerErr"
msgstr "TrackerFehler"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:660
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:671
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:682
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:685
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:690
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:693
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:663
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:666
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:691
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:696
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:699
#, java-format
msgid "1 peer"
msgid_plural "{0} peers"
msgstr[0] "1 Teilnehmer"
msgstr[1] "{0} Teilnehmer"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679
msgid "Seeding"
msgstr "Verteile"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1316
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:682
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1327
msgid "Complete"
msgstr "Komplett"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:679
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:690
msgid "OK"
msgstr "OK"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:692
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:693
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:698
msgid "Stalled"
msgstr "Gedrosselt"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:701
msgid "No Peers"
msgstr "Keine Teilnehmer"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:697
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:703
msgid "Stopped"
msgstr "Gestoppt"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:712
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:718
msgid "View files"
msgstr "Betrachte Dateien"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:714
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:720
msgid "Open file"
msgstr "Öffne Datei"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:744
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:750
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:967
msgid "Tracker"
msgstr "Tracker"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:745
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:751
msgid "Details"
msgstr "Details"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:779
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:785
msgid "Stop the torrent"
msgstr "Stoppe den Torrent"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:781
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787
msgid "Stop"
msgstr "Stop"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:787
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:793
msgid "Start the torrent"
msgstr "Starte den Torrent"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:789
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:795
msgid "Start"
msgstr "Start"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:794
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:800
msgid "Remove the torrent from the active list, deleting the .torrent file"
msgstr "Entfernt den Torrent von der aktiven Liste und löscht die .torrent Datei"
#. Can't figure out how to escape double quotes inside the onclick string.
#. Single quotes in translate strings with parameters must be doubled.
#. Then the remaining single quite must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:799
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805
#, java-format
msgid "Are you sure you want to delete the file \\''{0}.torrent\\'' (downloaded data will not be deleted) ?"
msgstr "Sind Sie sicher, das Sie die Datei \\''{0}.torrent\\'' löschen wollen (heruntergeladene Daten werden nicht gelöscht)?"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:807
msgid "Remove"
msgstr "Entfernen"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:805
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
msgid "Delete the .torrent file and the associated data file(s)"
msgstr "Löscht die .torrent Datei und dazugehörigen Daten Datei(en)"
#. Can't figure out how to escape double quotes inside the onclick string.
#. Single quotes in translate strings with parameters must be doubled.
#. Then the remaining single quite must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:810
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:816
#, java-format
msgid "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?"
msgstr "Sind Sie sicher, das die die Torrentdatei \\''{0}\\'' und alle heruntergeladene Daten löschen wollen?"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:812
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:818
msgid "Delete"
msgstr "Löschen"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:855
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:861
msgid "Seed"
msgstr "Quelle"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:873
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:879
msgid "Uninteresting (The peer has no pieces we need)"
msgstr "Uninteressiert (Der Teilnehmer hat keine Teile die wir benötigen)"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:875
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:881
msgid "Choked (The peer is not allowing us to request pieces)"
msgstr "Gedrosselt (der Teilnehmer hat uns nicht erlaubt Teile anzufordern)"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:889
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:895
msgid "Uninterested (We have no pieces the peer needs)"
msgstr "Uninteressiert (Wir haben keine Teile die der Teilnehmer benötigt)"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:891
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:897
msgid "Choking (We are not allowing the peer to request pieces)"
msgstr "Gedrosselt (Wir erlauben dem Teilnehmer nicht Teile anzufordern)"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:918
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:927
msgid "Add Torrent"
msgstr "Füge Torrent hinzu"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:920
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:929
msgid "From URL"
msgstr "Quell URL"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:925
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:934
msgid "Add torrent"
msgstr "Füge Torrent hinzu"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:928
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:937
#, java-format
msgid "Alternately, you can copy .torrent files to the directory {0}."
msgstr "Alternativ können Sie die .torrent Dateien auch nach {0} kopieren."
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:930
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:939
msgid "Removing a .torrent file will cause the torrent to stop."
msgstr "Entfernen der .torrent Datei stoppt einen Torrent."
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:947
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
msgid "Create Torrent"
msgstr "Erstelle einen Torrent"
#. out.write("From file: \n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:950
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:961
msgid "Data to seed"
msgstr "Daten zum Verteilen"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:965
msgid "File or directory to seed (must be within the specified path)"
msgstr "Datei oder Verzeichnis zum Verteilen (muß im angegebenen Pfad sein)"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:969
msgid "Select a tracker"
msgstr "Wähle einen Tracker"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:971
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:982
msgid "or"
msgstr "oder"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:974
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
msgid "Specify custom tracker announce URL"
msgstr "Geben Sie eine Tracker Announce URL an"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:977
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:988
msgid "Create torrent"
msgstr "Erstelle Torrent"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:995
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1122
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1006
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1133
msgid "Configuration"
msgstr "Einstellungen"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:998
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1009
msgid "Data directory"
msgstr "Daten Verzeichnis"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1001
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1012
msgid "Directory to store torrents and data"
msgstr "Verzeichnis zum speichern von Torrent Dateien und Daten"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1003
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
msgid "Edit i2psnark.config and restart to change"
msgstr "Editiere i2psnark.config zum ändern und starte neu."
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1007
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1018
msgid "Auto start"
msgstr "Auto Start"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1011
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
msgid "If checked, automatically start torrents that are added"
msgstr "Wenn markiert werden hinzugefügte Torrents automatisch gestartet."
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1015
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
msgid "Startup delay"
msgstr "Startverzögerung"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1017
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1028
msgid "minutes"
msgstr "Minuten"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1052
msgid "Total uploader limit"
msgstr "Totales Uploader Limit."
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
msgid "peers"
msgstr "Teilnehmer"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1048
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1059
msgid "Up bandwidth limit"
msgstr "Upload Bandbreiten Limit."
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1051
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1062
msgid "Half available bandwidth recommended."
msgstr "Halbe verfügbare Bandbreite ist empfohlen."
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1064
msgid "View or change router bandwidth"
msgstr "Router Bandbreite ansehen oder ändern"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
msgid "Use open trackers also"
msgstr "Benutze auch Open Tracker"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
msgid "If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"
msgstr "Wenn markiert wird der Torrent neben dem angegebenen Tracker auch bei den Open Trackers bekannt gegeben."
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1065
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1076
msgid "Open tracker announce URLs"
msgstr "Open Tracker Announce URL"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1077
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1088
msgid "Inbound Settings"
msgstr "Eingangseinstellungen"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1083
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1094
msgid "Outbound Settings"
msgstr "Ausgangseinstellungen"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1101
msgid "I2CP host"
msgstr "I2CP Host"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1106
msgid "I2CP port"
msgstr "I2CP Port"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1107
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1118
msgid "I2CP options"
msgstr "I2CP Optionen"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1113
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1124
msgid "Save configuration"
msgstr "Speichere Einstellungen"
#. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1130
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1141
#, java-format
msgid "1 hop"
msgid_plural "{0} hops"
msgstr[0] "1 Zwischenstation"
msgstr[1] "{0} Zwischenstationen"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1131
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
#, java-format
msgid "1 tunnel"
msgid_plural "{0} tunnels"
msgstr[0] "1 Tunnel"
msgstr[1] "{0} Tunnel"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1272
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1283
msgid "Up to higher level directory"
msgstr "Eine Hierachie nach oben"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
msgid "File"
msgstr "Datei"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1277
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
msgid "Size"
msgstr "Größe"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1300
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1311
msgid "Directory"
msgstr "Daten Verzeichnis"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1305
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1316
msgid "Torrent not found?"
msgstr "Torrentdatei nicht gefunden?"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1313
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1324
msgid "File not found in torrent?"
msgstr "Datei nicht gefunden im Torrent?"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1319
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1330
msgid "complete"
msgstr "Komplett"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1331
msgid "bytes remaining"
msgstr "Bytes noch übrig"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1445
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1456
#, java-format
msgid "Torrent fetched from {0}"
msgstr "Torrent geholt von {0}"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1484
#, java-format
msgid "Torrent at {0} was not valid"
msgstr "Torrent bei {0} war nicht gültig"
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1478
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
#, java-format
msgid "Torrent was not retrieved from {0}"
msgstr "Torrent wurde nicht geladen von {0}"
diff --git a/apps/routerconsole/locale/messages_de.po b/apps/routerconsole/locale/messages_de.po
index 9b0caa203..05c13a037 100644
--- a/apps/routerconsole/locale/messages_de.po
+++ b/apps/routerconsole/locale/messages_de.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P routerconsole\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-14 07:06+0000\n"
-"PO-Revision-Date: 2010-06-14 11:49+0100\n"
+"POT-Creation-Date: 2010-07-08 08:03+0000\n"
+"PO-Revision-Date: 2010-07-08 10:18+0100\n"
"Last-Translator: echelon \n"
"Language-Team: echelon , Sperreingang \n"
"MIME-Version: 1.0\n"
@@ -85,46 +85,46 @@ msgstr "Akzeptiere Tunnelanfragen"
msgid "Rejecting tunnels"
msgstr "Weise Tunnelanfragen zurück"
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:49
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:48
msgid "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the FAQ about reseeding manually."
msgstr "Stellen Sie bitte sicher, das nichts den HTTP Transfer blockiert, kontrollieren Sie die Berichte und wenn gar nichts hilft, lesen Sie die FAQ über das manuelle Reseeden."
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:81
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:80
msgid "Reseeding"
msgstr "Reseeden"
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:145
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:144
msgid "Reseeding: fetching seed URL."
msgstr "Reseed: Hole die Seed URL."
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:151
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:150
msgid "Last reseed failed fully (failed reading seed URL)."
msgstr "Letztes Reseed komplett gescheitert (konnte die Seed URL nicht lesen)."
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:177
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:176
msgid "Last reseed failed fully (no routerInfo URLs at seed URL)."
msgstr "Letztes Reseed komplett gescheitert (keine RouterInfo URLs bei der Seed URL)."
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:190
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:189
#, java-format
msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
msgstr "Reseed: holen von Router Informationen von Seed URL {0} erfolgreich, {1} Fehler)."
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:211
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
#, java-format
msgid "Last reseed failed partly ({0}% of {1})."
msgstr "Letzes Reseed teilweise gescheitert ({0}% von {1})."
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:216
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:215
#, java-format
msgid "Last reseed failed ({0}% of {1})."
msgstr "Letzes Reseed gescheitert ({0}% von {1})."
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:226
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:225
msgid "Last reseed failed fully (exception caught)."
msgstr "Letzes Reseed gescheitert (Fehler aufgetreten)."
-#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:498
+#: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:510
msgid "NetDb entry"
msgstr "NetzDB Eintrag"
@@ -159,7 +159,7 @@ msgstr "Definitionen"
#: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:81
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:187
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:237
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238
msgid "Peer"
msgstr "Teilnehmer"
@@ -171,7 +171,7 @@ msgstr "Der entfernte Teilnehmer, über Router Prüfsumme erkannt"
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:716
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1889
msgid "Dir"
-msgstr "Verzeichnis"
+msgstr "Richtung"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:531
msgid "Inbound connection"
@@ -257,7 +257,7 @@ msgstr "Die Rundenzeit zum Server und zurück in Millisekunden"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548
#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:1912
msgid "Dev"
-msgstr "Entwickler"
+msgstr "Abweichung"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:548
msgid "The standard deviation of the round trip time in milliseconds"
@@ -1414,8 +1414,8 @@ msgid "Zimbabwe"
msgstr "Simbabwe"
#: ../java/src/net/i2p/router/web/CSSHelper.java:57
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:30
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:32
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:34
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:36
#: ../java/strings/Strings.java:29
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/index_jsp.java:234
msgid "I2P Router Console"
@@ -1503,7 +1503,7 @@ msgstr "Falscher Index für den Klienten"
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218
#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:387
#: ../java/src/net/i2p/router/web/SummaryHelper.java:379
msgid "Client"
msgstr "Klient"
@@ -1612,8 +1612,8 @@ msgid "Plugin"
msgstr "Zusatzprogramm"
#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:95
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:165
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:268
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
msgid "Version"
msgstr "Version"
@@ -1646,15 +1646,15 @@ msgid "Stop"
msgstr "Stop"
#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:196
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:62
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:81
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:312
msgid "Check for updates"
msgstr "Auf Aktualisierungen prüfen"
#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:213
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:220
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:237
msgid "Update"
msgstr "Aktualisierung"
@@ -1744,6 +1744,7 @@ msgid "WARN"
msgstr "WARNUNG"
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:199
msgid "Network"
msgstr "Netzwerk"
@@ -1752,8 +1753,8 @@ msgid "Service"
msgstr "Service"
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:90
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:359
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:100
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
#: ../java/strings/Strings.java:72
msgid "Tunnels"
msgstr "Tunnel"
@@ -1776,15 +1777,15 @@ msgid "Logging"
msgstr "Statusmitschnitt"
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:96
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:238
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:106
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:255
#: ../java/strings/Strings.java:67
msgid "Peers"
msgstr "Teilnehmer"
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:373
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:382
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:142
msgid "Stats"
msgstr "Statistiken"
@@ -2266,47 +2267,47 @@ msgstr "Russisch"
msgid "Swedish"
msgstr "Schwedisch"
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:69
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:88
msgid "Update available, attempting to download now"
msgstr "Aktualisierung verfügbar, versuche diese zu downloaden"
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:71
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:90
msgid "Update available, click button on left to download"
msgstr "Aktualisierung verfügbar, klicke auf den Knopf links zum download"
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:77
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:96
msgid "No update available"
msgstr "Keine Aktualisierung verfügbar"
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:85
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:104
msgid "Updating news URL to"
msgstr "Aktualisiere die Adresse für die Neuigkeiten auf"
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:93
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:112
msgid "Updating proxy host to"
msgstr "Aktualisiere den Proxyhost auf"
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:101
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:120
msgid "Updating proxy port to"
msgstr "Aktualisiere den Port des Proxy auf"
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:114
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:133
msgid "Updating refresh frequency to"
msgstr "Aktualisiere die Frequenz des Neuladens auf"
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:121
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:140
msgid "Updating update policy to"
msgstr "Aktualisiere die Aktualisierungsrichtlinien auf"
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:130
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:149
msgid "Updating update URLs."
msgstr "Aktualisiere die Aktualisierungsadressen auf"
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:139
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
msgid "Updating trusted keys."
msgstr "Aktualisiere die vertrauten Schlüssel"
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:147
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:166
msgid "Updating unsigned update URL to"
msgstr "Aktualisiere die Adresse der nicht vertrauten Aktualisierungsdatei auf"
@@ -2359,7 +2360,7 @@ msgstr "Zeitraum"
#: ../java/src/net/i2p/router/web/GraphHelper.java:133
msgid "Plot averages"
-msgstr "Zeichnet die MIttelwerte"
+msgstr "Zeichnet die Mittelwerte"
#: ../java/src/net/i2p/router/web/GraphHelper.java:134
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:416
@@ -2413,173 +2414,173 @@ msgstr "Zeichne neu"
msgid "File location"
msgstr "Ort der Datei"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:75
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:77
msgid "Network Database RouterInfo Lookup"
msgstr "RouterInfo in der Netzwerkdatenbank anschauen"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:90
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:92
#: ../java/strings/Strings.java:68
msgid "Router"
msgstr "Router"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:90
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:92
msgid "not found in network database"
msgstr "nicht in der Netzwerkdatenbank gefunden"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:102
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:210
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:104
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:212
msgid "Network Database Contents"
msgstr "Netzwerkdatenbank Inhalt"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:103
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
msgid "View RouterInfo"
msgstr "RouterInfo anschauen"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:104
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:106
msgid "LeaseSets"
msgstr "LeaseSets"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:126
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:128
msgid "LeaseSet"
msgstr "LeaseSet"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:128
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:130
msgid "Local"
msgstr "Lokal"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:130
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:132
msgid "Unpublished"
msgstr "Unveröffentlicht"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:131
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:138
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:133
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:140
msgid "Destination"
msgstr "Ziel"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:148
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:150
#, java-format
msgid "Expires in {0}"
msgstr "Wird in {0} ungültig"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:150
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:152
#, java-format
msgid "Expired {0} ago"
msgstr "Wurde vor {0} ungültig"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:162
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:164
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
msgid "Gateway"
msgstr "Schnittstelle"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:162
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:164
msgid "Lease"
msgstr "Lease"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:164
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:166
msgid "Tunnel"
msgstr "Tunnel"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:210
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:212
msgid "View LeaseSets"
msgstr "Zeige die LeaseSets"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:212
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:214
msgid "Not initialized"
msgstr "Nicht initialisiert"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:221
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:223
msgid "Routers"
msgstr "Router"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:223
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:225
msgid "Show all routers"
msgstr "Zeige alle Router"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:225
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:227
msgid "Show all routers with full stats"
msgstr "Zeige alle Router mit kompletten Statistiken"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:260
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:262
msgid "Network Database Router Statistics"
msgstr "Statistiken der Netzwerkdatenbank Router"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:266
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:298
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:268
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:282
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:300
msgid "Count"
msgstr "Anzahl"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:282
msgid "Transports"
msgstr "Transporte"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:298
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:300
msgid "Country"
msgstr "Land"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:339
msgid "Our info"
msgstr "Unsere Informationen"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:332
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:341
msgid "Peer info for"
msgstr "Informationen über den Kontakt"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:336
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:345
msgid "Full entry"
msgstr "Ganzer Eintrag"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:351
#: ../java/src/net/i2p/router/web/SummaryHelper.java:110
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:600
msgid "Hidden"
msgstr "Versteckt"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:342
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:351
msgid "Updated"
msgstr "Aktualisiert"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:343
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:346
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:355
#, java-format
msgid "{0} ago"
msgstr "vor {0}"
#. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:345
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:349
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:354
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:358
msgid "Published"
msgstr "Veröffentlicht"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:351
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:360
msgid "Address(es)"
msgstr "Adresse(n)"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:364
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:373
msgid "cost"
msgstr "Kosten"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:388
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:397
msgid "Hidden or starting up"
msgstr "Versteckt oder Startphase"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:388
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:397
msgid "SSU"
msgstr "SSU"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:388
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:397
msgid "SSU with introducers"
msgstr "SSU mit Hilsrouter"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:389
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:398
msgid "NTCP"
msgstr "NTCP"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:389
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:398
msgid "NTCP and SSU"
msgstr "NTCP und SSU"
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:389
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:398
msgid "NTCP and SSU with introducers"
msgstr "NTCP und SSU mit Hilfsrouter"
@@ -2815,7 +2816,7 @@ msgid "Failing"
msgstr "Versagend"
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281
msgid "Integrated"
msgstr "Integriert"
@@ -3064,227 +3065,239 @@ msgstr "Mittelwert der Maximalwerte"
msgid "lifetime average value"
msgstr "Durchschnitt über Lebenszeit"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:44
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:40
+msgid "I2P Router Help & FAQ"
+msgstr "Hilfe zum I2P-Router & FAQ"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:42
+msgid "Help & FAQ"
+msgstr "Hilfe & FAQ"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:54
msgid "Configure startup of clients and webapps (services); manually start dormant services"
msgstr "Einstellungen zu Klienten und WebApplikationen (Services); manuelles Starten der ruhenden Services"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:46
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:56
msgid "I2P Services"
msgstr "I2P Dienste"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:52
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:62
msgid "Manage your I2P hosts file here (I2P domain name resolution)"
msgstr "Verwalten Sie Ihre I2P Adressen hier (I2P-Namensauflösung)"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:54
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:64
msgid "Addressbook"
msgstr "Adressbuch"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:58
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:68
msgid "Built-in anonymous BitTorrent Client"
msgstr "Integrierter anonymer BitTorrent Klient"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:60
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:70
msgid "Torrents"
msgstr "BitTorrent"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:64
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:74
msgid "Anonymous webmail client"
msgstr "Webmail-Klient für anonymes E-Mail"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:66
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:76
msgid "Webmail"
msgstr "Webmail"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:70
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:80
msgid "Anonymous resident webserver"
msgstr "Residenter anonymoer Webserver"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:82
msgid "Webserver"
msgstr "Webserver"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:80
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:90
msgid "Configure I2P Router"
msgstr "Konfiguration des I2P-Routers"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:82
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:92
msgid "I2P Internals"
msgstr "I2P Interna"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:88
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:357
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:98
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:374
msgid "View existing tunnels and tunnel build status"
msgstr "Betrachte die existierenden Tunnel und den Status der Tunnelerstellung"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:94
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:236
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:104
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
msgid "Show all current peer connections"
msgstr "Zeige alle derzeitigen Verbindungen zu Teilnehmern"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:100
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:110
msgid "Show recent peer performance profiles"
msgstr "Zeige aktuelle Performanceprofile der Kontakte"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:102
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:112
msgid "Profiles"
msgstr "Profile"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:106
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:116
msgid "Show list of all known I2P routers"
msgstr "Eine Liste aller bekannten I2P Router anzeigen"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:108
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:118
msgid "NetDB"
msgstr "NetzDB"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:112
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
msgid "Health Report"
msgstr "Report"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:114
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:124
msgid "Logs"
msgstr "Berichte"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:124
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:134
msgid "Graph router performance"
msgstr "Graphische Darstellung der Routerperformance"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:126
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:136
msgid "Graphs"
msgstr "Graphen"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
msgid "Textual router performance statistics"
msgstr "Routerperformance-Statistiken in Textform"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:136
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
#: ../java/src/net/i2p/router/web/SummaryHelper.java:365
msgid "Local Destinations"
msgstr "Lokale Ziele"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:148
#: ../java/strings/Strings.java:62
msgid "I2PTunnel"
msgstr "I2PTunnel"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:149
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:159
msgid "I2P Router Help"
msgstr "Hilfe zum I2P-Router"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:151
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:161
msgid "General"
msgstr "Grundsätzliches"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:154
-msgid "Your unique I2P router identity is"
-msgstr "Ihre eindeutige I2P-Routeridentifikation ist"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:158
-msgid "never reveal it to anyone"
-msgstr "verraten Sie sie niemanden!"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:160
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
msgid "Local Identity"
msgstr "Lokale Identität"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:170
+msgid "Your unique I2P router identity is"
+msgstr "Ihre eindeutige I2P-Routeridentifikation ist"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
+msgid "never reveal it to anyone"
+msgstr "verraten Sie sie niemanden!"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:176
+msgid "show"
+msgstr "zeige"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:187
msgid "How long we've been running for this session"
msgstr "Wie lange ist der I2P Router aktiv seit letztem Neustart"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:175
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
msgid "Uptime"
msgstr "Laufzeit"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:182
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
msgid "Help with configuring your firewall and router for optimal I2P performance"
msgstr "Hilfe bei der Konfiguration Ihrer Firewall und Router für eine optimale Leistung von I2P"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:226
msgid "Download"
msgstr "Download"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
msgid "Download Unsigned"
msgstr "Unsigniertes Paket downloaden"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:244
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
msgid "Active"
msgstr "Aktiv"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:252
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
msgid "Fast"
msgstr "Schnell"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
msgid "High capacity"
msgstr "Hohe Kapazität"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287
msgid "Known"
msgstr "Bekannt"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:302
msgid "Help with firewall configuration"
msgstr "Hilfe mit der Firewalleinstellung"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
msgid "Check NAT/firewall"
msgstr "Kontrolliere NAT / Firewall"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:307
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:324
msgid "Reseed"
msgstr "Hole neue Kontaktinformationen"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:324
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:341
msgid "Configure router bandwidth allocation"
msgstr "Konfigurieren der Bandbreitenzuweisung des Routers"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:343
msgid "Bandwidth in/out"
msgstr "Bandbreite ein- / ausgehend"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:342
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:359
msgid "Total"
msgstr "Total"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:349
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:366
msgid "Used"
msgstr "Genutzt"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:364
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
msgid "Exploratory"
msgstr "Erkundung"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
msgid "Participating"
msgstr "Partizipierend"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:382
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
msgid "Share ratio"
msgstr "Verhältnis fremde/eigene Tunnel"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:405
msgid "What's in the router's job queue?"
msgstr "Was ist in der Aufgabenliste des Routers?"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:407
msgid "Congestion"
msgstr "Staumeldungen"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:395
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
msgid "Job lag"
msgstr "Aufgabenverzug"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:401
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:418
msgid "Message delay"
msgstr "Meldungsverzug"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:407
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:424
msgid "Tunnel lag"
msgstr "Tunnelverzug"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:413
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:430
msgid "Backlog"
msgstr "Rückstau"
@@ -3426,7 +3439,7 @@ msgstr "Jetzt"
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:41
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:63
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:275
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:280
msgid "configure"
msgstr "ändere"
@@ -3526,31 +3539,31 @@ msgstr "ausgehend"
msgid "No tunnels; waiting for the grace period to end."
msgstr "Keine Tunnel; warte bie die Gnadenfrist abgelaufen ist"
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:218
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:219
msgid "in"
msgstr "ein"
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:219
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:220
msgid "out"
msgstr "aus"
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:236
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:237
msgid "Tunnel Counts By Peer"
msgstr "Anzahl der Tunnel nach Kontakten"
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:237
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238
msgid "% of total"
msgstr "% von allen"
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:237
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238
msgid "Our Tunnels"
msgstr "Unsere Tunnels"
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:237
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:238
msgid "Participating Tunnels"
msgstr "Teilnehmende Tunnel"
-#: ../java/src/net/i2p/router/web/TunnelRenderer.java:255
+#: ../java/src/net/i2p/router/web/TunnelRenderer.java:256
msgid "Totals"
msgstr "Total"
@@ -4999,15 +5012,15 @@ msgstr "Bitte berichten Sie über Fehler und Bugs auf
Date: Thu, 8 Jul 2010 14:41:56 +0000
Subject: [PATCH 33/75] Dutch translation for RouterConsole sidebar labels
---
apps/routerconsole/locale/messages_nl.po | 929 ++++++++++++++++-------
1 file changed, 662 insertions(+), 267 deletions(-)
diff --git a/apps/routerconsole/locale/messages_nl.po b/apps/routerconsole/locale/messages_nl.po
index a941d07dd..ffaa50d17 100644
--- a/apps/routerconsole/locale/messages_nl.po
+++ b/apps/routerconsole/locale/messages_nl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: I2P routerconsole\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-07-04 13:00+0000\n"
+"POT-Creation-Date: 2010-07-08 14:29+0000\n"
"PO-Revision-Date: 2010-07-04 15:04+0100\n"
"Last-Translator: duck \n"
"Language-Team: duck , monkeybrains \n"
@@ -85,42 +85,51 @@ msgstr "Tunnels geaccepteerd"
msgid "Rejecting tunnels"
msgstr "Tunnels geweigerd"
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:49
-msgid "Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the FAQ about reseeding manually."
-msgstr "Controlleer of uitgaand HTTP verkeer niet geblokkeerd wordt, kijk in de logs en wanneer niets anders helpt, zie de FAQ over handmatig reseeden."
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:48
+msgid ""
+"Ensure that nothing blocks outbound HTTP, check logs and if nothing helps, read the FAQ about reseeding manually."
+msgstr ""
+"Controlleer of uitgaand HTTP verkeer niet geblokkeerd wordt, kijk in de logs en wanneer niets anders helpt, "
+"zie de FAQ over "
+"handmatig reseeden."
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:81
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:80
msgid "Reseeding"
msgstr "Reseeden"
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:145
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:144
msgid "Reseeding: fetching seed URL."
msgstr "Reseed: opvragen seed URL."
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:151
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:150
msgid "Last reseed failed fully (failed reading seed URL)."
msgstr "Laatste reseed volledig gefaald (kan seed URL niet lezen)."
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:177
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:176
msgid "Last reseed failed fully (no routerInfo URLs at seed URL)."
msgstr "Laatste reseed volledig gefaald (geen routerInfo URLs op de seed URL)."
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:190
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:189
#, java-format
-msgid "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
-msgstr "Reseeden: opvragen router info van seed URL ({0} succesvol, {1} fouten)."
+msgid ""
+"Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
+msgstr ""
+"Reseeden: opvragen router info van seed URL ({0} succesvol, {1} fouten)."
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:211
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
#, java-format
msgid "Last reseed failed partly ({0}% of {1})."
msgstr "Laatste reseed gedeeltelijk gefaald ({0}% van {1})."
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:216
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:215
#, java-format
msgid "Last reseed failed ({0}% of {1})."
msgstr "Laatste reseed gefaald ({0}% van {1})."
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:226
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:225
msgid "Last reseed failed fully (exception caught)."
msgstr "Laatste reseed volledig gefaald (exception opgetreden)."
@@ -183,11 +192,15 @@ msgstr "Uitgaande connectie"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:535
msgid "They offered to introduce us (help other peers traverse our firewall)"
-msgstr "Ze hebben aangeboden ons te introduceren (helpt andere peers om door onze firewall te komen)"
+msgstr ""
+"Ze hebben aangeboden ons te introduceren (helpt andere peers om door onze "
+"firewall te komen)"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:537
msgid "We offered to introduce them (help other peers traverse their firewall)"
-msgstr "We hebben aangeboden ze te introduceren (helpt andere peers om door hun firewall te komen)"
+msgstr ""
+"We hebben aangeboden ze te introduceren (helpt andere peers om door hun "
+"firewall te komen)"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:538
msgid "How long since a packet has been received / sent"
@@ -208,7 +221,8 @@ msgstr "In/Uit"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:539
msgid "The smoothed inbound / outbound transfer rate (KBytes per second)"
-msgstr "De afgevlakte inkomende / uitgaande overdrachtsnelheid (KBytes per seconde)"
+msgstr ""
+"De afgevlakte inkomende / uitgaande overdrachtsnelheid (KBytes per seconde)"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:540
msgid "How long ago this connection was established"
@@ -231,8 +245,12 @@ msgid "The difference between the peer's clock and your own"
msgstr "Het verschil tussen de klok van de peer en je eigen"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:542
-msgid "The congestion window, which is how many bytes can be sent without an acknowledgement"
-msgstr "Het congestion window, hoeveel bytes verzonden kunnen worden zonder een bevestiging"
+msgid ""
+"The congestion window, which is how many bytes can be sent without an "
+"acknowledgement"
+msgstr ""
+"Het congestion window, hoeveel bytes verzonden kunnen worden zonder een "
+"bevestiging"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:543
msgid "The number of sent messages awaiting acknowledgement"
@@ -244,7 +262,9 @@ msgstr "Het maximum aantal berichten om gelijktijdig te verzenden"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:545
msgid "The number of pending sends which exceed congestion window"
-msgstr "Het aantal wachtende uitgaande berichten dat het congestion window overschrijdt"
+msgstr ""
+"Het aantal wachtende uitgaande berichten dat het congestion window "
+"overschrijdt"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:546
msgid "The slow start threshold"
@@ -268,8 +288,12 @@ msgid "The retransmit timeout in milliseconds"
msgstr "De herzend time-out in milliseconden"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:550
-msgid "Current maximum send packet size / estimated maximum receive packet size (bytes)"
-msgstr "Huidige maximum verzonden pakket grootte / verwachte maximimum ontvangen pakket grootte (bytes)"
+msgid ""
+"Current maximum send packet size / estimated maximum receive packet size "
+"(bytes)"
+msgstr ""
+"Huidige maximum verzonden pakket grootte / verwachte maximimum ontvangen "
+"pakket grootte (bytes)"
#: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:551
#: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:721
@@ -1372,8 +1396,7 @@ msgstr "Saint Vincent en de Grenadines"
msgid "Venezuela"
msgstr "Venezuela"
-#: ../java/build/Countries.java:229
-#: ../java/build/Countries.java:230
+#: ../java/build/Countries.java:229 ../java/build/Countries.java:230
msgid "Virgin Islands"
msgstr "Virgin-eilanden"
@@ -1432,8 +1455,12 @@ msgstr "Configuratie succesvol opgeslagen"
#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
#: ../java/src/net/i2p/router/web/ConfigNetHandler.java:268
-msgid "Error saving the configuration (applied but not saved) - please see the error logs"
-msgstr "Fout bij opslaan van de configuratie (toegepast, maar niet opgeslagen) - kijk in de fout logs"
+msgid ""
+"Error saving the configuration (applied but not saved) - please see the "
+"error logs"
+msgstr ""
+"Fout bij opslaan van de configuratie (toegepast, maar niet opgeslagen) - "
+"kijk in de fout logs"
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:34
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:334
@@ -1492,7 +1519,8 @@ msgid "New client added"
msgstr "Nieuwe client toegevoegd"
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:188
-msgid "Client configuration saved successfully - restart required to take effect."
+msgid ""
+"Client configuration saved successfully - restart required to take effect."
msgstr "Client configuratie succesvol opgeslagen - herstart nodig"
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:202
@@ -1503,7 +1531,7 @@ msgstr "Foute client index."
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:207
#: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:218
#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:38
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:374
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:387
#: ../java/src/net/i2p/router/web/SummaryHelper.java:379
msgid "Client"
msgstr "Client"
@@ -1613,7 +1641,7 @@ msgstr "Plugin"
#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:95
#: ../java/src/net/i2p/router/web/NetDbRenderer.java:268
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
msgid "Version"
msgstr "Versie"
@@ -1653,8 +1681,8 @@ msgstr "Controlleer op updates"
#: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:197
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:217
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:237
msgid "Update"
msgstr "Update"
@@ -1712,12 +1740,19 @@ msgid "Invalid destination"
msgstr "Ongeldige bestemming"
#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:46
-msgid "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN"
-msgstr "Voeg additionele logging regels boven toe. Bijvoorbeeld: net.i2p.router.tunnel=WARN"
+msgid ""
+"Add additional logging statements above. Example: net.i2p.router.tunnel=WARN"
+msgstr ""
+"Voeg additionele logging regels boven toe. Bijvoorbeeld: net.i2p.router."
+"tunnel=WARN"
#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:47
-msgid "Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN"
-msgstr "Of stop regels in het logger.config bestand. Bijvoorbeeld: logger.record.net.i2p.router.tunnel=WARN"
+msgid ""
+"Or put entries in the logger.config file. Example: logger.record.net.i2p."
+"router.tunnel=WARN"
+msgstr ""
+"Of stop regels in het logger.config bestand. Bijvoorbeeld: logger.record.net."
+"i2p.router.tunnel=WARN"
#: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:48
msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT"
@@ -1744,6 +1779,7 @@ msgid "WARN"
msgstr "WARN"
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:199
msgid "Network"
msgstr "Netwerk"
@@ -1752,8 +1788,8 @@ msgid "Service"
msgstr "Service"
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:18
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:94
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:363
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:100
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
#: ../java/strings/Strings.java:72
msgid "Tunnels"
msgstr "Tunnels"
@@ -1776,15 +1812,15 @@ msgid "Logging"
msgstr "Logging"
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:100
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:242
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:106
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:255
#: ../java/strings/Strings.java:67
msgid "Peers"
msgstr "Peers"
#: ../java/src/net/i2p/router/web/ConfigNavHelper.java:19
#: ../java/src/net/i2p/router/web/NetDbRenderer.java:382
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:136
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:142
msgid "Stats"
msgstr "Statistieken"
@@ -2140,8 +2176,12 @@ msgid "Failed to update the stat filter and location"
msgstr "Kan de statistiek filter en locatie niet updaten"
#: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:121
-msgid "Graph list updated, may take up to 60s to be reflected here and on the Graphs Page"
-msgstr "Grafiek lijst geupdate, kan 60s duren voordat dit op deze plek en de Grafiek Pagina door komt"
+msgid ""
+"Graph list updated, may take up to 60s to be reflected here and on the Graphs Page"
+msgstr ""
+"Grafiek lijst geupdate, kan 60s duren voordat dit op deze plek en de Grafiek Pagina door komt"
#. the count isn't really correct anyway, since we don't check for actual changes
#. addFormNotice("Updated settings for " + updated + " pools.");
@@ -2155,8 +2195,12 @@ msgstr "Exploratory tunnel configuratie succesvol opgeslagen."
#: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:144
#: ../java/src/net/i2p/router/web/ConfigUIHandler.java:36
-msgid "Error saving the configuration (applied but not saved) - please see the error logs."
-msgstr "Fout bij opslaan van de configuratie (toegepast maar niet opgeslagen) - kijk in de fout logs."
+msgid ""
+"Error saving the configuration (applied but not saved) - please see the "
+"error logs."
+msgstr ""
+"Fout bij opslaan van de configuratie (toegepast maar niet opgeslagen) - kijk "
+"in de fout logs."
#. * dummies for translation
#: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14
@@ -2330,8 +2374,12 @@ msgid "Download, verify, and restart"
msgstr "Download, controlleer en herstart"
#: ../java/src/net/i2p/router/web/FormHandler.java:163
-msgid "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit."
-msgstr "Ongeldig formulier verzonden, mogelijk omdat je de 'terug' of 'vernieuw' knop in je browser hebt gebruikt. Probeer opnieuw te verzenden."
+msgid ""
+"Invalid form submission, probably because you used the 'back' or 'reload' "
+"button on your browser. Please resubmit."
+msgstr ""
+"Ongeldig formulier verzonden, mogelijk omdat je de 'terug' of 'vernieuw' "
+"knop in je browser hebt gebruikt. Probeer opnieuw te verzenden."
#: ../java/src/net/i2p/router/web/GraphHelper.java:82
msgid "Combined bandwidth graph"
@@ -2686,8 +2734,12 @@ msgid "This plugin requires Java version {0} or higher"
msgstr "Deze plugin heeft Java versie {0} of hoger nodig"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:280
-msgid "Downloaded plugin is for new installs only, but the plugin is already installed"
-msgstr "De gedownloaded plugin is alleen voor nieuwe installaties, maar de plugin is al geïnstalleerd"
+msgid ""
+"Downloaded plugin is for new installs only, but the plugin is already "
+"installed"
+msgstr ""
+"De gedownloaded plugin is alleen voor nieuwe installaties, maar de plugin is "
+"al geïnstalleerd"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:292
msgid "Installed plugin does not contain the required configuration file"
@@ -2695,12 +2747,15 @@ msgstr "De geïnstalleerde plugin bevat het vereiste configuratie bestand niet"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:300
msgid "Signature of downloaded plugin does not match installed plugin"
-msgstr "De handtekening van de gedownloade plugin komt niet overeen met de geïnstalleerde plugin"
+msgstr ""
+"De handtekening van de gedownloade plugin komt niet overeen met de "
+"geïnstalleerde plugin"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:307
#, java-format
msgid "Downloaded plugin version {0} is not newer than installed plugin"
-msgstr "De gedownloade plugin versie {0} is niet nieuwer dan de geïnstalleerde plugin"
+msgstr ""
+"De gedownloade plugin versie {0} is niet nieuwer dan de geïnstalleerde plugin"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:314
#, java-format
@@ -2714,7 +2769,8 @@ msgstr "Plugin update vereist de installatie van plugin versie {0} of lager"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:338
msgid "Plugin is for upgrades only, but the plugin is not installed"
-msgstr "De plugin is alleen voor upgrades, maar de plugin is niet geïnstalleerd"
+msgstr ""
+"De plugin is alleen voor upgrades, maar de plugin is niet geïnstalleerd"
#: ../java/src/net/i2p/router/web/PluginUpdateHandler.java:351
#, java-format
@@ -2813,7 +2869,7 @@ msgid "Failing"
msgstr "Gefaald"
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:131
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:268
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:281
msgid "Integrated"
msgstr "Geïntegreerd"
@@ -2929,8 +2985,12 @@ msgid "caps"
msgstr "caps"
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
-msgid "peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel"
-msgstr "piek doorvoer (bytes per seconde) over een 1 minuut periode zoals de peer heeft ondervonden in een enkele tunnel"
+msgid ""
+"peak throughput (bytes per second) over a 1 minute period that the peer has "
+"sustained in a single tunnel"
+msgstr ""
+"piek doorvoer (bytes per seconde) over een 1 minuut periode zoals de peer "
+"heeft ondervonden in een enkele tunnel"
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
msgid "speed"
@@ -2942,7 +3002,8 @@ msgstr "capaciteit"
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
msgid "how many tunnels can we ask them to join in an hour?"
-msgstr "hoeveel tunnels kunnen we ze vragen om zich in een uur bij aan te sluiten?"
+msgstr ""
+"hoeveel tunnels kunnen we ze vragen om zich in een uur bij aan te sluiten?"
#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
msgid "how many new peers have they told us about lately?"
@@ -3022,8 +3083,12 @@ msgid "Statistics gathered during this router's uptime"
msgstr "Statistieken verzameld gedurende de uptime van deze router"
#: ../java/src/net/i2p/router/web/StatsGenerator.java:62
-msgid "The data gathered is quantized over a 1 minute period, so should just be used as an estimate."
-msgstr "De verzamelde data is gekwantiseerd over een 1 minuut peiode, dit is dus slechts een schatting."
+msgid ""
+"The data gathered is quantized over a 1 minute period, so should just be "
+"used as an estimate."
+msgstr ""
+"De verzamelde data is gekwantiseerd over een 1 minuut peiode, dit is dus "
+"slechts een schatting."
#: ../java/src/net/i2p/router/web/StatsGenerator.java:108
msgid "frequency"
@@ -3062,227 +3127,246 @@ msgstr "piek gemiddelde"
msgid "lifetime average value"
msgstr "levenslange gemiddelde waarde"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:48
-msgid "Configure startup of clients and webapps (services); manually start dormant services"
-msgstr "Configureer de opstart van clients en webapps (services); start sluimerende services handmatig"
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:40
+msgid "I2P Router Help & FAQ"
+msgstr "I2P Router Hulp & FAQ"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:50
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:42
+msgid "Help & FAQ"
+msgstr "Hulp & FAQ"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:54
+msgid ""
+"Configure startup of clients and webapps (services); manually start dormant "
+"services"
+msgstr ""
+"Configureer de opstart van clients en webapps (services); start sluimerende "
+"services handmatig"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:56
msgid "I2P Services"
msgstr "I2P Services"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:56
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:62
msgid "Manage your I2P hosts file here (I2P domain name resolution)"
msgstr "Beheer je I2P hosts bestand hier (I2P domeinnaam bepaling)"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:58
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:64
msgid "Addressbook"
msgstr "Adresboek"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:62
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:68
msgid "Built-in anonymous BitTorrent Client"
msgstr "Ingebouwde anonieme BitTorrent Client"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:64
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:70
msgid "Torrents"
msgstr "Torrents"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:68
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:74
msgid "Anonymous webmail client"
msgstr "Anonieme webmail client"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:70
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:76
msgid "Webmail"
msgstr "Webmail"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:74
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:80
msgid "Anonymous resident webserver"
msgstr "Anonieme ingebouwde webserver"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:76
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:82
msgid "Webserver"
msgstr "Webserver"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:84
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:90
msgid "Configure I2P Router"
msgstr "Configureer I2P Router"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:86
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:92
msgid "I2P Internals"
msgstr "I2P Intern"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:92
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:361
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:98
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:374
msgid "View existing tunnels and tunnel build status"
msgstr "Bekijk bestaande tunnels en tunnel opbouw status"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:98
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:240
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:104
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
msgid "Show all current peer connections"
msgstr "Toon alle huidige peer connecties"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:104
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:110
msgid "Show recent peer performance profiles"
msgstr "Toon recente peer prestatie profielen"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:106
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:112
msgid "Profiles"
msgstr "Profielen"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:110
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:116
msgid "Show list of all known I2P routers"
msgstr "Toon lijst met alle bekende I2P routers"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:112
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:118
msgid "NetDB"
msgstr "NetDB"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:116
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
msgid "Health Report"
msgstr "Gezondheids Rapport"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:118
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:124
msgid "Logs"
msgstr "Logs"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:128
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:134
msgid "Graph router performance"
msgstr "Grafieken router prestatie"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:136
msgid "Graphs"
msgstr "Grafieken"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:134
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
msgid "Textual router performance statistics"
msgstr "Tekstuele router prestatie statistieken"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
#: ../java/src/net/i2p/router/web/SummaryHelper.java:365
msgid "Local Destinations"
msgstr "Lokale Bestemmingen"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:142
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:148
#: ../java/strings/Strings.java:62
msgid "I2PTunnel"
msgstr "I2PTunnel"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:159
msgid "I2P Router Help"
msgstr "I2P Router Hulp"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:161
msgid "General"
msgstr "Algemeen"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:158
-msgid "Your unique I2P router identity is"
-msgstr "Je unique I2P router identiteit is"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:162
-msgid "never reveal it to anyone"
-msgstr "vertel dit aan niemand"
-
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
msgid "Local Identity"
msgstr "Lokale Identiteit"
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:170
+msgid "Your unique I2P router identity is"
+msgstr "Je unique I2P router identiteit is"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
+msgid "never reveal it to anyone"
+msgstr "vertel dit aan niemand"
+
#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:176
+msgid "show"
+msgstr "toon"
+
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:187
msgid "How long we've been running for this session"
msgstr "Hoe lang draaien we al voor deze sessie"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
msgid "Uptime"
msgstr "Uptime"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
-msgid "Help with configuring your firewall and router for optimal I2P performance"
-msgstr "Hulp bij het configureren van je firewall en router voor optimale I2P prestatie"
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
+msgid ""
+"Help with configuring your firewall and router for optimal I2P performance"
+msgstr ""
+"Hulp bij het configureren van je firewall en router voor optimale I2P "
+"prestatie"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:213
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:226
msgid "Download"
msgstr "Download"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
msgid "Download Unsigned"
msgstr "Download Niet-ondertekend"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
msgid "Active"
msgstr "Actief"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
msgid "Fast"
msgstr "Snel"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:262
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
msgid "High capacity"
msgstr "Grote capaciteit"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:274
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:287
msgid "Known"
msgstr "Bekend"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:289
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:302
msgid "Help with firewall configuration"
msgstr "Hulp met firewall configuratie"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:291
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
msgid "Check NAT/firewall"
msgstr "Controlleer NAT/firewall"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:324
msgid "Reseed"
msgstr "Reseed"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:341
msgid "Configure router bandwidth allocation"
msgstr "Configureer router bandbreedte toewijzing"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:330
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:343
msgid "Bandwidth in/out"
msgstr "Bandbreedte in/uit"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:359
msgid "Total"
msgstr "Totaal"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:366
msgid "Used"
msgstr "Gebruikt"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:368
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
msgid "Exploratory"
msgstr "Onderzoekend"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:380
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
msgid "Participating"
msgstr "Deelnemend"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:386
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
msgid "Share ratio"
msgstr "Share rato"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:392
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:405
msgid "What's in the router's job queue?"
msgstr "Wat is er in de taken wachtrij van de router?"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:407
msgid "Congestion"
msgstr "Verstopping"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
msgid "Job lag"
msgstr "Taak vertraging"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:405
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:418
msgid "Message delay"
msgstr "Bericht vertraging"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:424
msgid "Tunnel lag"
msgstr "Tunnel vertraging"
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:430
msgid "Backlog"
msgstr "Achterstand"
@@ -3326,7 +3410,9 @@ msgid "Firewalled"
msgstr "Firewall"
#: ../java/src/net/i2p/router/web/SummaryHelper.java:130
-msgid "ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart"
+msgid ""
+"ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and "
+"restart"
msgstr "ERR-UDP Poort in Gebruik"
#: ../java/src/net/i2p/router/web/SummaryHelper.java:136
@@ -3348,7 +3434,8 @@ msgstr "Testen"
#: ../java/src/net/i2p/router/web/SummaryHelper.java:365
msgid "Add/remove/edit & control your client and server tunnels"
-msgstr "Toevoegen/verwijderen/wijzigen & beheer je client en server tunnels"
+msgstr ""
+"Toevoegen/verwijderen/wijzigen & beheer je client en server tunnels"
#: ../java/src/net/i2p/router/web/SummaryHelper.java:377
msgid "Server"
@@ -3928,8 +4015,12 @@ msgid "Bandwidth limiter"
msgstr "Bandbreedte beperker"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:299
-msgid "I2P will work best if you configure your rates to match the speed of your internet connection."
-msgstr "I2P zal beter werken wanneer je de configuratie van de bandbreedte afstemt met de snelheid van je internet verbinding."
+msgid ""
+"I2P will work best if you configure your rates to match the speed of your "
+"internet connection."
+msgstr ""
+"I2P zal beter werken wanneer je de configuratie van de bandbreedte afstemt "
+"met de snelheid van je internet verbinding."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:303
msgid "KBps In"
@@ -3959,12 +4050,19 @@ msgid "I2P requires at least 12KBps to enable sharing. "
msgstr "I2P vereist tenminste 12KBps om sharing in te schakelen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:346
-msgid "Please enable sharing (participating in tunnels) by configuring more bandwidth. "
-msgstr "Schakel sharing in (deelname aan tunnels) door meer bandbreedte toe te kennen."
+msgid ""
+"Please enable sharing (participating in tunnels) by configuring more "
+"bandwidth. "
+msgstr ""
+"Schakel sharing in (deelname aan tunnels) door meer bandbreedte toe te "
+"kennen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:347
-msgid "It improves your anonymity by creating cover traffic, and helps the network."
-msgstr "Het verbeterd je anonimiteit door camouflage verkeer te genereren en help het netwerk."
+msgid ""
+"It improves your anonymity by creating cover traffic, and helps the network."
+msgstr ""
+"Het verbeterd je anonimiteit door camouflage verkeer te genereren en help "
+"het netwerk."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:350
#, java-format
@@ -3972,8 +4070,12 @@ msgid "You have configured I2P to share {0} KBps."
msgstr "Je hebt I2P geconfigureerd om {0} KBps te delen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:353
-msgid "The higher the share bandwidth the more you improve your anonymity and help the network."
-msgstr "Hoe meer bandbreedte je deelt, des te meer je anonimiteit verbeterd en je het netwerk helpt."
+msgid ""
+"The higher the share bandwidth the more you improve your anonymity and help "
+"the network."
+msgstr ""
+"Hoe meer bandbreedte je deelt, des te meer je anonimiteit verbeterd en je "
+"het netwerk helpt."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:357
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:513
@@ -4059,8 +4161,12 @@ msgid "Action when IP changes"
msgstr "Actie wanneer IP wijzigd"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:438
-msgid "Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity"
-msgstr "Laptop modus - Wijzig router identiteit en UDP poort wanneeer IP wijzigd for meer anonimiteit"
+msgid ""
+"Laptop mode - Change router identity and UDP port when IP changes for "
+"enhanced anonymity"
+msgstr ""
+"Laptop modus - Wijzig router identiteit en UDP poort wanneeer IP wijzigd for "
+"meer anonimiteit"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:440
msgid "Experimental"
@@ -4104,8 +4210,11 @@ msgid "Completely disable"
msgstr "Schakel volledig uit"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:490
-msgid "(select only if behind a firewall that throttles or blocks outbound TCP)"
-msgstr "(selecteer alleen wanneer je achter een firewall zit dat uitgaand TCP beperkt of blokkeert)"
+msgid ""
+"(select only if behind a firewall that throttles or blocks outbound TCP)"
+msgstr ""
+"(selecteer alleen wanneer je achter een firewall zit dat uitgaand TCP "
+"beperkt of blokkeert)"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:492
msgid "Externally reachable TCP port"
@@ -4135,28 +4244,52 @@ msgstr "Configuratie Help"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:519
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:568
-msgid "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."
-msgstr "Alhoewel I2P zal werken achter de meeste firewalls, zal de snelheid en netwerk integratie doorgaans verbeteren wanneer de I2P poort is geforward voor zowel UDP als TCP."
+msgid ""
+"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."
+msgstr ""
+"Alhoewel I2P zal werken achter de meeste firewalls, zal de snelheid en "
+"netwerk integratie doorgaans verbeteren wanneer de I2P poort is geforward "
+"voor zowel UDP als TCP."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:521
-msgid "If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you."
-msgstr "Indien mogelijk, probeer een opening in je firewall te maken om nieuwe UDP en TCP pakketten binnen te laten."
+msgid ""
+"If you can, please poke a hole in your firewall to allow unsolicited UDP and "
+"TCP packets to reach you."
+msgstr ""
+"Indien mogelijk, probeer een opening in je firewall te maken om nieuwe UDP "
+"en TCP pakketten binnen te laten."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:523
-msgid "If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic."
-msgstr "Indien dit niet mogelijk is, I2P ondersteunt UPnP (Universal Plug en Play) en UDP perforatie met \"SSU introducties\" om verkeer te herleiden."
+msgid ""
+"If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole "
+"punching with \"SSU introductions\" to relay traffic."
+msgstr ""
+"Indien dit niet mogelijk is, I2P ondersteunt UPnP (Universal Plug en Play) "
+"en UDP perforatie met \"SSU introducties\" om verkeer te herleiden."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:525
-msgid "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."
-msgstr "De meeste bovenstaande opties zijn voor speciale situaties, bijvoorbeeld wanneer UPnP niet correct werkt, of wanneer firewall buiten je beheer in de weg zit."
+msgid ""
+"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."
+msgstr ""
+"De meeste bovenstaande opties zijn voor speciale situaties, bijvoorbeeld "
+"wanneer UPnP niet correct werkt, of wanneer firewall buiten je beheer in de "
+"weg zit."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:527
msgid "Certain firewalls such as symmetric NATs may not work well with I2P."
-msgstr "Bepaalde firewalls zoals symmetrische NATs werken mogelijk niet goed met I2P."
+msgstr ""
+"Bepaalde firewalls zoals symmetrische NATs werken mogelijk niet goed met I2P."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:536
-msgid "UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports."
-msgstr "UPnP is gebruikt om te communiceren met Internet Gateway Devices (IGDs) om het externe IP adres te detecteren en poorten door te sturen."
+msgid ""
+"UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect "
+"the external IP address and forward ports."
+msgstr ""
+"UPnP is gebruikt om te communiceren met Internet Gateway Devices (IGDs) om "
+"het externe IP adres te detecteren en poorten door te sturen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:538
msgid "UPnP support is beta, and may not work for any number of reasons"
@@ -4191,24 +4324,37 @@ msgid "Review the UPnP status here."
msgstr "Bekijk de UPnP status hier."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:554
-msgid "UPnP may be enabled or disabled above, but a change requires a router restart to take effect."
-msgstr "UPnP kan hierboven in- en uitgeschakeld worden, maar na een wijziging is een router herstart nodig."
+msgid ""
+"UPnP may be enabled or disabled above, but a change requires a router "
+"restart to take effect."
+msgstr ""
+"UPnP kan hierboven in- en uitgeschakeld worden, maar na een wijziging is een "
+"router herstart nodig."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:556
msgid "Hostnames entered above will be published in the network database."
-msgstr "Hierboven ingevulde hostnames zullen worden gepubliceerd in de netwerk database."
+msgstr ""
+"Hierboven ingevulde hostnames zullen worden gepubliceerd in de netwerk "
+"database."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:558
msgid "They are not private."
msgstr "Deze zijn niet privé."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:560
-msgid "Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1."
-msgstr "Tevens, vul geen privé IP addres in zoals 127.0.0.1 of 192.168.1.1."
+msgid ""
+"Also, do not enter a private IP address like 127.0.0.1 or 192.168.1.1."
+msgstr ""
+"Tevens, vul geen privé IP addres in zoals 127.0.0.1 of 192.168.1.1."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:562
-msgid "If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially."
-msgstr "Als je het verkeerde IP adres of hostnaam invult, of je NAT of firewall niet goed te configureert, zal je netwerk prestaties aanzienlijk verslechteren."
+msgid ""
+"If you specify the wrong IP address or hostname, or do not properly "
+"configure your NAT or firewall, your network performance will degrade "
+"substantially."
+msgstr ""
+"Als je het verkeerde IP adres of hostnaam invult, of je NAT of firewall niet "
+"goed te configureert, zal je netwerk prestaties aanzienlijk verslechteren."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:564
msgid "When in doubt, leave the settings at the defaults."
@@ -4219,12 +4365,23 @@ msgid "Reachability Help"
msgstr "Bereikbaarheids Help"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:571
-msgid "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."
-msgstr "Wanneer je denkt dat je je firewall open hebt gezet maar I2P nog steeds zegt dat je achter een firewall zit, bedenk dan dat je mogelijk meerdere firewalls hebt, bijvoorbeeld zowel als software pakket en een externe hardware router."
+msgid ""
+"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."
+msgstr ""
+"Wanneer je denkt dat je je firewall open hebt gezet maar I2P nog steeds zegt "
+"dat je achter een firewall zit, bedenk dan dat je mogelijk meerdere "
+"firewalls hebt, bijvoorbeeld zowel als software pakket en een externe "
+"hardware router."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:574
-msgid "If there is an error, the logs may also help diagnose the problem."
-msgstr "Indien er een fout is zijn de logs mogelijk hulpvol om het probleem te onderzoeken."
+msgid ""
+"If there is an error, the logs may also help "
+"diagnose the problem."
+msgstr ""
+"Indien er een fout is zijn de logs mogelijk hulpvol "
+"om het probleem te onderzoeken."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:578
msgid "Your UDP port does not appear to be firewalled."
@@ -4235,72 +4392,129 @@ msgid "Your UDP port appears to be firewalled."
msgstr "Je UDP poort lijkt achter een firewall te zitten."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:584
-msgid "As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error."
-msgstr "Omdat de firewall detectie methode niet 100% betrouwbaar is, kan dit soms foutief getoond worden."
+msgid ""
+"As the firewall detection methods are not 100% reliable, this may "
+"occasionally be displayed in error."
+msgstr ""
+"Omdat de firewall detectie methode niet 100% betrouwbaar is, kan dit soms "
+"foutief getoond worden."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:586
-msgid "However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port."
-msgstr "Indien dit echter consistent optreedt, controlleer in zowel externe als interne firewalls of de poort wel geopend is."
+msgid ""
+"However, if it appears consistently, you should check whether both your "
+"external and internal firewalls are open for your port."
+msgstr ""
+"Indien dit echter consistent optreedt, controlleer in zowel externe als "
+"interne firewalls of de poort wel geopend is."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:588
-msgid "I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections."
-msgstr "Geen paniek, I2P zal werken achter een firewall. Wanneer dit het geval is maakt de router gebruik van \"introducers\" om inkomende connecties door te sturen."
+msgid ""
+"I2P will work fine when firewalled, there is no reason for concern. When "
+"firewalled, the router uses \"introducers\" to relay inbound connections."
+msgstr ""
+"Geen paniek, I2P zal werken achter een firewall. Wanneer dit het geval is "
+"maakt de router gebruik van \"introducers\" om inkomende connecties door te "
+"sturen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:590
-msgid "However, you will get more participating traffic and help the network more if you can open your firewall(s)."
-msgstr "Je krijgt meer deelnemend verkeer en helpt het netwerk meer door de firewall(s) te openen."
+msgid ""
+"However, you will get more participating traffic and help the network more "
+"if you can open your firewall(s)."
+msgstr ""
+"Je krijgt meer deelnemend verkeer en helpt het netwerk meer door de firewall"
+"(s) te openen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:592
-msgid "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."
-msgstr "Indien je van mening bent dat je dit al hebt gedaan, bedenk dat er zowel een hardware als software firewall kan zijn, of dat er een additionele firewall (universiteit, provider, etc) kan zijn waar je geen invloed op hebt."
+msgid ""
+"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."
+msgstr ""
+"Indien je van mening bent dat je dit al hebt gedaan, bedenk dat er zowel een "
+"hardware als software firewall kan zijn, of dat er een additionele firewall "
+"(universiteit, provider, etc) kan zijn waar je geen invloed op hebt."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:594
-msgid "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."
-msgstr "Tevens hebben sommige routers moeite om zowel TCP als UDP op dezelfde poort correct door te laten, of hebben andere beperkingen of bugs die voorkomen dat I2P verkeer goed doorkomt."
+msgid ""
+"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."
+msgstr ""
+"Tevens hebben sommige routers moeite om zowel TCP als UDP op dezelfde poort "
+"correct door te laten, of hebben andere beperkingen of bugs die voorkomen "
+"dat I2P verkeer goed doorkomt."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:598
msgid "The router is currently testing whether your UDP port is firewalled."
msgstr "De router test op dit moment of je UDP poort achter een firewall is."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:602
-msgid "The router is not configured to publish its address, therefore it does not expect incoming connections."
-msgstr "De router is niet geconfigureerd om zijn adres te publiceren, daarom verwacht het geen inkomende verbindingen."
+msgid ""
+"The router is not configured to publish its address, therefore it does not "
+"expect incoming connections."
+msgstr ""
+"De router is niet geconfigureerd om zijn adres te publiceren, daarom "
+"verwacht het geen inkomende verbindingen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:604
msgid "WARN - Firewalled and Fast"
msgstr "WARN - Firewall en Snel"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:606
-msgid "You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled."
-msgstr "Je hebt I2P geconfigureerd om meer dan 128KBps aan bandbreedte te delen, maar je zit achter een firewall."
+msgid ""
+"You have configured I2P to share more than 128KBps of bandwidth, but you are "
+"firewalled."
+msgstr ""
+"Je hebt I2P geconfigureerd om meer dan 128KBps aan bandbreedte te delen, "
+"maar je zit achter een firewall."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:608
-msgid "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."
-msgstr "Alhoewel I2P met deze configuratie prima werkt, zal je 128KBps of meer aan bandbreedte het netwerk beter helpen wanneer je je firewall open zet."
+msgid ""
+"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."
+msgstr ""
+"Alhoewel I2P met deze configuratie prima werkt, zal je 128KBps of meer aan "
+"bandbreedte het netwerk beter helpen wanneer je je firewall open zet."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:610
msgid "WARN - Firewalled and Floodfill"
msgstr "WARN - Firewall en Floodfill"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:612
-msgid "You have configured I2P to be a floodfill router, but you are firewalled."
-msgstr "Je hebt I2P geconfigureerd als floodfill router, maar je zit achter een firewall."
+msgid ""
+"You have configured I2P to be a floodfill router, but you are firewalled."
+msgstr ""
+"Je hebt I2P geconfigureerd als floodfill router, maar je zit achter een "
+"firewall."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:614
-msgid "For best participation as a floodfill router, you should open your firewall."
-msgstr "Voor een betere deelname als floodfill router, moet je je firewall openen."
+msgid ""
+"For best participation as a floodfill router, you should open your firewall."
+msgstr ""
+"Voor een betere deelname als floodfill router, moet je je firewall openen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:616
msgid "WARN - Firewalled with Inbound TCP Enabled"
msgstr "WARN - Firewall en Inkomende TCP Ingeschakeld"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:618
-msgid "You have configured inbound TCP, however your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well."
-msgstr "Je hebt inkomende TCP geconfigureerd, echter aangezien je UDP poort achter een firewall zit, is het waarschijnlijk dat dit ook voor je TCP poort het geval is."
+msgid ""
+"You have configured inbound TCP, however your UDP port is firewalled, and "
+"therefore it is likely that your TCP port is firewalled as well."
+msgstr ""
+"Je hebt inkomende TCP geconfigureerd, echter aangezien je UDP poort achter "
+"een firewall zit, is het waarschijnlijk dat dit ook voor je TCP poort het "
+"geval is."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:620
-msgid "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."
-msgstr "Indien je TCP poort achter een firewall zit met inkomende TCP ingeschakeld, kunnen routers geen verbinding met je maken via TCP, dit is niet goed voor het netwerk."
+msgid ""
+"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."
+msgstr ""
+"Indien je TCP poort achter een firewall zit met inkomende TCP ingeschakeld, "
+"kunnen routers geen verbinding met je maken via TCP, dit is niet goed voor "
+"het netwerk."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:622
msgid "Please open your firewall or disable inbound TCP above."
@@ -4315,8 +4529,12 @@ msgid "You have configured inbound TCP, however you have disabled UDP."
msgstr "Je hebt inkomende TCP geconfigureerd, echter UDP is uitgeschakeld."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:628
-msgid "You appear to be firewalled on TCP, therefore your router cannot accept inbound connections."
-msgstr "Het lijkt erop dat je voor TCP achter een firewall zit, daarom kan je router geen inkomende connecties accepteren."
+msgid ""
+"You appear to be firewalled on TCP, therefore your router cannot accept "
+"inbound connections."
+msgstr ""
+"Het lijkt erop dat je voor TCP achter een firewall zit, daarom kan je router "
+"geen inkomende connecties accepteren."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:630
msgid "Please open your firewall or enable UDP."
@@ -4327,8 +4545,12 @@ msgid "ERR - Clock Skew"
msgstr "ERR - Klok Afwijking"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:634
-msgid "Your system's clock is skewed, which will make it difficult to participate in the network."
-msgstr "Je systeemklok heeft een afwijking, dit zal het moeilijk maken om aan het netwerk deel te nemen."
+msgid ""
+"Your system's clock is skewed, which will make it difficult to participate "
+"in the network."
+msgstr ""
+"Je systeemklok heeft een afwijking, dit zal het moeilijk maken om aan het "
+"netwerk deel te nemen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:636
msgid "Correct your clock setting if this error persists."
@@ -4339,8 +4561,12 @@ msgid "ERR - Private TCP Address"
msgstr "ERR - Privaat TCP Adres"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:640
-msgid "You must never advertise an unroutable IP address such as 127.0.0.1 or 192.168.1.1 as your external address."
-msgstr "Je moet nooit een niet-routeerbaar IP adres zoals 127.0.0.1 of 192.168.1.1 adverteren als je externe adres."
+msgid ""
+"You must never advertise an unroutable IP address such as 127.0.0.1 or "
+"192.168.1.1 as your external address."
+msgstr ""
+"Je moet nooit een niet-routeerbaar IP adres zoals 127.0.0.1 of 192.168.1.1 "
+"adverteren als je externe adres."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:642
msgid "Correct the address or disable inbound TCP above."
@@ -4352,27 +4578,46 @@ msgstr "ERR - SymmetricNAT"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:646
msgid "I2P detected that you are firewalled by a Symmetric NAT."
-msgstr "I2P heeft gedetecteerd dat je achter een firewall zit door een Symmetric NAT."
+msgstr ""
+"I2P heeft gedetecteerd dat je achter een firewall zit door een Symmetric NAT."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:648
-msgid "I2P does not work well behind this type of firewall. You will probably not be able to accept inbound connections, which will limit your participation in the network."
-msgstr "I2P werkt niet goed achter dit type firewall. Waarschijnlijk kan je geen inkomende verbindingen accepteren, "
+msgid ""
+"I2P does not work well behind this type of firewall. You will probably not "
+"be able to accept inbound connections, which will limit your participation "
+"in the network."
+msgstr ""
+"I2P werkt niet goed achter dit type firewall. Waarschijnlijk kan je geen "
+"inkomende verbindingen accepteren, "
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:650
-msgid "ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart"
-msgstr "ERR - UDP Poort In Gebruik - Zet i2np.udp.internalPort=xxxx in geavanceerde configuratie en herstart"
+msgid ""
+"ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config "
+"and restart"
+msgstr ""
+"ERR - UDP Poort In Gebruik - Zet i2np.udp.internalPort=xxxx in geavanceerde "
+"configuratie en herstart"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:652
msgid "I2P was unable to bind to port 8887 or other configured port."
-msgstr "I2P kon niet binden met poort 8887 of een andere geconfigureerde poort."
+msgstr ""
+"I2P kon niet binden met poort 8887 of een andere geconfigureerde poort."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:654
-msgid "Check to see if another program is using the configured port. If so, stop that program or configure I2P to use a different port."
-msgstr "Controlleer of een ander programma de geconfigureerde poort gebruikt. Als dit zo is, stop dit programma of configureer I2P op een andere poort."
+msgid ""
+"Check to see if another program is using the configured port. If so, stop "
+"that program or configure I2P to use a different port."
+msgstr ""
+"Controlleer of een ander programma de geconfigureerde poort gebruikt. Als "
+"dit zo is, stop dit programma of configureer I2P op een andere poort."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:656
-msgid "This may be a transient error, if the other program is no longer using the port."
-msgstr "Dit kan een voorbijgaande fout zijn, als het andere programma de poort niet meer gebruikt."
+msgid ""
+"This may be a transient error, if the other program is no longer using the "
+"port."
+msgstr ""
+"Dit kan een voorbijgaande fout zijn, als het andere programma de poort niet "
+"meer gebruikt."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:658
msgid "However, a restart is always required after this error."
@@ -4383,8 +4628,12 @@ msgid "ERR - UDP Disabled and Inbound TCP host/port not set"
msgstr "ERR - UDP Uitgeschakeld en Inkomende TCP host/poort niet gezet"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:662
-msgid "You have not configured inbound TCP with a hostname and port above, however you have disabled UDP."
-msgstr "Je hebt inkomende TCP hierboven niet geconfigureerd met een hostname en poort, echter heb je je UDP uitgeschakeld."
+msgid ""
+"You have not configured inbound TCP with a hostname and port above, however "
+"you have disabled UDP."
+msgstr ""
+"Je hebt inkomende TCP hierboven niet geconfigureerd met een hostname en "
+"poort, echter heb je je UDP uitgeschakeld."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:664
msgid "Therefore your router cannot accept inbound connections."
@@ -4400,11 +4649,17 @@ msgstr "ERR - Client Manager I2CP Fout - controlleer logs"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:670
msgid "This is usually due to a port 7654 conflict. Check the logs to verify."
-msgstr "Dit komt doorgaans door een conflict met poort 7654. Kijk in de logs om dit te bevestigen."
+msgstr ""
+"Dit komt doorgaans door een conflict met poort 7654. Kijk in de logs om dit "
+"te bevestigen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:672
-msgid "Do you have another I2P instance running? Stop the conflicting program and restart I2P."
-msgstr "Heb je een andere I2P instantie draaien? Stop het conflicerende programma en herstart I2P."
+msgid ""
+"Do you have another I2P instance running? Stop the conflicting program and "
+"restart I2P."
+msgstr ""
+"Heb je een andere I2P instantie draaien? Stop het conflicerende programma en "
+"herstart I2P."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:107
msgid "config advanced"
@@ -4435,8 +4690,12 @@ msgid "Client Configuration"
msgstr "Client Configuratie"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:313
-msgid "The Java clients listed below are started by the router and run in the same JVM."
-msgstr "De Java clients in onderstaande lijst zijn gestart door de router en draaien in dezelfde JVM."
+msgid ""
+"The Java clients listed below are started by the router and run in the same "
+"JVM."
+msgstr ""
+"De Java clients in onderstaande lijst zijn gestart door de router en draaien "
+"in dezelfde JVM."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:317
msgid "To change other client options, edit the file"
@@ -4452,12 +4711,33 @@ msgid "WebApp Configuration"
msgstr "WebApp Configuratie"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:338
-msgid "The Java web applications listed below are started by the webConsole client and run in the same JVM as the router. They are usually web applications accessible through the router console. They may be complete applications (e.g. i2psnark),front-ends to another client or application which must be separately enabled (e.g. susidns, i2ptunnel), or have no web interface at all (e.g. addressbook)."
-msgstr "De Java web applicaties hier beneden zijn gestart door de webConsole client en draaien in dezelfe JVM als de router. Het zijn meestal web applicaties die te benaderen zijn via de router console. Het kunnen volledige applicaties zijn (zoals i2psnark), front-ends voor een client of applicatie dat los hiervan ingeschakeld moet worden (zoals susidns, i2ptunnel), of zonder web interface (zoals addressbook)."
+msgid ""
+"The Java web applications listed below are started by the webConsole client "
+"and run in the same JVM as the router. They are usually web applications "
+"accessible through the router console. They may be complete applications (e."
+"g. i2psnark),front-ends to another client or application which must be "
+"separately enabled (e.g. susidns, i2ptunnel), or have no web interface at "
+"all (e.g. addressbook)."
+msgstr ""
+"De Java web applicaties hier beneden zijn gestart door de webConsole client "
+"en draaien in dezelfe JVM als de router. Het zijn meestal web applicaties "
+"die te benaderen zijn via de router console. Het kunnen volledige "
+"applicaties zijn (zoals i2psnark), front-ends voor een client of applicatie "
+"dat los hiervan ingeschakeld moet worden (zoals susidns, i2ptunnel), of "
+"zonder web interface (zoals addressbook)."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:340
-msgid "A web app may also be disabled by removing the .war file from the webapps directory; however the .war file and web app will reappear when you update your router to a newer version, so disabling the web app here is the preferred method."
-msgstr "Een web app kan ook uitgeschakeld worden door het .war bestand te verwijderen uit de webapps directory; ever het .war bestand en de web applicatie zal weer terugkomen wanneer je de router upgrade naar een nieuwere versie. Daarom is het aanbevolen om de web app hier uit te schakelen."
+msgid ""
+"A web app may also be disabled by removing the .war file from the webapps "
+"directory; however the .war file and web app will reappear when you update "
+"your router to a newer version, so disabling the web app here is the "
+"preferred method."
+msgstr ""
+"Een web app kan ook uitgeschakeld worden door het .war bestand te "
+"verwijderen uit de webapps directory; ever het .war bestand en de web "
+"applicatie zal weer terugkomen wanneer je de router upgrade naar een "
+"nieuwere versie. Daarom is het aanbevolen om de web app hier uit te "
+"schakelen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:350
msgid "Plugin Configuration"
@@ -4485,11 +4765,16 @@ msgstr "I2P Sleutelbos Configuratie"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:294
msgid "The router keyring is used to decrypt encrypted leaseSets."
-msgstr "De sleutelbos van de router is gebruikt om versleutelde leaseSets te ontsleutelen."
+msgstr ""
+"De sleutelbos van de router is gebruikt om versleutelde leaseSets te "
+"ontsleutelen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:297
-msgid "The keyring may contain keys for local or remote encrypted destinations."
-msgstr "De sleutelbos kan sleutels bevatten voor lokale en remote versleutelde destinations."
+msgid ""
+"The keyring may contain keys for local or remote encrypted destinations."
+msgstr ""
+"De sleutelbos kan sleutels bevatten voor lokale en remote versleutelde "
+"destinations."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:307
msgid "Manual Keyring Addition"
@@ -4540,16 +4825,23 @@ msgid "Log record format"
msgstr "Log regel formaat"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:311
-msgid "(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)"
-msgstr "(gebruik 'd' = datum, 'c' = class, 't' = thread, 'p' = prioriteit, 'm' = bericht)"
+msgid ""
+"(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)"
+msgstr ""
+"(gebruik 'd' = datum, 'c' = class, 't' = thread, 'p' = prioriteit, 'm' = "
+"bericht)"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:313
msgid "Log date format"
msgstr "Log datum formaat"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:317
-msgid "('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)"
-msgstr "('MM' = maand, 'dd' = dag, 'HH' = uur, 'mm' = minuut, 'ss' = seconde, 'SSS' = milliseconde)"
+msgid ""
+"('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' "
+"= millisecond)"
+msgstr ""
+"('MM' = maand, 'dd' = dag, 'HH' = uur, 'mm' = minuut, 'ss' = seconde, 'SSS' "
+"= milliseconde)"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:319
msgid "Max log file size"
@@ -4560,8 +4852,12 @@ msgid "Default log level"
msgstr "Standaard log niveau"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:327
-msgid "(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)"
-msgstr "(DEBUG en INFO zijn geen aanbevolen standaardwaarden, ze zullen je router drastisch vertragen)"
+msgid ""
+"(DEBUG and INFO are not recommended defaults, as they will drastically slow "
+"down your router)"
+msgstr ""
+"(DEBUG en INFO zijn geen aanbevolen standaardwaarden, ze zullen je router "
+"drastisch vertragen)"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:329
msgid "Log level overrides"
@@ -4588,12 +4884,22 @@ msgid "Manually Ban / Unban a Peer"
msgstr "Handmatig een Peer Verbannen / Verbanning Opheffen"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:312
-msgid "Banning will prevent the participation of this peer in tunnels you create."
+msgid ""
+"Banning will prevent the participation of this peer in tunnels you create."
msgstr "Verbanning zorgt ervoor dat deze peer niet deelneemt aan je tunnels."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:324
-msgid "Bonuses may be positive or negative, and affect the peer's inclusion in Fast and High Capacity tiers. Fast peers are used for client tunnels, and High Capacity peers are used for some exploratory tunnels. Current bonuses are displayed on the"
-msgstr "Bonussen kunnen zowel positief als negatief zijn, en hebben invloed op de toekenning van de peer aan de category Snel en Hoge Capaciteit. Snelle peers worden gebruikt voor client tunnels, en Hoge Capaciteit peers worden gebruikt voor sommige exploratory tunnels. De huidige bonussen worden getoond op de"
+msgid ""
+"Bonuses may be positive or negative, and affect the peer's inclusion in Fast "
+"and High Capacity tiers. Fast peers are used for client tunnels, and High "
+"Capacity peers are used for some exploratory tunnels. Current bonuses are "
+"displayed on the"
+msgstr ""
+"Bonussen kunnen zowel positief als negatief zijn, en hebben invloed op de "
+"toekenning van de peer aan de category Snel en Hoge Capaciteit. Snelle peers "
+"worden gebruikt voor client tunnels, en Hoge Capaciteit peers worden "
+"gebruikt voor sommige exploratory tunnels. De huidige bonussen worden "
+"getoond op de"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:326
msgid "profiles page"
@@ -4625,40 +4931,73 @@ msgid "Shutdown the router"
msgstr "Stop de router"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:286
-msgid "Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes."
-msgstr "Een gecontrolleerde afsluiting laat de router zijn reeds bestaande overeenkomsten vervullen alvorens te stoppen, maar dit kan een aantal minuten duren."
+msgid ""
+"Graceful shutdown lets the router satisfy the agreements it has already made "
+"before shutting down, but may take a few minutes."
+msgstr ""
+"Een gecontrolleerde afsluiting laat de router zijn reeds bestaande "
+"overeenkomsten vervullen alvorens te stoppen, maar dit kan een aantal "
+"minuten duren."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:288
-msgid "If you need to kill the router immediately, that option is available as well."
+msgid ""
+"If you need to kill the router immediately, that option is available as well."
msgstr "Indien je de router onmiddelijk wilt stoppen, dan is dit ook mogelijk."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:298
-msgid "If you want the router to restart itself after shutting down, you can choose one of the following."
-msgstr "Indien je de router wilt herstarten na het afsluiten, kies dan één van de volgende opties."
+msgid ""
+"If you want the router to restart itself after shutting down, you can choose "
+"one of the following."
+msgstr ""
+"Indien je de router wilt herstarten na het afsluiten, kies dan één van de "
+"volgende opties."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:300
-msgid "This is useful in some situations - for example, if you changed some settings that client applications only read at startup, such as the routerconsole password or the interface it listens on."
-msgstr "Dit is handig in sommige situaties - bijvoorbeeld wanneer je een configuratie hebt gewijzigd die client applicaties alleen lezen bij het opstarten, zoals het routerconsole wachtwoord of de interface waar het op luistert."
+msgid ""
+"This is useful in some situations - for example, if you changed some "
+"settings that client applications only read at startup, such as the "
+"routerconsole password or the interface it listens on."
+msgstr ""
+"Dit is handig in sommige situaties - bijvoorbeeld wanneer je een "
+"configuratie hebt gewijzigd die client applicaties alleen lezen bij het "
+"opstarten, zoals het routerconsole wachtwoord of de interface waar het op "
+"luistert."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:302
-msgid "A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately."
-msgstr "Een gecontrolleerde herstart zal een aantal minuten duren (maar je peers stellen je gedult zeer op prijs), terwijl een harde herstart onmiddelijk is."
+msgid ""
+"A graceful restart will take a few minutes (but your peers will appreciate "
+"your patience), while a hard restart does so immediately."
+msgstr ""
+"Een gecontrolleerde herstart zal een aantal minuten duren (maar je peers "
+"stellen je gedult zeer op prijs), terwijl een harde herstart onmiddelijk is."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:304
-msgid "After tearing down the router, it will wait 1 minute before starting back up again."
-msgstr "Na het stoppen van de router, zal het 1 minuut wachten alvorens opnieuw te starten."
+msgid ""
+"After tearing down the router, it will wait 1 minute before starting back up "
+"again."
+msgstr ""
+"Na het stoppen van de router, zal het 1 minuut wachten alvorens opnieuw te "
+"starten."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:314
msgid "Systray integration"
msgstr "Systray integratie"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:316
-msgid "On the windows platform, there is a small application to sit in the system tray, allowing you to view the router's status"
-msgstr "Op het windows platform is er een kleine applicatie die in je system tray zit, waarmee de router status te bekijken is"
+msgid ""
+"On the windows platform, there is a small application to sit in the system "
+"tray, allowing you to view the router's status"
+msgstr ""
+"Op het windows platform is er een kleine applicatie die in je system tray "
+"zit, waarmee de router status te bekijken is"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:318
-msgid "(later on, I2P client applications will be able to integrate their own functionality into the system tray as well)."
-msgstr "(in de toekomst zullen I2P client applicaties hun functionaliteit ook in de system tray kunnen integreren)."
+msgid ""
+"(later on, I2P client applications will be able to integrate their own "
+"functionality into the system tray as well)."
+msgstr ""
+"(in de toekomst zullen I2P client applicaties hun functionaliteit ook in de "
+"system tray kunnen integreren)."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:320
msgid "If you are on windows, you can either enable or disable that icon here."
@@ -4669,20 +5008,33 @@ msgid "Run on startup"
msgstr "Aan bij opstarten"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:328
-msgid "You can control whether I2P is run on startup or not by selecting one of the following options - I2P will install (or remove) a service accordingly."
-msgstr "Je kan bepalen of I2P al dan niet bij het opstarten moet starten met behulp van de volgende opties - I2P zal dan de service toevoegen (of verwijderen)."
+msgid ""
+"You can control whether I2P is run on startup or not by selecting one of the "
+"following options - I2P will install (or remove) a service accordingly."
+msgstr ""
+"Je kan bepalen of I2P al dan niet bij het opstarten moet starten met behulp "
+"van de volgende opties - I2P zal dan de service toevoegen (of verwijderen)."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:330
msgid "If you prefer the command line, you can also run the "
-msgstr "Indien je de voorkeur geeft aan de command line, kan je het ook starten met "
+msgstr ""
+"Indien je de voorkeur geeft aan de command line, kan je het ook starten met "
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:340
-msgid "If you are running I2P as service right now, removing it will shut down your router immediately."
-msgstr "Indien je op dit moment I2P als service draait zal het verwijderen je router onmiddelijk stoppen."
+msgid ""
+"If you are running I2P as service right now, removing it will shut down your "
+"router immediately."
+msgstr ""
+"Indien je op dit moment I2P als service draait zal het verwijderen je router "
+"onmiddelijk stoppen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:342
-msgid "You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat."
-msgstr "Overweeg om hierboven je router gecontrolleerd te stoppen, en daarna uninstall_i2p_service_winnt.bat te draaien."
+msgid ""
+"You may want to consider shutting down gracefully, as above, then running "
+"uninstall_i2p_service_winnt.bat."
+msgstr ""
+"Overweeg om hierboven je router gecontrolleerd te stoppen, en daarna "
+"uninstall_i2p_service_winnt.bat te draaien."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:346
msgid "Debugging"
@@ -4693,16 +5045,26 @@ msgid "View the job queue"
msgstr "Bekijk de taak wachtrij"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:352
-msgid "At times, it may be helpful to debug I2P by getting a thread dump. To do so, please select the following option and review the thread dumped to wrapper.log."
-msgstr "Soms kan het handig zijn om I2P te debuggen met een thread dump. Om dit te doen, selecteer de volgende optie en bekijk de thread dump in de wrapper.log."
+msgid ""
+"At times, it may be helpful to debug I2P by getting a thread dump. To do so, "
+"please select the following option and review the thread dumped to wrapper.log."
+msgstr ""
+"Soms kan het handig zijn om I2P te debuggen met een thread dump. Om dit te "
+"doen, selecteer de volgende optie en bekijk de thread dump in de wrapper.log."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:358
msgid "Launch browser on router startup?"
msgstr "Start browser bij opstarten router?"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:360
-msgid "I2P's main configuration interface is this web console, so for your convenience I2P can launch a web browser on startup pointing at"
-msgstr "De hoofd configuratie interface van I2P is deze web console, indien gewenst kan I2P na het opstarten een web browser starten die verwijst naar"
+msgid ""
+"I2P's main configuration interface is this web console, so for your "
+"convenience I2P can launch a web browser on startup pointing at"
+msgstr ""
+"De hoofd configuratie interface van I2P is deze web console, indien gewenst "
+"kan I2P na het opstarten een web browser starten die verwijst naar"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configstats_jsp.java:107
msgid "config stats"
@@ -4766,8 +5128,14 @@ msgid "There is a fundamental tradeoff between anonymity and performance."
msgstr "Er is een fundamentele afweging tussen anonimiteit en prestatie."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:312
-msgid "Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely reduce performance or reliability."
-msgstr "Tunnels langer dan 3 hops (bijvoorbeeld 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops), of een hoge hoeveelheid + backup hoeveelheid, kunnen leiden tot een vermindering van prestatie of bereikbaarheid."
+msgid ""
+"Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 "
+"hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely "
+"reduce performance or reliability."
+msgstr ""
+"Tunnels langer dan 3 hops (bijvoorbeeld 2 hops + 0-2 hops, 3 hops + 0-1 "
+"hops, 3 hops + 0-2 hops), of een hoge hoeveelheid + backup hoeveelheid, "
+"kunnen leiden tot een vermindering van prestatie of bereikbaarheid."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:315
msgid "High CPU and/or high outbound bandwidth usage may result."
@@ -4775,11 +5143,15 @@ msgstr "CPU gebruik en/of uitgaand bandbreedte kan toenemen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:318
msgid "Change these settings with care, and adjust them if you have problems."
-msgstr "Wijzig deze instellingen met zorg, en pas ze aan indien problemen optreden."
+msgstr ""
+"Wijzig deze instellingen met zorg, en pas ze aan indien problemen optreden."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:332
-msgid "Exploratory tunnel setting changes are stored in the router.config file."
-msgstr "Exploratory tunnel configuratie wijzigingen zijn opgeslagen in het router.config bestand."
+msgid ""
+"Exploratory tunnel setting changes are stored in the router.config file."
+msgstr ""
+"Exploratory tunnel configuratie wijzigingen zijn opgeslagen in het router."
+"config bestand."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:335
msgid "Client tunnel changes are temporary and are not saved."
@@ -4810,16 +5182,26 @@ msgid "Theme selection disabled for Internet Explorer, sorry."
msgstr "Thema selectie is uitgeschakeld voor Internet Explorer, sorry."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:311
-msgid "If you're not using IE, it's likely that your browser is pretending to be IE; please configure your browser (or proxy) to use a different User Agent string if you'd like to access the console themes."
-msgstr "Indien je geen IE gebruikt, is het mogelijk dat je browser zich voordoet als IE; configureer je browser (of proxy) om een andere User Agent tekst te gebruiken indien je de console thema's wilt wijzigen."
+msgid ""
+"If you're not using IE, it's likely that your browser is pretending to be "
+"IE; please configure your browser (or proxy) to use a different User Agent "
+"string if you'd like to access the console themes."
+msgstr ""
+"Indien je geen IE gebruikt, is het mogelijk dat je browser zich voordoet als "
+"IE; configureer je browser (of proxy) om een andere User Agent tekst te "
+"gebruiken indien je de console thema's wilt wijzigen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:315
msgid "Router Console Language"
msgstr "Router Console Taal"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:319
-msgid "Please contribute to the router console translation project! Contact the developers on IRC #i2p to help."
-msgstr "Lever een bijdrage aan het router console vertaal project! Neem contact op met de ontwikkelaars op IRC #i2p om te helpen."
+msgid ""
+"Please contribute to the router console translation project! Contact the "
+"developers on IRC #i2p to help."
+msgstr ""
+"Lever een bijdrage aan het router console vertaal project! Neem contact op "
+"met de ontwikkelaars op IRC #i2p om te helpen."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:323
msgid "Apply"
@@ -4886,8 +5268,12 @@ msgid "Unsigned Build URL"
msgstr "Niet-ondertekende Build URL"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:360
-msgid "I2P updates are disabled because you do not have write permission for the install directory."
-msgstr "I2P updates zijn uitgeschakeld omdat je geen schrijf rechten hebt op de installatie directory."
+msgid ""
+"I2P updates are disabled because you do not have write permission for the "
+"install directory."
+msgstr ""
+"I2P updates zijn uitgeschakeld omdat je geen schrijf rechten hebt op de "
+"installatie directory."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:366
msgid "Save"
@@ -4898,7 +5284,9 @@ msgid "Page Not Found"
msgstr "Pagina Niet Gevonden"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:243
-msgid "Sorry! You appear to be requesting a non-existent Router Console page or resource."
+msgid ""
+"Sorry! You appear to be requesting a non-existent Router Console page or "
+"resource."
msgstr "Sorry! Je benadert een niet bestaande Router Console pagina of bron."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:245
@@ -4942,8 +5330,12 @@ msgid "I2P Version & Running Environment"
msgstr "I2P Versie & Omgevingsinformatie"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:231
-msgid "Please report bugs on trac.i2p2.i2p."
-msgstr "Rapporteer bugs op trac.i2p2.i2p."
+msgid ""
+"Please report bugs on trac.i2p2."
+"i2p."
+msgstr ""
+"Rapporteer bugs op trac.i2p2.i2p"
+"a>."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:233
msgid "Please include this information in bug reports"
@@ -4982,8 +5374,12 @@ msgid "The requested web application is not running."
msgstr "De gevraagde web applicatie draait niet."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:235
-msgid "Please visit the config clients page to start it."
-msgstr "Bezoek de config clients pagina om het te starten."
+msgid ""
+"Please visit the config clients page"
+"a> to start it."
+msgstr ""
+"Bezoek de config clients pagina om "
+"het te starten."
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:105
msgid "peer connections"
@@ -5021,4 +5417,3 @@ msgstr "tunnel samenvatting"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:227
msgid "I2P Tunnel Summary"
msgstr "I2P Tunnel Samenvatting"
-
From be75455b847187ccb8e58577be441132bf63ad72 Mon Sep 17 00:00:00 2001
From: zzz
Date: Thu, 8 Jul 2010 18:45:30 +0000
Subject: [PATCH 34/75] More i2ptunnel error propagation fixes - key file - thx
echelon
---
.../java/src/net/i2p/i2ptunnel/I2PTunnel.java | 16 +++++++-------
.../net/i2p/i2ptunnel/TunnelController.java | 22 ++++++++++++++-----
history.txt | 3 +++
.../src/net/i2p/router/RouterVersion.java | 2 +-
4 files changed, 29 insertions(+), 14 deletions(-)
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java
index f09f03ca4..110d62984 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java
@@ -390,10 +390,10 @@ public class I2PTunnel implements Logging, EventDispatcher {
if (!privKeyFile.isAbsolute())
privKeyFile = new File(_context.getConfigDir(), args[2]);
if (!privKeyFile.canRead()) {
- l.log("private key file does not exist");
+ l.log(getPrefix() + "Private key file does not exist or is not readable: " + args[2]);
_log.error(getPrefix() + "Private key file does not exist or is not readable: " + args[2]);
notifyEvent("serverTaskId", Integer.valueOf(-1));
- return;
+ throw new IllegalArgumentException(getPrefix() + "Cannot open private key file " + args[2]);
}
I2PTunnelServer serv = new I2PTunnelServer(serverHost, portNum, privKeyFile, args[2], l, (EventDispatcher) this, this);
serv.setReadTimeout(readTimeout);
@@ -441,10 +441,10 @@ public class I2PTunnel implements Logging, EventDispatcher {
if (!privKeyFile.isAbsolute())
privKeyFile = new File(_context.getConfigDir(), args[2]);
if (!privKeyFile.canRead()) {
- l.log("private key file does not exist");
+ l.log(getPrefix() + "Private key file does not exist or is not readable: " + args[2]);
_log.error(getPrefix() + "Private key file does not exist or is not readable: " + args[2]);
notifyEvent("serverTaskId", Integer.valueOf(-1));
- return;
+ throw new IllegalArgumentException(getPrefix() + "Cannot open private key file " + args[2]);
}
I2PTunnelServer serv = new I2PTunnelIRCServer(serverHost, portNum, privKeyFile, args[2], l, (EventDispatcher) this, this);
serv.setReadTimeout(readTimeout);
@@ -502,10 +502,10 @@ public class I2PTunnel implements Logging, EventDispatcher {
if (!privKeyFile.isAbsolute())
privKeyFile = new File(_context.getConfigDir(), args[3]);
if (!privKeyFile.canRead()) {
- l.log("private key file does not exist");
+ l.log(getPrefix() + "Private key file does not exist or is not readable: " + args[3]);
_log.error(getPrefix() + "Private key file does not exist or is not readable: " + args[3]);
notifyEvent("serverTaskId", Integer.valueOf(-1));
- return;
+ throw new IllegalArgumentException(getPrefix() + "Cannot open private key file " + args[3]);
}
I2PTunnelHTTPServer serv = new I2PTunnelHTTPServer(serverHost, portNum, privKeyFile, args[3], spoofedHost, l, (EventDispatcher) this, this);
serv.setReadTimeout(readTimeout);
@@ -577,10 +577,10 @@ public class I2PTunnel implements Logging, EventDispatcher {
if (!privKeyFile.isAbsolute())
privKeyFile = new File(_context.getConfigDir(), args[4]);
if (!privKeyFile.canRead()) {
- l.log("private key file does not exist");
+ l.log(getPrefix() + "Private key file does not exist or is not readable: " + args[4]);
_log.error(getPrefix() + "Private key file does not exist or is not readable: " + args[4]);
notifyEvent("serverTaskId", Integer.valueOf(-1));
- return;
+ throw new IllegalArgumentException(getPrefix() + "Cannot open private key file " + args[4]);
}
I2PTunnelHTTPBidirServer serv = new I2PTunnelHTTPBidirServer(serverHost, portNum, port2Num, privKeyFile, args[3], spoofedHost, l, (EventDispatcher) this, this);
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java
index dc6ded46e..f0470c5a3 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java
@@ -46,6 +46,7 @@ public class TunnelController implements Logging {
public TunnelController(Properties config, String prefix) {
this(config, prefix, true);
}
+
/**
*
* @param createKey for servers, whether we want to create a brand new destination
@@ -58,17 +59,21 @@ public class TunnelController implements Logging {
setConfig(config, prefix);
_messages = new ArrayList(4);
_running = false;
+ boolean keyOK = true;
if (createKey && (getType().endsWith("server") || getPersistentClientKey()))
- createPrivateKey();
- _starting = getStartOnLoad();
+ keyOK = createPrivateKey();
+ _starting = keyOK && getStartOnLoad();
}
- private void createPrivateKey() {
+ /**
+ * @return success
+ */
+ private boolean createPrivateKey() {
I2PClient client = I2PClientFactory.createClient();
String filename = getPrivKeyFile();
if ( (filename == null) || (filename.trim().length() <= 0) ) {
log("No filename specified for the private key");
- return;
+ return false;
}
File keyFile = new File(getPrivKeyFile());
@@ -76,7 +81,7 @@ public class TunnelController implements Logging {
keyFile = new File(I2PAppContext.getGlobalContext().getConfigDir(), getPrivKeyFile());
if (keyFile.exists()) {
//log("Not overwriting existing private keys in " + keyFile.getAbsolutePath());
- return;
+ return true;
} else {
File parent = keyFile.getParentFile();
if ( (parent != null) && (!parent.exists()) )
@@ -94,13 +99,16 @@ public class TunnelController implements Logging {
if (_log.shouldLog(Log.ERROR))
_log.error("Error creating new destination", ie);
log("Error creating new destination: " + ie.getMessage());
+ return false;
} catch (IOException ioe) {
if (_log.shouldLog(Log.ERROR))
_log.error("Error creating writing the destination to " + keyFile.getAbsolutePath(), ioe);
log("Error writing the keys to " + keyFile.getAbsolutePath());
+ return false;
} finally {
if (fos != null) try { fos.close(); } catch (IOException ioe) {}
}
+ return true;
}
public void startTunnelBackground() {
@@ -126,6 +134,10 @@ public class TunnelController implements Logging {
}
_starting = false;
}
+
+ /**
+ * @throws IllegalArgumentException via methods in I2PTunnel
+ */
private void doStartTunnel() {
if (_running) {
if (_log.shouldLog(Log.INFO))
diff --git a/history.txt b/history.txt
index 7b7113ccf..254a215c0 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,6 @@
+2010-07-08 zzz
+ * I2PTunnel: More error propagation fixes
+
2010-07-07 duck
* RouterConsole: Add Help & FAQ link, minor label improvements.
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index a6204817e..f2522cd4e 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -18,7 +18,7 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = CoreVersion.VERSION;
- public final static long BUILD = 8;
+ public final static long BUILD = 9;
/** for example "-test" */
public final static String EXTRA = "";
From 4f827a5b1d12c755113ef4689ef226381a1c453c Mon Sep 17 00:00:00 2001
From: duck
Date: Fri, 9 Jul 2010 14:02:55 +0000
Subject: [PATCH 35/75] Dutch help page
---
apps/routerconsole/jsp/help_nl.jsp | 201 +++++++++++++++++++++++++++++
1 file changed, 201 insertions(+)
create mode 100644 apps/routerconsole/jsp/help_nl.jsp
diff --git a/apps/routerconsole/jsp/help_nl.jsp b/apps/routerconsole/jsp/help_nl.jsp
new file mode 100644
index 000000000..b486a4c66
--- /dev/null
+++ b/apps/routerconsole/jsp/help_nl.jsp
@@ -0,0 +1,201 @@
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+
+<%
+ /*
+ * Do not tag this file for translation - copy it to help_xx.jsp and translate inline.
+ */
+%>
+I2P Router Console - help
+<%@include file="css.jsi" %>
+
+<%@include file="summary.jsi" %>
+
I2P Router Help & Support
+
+Als je wilt helpen om de documentatie te verbeteren of vertalen, of wilt helpen
+met andere aspecten van het project, zie dan de documentatie voor
+vrijwilligers.
+
+Veel van de statistieken op de summary bar kunnen
+geconfigureerd worden om te worden
+geplot voor verdere analyse.
+
+
+
Algemeen
+
Lokale Identiteit:
+De eerste vier karakters (24 bits) van je 44-karakter (256-bit) Base64 router hash.
+De volledige hash is getoond op je router info pagina.
+Vertel deze aan niemand, want de router info bevat je IP.
+
Versie:
+De versie van de I2P software die je nu gebruikt.
+
Uptime:
+Hoe lang je I2P router al draait.
+
Netwerk Bereikbaarheid:
+De bereikbaarheid van je router door andere routers.
+Meer informatie is te vinden op de configuratie pagina.
+
+
+
Peers
+
Actief:
+Het eerste nummer is het aantal peers waar je in de laatste paar minuten
+berichten naar verzonden of van ontvangen hebt. Dit kan variëren van 8-10 tot
+een paar honderd, afhankelijk van je totale bandbreedte, gedeelde bandbreedte
+en lokaal gegenereerd verkeer. Het tweede nummer is het aantal peers dat je in
+het laatste uur hebt gezien. Wees niet ongerust wanneer deze aantallen erg
+variëren.
+
+[Grafieken inschakelen].
+
Snel:
+Dit is het aantal peers dat je gebruikt om client tunnels mee te bouwen. Het ligt over
+het algemeen tussen 8 en 15.
+Je snelle peers worden getoond op de profielen pagina.
+[Grafieken inschakelen].
+
Grote capaciteit:
+Dit is het aantal peers dat je gebruikt om sommige van de onderzoekende tunnels mee te maken.
+Het ligt over het algemeen tussen de 8 en 25. De snelle peers zijn inbegrepen in de categorie grote capaciteit.
+De grote capaciteits peers worden getoond op de profielen pagina.
+[Grafieken inschakelen].
+
Geïntegreerd:
+Dit is het aantal peers dat je gebruikt bij het opzoeken in de network database.
+Dit zijn gebruikelijk de "floodfill" peers.
+Je goed geïntegreerde peers worden getoond aan de onderkant van de profielen pagina.
+
Bekend:
+Dit is het aantal routers dat bekend is bij je router.
+Ze worden getoond op de netwerk database pagina.
+Dit kan liggen tussen onder de 100 en 1000 of meer.
+Dit aantal is niet de totale grootte van het netwerk;
+het kan erg variëren afhankelijk van je totale bandbreedte,
+gedeelde bandbreedte en lokaal gegenereerd verkeer.
+Voor I2P is het niet nodig dat een router alle andere routers kent.
+
+
+
Bandbreedte in/out
+Dit zou zichzelf moeten verklaren. Alle waarden zijn in bytes per seconde, niet in bits per seconde.
+Wijzig je bandbreedte limieten op de configuratie pagina.
+Bandbreedte wordt standaard geplot.
Onderzoekend:
+Tunnels gebouwd door je router en gebruikt om te communiceren met de floodfill peers,
+voor het bouwen van nieuwe tunnels en testen van bestaande tunnels.
+
Client:
+Tunnels gebouwd door je router voor het gebruik door elke client.
+
Deelnemend:
+Tunnels gebouwd door andere routers die door je eigen router heen lopen.
+Dit kan erg variëren afhankelijk van de vraag vanuit het netwerk,
+je gedeelde bandbreedte en hoeveelheid lokaal gegenereerd verkeer.
+De aanbevolen methode om het aantal deelnemende tunnels te beperken
+is door het share percentage te wijzigen op de configuratie pagina.
+Je kan het totale aantal ook beperken met de instelling router.maxParticipatingTunnels=nnn op
+de geavanceerde configuratie pagina. [Grafieken inschakelen].
+
Share rato:
+Het aantal deelnemende tunnels dat je voor andere routeert, gedeeld door het totale aantal hops in al je onderzoekende en client tunnels.
+Een aantal groter dan 1.00 betekent dat je meer tunnels aan het netwerk bijdraagt dan je gebruikt.
+
+
+
Verstopping
+Een aantal basis indicatoren voor een router overbelasting:
+
Taak vertraging:
+Hoe lang taken moeten wachten voordat ze uitgevoerd worden. De taak wachtrij wordt getoond op de taken pagina.
+Helaas zijn er ook verschillende andere taak wachtrijen in de router die verstopt kunnen raken,
+hun status is niet beschikbaar in de router console.
+De taak vertraging zou over het algemeen nul moeten zijn.
+Indien dit consequent hoger is dan 500ms, dan is of je computer erg traag of
+heeft de router een serieus probleem.
+[Grafieken inschakelen].
+
Bericht vertraging:
+Hoe lang een uitgaand bericht wacht in de wachtrij.
+Dit zou over het algemeen een aantal honderd milliseconden of minder moeten zijn.
+Indien dit consequent hoger is dan 1000ms, dan is of je computer erg traag
+of moet je je bandbreedte instellingen aanpassen, of je (bittorrent?) clients
+versturen mogelijk teveel data en moeten hun transmissie bandbreedte beperkt hebben.
+[Grafieken inschakelen] (transport.sendProcessingTime).
+
Tunnel vertraging:
+Dit is de rondgangstijd voor een tunnel test, welke een enkel bericht verstuurt
+vanuit een client tunnel dat dan bij een onderzoekende tunnel naar binnen gaat, of omgekeerd.
+Dit zou over het algemeen minder dan 5 seconden moeten zijn.
+Indien dit consequent hoger is, dan is of je computer erg traag of
+moet je je bandbreedte instellingen aanpassen of zijn er netwerk problemen.
+[Grafieken inschakelen] (tunnel.testSuccessTime).
+
Achterstand:
+Dit is het aantal wachtende aanvragen van andere routers om een deelnemende
+tunnel door je eigen router te bouwen.
+Dit zou over het algemeen dicht bij de nul moeten zijn.
+Indien dit consequent hoog is, dan is of je computer te traag of
+moet je je bandbreedte instellingen aanpassen.
+
Accepteren / Weigeren:
+De status van de router voor het accepteren of weigeren
+van verzoeken van andere routers om een deelnemende tunnel door je router te bouwen.
+Je router kan alle aanvragen accepteren, een percentage accepteren of weigeren,
+of alle aanvragen weigeren om verschillende redenen, om de bandbreedte en CPU
+gebruik te beheren en capaciteit te houden voor lokale clients.
+
+
Lokale bestemmingen
+De lokale applicaties die door je router verbinden.
+Dit kunnen clients zijn die gestart zijn door I2PTunnel
+of externe programma's die verbinden via SAM, BOB of direct met I2CP.
+
+
+
Juridische zaken
De I2P router (router.jar) en SDK (i2p.jar) zijn bijna geheel in het publieke domein, met een aantal noemenswaardige uitzonderingen:
+
ElGamal en DSA code, valt onder de BSD licentie, geschreven door TheCrypto
+
SHA256 en HMAC-SHA256, valt onder de MIT licentie, geschreven door the Legion of the Bouncycastle
+
AES code, valt onder de MIT licentie, geschreven door het Cryptix team
+
SNTP code, valt onder de BSD licentie, geschreven door Adam Buckley
+
De rest is helemaal public domain, geschreven door jrandom, mihi, hypercubus, oOo,
+ ugha, duck, shendaras, en anderen.
+
+
+
Bovenop de I2P router zijn een aantal client applicaties gemaakt, elk met
+hun eigen set aan licenties en afhankelijkheden. Deze webpagine is aangeboden
+als onderdeel van de I2P routerconsole client applicatie, gebouwd op basis van
+een afgeslankte Jetty
+instantie (afgeslankt, als in, we voegen geen demo applicaties of andere add-ons bij,
+en hebben de configuratie eenvoudiger gemaakt),
+welke je standaard JSP/Servlet web applicaties laat deployen in je router.
+Jetty maakt gebruik van Apache's javax.servlet (javax.servlet.jar) implementatie.
+Dit product bevat software ontwikkeld door de Apache Software Foundation
+(http://www.apache.org/).
+
+
Een andere applicatie op deze webpagina is I2PTunnel (je web interface) - een GPL applicatie geschreven door mihi
+die normaal TCP/IP verkeer over I2P laat tunnelen (zoals de eepproxy en de irc
+proxy). Er is ook een susimail web based mail
+client beschikbaar op de console, dit is een
+GPL applicatie geschreven door susi23. De adresboek applicatie, geschreven door
+Ragnarok helpt je met het beheren van je
+hosts.txt bestanden (zie ./addressbook/ voor meer informatie).
+
+
De router bevat ook standaard human's public domain SAM brug, welke andere client applicaties
+(zoals de bittorrent port) kan gebruiken.
+Er is ook een geoptimaliseerde library voor het uitvoeren van berekeningen met
+grote getallen - jbigi - deze gebruikt de LGPL licensed GMP library, aangepast voor verschillende PC
+architecturen. Opstarters voor windows gebruikers zijn gemaakt met Launch4J, en de installer is
+gemaakt met IzPack. Voor details
+over andere beschikbare applicaties, en hun licenties, zie het licentie beleid. Broncode voor I2P en
+de meeste gebundelde client applicaties kan gevonden worden op onze download pagina.
+De adreshelper link die je probeert te volgen gebruikt een andere destination
+dan een host item in je host database.
+Mogelijk probeert iemand een andere eepsite na te apen,
+of mensen hebben twee eepsites een identieke naam gegeven.
+
+Je kan dit conflict oplossen door te bepalen welke destination je vertrouwt,
+en dan of de adreshelper link te verwerpen,
+de host item in je host database te verwijderen,
+of één van de twee een andere naam te geven.
+
diff --git a/installer/resources/proxy/dnf-header_nl.ht b/installer/resources/proxy/dnf-header_nl.ht
index afb4481a9..9bd31407a 100644
--- a/installer/resources/proxy/dnf-header_nl.ht
+++ b/installer/resources/proxy/dnf-header_nl.ht
@@ -5,7 +5,7 @@ Connection: close
Proxy-Connection: close
-I2P Warning: Eepsite niet bereikbaar
+I2P Waarschuwing: Eepsite niet bereikbaar
@@ -15,7 +15,7 @@ Proxy-Connection: close
ConfiguratieHelpAdresboek
-
Warning: Eepsite Onbereikbaar
+
Waarschuwing: Eepsite Onbereikbaar
De eepsite was niet bereikbaar.
De eepsite is offline, er is een netwerk verstopping,
of je router is niet goed geïntegreerd met peers.
diff --git a/installer/resources/proxy/dnfh-header_nl.ht b/installer/resources/proxy/dnfh-header_nl.ht
index 0d7dc2131..7a1e367ed 100644
--- a/installer/resources/proxy/dnfh-header_nl.ht
+++ b/installer/resources/proxy/dnfh-header_nl.ht
@@ -5,7 +5,7 @@ Connection: close
Proxy-Connection: close
-I2P Warning: Eepsite onbekend
+I2P Waarschuwing: Eepsite onbekend
From 7532276a006ccdb9a1d137a80366f322d758df73 Mon Sep 17 00:00:00 2001
From: duck
Date: Sat, 10 Jul 2010 11:04:30 +0000
Subject: [PATCH 38/75] Dutch eepsite help page
---
.../resources/eepsite.help/help/index.html | 2 +-
.../resources/eepsite.help/help/index_de.html | 2 +-
.../resources/eepsite.help/help/index_fr.html | 2 +-
.../resources/eepsite.help/help/index_na.html | 2 +-
.../resources/eepsite.help/help/index_nl.html | 116 ++++++++++++++++++
.../resources/eepsite.help/help/index_ru.html | 2 +-
.../eepsite.help/help/pagetemplate.html | 2 +-
7 files changed, 122 insertions(+), 6 deletions(-)
create mode 100644 installer/resources/eepsite.help/help/index_nl.html
diff --git a/installer/resources/eepsite.help/help/index.html b/installer/resources/eepsite.help/help/index.html
index c5be8fa36..d434c7707 100644
--- a/installer/resources/eepsite.help/help/index.html
+++ b/installer/resources/eepsite.help/help/index.html
@@ -15,7 +15,7 @@
-
+
diff --git a/installer/resources/eepsite.help/help/index_de.html b/installer/resources/eepsite.help/help/index_de.html
index 263d9a487..bdd0f73b5 100644
--- a/installer/resources/eepsite.help/help/index_de.html
+++ b/installer/resources/eepsite.help/help/index_de.html
@@ -16,7 +16,7 @@
-
+
Dit is je eepsite, je eigen anonieme I2P webserver - pas de bestanden onder ~/.i2p/eepsite/docroot/ (Linux) of %APPDATA%\I2P\eepsite\docroot\ (Windows) simpelweg aan
+ en ze zijn bereikbaar door anderen zodra je onderstaande instructies hebt opgevolgd.
+ In I2P worden eepsites aangeduid met een 'destination', dit is een erg lange Base64 string.
+ (De 'destination' is vergelijkbaar met een IP adres en wordt getoond op de eepsite's I2PTunnel
+ configuratie pagina).
+ Onderstaande instructies laten zien hoe je een naam zoals "mijnsite.i2p" kunt laten verwijzen naar je destination en
+ hoe je je eepsite moet starten.
+ Je eepsite is standaard gestopt.
+ Nadat je tunnel voor je eepsite start, zullen anderen je site nog niet kunnen vinden
+ want het heeft nog geen naam en ze hebben je erg lange Base64 destination nog niet.
+ Je zou deze lange destination aan iedereen kunnen vertellen, maar gelukkig heeft
+ i2p een adresboek en verschillende eenvoudige manieren om anderen over je eepsite te
+ vertellen. Hier zijn de gedetailleerde instructies.
+
+
Kies een naam voor je eepsite (mijnsite.i2p). Gebruik alleen kleine letters.
+ Kijk eerst
+ hier,
+ in het adresboek van je router of in het bestand i2p/hosts.txt of de naam nog beschikbaar is.
+ Voer de nieuwe naam voor je eepsite in op de
+ eepsite i2ptunnel configuratie pagina
+ onder "Website naam". Dit vervangt de standaard "mysite.i2p".
+ Klik ook op de "Auto Start" box, hiermee zal je eepsite elke keer starten samen met je router.
+ Vergeet niet om op "Opslaan" te klikken.
+
Klik op de start knop voor je eepsite op de
+ hoofd i2ptunnel configuratie pagina.
+ Je zult nu "eepsite" zien onder "Lokale Destinations" aan de linker kant van je
+ I2P Router Console.
+ Je eepsite draait nu.
+
Selecteer de gehele "Lokale destination" tekst op de
+ eepsite i2ptunnel configuratie pagina.
+ en kopieer het op het klipbord.
+ Zorg ervoor dat je het helemaal hebt - het is meer dan 500 karakters lang en eindigt met "AAAA".
+
Voer de naam in en plak je destination in je
+ hoofd adresboek.
+ Klik "Toevoegen" om de destination aan je adresboek toe te voegen.
+
In je browser, voel je eepsite naam in (mijnsite.i2p) en je komt hier hopelijk weer terug.
+
Voordat je de rest van de wereld over je nieuwe eepsite vertelt, zorg eerst voor wat content.
+ Ga naar ~/.i2p/eepsite/docroot/ (Linux) of %APPDATA%\I2P\eepsite\docroot\ (Windows) en vervang de index.html verwijs pagina met je eigen content. Virtual folders werken, dus kan je bestanden vanuit een subdirectory hosten zonder dat je een pagina met links naar deze files moet maken. Mocht je een template nodig hebben voor een basis site, weer vrij om deze pagina en deze content te gebruiken en aan te passen!
+
+
Registreer je eigen .I2P Domein
+
Nu is het tijd om je eepsite toe te voegen aan een I2P adresboek gehost door een site
+ zoals stats.i2p.
+ Om dat te doen, voer je eepsite naam en destination in op de web interface van een of meer van deze sites.
+ Hier is het invoer formulier op stats.i2p.
+ De key is de "Lokale destination" sleutel op de
+ eepsite i2ptunnel configuratie pagina.
+ Zorg ervoor dat je het geheel plakt, de destination eindigt met "AAAA".
+ Lees de voorwaarden en klik op de "Submit" button.
+ Het kan een aantal uren duren (afhankelijk van de voorwaarden van de gebruikte site en de subscription update instellingen van andere routers) waarna anderen je eepsite kunnen vinden door het invoeren van mijnsite.i2p in hun browser.
+
Adresboek Subscriptions Toevoegen
+
Over adresboek updates gesproken, dit zou een goed moment zijn om wat adresboek subscriptions toe te voegen aan je eigen
+ subscription pagina. Ga naar je subscriptions configuratie pagina en voeg een aantal van deze URLs toe om automatisch op de hoogte te blijven van nieuwe hosts:
Mocht je haast hebben en niet een aantal uren kunnen wachten, dan kan je gebruik maken van een "jump" adres helper redirection service.
+ Dit dit werkt al een paar minuten nadat je de destination aan het adresboek van dezelfde site hebt toegevoegd.
+ Test het eerst zelf door het invoeren van
+ http://stats.i2p/cgi-bin/jump.cgi?a=mijnsite.i2p of
+ http://i2host.i2p/cgi-bin/i2hostjump?mijnsite.i2p
+ in je browser.
+ Zodra dit werkt kan je andere hierover vertellen.
+
Sommigen kijken op eepsite lijsten zoals
+ inproxy.tino.i2p/status.php voor nieuwe eepsites, dus kan je zo een aantal bezoekers krijgen.
+ Maar er zijn genoeg andere manieren om je eepsite te promoten. Hier zijn er een aantal:
+
+Noot: Deze pagina, de website en console moeten allemaal vertaald worden in JOUW eigen taal, mocht dit nog niet gedaan zijn. Help de groei van dit project door bij te dragen aan de vertaling. Neem contact op met het project via het hierboven genoemde IRC kanaal. Alvast bedankt!
+
+Document laatst gewijzigd: November 2009.
+
+
+
diff --git a/installer/resources/eepsite.help/help/index_ru.html b/installer/resources/eepsite.help/help/index_ru.html
index 3fca0f2e6..9c8eccdc3 100644
--- a/installer/resources/eepsite.help/help/index_ru.html
+++ b/installer/resources/eepsite.help/help/index_ru.html
@@ -15,7 +15,7 @@
-
+
diff --git a/installer/resources/eepsite.help/help/pagetemplate.html b/installer/resources/eepsite.help/help/pagetemplate.html
index fea7378de..a0ac67c29 100644
--- a/installer/resources/eepsite.help/help/pagetemplate.html
+++ b/installer/resources/eepsite.help/help/pagetemplate.html
@@ -14,7 +14,7 @@
-
+
From c08f79f71e9b0ebe85afe1b0954eef8481630fcb Mon Sep 17 00:00:00 2001
From: duck
Date: Sat, 10 Jul 2010 11:49:40 +0000
Subject: [PATCH 39/75] Unfuzzy susidns translation, typo fixes for eepsite
help. (thx _4get)
---
apps/susidns/locale/messages_nl.po | 1 -
installer/resources/eepsite.help/help/index_nl.html | 4 ++--
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/apps/susidns/locale/messages_nl.po b/apps/susidns/locale/messages_nl.po
index c3afac128..fb9a70421 100644
--- a/apps/susidns/locale/messages_nl.po
+++ b/apps/susidns/locale/messages_nl.po
@@ -500,7 +500,6 @@ msgid "The subscription file contains a list of i2p URLs."
msgstr "Het subscription bestand bevat een lijst met i2p URLs."
#: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:134
-#, fuzzy
msgid ""
"The addressbook application regularly checks this list for new eepsites."
msgstr ""
diff --git a/installer/resources/eepsite.help/help/index_nl.html b/installer/resources/eepsite.help/help/index_nl.html
index 017b1e4b7..5d6c9a61a 100644
--- a/installer/resources/eepsite.help/help/index_nl.html
+++ b/installer/resources/eepsite.help/help/index_nl.html
@@ -88,7 +88,7 @@
http://stats.i2p/cgi-bin/jump.cgi?a=mijnsite.i2p of
http://i2host.i2p/cgi-bin/i2hostjump?mijnsite.i2p
in je browser.
- Zodra dit werkt kan je andere hierover vertellen.
+ Zodra dit werkt kan je anderen hierover vertellen.
Sommigen kijken op eepsite lijsten zoals
inproxy.tino.i2p/status.php voor nieuwe eepsites, dus kan je zo een aantal bezoekers krijgen.
Maar er zijn genoeg andere manieren om je eepsite te promoten. Hier zijn er een aantal:
@@ -101,7 +101,7 @@
Verdere assistentie
-
In dien je nog vragen hebt, de volgende plaatsten bieden support:
+
In dien je nog vragen hebt, de volgende plaatsen bieden support:
-The 0.7.14 release contains the usual collection of bug fixes and performance tweaks.
-There are also some i2psnark improvements and more fixes for plugins.
-Upgrading is recommended.
-
-Important note: Due to a bug in 0.7.13 and earlier releases, clicking 'Download 0.7.14 Update'
-in your router console summary bar, when you have the summary bar refresh enabled,
-may result in multiple downloads of the update. Please disable the summary bar refresh
-before clicking the download button.
-If your update policy is set to 'Download and Verify Only' (the default) then
-you should not have a problem, the router will download the file once.
+The 0.8 release contains the usual collection of bug fixes,
+as well as completion of the German translation by eche|on and a complete Dutch translation by monkeybrains and duck.
+This release is fully compatible with the 0.7.x releases.
+As usual, upgrading is recommended.
Please help grow the network!
Say hello to the volunteers on the new #i2p-help IRC channel.
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index 895e8eb46..a411b0099 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -18,10 +18,10 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = CoreVersion.VERSION;
- public final static long BUILD = 10;
+ public final static long BUILD = 0;
/** for example "-test" */
- public final static String EXTRA = "-rc";
+ public final static String EXTRA = "";
public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA;
public static void main(String args[]) {
System.out.println("I2P Router version: " + FULL_VERSION);
From 38169b6d70b889dbec78641577915c687e9a1dcd Mon Sep 17 00:00:00 2001
From: echelon
Date: Mon, 26 Jul 2010 12:08:17 +0000
Subject: [PATCH 41/75] small fixes to _de
---
apps/routerconsole/locale/messages_de.po | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/apps/routerconsole/locale/messages_de.po b/apps/routerconsole/locale/messages_de.po
index 05c13a037..40ebdebd6 100644
--- a/apps/routerconsole/locale/messages_de.po
+++ b/apps/routerconsole/locale/messages_de.po
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: I2P routerconsole\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-07-08 08:03+0000\n"
-"PO-Revision-Date: 2010-07-08 10:18+0100\n"
+"PO-Revision-Date: 2010-07-26 14:04+0100\n"
"Last-Translator: echelon \n"
"Language-Team: echelon , Sperreingang \n"
"MIME-Version: 1.0\n"
@@ -3441,7 +3441,7 @@ msgstr "Jetzt"
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:63
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:280
msgid "configure"
-msgstr "ändere"
+msgstr "ändern"
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:65
msgid "dead"
@@ -3482,7 +3482,7 @@ msgstr "Aufgabe"
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:74
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
msgid "Usage"
-msgstr "Benutzt"
+msgstr "Datenmenge"
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:107
msgid "grace period"
@@ -3512,7 +3512,7 @@ msgstr "Verbrauchte Bandbreite über die aktive Zeit"
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:156
msgid "Expiry"
-msgstr "Verfallzeit"
+msgstr "Restzeit"
#: ../java/src/net/i2p/router/web/TunnelRenderer.java:159
msgid "Participants"
@@ -3950,11 +3950,11 @@ msgstr ""
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:303
msgid "KBps In"
-msgstr "kbit/s Eingehend"
+msgstr "kbyte/s Eingehend"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:317
msgid "KBps Out"
-msgstr "kbit/s Ausgehend"
+msgstr "kbyte/s Ausgehend"
#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:333
msgid "Share"
From 6ddac9a47869ff1c5accaa9cf59aa2ab0caa97ad Mon Sep 17 00:00:00 2001
From: duck
Date: Fri, 30 Jul 2010 08:54:21 +0000
Subject: [PATCH 42/75] Fix typo (trac #32)
---
installer/resources/readme/readme_de.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/installer/resources/readme/readme_de.html b/installer/resources/readme/readme_de.html
index 8a637a787..32a65c7fd 100644
--- a/installer/resources/readme/readme_de.html
+++ b/installer/resources/readme/readme_de.html
@@ -48,7 +48,7 @@
Jetty Instanz horcht auf
http://127.0.0.1:7658/. Platziere einfach
Deine Dateien in das eepsite/docroot/ Verzeichnis (oder jedes
- standart JSP/Servlet .war unter eepsite/webapps,
+ Standard-JSP/Servlet .war unter eepsite/webapps,
oder CGI Scripte unter eepsite/cgi-bin) und schon sind sie
verfügbar. Nach dem Start des Eepsite tunnels
der darauf zeigt ist Deine Eepsite für Andere verfügbar.
From 87abc1d6b467f081f9f410bb6681c060625076f4 Mon Sep 17 00:00:00 2001
From: mathiasdm
Date: Sat, 31 Jul 2010 12:49:38 +0000
Subject: [PATCH 43/75] CryptoConstants update from draft to RFC.
---
core/java/src/net/i2p/crypto/CryptoConstants.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/core/java/src/net/i2p/crypto/CryptoConstants.java b/core/java/src/net/i2p/crypto/CryptoConstants.java
index 965039074..4728de8de 100644
--- a/core/java/src/net/i2p/crypto/CryptoConstants.java
+++ b/core/java/src/net/i2p/crypto/CryptoConstants.java
@@ -34,8 +34,8 @@ import java.math.BigInteger;
import net.i2p.util.NativeBigInteger;
/**
- * Primes for ElGamal and DSA from
- * http://www.ietf.org/proceedings/03mar/I-D/draft-ietf-ipsec-ike-modp-groups-05.txt
+ * Prime for ElGamal from http://tools.ietf.org/html/rfc3526
+ * Primes for DSA: unknown.
*/
public class CryptoConstants {
public static final BigInteger dsap = new NativeBigInteger(
@@ -63,4 +63,4 @@ public class CryptoConstants {
+ "DE2BCBF6955817183995497CEA956AE515D2261898FA0510"
+ "15728E5A8AACAA68FFFFFFFFFFFFFFFF", 16);
public static final BigInteger elgg = new NativeBigInteger("2");
-}
\ No newline at end of file
+}
From 6add722a2534a55b86411533296053faa4d94892 Mon Sep 17 00:00:00 2001
From: mathiasdm
Date: Sun, 8 Aug 2010 10:01:35 +0000
Subject: [PATCH 44/75] Javadoc fix - thanks, duck!
---
core/java/src/net/i2p/crypto/ElGamalEngine.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/core/java/src/net/i2p/crypto/ElGamalEngine.java b/core/java/src/net/i2p/crypto/ElGamalEngine.java
index fe34012f2..93a017656 100644
--- a/core/java/src/net/i2p/crypto/ElGamalEngine.java
+++ b/core/java/src/net/i2p/crypto/ElGamalEngine.java
@@ -45,7 +45,7 @@ import net.i2p.util.RandomSource;
/**
* Wrapper for ElGamal encryption/signature schemes.
*
- * Does all of Elgamal now for data sizes of 223 bytes and less. The data to be
+ * Does all of Elgamal now for data sizes of 222 bytes and less. The data to be
* encrypted is first prepended with a random nonzero byte, then the 32 bytes
* making up the SHA256 of the data, then the data itself. The random byte and
* the SHA256 hash is stripped on decrypt so the original data is returned.
From 4323036992528caec3411c7b56e04648b4cf6295 Mon Sep 17 00:00:00 2001
From: zzz
Date: Tue, 10 Aug 2010 16:17:09 +0000
Subject: [PATCH 45/75] javadocs
---
.../java/src/net/i2p/i2ptunnel/I2PTunnel.java | 6 +++
core/java/src/net/i2p/I2PAppContext.java | 2 +
core/java/src/net/i2p/data/DataHelper.java | 53 +++++++++++++++++--
.../net/i2p/data/i2np/I2NPMessageImpl.java | 4 ++
.../i2p/router/peermanager/PeerProfile.java | 3 ++
.../router/transport/ntcp/EstablishState.java | 8 +++
.../i2p/router/tunnel/pool/BuildHandler.java | 2 +
7 files changed, 74 insertions(+), 4 deletions(-)
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java
index 110d62984..17049626c 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java
@@ -1463,6 +1463,7 @@ public class I2PTunnel implements Logging, EventDispatcher {
/**
* Create a new destination, storing the destination and its private keys where
* instructed
+ * Deprecated - only used by CLI
*
* @param writeTo location to store the private keys
* @param pubDest location to store the destination
@@ -1487,6 +1488,7 @@ public class I2PTunnel implements Logging, EventDispatcher {
/**
* Read in the given destination, display it, and write it to the given location
+ * Deprecated - only used by CLI
*
* @param readFrom stream to read the destination from
* @param pubDest stream to write the destination to
@@ -1508,6 +1510,7 @@ public class I2PTunnel implements Logging, EventDispatcher {
/**
* Write out the destination to the stream
+ * Deprecated - only used by CLI
*
* @param d Destination to write
* @param o stream to write the destination to
@@ -1525,6 +1528,9 @@ public class I2PTunnel implements Logging, EventDispatcher {
* also supported, where filename is a file that either contains a
* binary Destination structure or the Base64 encoding of that
* structure.
+ *
+ * Since file: isn't really used, this method is deprecated,
+ * just call context.namingService.lookup() directly.
*/
public static Destination destFromName(String name) throws DataFormatException {
diff --git a/core/java/src/net/i2p/I2PAppContext.java b/core/java/src/net/i2p/I2PAppContext.java
index aac61d4be..1bfde4aad 100644
--- a/core/java/src/net/i2p/I2PAppContext.java
+++ b/core/java/src/net/i2p/I2PAppContext.java
@@ -586,12 +586,14 @@ public class I2PAppContext {
}
}
+ /** @deprecated unused */
public HMAC256Generator hmac256() {
if (!_hmac256Initialized)
initializeHMAC256();
return _hmac256;
}
+ /** @deprecated unused */
private void initializeHMAC256() {
synchronized (this) {
if (_hmac256 == null) {
diff --git a/core/java/src/net/i2p/data/DataHelper.java b/core/java/src/net/i2p/data/DataHelper.java
index 3c83d6527..0743defde 100644
--- a/core/java/src/net/i2p/data/DataHelper.java
+++ b/core/java/src/net/i2p/data/DataHelper.java
@@ -98,6 +98,10 @@ public class DataHelper {
/**
* Write a mapping to the stream, as defined by the I2P data structure spec,
* and store it into a Properties object. See readProperties for the format.
+ * Property keys and values must not contain '=' or ';', this is not checked and they are not escaped
+ * Keys and values must be 255 bytes or less,
+ * Formatted length must not exceed 65535 bytes
+ * @throws DataFormatException if either is too long.
*
* @param rawStream stream to write to
* @param props properties to write out
@@ -111,6 +115,11 @@ public class DataHelper {
/**
* Writes the props to the stream, sorted by property name.
+ * See readProperties() for the format.
+ * Property keys and values must not contain '=' or ';', this is not checked and they are not escaped
+ * Keys and values must be 255 bytes or less,
+ * Formatted length must not exceed 65535 bytes
+ * @throws DataFormatException if either is too long.
*
* jrandom disabled UTF-8 in mid-2004, for performance reasons,
* i.e. slow foo.getBytes("UTF-8")
@@ -151,8 +160,19 @@ public class DataHelper {
}
/*
- * Reads the props from the byte array
- * @param props returned OrderedProperties (sorted by property name)
+ * Writes the props to the byte array, sorted
+ * See readProperties() for the format.
+ * Property keys and values must not contain '=' or ';', this is not checked and they are not escaped
+ * Keys and values must be 255 bytes or less,
+ * @throws DataFormatException if too long.
+ * Formatted length must not exceed 65535 bytes
+ * Should throw DataFormatException if too long but it doesn't.
+ * Warning - confusing method name, Properties is the source.
+ *
+ * @deprecated unused
+ *
+ * @param target returned array as specified in data structure spec
+ * @param props source
* @return new offset
*/
public static int toProperties(byte target[], int offset, Properties props) throws DataFormatException, IOException {
@@ -185,8 +205,14 @@ public class DataHelper {
}
/**
- * Writes the props to the byte array, not sorted
- * (unless the target param is an OrderedProperties)
+ * Reads the props from the byte array and puts them in the Properties target
+ * See readProperties() for the format.
+ * Warning - confusing method name, Properties is the target.
+ *
+ * @deprecated unused
+ *
+ * @param source source
+ * @param target returned Properties
* @return new offset
*/
public static int fromProperties(byte source[], int offset, Properties target) throws DataFormatException, IOException {
@@ -214,6 +240,15 @@ public class DataHelper {
/**
* Writes the props to returned byte array, not sorted
* (unless the opts param is an OrderedProperties)
+ * See readProperties() for the format.
+ * Property keys and values must not contain '=' or ';', this is not checked and they are not escaped
+ * Keys and values must be 255 bytes or less,
+ * Formatted length must not exceed 65535 bytes
+ * Warning - confusing method name, Properties is the source.
+ *
+ * @deprecated unused
+ *
+ * @throws RuntimeException if either is too long.
*/
public static byte[] toProperties(Properties opts) {
try {
@@ -604,6 +639,7 @@ public class DataHelper {
* @throws DataFormatException if the boolean is not valid
* @throws IOException if there is an IO error reading the boolean
* @return boolean value, or null
+ * @deprecated unused
*/
public static Boolean readBoolean(InputStream in) throws DataFormatException, IOException {
int val = (int) readLong(in, 1);
@@ -626,6 +662,7 @@ public class DataHelper {
* @param bool boolean value, or null
* @throws DataFormatException if the boolean is not valid
* @throws IOException if there is an IO error writing the boolean
+ * @deprecated unused
*/
public static void writeBoolean(OutputStream out, Boolean bool)
throws DataFormatException, IOException {
@@ -637,6 +674,7 @@ public class DataHelper {
writeLong(out, 1, BOOLEAN_FALSE);
}
+ /** @deprecated unused */
public static Boolean fromBoolean(byte data[], int offset) {
if (data[offset] == BOOLEAN_TRUE)
return Boolean.TRUE;
@@ -646,9 +684,12 @@ public class DataHelper {
return null;
}
+ /** @deprecated unused */
public static void toBoolean(byte data[], int offset, boolean value) {
data[offset] = (value ? BOOLEAN_TRUE : BOOLEAN_FALSE);
}
+
+ /** @deprecated unused */
public static void toBoolean(byte data[], int offset, Boolean value) {
if (value == null)
data[offset] = BOOLEAN_UNKNOWN;
@@ -656,9 +697,13 @@ public class DataHelper {
data[offset] = (value.booleanValue() ? BOOLEAN_TRUE : BOOLEAN_FALSE);
}
+ /** deprecated - used only in DatabaseLookupMessage */
public static final byte BOOLEAN_TRUE = 0x1;
+ /** deprecated - used only in DatabaseLookupMessage */
public static final byte BOOLEAN_FALSE = 0x0;
+ /** @deprecated unused */
public static final byte BOOLEAN_UNKNOWN = 0x2;
+ /** @deprecated unused */
public static final int BOOLEAN_LENGTH = 1;
//
diff --git a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java
index 108ee0eb0..ae22437b8 100644
--- a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java
+++ b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java
@@ -58,6 +58,10 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM
//_context.statManager().createRateStat("i2np.readTime", "How long it takes to read an I2NP message", "I2NP", new long[] { 10*60*1000, 60*60*1000 });
}
+ /**
+ * Read the whole message (including the type) and throw it away.
+ * @deprecated Unused, why would you do this
+ */
public void readBytes(InputStream in) throws DataFormatException, IOException {
try {
readBytes(in, -1, new byte[1024]);
diff --git a/router/java/src/net/i2p/router/peermanager/PeerProfile.java b/router/java/src/net/i2p/router/peermanager/PeerProfile.java
index a0e4f76a0..6f7fe54bb 100644
--- a/router/java/src/net/i2p/router/peermanager/PeerProfile.java
+++ b/router/java/src/net/i2p/router/peermanager/PeerProfile.java
@@ -224,6 +224,7 @@ public class PeerProfile {
public double getIntegrationValue() { return _integrationValue; }
/**
* is this peer actively failing (aka not worth touching)?
+ * deprecated - unused - always false
*/
public boolean getIsFailing() { return _isFailing; }
@@ -476,7 +477,9 @@ public class PeerProfile {
private double calculateSpeed() { return _context.speedCalculator().calc(this); }
private double calculateCapacity() { return _context.capacityCalculator().calc(this); }
private double calculateIntegration() { return _context.integrationCalculator().calc(this); }
+ /** deprecated - unused - always false */
private boolean calculateIsFailing() { return false; }
+ /** deprecated - unused - always false */
void setIsFailing(boolean val) { _isFailing = val; }
@Override
diff --git a/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java b/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java
index 0749e8d6c..747c923ec 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java
@@ -703,6 +703,9 @@ public class EstablishState {
* - 4 byte i2p network time as known by the remote side (seconds since the epoch)
* - uninterpreted padding data, up to byte 223
* - xor of the local router's identity hash and the SHA256 of bytes 32 through bytes 223
+ *
+ * @return should always be false since nobody ever sends a check info message
+ *
*/
private static boolean isCheckInfo(I2PAppContext ctx, Hash us, byte first256[]) {
Log log = ctx.logManager().getLog(EstablishState.class);
@@ -742,6 +745,8 @@ public class EstablishState {
}
}
+ /** @deprecated unused */
+/*********
public static void checkHost(String args[]) {
if (args.length != 3) {
System.err.println("Usage: EstablishState ipOrHostname portNum peerHashBase64");
@@ -779,7 +784,9 @@ public class EstablishState {
e.printStackTrace();
}
}
+*******/
+/*******
public static void main(String args[]) {
if (args.length == 3) {
checkHost(args);
@@ -943,6 +950,7 @@ public class EstablishState {
e.printStackTrace();
}
}
+*******/
/**
* Mark a string for extraction by xgettext and translation.
diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
index 705552c19..7be46e0c7 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
@@ -498,6 +498,8 @@ class BuildHandler {
long nextId = req.readNextTunnelId();
boolean isInGW = req.readIsInboundGateway();
boolean isOutEnd = req.readIsOutboundEndpoint();
+ // time is in hours, and only for log below - what's the point?
+ // tunnel-alt-creation.html specifies that this is enforced +/- 1 hour but it is not.
long time = req.readRequestTime();
long now = (_context.clock().now() / (60l*60l*1000l)) * (60*60*1000);
int ourSlot = -1;
From 2244142bd80ef1a8291fb420b1eeb29c26d036e4 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 14 Aug 2010 18:22:46 +0000
Subject: [PATCH 46/75] javadoc, comment out some main()s
---
core/java/src/net/i2p/I2PAppContext.java | 67 +++++++++++++++++++
core/java/src/net/i2p/crypto/AESEngine.java | 12 +++-
.../src/net/i2p/crypto/CryptixAESEngine.java | 5 +-
.../src/net/i2p/crypto/ElGamalEngine.java | 10 +--
.../java/src/net/i2p/crypto/KeyGenerator.java | 8 ++-
.../router/transport/udp/UDPPacketReader.java | 8 +++
6 files changed, 98 insertions(+), 12 deletions(-)
diff --git a/core/java/src/net/i2p/I2PAppContext.java b/core/java/src/net/i2p/I2PAppContext.java
index 1bfde4aad..637596c4f 100644
--- a/core/java/src/net/i2p/I2PAppContext.java
+++ b/core/java/src/net/i2p/I2PAppContext.java
@@ -210,6 +210,7 @@ public class I2PAppContext {
* need to look there as well.
*
* All dirs except the base are created if they don't exist, but the creation will fail silently.
+ * @since 0.7.6
*/
private void initializeDirs() {
String s = getProperty("i2p.dir.base", System.getProperty("user.dir"));
@@ -265,12 +266,78 @@ public class I2PAppContext {
******/
}
+ /**
+ * This is the installation dir, often referred to as $I2P.
+ * Applilcations should consider this directory read-only and never
+ * attempt to write to it.
+ * It may actually be read-only on a multi-user installation.
+ * The config files in this directory are templates for user
+ * installations and should not be accessed by applications.
+ * The only thing that may be useful in here is the lib/ dir
+ * containing the .jars.
+ * @since 0.7.6
+ * @return dir constant for the life of the context
+ */
public File getBaseDir() { return _baseDir; }
+
+ /**
+ * The base dir for config files.
+ * Applications may use this to access router configuration files if necessary.
+ * Usually ~/.i2p on Linux and %APPDIR%\I2P on Windows.
+ * In installations originally installed with 0.7.5 or earlier, and in
+ * "portable" installations, this will be the same as the base dir.
+ * @since 0.7.6
+ * @return dir constant for the life of the context
+ */
public File getConfigDir() { return _configDir; }
+
+ /**
+ * Where the router keeps its files.
+ * Applications should not use this.
+ * The same as the config dir for now.
+ * @since 0.7.6
+ * @return dir constant for the life of the context
+ */
public File getRouterDir() { return _routerDir; }
+
+ /**
+ * Where router.ping goes.
+ * Applications should not use this.
+ * The same as the system temp dir for now.
+ * Which is a problem for multi-user installations.
+ * @since 0.7.6
+ * @return dir constant for the life of the context
+ */
public File getPIDDir() { return _pidDir; }
+
+ /**
+ * Where the router keeps its log directory.
+ * Applications should not use this.
+ * The same as the config dir for now.
+ * (i.e. ~/.i2p, NOT ~/.i2p/logs)
+ * @since 0.7.6
+ * @return dir constant for the life of the context
+ */
public File getLogDir() { return _logDir; }
+
+ /**
+ * Where applications may store data.
+ * The same as the config dir for now, but may change in the future.
+ * Apps should be careful not to overwrite router files.
+ * @since 0.7.6
+ * @return dir constant for the life of the context
+ */
public File getAppDir() { return _appDir; }
+
+ /**
+ * Where anybody may store temporary data.
+ * This is a directory created in the system temp dir on the
+ * first call in this context, and is deleted on JVM exit.
+ * Applications should create their own directory inside this directory
+ * to avoid collisions with other apps.
+ * @since 0.7.6
+ * @return dir constant for the life of the context
+ */
public File getTempDir() {
// fixme don't synchronize every time
synchronized (this) {
diff --git a/core/java/src/net/i2p/crypto/AESEngine.java b/core/java/src/net/i2p/crypto/AESEngine.java
index a67281b23..fa6a9110a 100644
--- a/core/java/src/net/i2p/crypto/AESEngine.java
+++ b/core/java/src/net/i2p/crypto/AESEngine.java
@@ -18,7 +18,8 @@ import net.i2p.util.RandomSource;
/**
* Dummy wrapper for AES cipher operation.
- *
+ * UNUSED unless i2p.encryption = off
+ * See CryptixAESEngine for the real thing.
*/
public class AESEngine {
private Log _log;
@@ -145,7 +146,10 @@ public class AESEngine {
_log.warn("Warning: AES is disabled");
}
-
+ /**
+ * Just copies payload to out
+ * @param sessionKey unused
+ */
public void encryptBlock(byte payload[], int inIndex, SessionKey sessionKey, byte out[], int outIndex) {
System.arraycopy(payload, inIndex, out, outIndex, out.length - outIndex);
}
@@ -158,6 +162,7 @@ public class AESEngine {
System.arraycopy(payload, inIndex, rv, outIndex, rv.length - outIndex);
}
+/******
public static void main(String args[]) {
I2PAppContext ctx = new I2PAppContext();
SessionKey key = ctx.keyGenerator().generateSessionKey();
@@ -178,4 +183,5 @@ public class AESEngine {
byte ld[] = ctx.aes().safeDecrypt(le, key, iv);
ctx.logManager().getLog(AESEngine.class).debug("Long test: " + DataHelper.eq(ld, lbuf));
}
-}
\ No newline at end of file
+******/
+}
diff --git a/core/java/src/net/i2p/crypto/CryptixAESEngine.java b/core/java/src/net/i2p/crypto/CryptixAESEngine.java
index b2d92bc06..fb3393dcd 100644
--- a/core/java/src/net/i2p/crypto/CryptixAESEngine.java
+++ b/core/java/src/net/i2p/crypto/CryptixAESEngine.java
@@ -126,6 +126,7 @@ public class CryptixAESEngine extends AESEngine {
_prevCache.release(curA);
}
+ /** encrypt exactly 16 bytes using the session key */
@Override
public final void encryptBlock(byte payload[], int inIndex, SessionKey sessionKey, byte out[], int outIndex) {
if (sessionKey.getPreparedKey() == null) {
@@ -166,6 +167,7 @@ public class CryptixAESEngine extends AESEngine {
CryptixRijndael_Algorithm.blockDecrypt(payload, rv, inIndex, outIndex, sessionKey.getPreparedKey(), 16);
}
+/********
public static void main(String args[]) {
I2PAppContext ctx = new I2PAppContext();
try {
@@ -278,4 +280,5 @@ public class CryptixAESEngine extends AESEngine {
else
System.out.println("block D(E(orig)) == orig");
}
-}
\ No newline at end of file
+*******/
+}
diff --git a/core/java/src/net/i2p/crypto/ElGamalEngine.java b/core/java/src/net/i2p/crypto/ElGamalEngine.java
index 93a017656..c5e9cd963 100644
--- a/core/java/src/net/i2p/crypto/ElGamalEngine.java
+++ b/core/java/src/net/i2p/crypto/ElGamalEngine.java
@@ -66,10 +66,10 @@ public class ElGamalEngine {
public ElGamalEngine(I2PAppContext context) {
context.statManager().createRateStat("crypto.elGamal.encrypt",
"how long does it take to do a full ElGamal encryption", "Encryption",
- new long[] { 60 * 1000, 60 * 60 * 1000, 24 * 60 * 60 * 1000});
+ new long[] { 60 * 60 * 1000});
context.statManager().createRateStat("crypto.elGamal.decrypt",
"how long does it take to do a full ElGamal decryption", "Encryption",
- new long[] { 60 * 1000, 60 * 60 * 1000, 24 * 60 * 60 * 1000});
+ new long[] { 60 * 60 * 1000});
_context = context;
_log = context.logManager().getLog(ElGamalEngine.class);
}
@@ -85,9 +85,9 @@ public class ElGamalEngine {
}
/** encrypt the data to the public key
- * @return encrypted data
+ * @return encrypted data, will be about twice as big as the cleartext
* @param publicKey public key encrypt to
- * @param data data to encrypt
+ * @param data data to encrypt, must be 222 bytes or less
*/
public byte[] encrypt(byte data[], PublicKey publicKey) {
if ((data == null) || (data.length >= 223))
@@ -156,7 +156,7 @@ public class ElGamalEngine {
}
/** Decrypt the data
- * @param encrypted encrypted data
+ * @param encrypted encrypted data, must be 514 bytes or less
* @param privateKey private key to decrypt with
* @return unencrypted data
*/
diff --git a/core/java/src/net/i2p/crypto/KeyGenerator.java b/core/java/src/net/i2p/crypto/KeyGenerator.java
index 6140b9c5d..7853063f3 100644
--- a/core/java/src/net/i2p/crypto/KeyGenerator.java
+++ b/core/java/src/net/i2p/crypto/KeyGenerator.java
@@ -25,7 +25,7 @@ import net.i2p.util.Log;
import net.i2p.util.NativeBigInteger;
import net.i2p.util.RandomSource;
-/** Define a way of generating asymetrical key pairs as well as symetrical keys
+/** Define a way of generating asymmetrical key pairs as well as symmetrical keys
* @author jrandom
*/
public class KeyGenerator {
@@ -157,7 +157,7 @@ public class KeyGenerator {
* Pad the buffer w/ leading 0s or trim off leading bits so the result is the
* given length.
*/
- final static byte[] padBuffer(byte src[], int length) {
+ private final static byte[] padBuffer(byte src[], int length) {
byte buf[] = new byte[length];
if (src.length > buf.length) // extra bits, chop leading bits
@@ -171,6 +171,7 @@ public class KeyGenerator {
return buf;
}
+/******
public static void main(String args[]) {
Log log = new Log("keygenTest");
RandomSource.getInstance().nextBoolean();
@@ -222,4 +223,5 @@ public class KeyGenerator {
} catch (InterruptedException ie) { // nop
}
}
-}
\ No newline at end of file
+******/
+}
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPPacketReader.java b/router/java/src/net/i2p/router/transport/udp/UDPPacketReader.java
index 395a2fcf0..aaf0f721a 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPPacketReader.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPPacketReader.java
@@ -598,6 +598,8 @@ public class UDPPacketReader {
_log.debug("read alice port: " + rv);
return rv;
}
+
+ /** unused */
public int readChallengeSize() {
int offset = readBodyOffset() + 4;
offset += DataHelper.fromLong(_message, offset, 1);
@@ -608,6 +610,8 @@ public class UDPPacketReader {
_log.debug("read challenge size: " + rv);
return rv;
}
+
+ /** unused */
public void readChallengeSize(byte target[], int targetOffset) {
int offset = readBodyOffset() + 4;
offset += DataHelper.fromLong(_message, offset, 1);
@@ -668,6 +672,8 @@ public class UDPPacketReader {
offset++;
return (int)DataHelper.fromLong(_message, offset, 2);
}
+
+ /** unused */
public int readChallengeSize() {
int offset = readBodyOffset();
offset += DataHelper.fromLong(_message, offset, 1);
@@ -675,6 +681,8 @@ public class UDPPacketReader {
offset += 2;
return (int)DataHelper.fromLong(_message, offset, 1);
}
+
+ /** unused */
public void readChallengeSize(byte target[], int targetOffset) {
int offset = readBodyOffset();
offset += DataHelper.fromLong(_message, offset, 1);
From 4f31691c8aa27e62e038324576354dd1c3625446 Mon Sep 17 00:00:00 2001
From: z3d
Date: Fri, 20 Aug 2010 22:51:58 +0000
Subject: [PATCH 47/75] Add Swedish translation for eepsite help and update
other help pages accordingly. Thanks to olleolleolle.
---
.../resources/eepsite.help/help/index.html | 2 +-
.../resources/eepsite.help/help/index_de.html | 2 +-
.../resources/eepsite.help/help/index_fr.html | 2 +-
.../resources/eepsite.help/help/index_na.html | 2 +-
.../resources/eepsite.help/help/index_sv.html | 137 ++++++++++++++++++
.../eepsite.help/help/pagetemplate.html | 2 +-
6 files changed, 142 insertions(+), 5 deletions(-)
create mode 100644 installer/resources/eepsite.help/help/index_sv.html
diff --git a/installer/resources/eepsite.help/help/index.html b/installer/resources/eepsite.help/help/index.html
index c5be8fa36..fee5e2602 100644
--- a/installer/resources/eepsite.help/help/index.html
+++ b/installer/resources/eepsite.help/help/index.html
@@ -17,7 +17,7 @@
-
+
Diese ist Ihre Eepsite, Ihre Web-Präsens über I2P. Editieren Sie einfach die Dateien unter
~/.i2p/eepsite/docroot/ (Linux) oder %APPDATA%\I2P\eepsite\docroot\ (Windows)
diff --git a/installer/resources/eepsite.help/help/index_fr.html b/installer/resources/eepsite.help/help/index_fr.html
index a7c7515b5..d12cdb107 100644
--- a/installer/resources/eepsite.help/help/index_fr.html
+++ b/installer/resources/eepsite.help/help/index_fr.html
@@ -17,7 +17,7 @@
-
+
Un mini guide pour faire un serveur web anonyme utilisant I2P
diff --git a/installer/resources/eepsite.help/help/index_sv.html b/installer/resources/eepsite.help/help/index_sv.html
new file mode 100644
index 000000000..c044bd271
--- /dev/null
+++ b/installer/resources/eepsite.help/help/index_sv.html
@@ -0,0 +1,137 @@
+
+
+ I2P Anonym Webbserver | Vlkommen till din eepsite
+
+
+
+
+
+
+
+
I2P Anonym Webbserver
+
+
+
+
+
+
+
+
+
+
+
+
Snabb vgledning till anonym webbservning p I2P
+
+
Det hr r din eepsite, din egen anonyma I2P-webbserver - redigera bara filerna
+ under ~/.i2p/eepsite/docroot/ (Linux, OS X)
+ eller %APPDATA%\I2P\eepsite\docroot\ (Windows)
+ s kommer andra kunna n dem efter att du fljt instruktionerna nedan.
+ I I2P s adresseras eepsajter med en 'nyckel', som representeras som en vldigt lng Base64-strng.
+ ('Nyckeln' r ngot s nr analog med en IP-adress och visas
+ p eepsajtens I2PTunnel-konfigurationssida).
+ Nedan ges instruktioner om hur du kan ange ett namn som "minsajt.i2p" till din nyckel och brja kra din eepsajt.
+ Din eepsajt r stoppad som standard.
+ Efter att du startat den kommer det att vara svrt fr att andra att hitta den,
+ eftersom den inte har ett namn och de inte knner till din mycket lnga Base64-nyckel.
+ Du skulle bara kunna bertta fr andra om den lnga nyckeln, men tacksamt nog har i2p en
+ adressbok och mnga enkla stt att bertta fr folk om din eepsajt. Hr r alla stegen.
+
+
Vlj ett namn t din eepsajt (ettbranamn.i2p). Sm bokstver.
+ Kanske vill du frst kolla i
+ din routers adressbok,
+ eller i filen i2p/hosts.txt fr att se om ditt tilltnkta namn redan r taget.
+ Skriv in namnet fr din eepsajt p
+ eepsitekonfigurationssidan fr i2ptunnel
+ dr det str "Website name". Detta kommer att erstta det frinstllda "mysite.i2p".
+ Nr du r dr, kryssa i "Auto Start"-rutan. Din eepsajt kommer nu att starta varje gng som du startar
+ din router.
+ Tryck sedan p "Save".
+
Markera hela "Local destination"-nyckeln p
+ eepsitekonfigurationssidan fr i2ptunnel
+ och kopiera den fr att senare klistra in den.
+ Skerstll att du fr med hela texten - det r mer n 500 bokstver och den mste sluta p "AAAA".
+
Skriv in namnet och klistra in destinationsnyckeln i din
+ huvudadressbok.
+ Klicka p "Add" fr att lgga till destinationen i din adressbok.
+
I din webblsare, skriv in ditt eepsajtnamn (ettbranamn.i2p) s borde du landa p den hr sidan igen.
+ Frhoppningsvis fungerade det.
+
Innan du berttar fr vrlden om den nya eepsajt borde du lgga till lite innehll.
+ G till ~/.i2p/eepsite/docroot/ (p Linux eller OS X) eller %APPDATA%\I2P\eepsite\docroot\ (p Windows)
+ och erstt omdirigeringssidan index.html med ditt eget innehll. Virtuella mappar fungerar, s du kan serva filer frn en
+ underkatalog utan att behva ge en sida med lnkar till filer. Om du behver en mall fr en enkel sajt s
+ varsgod och lna och anpassa
+ denna sida och det hr innehllet!
+
+
Registrera din egen .I2P-domn
+
Nu r det dags att lgga till din eepsajt till en I2P-adressbok som hostas p en sajt
+ som stats.i2p.
+ Allts, du mste skriva in namn och nyckeln p din eepsajt i ett webbgrnssnitt p
+ en eller flera av dessa sajter.
+ Hr r nyckelinmatningsformulret hos stats.i2p.
+ terigen, din nyckel r hela "Local destination"-nyckeln p
+ eepsite-konfigurationssidan fr i2ptunnel.
+ Skerstll att du fr med hela texten, som slutar med "AAAA".
+ Glm inte att klicka p "add a key".
+ Kolla att den rapporterar att nyckeln lagts till.
+ Eftersom mnga routrar periodiskt skaffar adressboksuppdateringar frn dessa sajter
+ s kommer andra att kunna finna din eepsajt inom ett antal timmar, bara genom att
+ skriva ettbranamn.i2p i sin webblsare.
+
Att prenumerera p adressbcker
+
P tal adressboksuppdateringar, nu vore en bra tidpunkt att lgga till ngra fler adressbcker
+ till din egen
+ prenumerationslista.
+ G till din prenumerationsinstllningssida och lgg till ett par av de hr fr en automatiskt uppdaterad
+ lista ver nya hosts:
Om du har brttom och inte kan vnta ett par timmar s kan du sga t folk att anvnda en "jump"-adresshjlpar-
+ omdirigeringstjnst.
+ Detta kommer att funka inom ett par minuter efter att du skrivit in nyckeln i en adressbok p samma sajt.
+ Prova frst sjlv genom att skriva:
+ http://stats.i2p/cgi-bin/jump.cgi?a=ettbranamn.i2p eller
+ http://i2host.i2p/cgi-bin/i2hostjump?ettbranamn.i2p
+ i din webblsare.
+ S snart som det funkar kan du bertta fr andra att de ska anvnda det.
+
Vissa mnniskor kolla p eepsajtlistor som
+ inproxy.tino.i2p/status.php efter nya eepsajter,
+ s att du kan brja f ett par beskare. Men det finns massor av stt att bertta fr folk.
+ Hr r en rad ider:
+
+ Notera att vissa sajter rekommenderar att du klistrar in den verkligt
+ lnga destinationsnyckeln. Det kan du om vill - men om du har framgngsrikt har skickat din
+ nyckel, testat den med en "hopptjnst", och vntat 24 timmar p att adressboken ska brja
+ propagera sina ndringar till andra, s det borde inte vara ndvndigt.
+
Vidare assistans
+
+ Ifall du har ngra frgor, s finns fljande stllen fr support:
+
+Note: This page, the website and the console all need translating into YOUR language if it's not already been done or in progress. Please consider helping the project grow by volunteering your time to translate. Contact the project via the IRC channel listed above. Thanks in advance!
+
+Document last edited: August 2010.
+
+
+
\ No newline at end of file
diff --git a/installer/resources/eepsite.help/help/pagetemplate.html b/installer/resources/eepsite.help/help/pagetemplate.html
index fea7378de..39723c366 100644
--- a/installer/resources/eepsite.help/help/pagetemplate.html
+++ b/installer/resources/eepsite.help/help/pagetemplate.html
@@ -16,7 +16,7 @@
-
+
* (where protocol is generally HTTP/1.1 but is ignored)
* (where host is one of:
* example.i2p
@@ -39,16 +40,19 @@ import net.i2p.util.Log;
* CONNECT host protocol
* CONNECT host:port
* CONNECT host:port protocol (this is the standard)
+ *
*
* Additional lines after the CONNECT line but before the blank line are ignored and stripped.
* The CONNECT line is removed for .i2p accesses
* but passed along for outproxy accesses.
*
* Ref:
+ *
* INTERNET-DRAFT Ari Luotonen
* Expires: September 26, 1997 Netscape Communications Corporation
* March 26, 1997
* Tunneling SSL Through a WWW Proxy
+ *
*
* @author zzz a stripped-down I2PTunnelHTTPClient
*/
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java
index 6be20ba8b..c2a014020 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java
@@ -127,6 +127,8 @@ public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErr
// this does not increment totalSent
i2pout.write(initialI2PData);
// do NOT flush here, it will block and then onTimeout.run() won't happen on fail.
+ // But if we don't flush, then we have to wait for the connectDelay timer to fire
+ // in i2p socket? To be researched and/or fixed.
//i2pout.flush();
}
}
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java b/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java
index b904243b1..c26a27fe2 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java
@@ -176,7 +176,11 @@ public class I2PSocketManagerFull implements I2PSocketManager {
}
/**
- * Create a new connected socket (block until the socket is created)
+ * Create a new connected socket. Blocks until the socket is created,
+ * unless the connectDelay option (i2p.streaming.connectDelay) is
+ * set and greater than zero. If so this will return immediately,
+ * and the client may quickly write initial data to the socket and
+ * this data will be bundled in the SYN packet.
*
* @param peer Destination to connect to
* @param options I2P socket options to be used for connecting
@@ -199,6 +203,7 @@ public class I2PSocketManagerFull implements I2PSocketManager {
if (_log.shouldLog(Log.INFO))
_log.info("Connecting to " + peer.calculateHash().toBase64().substring(0,6)
+ " with options: " + opts);
+ // the following blocks unless connect delay > 0
Connection con = _connectionManager.connect(peer, opts);
if (con == null)
throw new TooManyStreamsException("Too many streams (max " + _maxStreams + ")");
@@ -212,7 +217,11 @@ public class I2PSocketManagerFull implements I2PSocketManager {
}
/**
- * Create a new connected socket (block until the socket is created)
+ * Create a new connected socket. Blocks until the socket is created,
+ * unless the connectDelay option (i2p.streaming.connectDelay) is
+ * set and greater than zero in the default options. If so this will return immediately,
+ * and the client may quickly write initial data to the socket and
+ * this data will be bundled in the SYN packet.
*
* @param peer Destination to connect to
*
diff --git a/core/java/src/net/i2p/crypto/CryptixAESEngine.java b/core/java/src/net/i2p/crypto/CryptixAESEngine.java
index fb3393dcd..acd2eb702 100644
--- a/core/java/src/net/i2p/crypto/CryptixAESEngine.java
+++ b/core/java/src/net/i2p/crypto/CryptixAESEngine.java
@@ -41,11 +41,13 @@ public class CryptixAESEngine extends AESEngine {
_cache = new CryptixAESKeyCache();
}
+ /** @param length must be a multiple of 16 */
@Override
public void encrypt(byte payload[], int payloadIndex, byte out[], int outIndex, SessionKey sessionKey, byte iv[], int length) {
encrypt(payload, payloadIndex, out, outIndex, sessionKey, iv, 0, length);
}
+ /** @param length must be a multiple of 16 */
@Override
public void encrypt(byte payload[], int payloadIndex, byte out[], int outIndex, SessionKey sessionKey, byte iv[], int ivOffset, int length) {
if ( (payload == null) || (out == null) || (sessionKey == null) || (iv == null) )
@@ -142,7 +144,7 @@ public class CryptixAESEngine extends AESEngine {
CryptixRijndael_Algorithm.blockEncrypt(payload, out, inIndex, outIndex, sessionKey.getPreparedKey(), 16);
}
- /** decrypt the data with the session key provided
+ /** decrypt exactly 16 bytes of data with the session key provided
* @param payload encrypted data
* @param sessionKey private session key
*/
diff --git a/core/java/src/net/i2p/crypto/CryptoConstants.java b/core/java/src/net/i2p/crypto/CryptoConstants.java
index 4728de8de..228a92e84 100644
--- a/core/java/src/net/i2p/crypto/CryptoConstants.java
+++ b/core/java/src/net/i2p/crypto/CryptoConstants.java
@@ -35,21 +35,21 @@ import net.i2p.util.NativeBigInteger;
/**
* Prime for ElGamal from http://tools.ietf.org/html/rfc3526
- * Primes for DSA: unknown.
+ * Primes for DSA: Generated by TheCrypto http://article.gmane.org/gmane.comp.security.invisiblenet.iip.devel/343
*/
public class CryptoConstants {
public static final BigInteger dsap = new NativeBigInteger(
"9c05b2aa960d9b97b8931963c9cc9e8c3026e9b8ed92fad0a69cc886d5bf8015fcadae31"
- + "a0ad18fab3f01b00a358de237655c4964afaa2b337e96ad316b9fb1cc564b5aec5b69a9f"
- + "f6c3e4548707fef8503d91dd8602e867e6d35d2235c1869ce2479c3b9d5401de04e0727f"
- + "b33d6511285d4cf29538d9e3b6051f5b22cc1c93",
+ + "a0ad18fab3f01b00a358de237655c4964afaa2b337e96ad316b9fb1cc564b5aec5b69a9f"
+ + "f6c3e4548707fef8503d91dd8602e867e6d35d2235c1869ce2479c3b9d5401de04e0727f"
+ + "b33d6511285d4cf29538d9e3b6051f5b22cc1c93",
16);
public static final BigInteger dsaq = new NativeBigInteger("a5dfc28fef4ca1e286744cd8eed9d29d684046b7", 16);
public static final BigInteger dsag = new NativeBigInteger(
"c1f4d27d40093b429e962d7223824e0bbc47e7c832a39236fc683af84889581075ff9082"
- + "ed32353d4374d7301cda1d23c431f4698599dda02451824ff369752593647cc3ddc197de"
- + "985e43d136cdcfc6bd5409cd2f450821142a5e6f8eb1c3ab5d0484b8129fcf17bce4f7f3"
- + "3321c3cb3dbb14a905e7b2b3e93be4708cbcc82",
+ + "ed32353d4374d7301cda1d23c431f4698599dda02451824ff369752593647cc3ddc197de"
+ + "985e43d136cdcfc6bd5409cd2f450821142a5e6f8eb1c3ab5d0484b8129fcf17bce4f7f3"
+ + "3321c3cb3dbb14a905e7b2b3e93be4708cbcc82",
16);
public static final BigInteger elgp = new NativeBigInteger("FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1"
+ "29024E088A67CC74020BBEA63B139B22514A08798E3404DD"
diff --git a/core/java/src/net/i2p/crypto/ElGamalAESEngine.java b/core/java/src/net/i2p/crypto/ElGamalAESEngine.java
index 820a57c67..f4f276de2 100644
--- a/core/java/src/net/i2p/crypto/ElGamalAESEngine.java
+++ b/core/java/src/net/i2p/crypto/ElGamalAESEngine.java
@@ -43,19 +43,19 @@ public class ElGamalAESEngine {
_context.statManager().createFrequencyStat("crypto.elGamalAES.encryptNewSession",
"how frequently we encrypt to a new ElGamal/AES+SessionTag session?",
- "Encryption", new long[] { 60*1000l, 60*60*1000l, 24*60*60*1000l});
+ "Encryption", new long[] { 60*60*1000l});
_context.statManager().createFrequencyStat("crypto.elGamalAES.encryptExistingSession",
"how frequently we encrypt to an existing ElGamal/AES+SessionTag session?",
- "Encryption", new long[] { 60 * 1000l, 60 * 60 * 1000l, 24 * 60 * 60 * 1000l});
+ "Encryption", new long[] { 60*60*1000l});
_context.statManager().createFrequencyStat("crypto.elGamalAES.decryptNewSession",
"how frequently we decrypt with a new ElGamal/AES+SessionTag session?",
- "Encryption", new long[] { 60 * 1000l, 60 * 60 * 1000l, 24 * 60 * 60 * 1000l});
+ "Encryption", new long[] { 60*60*1000l});
_context.statManager().createFrequencyStat("crypto.elGamalAES.decryptExistingSession",
"how frequently we decrypt with an existing ElGamal/AES+SessionTag session?",
- "Encryption", new long[] { 60 * 1000l, 60 * 60 * 1000l, 24 * 60 * 60 * 1000l});
+ "Encryption", new long[] { 60*60*1000l});
_context.statManager().createFrequencyStat("crypto.elGamalAES.decryptFailed",
- "how frequently we fail to decrypt with ElGamal/AES+SessionTag?", "Encryption",
- new long[] { 60 * 60 * 1000l, 24 * 60 * 60 * 1000l});
+ "how frequently we fail to decrypt with ElGamal/AES+SessionTag?",
+ "Encryption", new long[] { 60*60*1000l});
}
/**
@@ -73,6 +73,7 @@ public class ElGamalAESEngine {
* This works according to the
* ElGamal+AES algorithm in the data structure spec.
*
+ * @return decrypted data or null on failure
*/
public byte[] decrypt(byte data[], PrivateKey targetPrivateKey, SessionKeyManager keyManager) throws DataFormatException {
if (data == null) {
@@ -148,9 +149,12 @@ public class ElGamalAESEngine {
/**
* scenario 1:
* Begin with 222 bytes, ElG encrypted, containing:
+ *
* - 32 byte SessionKey
* - 32 byte pre-IV for the AES
* - 158 bytes of random padding
+ *
+ * After encryption, the ElG section is 514 bytes long.
* Then encrypt with AES using that session key and the first 16 bytes of the SHA256 of the pre-IV, using
* the decryptAESBlock method & structure.
*
@@ -213,6 +217,7 @@ public class ElGamalAESEngine {
* scenario 2:
* The data begins with 32 byte session tag, which also serves as the preIV.
* Then decrypt with AES using that session key and the first 16 bytes of the SHA256 of the pre-IV:
+ *
* - 2 byte integer specifying the # of session tags
* - that many 32 byte session tags
* - 4 byte integer specifying data.length
@@ -220,11 +225,13 @@ public class ElGamalAESEngine {
* - 1 byte flag that, if == 1, is followed by a new SessionKey
* - data
* - random bytes, padding the total size to greater than paddedSize with a mod 16 = 0
+ *
*
* If anything doesn't match up in decryption, it falls back to decryptNewSession
*
* @param foundTags set which is filled with any sessionTags found during decryption
* @param foundKey session key which may be filled with a new sessionKey found during decryption
+ * @return decrypted data or null on failure
*
*/
byte[] decryptExistingSession(byte data[], SessionKey key, PrivateKey targetPrivateKey, Set foundTags,
@@ -264,6 +271,7 @@ public class ElGamalAESEngine {
/**
* Decrypt the AES data with the session key and IV. The result should be:
+ *
* - 2 byte integer specifying the # of session tags
* - that many 32 byte session tags
* - 4 byte integer specifying data.length
@@ -271,6 +279,7 @@ public class ElGamalAESEngine {
* - 1 byte flag that, if == 1, is followed by a new SessionKey
* - data
* - random bytes, padding the total size to greater than paddedSize with a mod 16 = 0
+ *
*
* If anything doesn't match up in decryption, return null. Otherwise, return
* the decrypted data and update the session as necessary. If the sentTag is not null,
@@ -278,6 +287,7 @@ public class ElGamalAESEngine {
*
* @param foundTags set which is filled with any sessionTags found during decryption
* @param foundKey session key which may be filled with a new sessionKey found during decryption
+ * @return decrypted data or null on failure
*/
byte[] decryptAESBlock(byte encrypted[], SessionKey key, byte iv[],
byte sentTag[], Set foundTags, SessionKey foundKey) throws DataFormatException {
@@ -299,10 +309,10 @@ public class ElGamalAESEngine {
//ByteArrayInputStream bais = new ByteArrayInputStream(decrypted);
int cur = 0;
long numTags = DataHelper.fromLong(decrypted, cur, 2);
+ if ((numTags < 0) || (numTags > 200)) throw new Exception("Invalid number of session tags");
if (numTags > 0) tags = new ArrayList((int)numTags);
cur += 2;
//_log.debug("# tags: " + numTags);
- if ((numTags < 0) || (numTags > 200)) throw new Exception("Invalid number of session tags");
if (numTags * SessionTag.BYTE_LENGTH > decrypted.length - 2) {
throw new Exception("# tags: " + numTags + " is too many for " + (decrypted.length - 2));
}
@@ -363,6 +373,8 @@ public class ElGamalAESEngine {
* @param newKey key to be delivered to the target, with which the tagsForDelivery should be associated, or null
* @param paddedSize minimum size in bytes of the body after padding it (if less than the
* body's real size, no bytes are appended but the body is not truncated)
+ *
+ * Unused externally, only called by below (i.e. newKey is always null)
*/
public byte[] encrypt(byte data[], PublicKey target, SessionKey key, Set tagsForDelivery,
SessionTag currentTag, SessionKey newKey, long paddedSize) {
@@ -384,6 +396,7 @@ public class ElGamalAESEngine {
/**
* Encrypt the data to the target using the given key and deliver the specified tags
* No new session key
+ * This is the one called from GarlicMessageBuilder and is the primary entry point.
*/
public byte[] encrypt(byte data[], PublicKey target, SessionKey key, Set tagsForDelivery,
SessionTag currentTag, long paddedSize) {
@@ -394,6 +407,8 @@ public class ElGamalAESEngine {
* Encrypt the data to the target using the given key and deliver the specified tags
* No new session key
* No current tag (encrypt as new session)
+ *
+ * @deprecated unused
*/
public byte[] encrypt(byte data[], PublicKey target, SessionKey key, Set tagsForDelivery, long paddedSize) {
return encrypt(data, target, key, tagsForDelivery, null, null, paddedSize);
@@ -403,6 +418,8 @@ public class ElGamalAESEngine {
* Encrypt the data to the target using the given key delivering no tags
* No new session key
* No current tag (encrypt as new session)
+ *
+ * @deprecated unused
*/
public byte[] encrypt(byte data[], PublicKey target, SessionKey key, long paddedSize) {
return encrypt(data, target, key, null, null, null, paddedSize);
@@ -411,10 +428,14 @@ public class ElGamalAESEngine {
/**
* scenario 1:
* Begin with 222 bytes, ElG encrypted, containing:
+ *
* - 32 byte SessionKey
* - 32 byte pre-IV for the AES
* - 158 bytes of random padding
- * Then encrypt with AES using that session key and the first 16 bytes of the SHA256 of the pre-IV:
+ *
+ * After encryption, the ElG section is 514 bytes long.
+ * Then encrypt the following with AES using that session key and the first 16 bytes of the SHA256 of the pre-IV:
+ *
* - 2 byte integer specifying the # of session tags
* - that many 32 byte session tags
* - 4 byte integer specifying data.length
@@ -422,6 +443,7 @@ public class ElGamalAESEngine {
* - 1 byte flag that, if == 1, is followed by a new SessionKey
* - data
* - random bytes, padding the total size to greater than paddedSize with a mod 16 = 0
+ *
*
*/
byte[] encryptNewSession(byte data[], PublicKey target, SessionKey key, Set tagsForDelivery,
@@ -440,10 +462,12 @@ public class ElGamalAESEngine {
//_log.debug("SessionKey for encryptNewSession: " + DataHelper.toString(key.getData(), 32));
long before = _context.clock().now();
byte elgEncr[] = _context.elGamalEngine().encrypt(elgSrcData, target);
- long after = _context.clock().now();
- if (_log.shouldLog(Log.INFO))
+ if (_log.shouldLog(Log.INFO)) {
+ long after = _context.clock().now();
_log.info("elgEngine.encrypt of the session key took " + (after - before) + "ms");
+ }
if (elgEncr.length < 514) {
+ // ??? ElGamalEngine.encrypt() always returns 514 bytes
byte elg[] = new byte[514];
int diff = elg.length - elgEncr.length;
//if (_log.shouldLog(Log.DEBUG)) _log.debug("Difference in size: " + diff);
@@ -474,6 +498,7 @@ public class ElGamalAESEngine {
* scenario 2:
* Begin with 32 byte session tag, which also serves as the preIV.
* Then encrypt with AES using that session key and the first 16 bytes of the SHA256 of the pre-IV:
+ *
* - 2 byte integer specifying the # of session tags
* - that many 32 byte session tags
* - 4 byte integer specifying data.length
@@ -481,6 +506,7 @@ public class ElGamalAESEngine {
* - 1 byte flag that, if == 1, is followed by a new SessionKey
* - data
* - random bytes, padding the total size to greater than paddedSize with a mod 16 = 0
+ *
*
*/
byte[] encryptExistingSession(byte data[], PublicKey target, SessionKey key, Set tagsForDelivery,
@@ -506,6 +532,7 @@ public class ElGamalAESEngine {
* For both scenarios, this method encrypts the AES area using the given key, iv
* and making sure the resulting data is at least as long as the paddedSize and
* also mod 16 bytes. The contents of the encrypted data is:
+ *
* - 2 byte integer specifying the # of session tags
* - that many 32 byte session tags
* - 4 byte integer specifying data.length
@@ -513,6 +540,7 @@ public class ElGamalAESEngine {
* - 1 byte flag that, if == 1, is followed by a new SessionKey
* - data
* - random bytes, padding the total size to greater than paddedSize with a mod 16 = 0
+ *
*
*/
final byte[] encryptAESBlock(byte data[], SessionKey key, byte[] iv, Set tagsForDelivery, SessionKey newKey,
diff --git a/core/java/src/net/i2p/crypto/ElGamalEngine.java b/core/java/src/net/i2p/crypto/ElGamalEngine.java
index c5e9cd963..ae3b0eb3a 100644
--- a/core/java/src/net/i2p/crypto/ElGamalEngine.java
+++ b/core/java/src/net/i2p/crypto/ElGamalEngine.java
@@ -85,9 +85,17 @@ public class ElGamalEngine {
}
/** encrypt the data to the public key
- * @return encrypted data, will be about twice as big as the cleartext
+ * @return encrypted data, will be exactly 514 bytes long
+ * Contains the two-part encrypted data starting at bytes 0 and 257.
+ * If the encrypted parts are smaller than 257 bytes, they will be
+ * padded with leading zeros.
+ * The parts appear to always be 256 bytes or less, in other words,
+ * bytes 0 and 257 are always zero.
* @param publicKey public key encrypt to
* @param data data to encrypt, must be 222 bytes or less
+ * As the encrypted data may contain a substantial number of zeros if the
+ * cleartext is smaller than 222 bytes, it is recommended that the caller pad
+ * the cleartext to 222 bytes with random data.
*/
public byte[] encrypt(byte data[], PublicKey publicKey) {
if ((data == null) || (data.length >= 223))
@@ -97,6 +105,7 @@ public class ElGamalEngine {
long start = _context.clock().now();
byte d2[] = new byte[1+Hash.HASH_LENGTH+data.length];
+ // FIXME this isn't a random nonzero byte!
d2[0] = (byte)0xFF;
Hash hash = _context.sha().calculateHash(data);
System.arraycopy(hash.getData(), 0, d2, 1, Hash.HASH_LENGTH);
@@ -156,11 +165,15 @@ public class ElGamalEngine {
}
/** Decrypt the data
- * @param encrypted encrypted data, must be 514 bytes or less
+ * @param encrypted encrypted data, must be exactly 514 bytes
+ * Contains the two-part encrypted data starting at bytes 0 and 257.
+ * If the encrypted parts are smaller than 257 bytes, they must be
+ * padded with leading zeros.
* @param privateKey private key to decrypt with
- * @return unencrypted data
+ * @return unencrypted data or null on failure
*/
public byte[] decrypt(byte encrypted[], PrivateKey privateKey) {
+ // actually it must be exactly 514 bytes or the arraycopy below will AIOOBE
if ((encrypted == null) || (encrypted.length > 514))
throw new IllegalArgumentException("Data to decrypt must be <= 514 bytes at the moment");
long start = _context.clock().now();
diff --git a/core/java/src/net/i2p/data/Base32.java b/core/java/src/net/i2p/data/Base32.java
index adb7e9196..3071e0bc0 100644
--- a/core/java/src/net/i2p/data/Base32.java
+++ b/core/java/src/net/i2p/data/Base32.java
@@ -23,12 +23,14 @@ import net.i2p.util.Log;
* No whitespace allowed.
*
* Decode accepts upper or lower case.
+ * @author zzz
+ * @since 0.7
*/
public class Base32 {
private final static Log _log = new Log(Base32.class);
- /** The 64 valid Base32 values. */
+ /** The 32 valid Base32 values. */
private final static char[] ALPHABET = {'a', 'b', 'c', 'd',
'e', 'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o', 'p',
@@ -132,10 +134,16 @@ public class Base32 {
System.out.println("or : Base32 decode");
}
+ /**
+ * @param source if null will return ""
+ */
public static String encode(String source) {
return (source != null ? encode(source.getBytes()) : "");
}
+ /**
+ * @param source The data to convert non-null
+ */
public static String encode(byte[] source) {
StringBuilder buf = new StringBuilder((source.length + 7) * 8 / 5);
encodeBytes(source, buf);
@@ -147,7 +155,7 @@ public class Base32 {
/**
* Encodes a byte array into Base32 notation.
*
- * @param source The data to convert
+ * @param source The data to convert non-null
*/
private static void encodeBytes(byte[] source, StringBuilder out) {
int usedbits = 0;
@@ -174,7 +182,7 @@ public class Base32 {
* Decodes data from Base32 notation and
* returns it as a string.
*
- * @param s the string to decode
+ * @param s the string to decode, if null returns null
* @return The data as a string or null on failure
*/
public static String decodeToString(String s) {
@@ -184,6 +192,10 @@ public class Base32 {
return new String(b);
}
+ /**
+ * @param s non-null
+ * @return decoded data, null on error
+ */
public static byte[] decode(String s) {
return decode(s.getBytes());
}
@@ -194,8 +206,8 @@ public class Base32 {
* Decodes Base32 content in byte array format and returns
* the decoded byte array.
*
- * @param source The Base32 encoded data
- * @return decoded data
+ * @param source The Base32 encoded data non-null
+ * @return decoded data, null on error
*/
private static byte[] decode(byte[] source) {
int len58;
diff --git a/core/java/src/net/i2p/data/Base64.java b/core/java/src/net/i2p/data/Base64.java
index 2b9fe85e6..b5e03b03c 100644
--- a/core/java/src/net/i2p/data/Base64.java
+++ b/core/java/src/net/i2p/data/Base64.java
@@ -42,23 +42,46 @@ public class Base64 {
private final static Log _log = new Log(Base64.class);
- /** added by aum */
+ /**
+ * @param source if null will return ""
+ */
public static String encode(String source) {
return (source != null ? encode(source.getBytes()) : "");
}
+
+ /**
+ * @param source if null will return ""
+ */
public static String encode(byte[] source) {
return (source != null ? encode(source, 0, source.length) : "");
}
+
+ /**
+ * @param source if null will return ""
+ */
public static String encode(byte[] source, int off, int len) {
return (source != null ? encode(source, off, len, false) : "");
}
+
+ /**
+ * @param source if null will return ""
+ * @param useStandardAlphabet Warning, must be false for I2P compatibility
+ */
public static String encode(byte[] source, boolean useStandardAlphabet) {
return (source != null ? encode(source, 0, source.length, useStandardAlphabet) : "");
}
+
+ /**
+ * @param source if null will return ""
+ * @param useStandardAlphabet Warning, must be false for I2P compatibility
+ */
public static String encode(byte[] source, int off, int len, boolean useStandardAlphabet) {
return (source != null ? safeEncode(source, off, len, useStandardAlphabet) : "");
}
+ /**
+ * @param s Base 64 encoded string using the I2P alphabet A-Z, a-z, 0-9, -, ~
+ */
public static byte[] decode(String s) {
return safeDecode(s, false);
}
@@ -84,6 +107,8 @@ public class Base64 {
(byte) 'w', (byte) 'x', (byte) 'y', (byte) 'z', (byte) '0', (byte) '1',
(byte) '2', (byte) '3', (byte) '4', (byte) '5', (byte) '6', (byte) '7',
(byte) '8', (byte) '9', (byte) '+', (byte) '/'};
+
+ /** The 64 valid Base64 values for I2P. */
private final static byte[] ALPHABET_ALT = { (byte) 'A', (byte) 'B', (byte) 'C', (byte) 'D', (byte) 'E', (byte) 'F',
(byte) 'G', (byte) 'H', (byte) 'I', (byte) 'J', (byte) 'K', (byte) 'L',
(byte) 'M', (byte) 'N', (byte) 'O', (byte) 'P', (byte) 'Q', (byte) 'R',
@@ -241,7 +266,7 @@ public class Base64 {
* @return four byte array in Base64 notation.
* @since 1.3
*/
-/***** unused
+/***** unused (standard alphabet)
private static byte[] encode3to4(byte[] threeBytes) {
return encode3to4(threeBytes, 3);
} // end encodeToBytes
@@ -260,11 +285,13 @@ public class Base64 {
* @return four byte array in Base64 notation.
* @since 1.3
*/
+/***** unused (standard alphabet)
private static byte[] encode3to4(byte[] threeBytes, int numSigBytes) {
byte[] dest = new byte[4];
encode3to4(threeBytes, 0, numSigBytes, dest, 0);
return dest;
}
+******/
/**
* Encodes up to three bytes of the array source
@@ -287,6 +314,7 @@ public class Base64 {
* @return the destination array
* @since 1.3
*/
+/***** unused (standard alphabet)
private static byte[] encode3to4(byte[] source, int srcOffset, int numSigBytes, byte[] destination, int destOffset) {
// 1 2 3
// 01234567890123456789012345678901 Bit position
@@ -329,7 +357,11 @@ public class Base64 {
return destination;
} // end switch
} // end encode3to4
+******/
+ /**
+ * @param alpha alphabet
+ */
private static void encode3to4(byte[] source, int srcOffset, int numSigBytes, StringBuilder buf, byte alpha[]) {
// 1 2 3
// 01234567890123456789012345678901 Bit position
@@ -628,7 +660,7 @@ public class Base64 {
* Decodes data from Base64 notation.
*
* @param s the string to decode
- * @return the decoded data
+ * @return the decoded data, null on error
* @since 1.4
*/
private static byte[] standardDecode(String s) {
@@ -647,6 +679,7 @@ public class Base64 {
* @param s the strind to decode
* @return The data as a string
* @since 1.4
+ * @throws NPE on error?
*/
public static String decodeToString(String s) {
return new String(decode(s));
@@ -659,7 +692,7 @@ public class Base64 {
* @param source The Base64 encoded data
* @param off The offset of where to begin decoding
* @param len The length of characters to decode
- * @return decoded data
+ * @return decoded data, null on error
* @since 1.3
*/
private static byte[] decode(byte[] source, int off, int len) {
diff --git a/router/java/src/net/i2p/data/i2np/BuildRequestRecord.java b/router/java/src/net/i2p/data/i2np/BuildRequestRecord.java
index 7bd8352b6..7ff81a2ad 100644
--- a/router/java/src/net/i2p/data/i2np/BuildRequestRecord.java
+++ b/router/java/src/net/i2p/data/i2np/BuildRequestRecord.java
@@ -23,7 +23,7 @@ import net.i2p.data.SessionKey;
* byte 184: flags
* bytes 185-188: request time (in hours since the epoch)
* bytes 189-192: next message ID
- * bytes 193-222: uninterpreted / random padding
+ * bytes 193-221: uninterpreted / random padding
*
*
*/
@@ -226,7 +226,7 @@ public class BuildRequestRecord {
* byte 184: flags
* bytes 185-188: request time (in hours since the epoch)
* bytes 189-192: next message ID
- * bytes 193-222: uninterpreted / random padding
+ * bytes 193-221: uninterpreted / random padding
*/
DataHelper.toLong(buf, OFF_RECV_TUNNEL, 4, receiveTunnelId);
System.arraycopy(peer.getData(), 0, buf, OFF_OUR_IDENT, Hash.HASH_LENGTH);
diff --git a/router/java/src/net/i2p/router/message/GarlicMessageBuilder.java b/router/java/src/net/i2p/router/message/GarlicMessageBuilder.java
index a9bea9c2f..99c282a0c 100644
--- a/router/java/src/net/i2p/router/message/GarlicMessageBuilder.java
+++ b/router/java/src/net/i2p/router/message/GarlicMessageBuilder.java
@@ -35,6 +35,7 @@ public class GarlicMessageBuilder {
/**
* This was 100 since 0.6.1.10 (50 before that). It's important because:
+ *
* - Tags are 32 bytes. So it previously added 3200 bytes to an initial message.
* - Too many tags adds a huge overhead to short-duration connections
* (like http, datagrams, etc.)
@@ -43,14 +44,17 @@ public class GarlicMessageBuilder {
* - This reduces the effective maximum datagram size because the client
* doesn't know when tags will be bundled, so the tag size must be
* subtracted from the maximum I2NP size or transport limit.
+ *
*
* Issues with too small a value:
+ *
* - When tags are sent, a reply leaseset (~1KB) is always bundled.
* Maybe don't need to bundle more than every minute or so
* rather than every time?
* - Does the number of tags (and the threshold of 20) limit the effective
* streaming lib window size? Should the threshold and the number of
* sent tags be variable based on the message rate?
+ *
*
* We have to be very careful if we implement an adaptive scheme,
* since the key manager is per-router, not per-local-dest.
@@ -218,6 +222,7 @@ public class GarlicMessageBuilder {
byte cloveSet[] = buildCloveSet(ctx, config);
+ // TODO - 128 is the minimum padded size - should it be more? less? random?
byte encData[] = ctx.elGamalAESEngine().encrypt(cloveSet, target, encryptKey, wrappedTags, encryptTag, 128);
msg.setData(encData);
msg.setMessageExpiration(config.getExpiration());
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java b/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java
index 82c7f121f..1f521455e 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/MessageWrapper.java
@@ -20,7 +20,7 @@ import net.i2p.router.message.PayloadGarlicConfig;
import net.i2p.util.Log;
/**
- * Method an class for garlic encrypting outbound netdb traffic,
+ * Method and class for garlic encrypting outbound netdb traffic,
* including management of the ElGamal/AES tags
*
* @since 0.7.10
diff --git a/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java b/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java
index 747c923ec..dce7d0de7 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java
@@ -29,18 +29,45 @@ import net.i2p.router.Router;
import net.i2p.router.RouterContext;
import net.i2p.util.Log;
-/*
+/**
+ * Handle the 4-phase establishment, which is as follows:
+ *
+ *
+ *
+ *
* Alternately, when Bob receives a connection, it could be a
* check connection (perhaps prompted by Bob asking for someone
* to verify his listener). check connections are formatted per
- * {@link #isCheckInfo()}
+ * isCheckInfo()
+ * NOTE: Check info is unused.
+ *
*/
public class EstablishState {
private RouterContext _context;
@@ -57,7 +84,9 @@ public class EstablishState {
// alice receives (and bob sends)
private byte _Y[];
private transient byte _e_hXY_tsB[];
+ /** Bob's Timestamp in seconds */
private transient long _tsB;
+ /** Alice's Timestamp in seconds */
private transient long _tsA;
private transient byte _e_bobSig[];
@@ -98,9 +127,6 @@ public class EstablishState {
_log = ctx.logManager().getLog(getClass());
_transport = transport;
_con = con;
- _verified = false;
- _corrupt = false;
- _confirmWritten = false;
_dh = new DHSessionKeyBuilder();
if (_con.isInbound()) {
_X = new byte[256];
@@ -116,10 +142,7 @@ public class EstablishState {
_prevEncrypted = new byte[16];
_curEncrypted = new byte[16];
- _curEncryptedOffset = 0;
_curDecrypted = new byte[16];
-
- _received = 0;
}
/**
@@ -150,7 +173,10 @@ public class EstablishState {
public boolean getFailedBySkew() { return _failedBySkew; }
- /** we are Bob, so receive these bytes as part of an inbound connection */
+ /**
+ * we are Bob, so receive these bytes as part of an inbound connection
+ * This method receives messages 1 and 3, and sends messages 2 and 4.
+ */
private void receiveInbound(ByteBuffer src) {
if (_log.shouldLog(Log.DEBUG))
_log.debug(prefix()+"Receiving inbound: prev received=" + _received + " src.remaining=" + src.remaining());
@@ -311,7 +337,10 @@ public class EstablishState {
}
}
- /** we are Alice, so receive these bytes as part of an outbound connection */
+ /**
+ * We are Alice, so receive these bytes as part of an outbound connection.
+ * This method receives messages 2 and 4, and sends message 3.
+ */
private void receiveOutbound(ByteBuffer src) {
if (_log.shouldLog(Log.DEBUG)) _log.debug(prefix()+"Receive outbound " + src + " received=" + _received);
@@ -498,8 +527,10 @@ public class EstablishState {
public boolean isComplete() { return _verified; }
/**
- * we are establishing an outbound connection, so prepare ourselves by
+ * We are Alice.
+ * We are establishing an outbound connection, so prepare ourselves by
* queueing up the write of the first part of the handshake
+ * This method sends message #1 to Bob.
*/
public void prepareOutbound() {
if (_received <= 0) {
@@ -516,7 +547,9 @@ public class EstablishState {
}
/**
- * make sure the signatures are correct, and if they are, update the
+ * We are Bob. Verify message #3 from Alice, then send message #4 to Alice.
+ *
+ * Make sure the signatures are correct, and if they are, update the
* NIOConnection with the session key / peer ident / clock skew / iv.
* The NIOConnection itself is responsible for registering with the
* transport
@@ -623,6 +656,9 @@ public class EstablishState {
}
}
+ /**
+ * We are Bob. Send message #4 to Alice.
+ */
private void sendInboundConfirm(RouterIdentity alice, long tsA) {
// send Alice E(S(X+Y+Alice.identHash+tsA+tsB), sk, prev)
byte toSign[] = new byte[256+256+32+4+4];
diff --git a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java
index c0d9e22f3..3ebbdd343 100644
--- a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java
+++ b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java
@@ -607,6 +607,7 @@ public class PacketBuilder {
// pad here if we want. maybe randomized?
// pad up so we're on the encryption boundary
+ // TODO: why not random data?
if ( (off % 16) != 0)
off += 16 - (off % 16);
packet.getPacket().setLength(off);
From db0bc1a6183c257fde546452a10b8197f7cf604c Mon Sep 17 00:00:00 2001
From: forget
Date: Tue, 7 Sep 2010 03:24:28 +0000
Subject: [PATCH 49/75] Fixed: missing links to the new Swedish help page.
---
installer/resources/eepsite.help/help/index_nl.html | 2 +-
installer/resources/eepsite.help/help/index_ru.html | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/installer/resources/eepsite.help/help/index_nl.html b/installer/resources/eepsite.help/help/index_nl.html
index 5d6c9a61a..290b1718f 100644
--- a/installer/resources/eepsite.help/help/index_nl.html
+++ b/installer/resources/eepsite.help/help/index_nl.html
@@ -17,7 +17,7 @@
-
+
Det hr r din eepsite, din egen anonyma I2P-webbserver - redigera bara filerna
- under ~/.i2p/eepsite/docroot/ (Linux, OS X)
- eller %APPDATA%\I2P\eepsite\docroot\ (Windows)
- s kommer andra kunna n dem efter att du fljt instruktionerna nedan.
- I I2P s adresseras eepsajter med en 'nyckel', som representeras som en vldigt lng Base64-strng.
- ('Nyckeln' r ngot s nr analog med en IP-adress och visas
- p eepsajtens I2PTunnel-konfigurationssida).
- Nedan ges instruktioner om hur du kan ange ett namn som "minsajt.i2p" till din nyckel och brja kra din eepsajt.
- Din eepsajt r stoppad som standard.
- Efter att du startat den kommer det att vara svrt fr att andra att hitta den,
- eftersom den inte har ett namn och de inte knner till din mycket lnga Base64-nyckel.
- Du skulle bara kunna bertta fr andra om den lnga nyckeln, men tacksamt nog har i2p en
- adressbok och mnga enkla stt att bertta fr folk om din eepsajt. Hr r alla stegen.
-
-
Vlj ett namn t din eepsajt (ettbranamn.i2p). Sm bokstver.
- Kanske vill du frst kolla i
- din routers adressbok,
- eller i filen i2p/hosts.txt fr att se om ditt tilltnkta namn redan r taget.
- Skriv in namnet fr din eepsajt p
- eepsitekonfigurationssidan fr i2ptunnel
- dr det str "Website name". Detta kommer att erstta det frinstllda "mysite.i2p".
- Nr du r dr, kryssa i "Auto Start"-rutan. Din eepsajt kommer nu att starta varje gng som du startar
- din router.
- Tryck sedan p "Save".
-
Markera hela "Local destination"-nyckeln p
- eepsitekonfigurationssidan fr i2ptunnel
- och kopiera den fr att senare klistra in den.
- Skerstll att du fr med hela texten - det r mer n 500 bokstver och den mste sluta p "AAAA".
-
Skriv in namnet och klistra in destinationsnyckeln i din
- huvudadressbok.
- Klicka p "Add" fr att lgga till destinationen i din adressbok.
-
I din webblsare, skriv in ditt eepsajtnamn (ettbranamn.i2p) s borde du landa p den hr sidan igen.
- Frhoppningsvis fungerade det.
-
Innan du berttar fr vrlden om den nya eepsajt borde du lgga till lite innehll.
- G till ~/.i2p/eepsite/docroot/ (p Linux eller OS X) eller %APPDATA%\I2P\eepsite\docroot\ (p Windows)
- och erstt omdirigeringssidan index.html med ditt eget innehll. Virtuella mappar fungerar, s du kan serva filer frn en
- underkatalog utan att behva ge en sida med lnkar till filer. Om du behver en mall fr en enkel sajt s
- varsgod och lna och anpassa
- denna sida och det hr innehllet!
-
-
Registrera din egen .I2P-domn
-
Nu r det dags att lgga till din eepsajt till en I2P-adressbok som hostas p en sajt
- som stats.i2p.
- Allts, du mste skriva in namn och nyckeln p din eepsajt i ett webbgrnssnitt p
- en eller flera av dessa sajter.
- Hr r nyckelinmatningsformulret hos stats.i2p.
- terigen, din nyckel r hela "Local destination"-nyckeln p
- eepsite-konfigurationssidan fr i2ptunnel.
- Skerstll att du fr med hela texten, som slutar med "AAAA".
- Glm inte att klicka p "add a key".
- Kolla att den rapporterar att nyckeln lagts till.
- Eftersom mnga routrar periodiskt skaffar adressboksuppdateringar frn dessa sajter
- s kommer andra att kunna finna din eepsajt inom ett antal timmar, bara genom att
- skriva ettbranamn.i2p i sin webblsare.
-
Att prenumerera p adressbcker
-
P tal adressboksuppdateringar, nu vore en bra tidpunkt att lgga till ngra fler adressbcker
- till din egen
- prenumerationslista.
- G till din prenumerationsinstllningssida och lgg till ett par av de hr fr en automatiskt uppdaterad
- lista ver nya hosts:
Om du har brttom och inte kan vnta ett par timmar s kan du sga t folk att anvnda en "jump"-adresshjlpar-
- omdirigeringstjnst.
- Detta kommer att funka inom ett par minuter efter att du skrivit in nyckeln i en adressbok p samma sajt.
- Prova frst sjlv genom att skriva:
- http://stats.i2p/cgi-bin/jump.cgi?a=ettbranamn.i2p eller
- http://i2host.i2p/cgi-bin/i2hostjump?ettbranamn.i2p
- i din webblsare.
- S snart som det funkar kan du bertta fr andra att de ska anvnda det.
-
Vissa mnniskor kolla p eepsajtlistor som
- inproxy.tino.i2p/status.php efter nya eepsajter,
- s att du kan brja f ett par beskare. Men det finns massor av stt att bertta fr folk.
- Hr r en rad ider:
-
- Notera att vissa sajter rekommenderar att du klistrar in den verkligt
- lnga destinationsnyckeln. Det kan du om vill - men om du har framgngsrikt har skickat din
- nyckel, testat den med en "hopptjnst", och vntat 24 timmar p att adressboken ska brja
- propagera sina ndringar till andra, s det borde inte vara ndvndigt.
-
Vidare assistans
-
- Ifall du har ngra frgor, s finns fljande stllen fr support:
-
-Note: This page, the website and the console all need translating into YOUR language if it's not already been done or in progress. Please consider helping the project grow by volunteering your time to translate. Contact the project via the IRC channel listed above. Thanks in advance!
-
-Document last edited: August 2010.
-
-
+
+
+ I2P Anonym Webbserver | Välkommen till din eepsite
+
+
+
+
+
+
+
+
I2P Anonym Webbserver
+
+
+
+
+
+
+
+
+
+
+
+
Snabb vägledning till anonym webbservning på I2P
+
+
Det här är din eepsite, din egen anonyma I2P-webbserver - redigera bara filerna
+ under ~/.i2p/eepsite/docroot/ (Linux, OS X)
+ eller %APPDATA%\I2P\eepsite\docroot\ (Windows)
+ så kommer andra kunna nå dem efter att du följt instruktionerna nedan.
+ I I2P så adresseras eepsajter med en 'nyckel', som representeras som en väldigt lång Base64-sträng.
+ ('Nyckeln' är något så när analog med en IP-adress och visas
+ på eepsajtens I2PTunnel-konfigurationssida).
+ Nedan ges instruktioner om hur du kan ange ett namn som "minsajt.i2p" till din nyckel och börja köra din eepsajt.
+ Din eepsajt är stoppad som standard.
+ Efter att du startat den kommer det att vara svårt för att andra att hitta den,
+ eftersom den inte har ett namn och de inte känner till din mycket långa Base64-nyckel.
+ Du skulle bara kunna berätta för andra om den långa nyckeln, men tacksamt nog har i2p en
+ adressbok och många enkla sätt att berätta för folk om din eepsajt. Här är alla stegen.
+
+
Välj ett namn åt din eepsajt (ettbranamn.i2p). Små bokstäver.
+ Kanske vill du först kolla i
+ din routers adressbok,
+ eller i filen i2p/hosts.txt för att se om ditt tilltänkta namn redan är taget.
+ Skriv in namnet för din eepsajt på
+ eepsitekonfigurationssidan för i2ptunnel
+ där det står "Website name". Detta kommer att ersätta det förinställda "mysite.i2p".
+ När du är där, kryssa i "Auto Start"-rutan. Din eepsajt kommer nu att starta varje gång som du startar
+ din router.
+ Tryck sedan på "Save".
+
Markera hela "Local destination"-nyckeln på
+ eepsitekonfigurationssidan för i2ptunnel
+ och kopiera den för att senare klistra in den.
+ Säkerställ att du får med hela texten - det är mer än 500 bokstäver och den måste sluta på "AAAA".
+
Skriv in namnet och klistra in destinationsnyckeln i din
+ huvudadressbok.
+ Klicka på "Add" för att lägga till destinationen i din adressbok.
+
I din webbläsare, skriv in ditt eepsajtnamn (ettbranamn.i2p) så borde du landa på den här sidan igen.
+ Förhoppningsvis fungerade det.
+
Innan du berättar för världen om den nya eepsajt borde du lägga till lite innehåll.
+ Gå till ~/.i2p/eepsite/docroot/ (på Linux eller OS X) eller %APPDATA%\I2P\eepsite\docroot\ (på Windows)
+ och ersätt omdirigeringssidan index.html med ditt eget innehåll. Virtuella mappar fungerar, så du kan serva filer från en
+ underkatalog utan att behöva ge en sida med länkar till filer. Om du behöver en mall för en enkel sajt så
+ varsågod och låna och anpassa
+ denna sida och det här innehållet!
+
+
Registrera din egen .I2P-domän
+
Nu är det dags att lägga till din eepsajt till en I2P-adressbok som hostas på en sajt
+ som stats.i2p.
+ Alltså, du måste skriva in namn och nyckeln på din eepsajt i ett webbgränssnitt på
+ en eller flera av dessa sajter.
+ Här är nyckelinmatningsformuläret hos stats.i2p.
+ Återigen, din nyckel är hela "Local destination"-nyckeln på
+ eepsite-konfigurationssidan för i2ptunnel.
+ Säkerställ att du får med hela texten, som slutar med "AAAA".
+ Glöm inte att klicka på "add a key".
+ Kolla att den rapporterar att nyckeln lagts till.
+ Eftersom många routrar periodiskt skaffar adressboksuppdateringar från dessa sajter
+ så kommer andra att kunna finna din eepsajt inom ett antal timmar, bara genom att
+ skriva ettbranamn.i2p i sin webbläsare.
+
Att prenumerera på adressböcker
+
På tal adressboksuppdateringar, nu vore en bra tidpunkt att lägga till några fler adressböcker
+ till din egen
+ prenumerationslista.
+ Gå till din prenumerationsinställningssida och lägg till ett par av de här för en automatiskt uppdaterad
+ lista över nya hosts:
Om du har bråttom och inte kan vänta ett par timmar så kan du säga åt folk att använda en "jump"-adresshjälpar-
+ omdirigeringstjänst.
+ Detta kommer att funka inom ett par minuter efter att du skrivit in nyckeln i en adressbok på samma sajt.
+ Prova först själv genom att skriva:
+ http://stats.i2p/cgi-bin/jump.cgi?a=ettbranamn.i2p eller
+ http://i2host.i2p/cgi-bin/i2hostjump?ettbranamn.i2p
+ i din webbläsare.
+ Så snart som det funkar kan du berätta för andra att de ska använda det.
+
Vissa människor kolla på eepsajtlistor som
+ inproxy.tino.i2p/status.php efter nya eepsajter,
+ så att du kan börja få ett par besökare. Men det finns massor av sätt att berätta för folk.
+ Här är en rad idëer:
+
+ Notera att vissa sajter rekommenderar att du klistrar in den verkligt
+ långa destinationsnyckeln. Det kan du om vill - men om du har framgångsrikt har skickat din
+ nyckel, testat den med en "hopptjänst", och väntat 24 timmar på att adressboken ska börja
+ propagera sina ändringar till andra, så det borde inte vara nödvändigt.
+
Vidare assistans
+
+ Ifall du har några frågor, så finns följande ställen för support:
+
+Note: This page, the website and the console all need translating into YOUR language if it's not already been done or in progress. Please consider helping the project grow by volunteering your time to translate. Contact the project via the IRC channel listed above. Thanks in advance!
+
+Document last edited: August 2010.
+
+
\ No newline at end of file
From 2bffeea7eb05dbdab9276399f567b8df3cabbecc Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 14:01:38 +0000
Subject: [PATCH 51/75] comment out main
---
.../java/src/net/i2p/client/streaming/ConnectionOptions.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionOptions.java b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionOptions.java
index 627113abe..c6596b7c9 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionOptions.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionOptions.java
@@ -646,6 +646,7 @@ public class ConnectionOptions extends I2PSocketOptionsImpl {
return Boolean.valueOf(val).booleanValue();
}
+/****
public static void main(String args[]) {
Properties p = new Properties();
@@ -656,4 +657,5 @@ public class ConnectionOptions extends I2PSocketOptionsImpl {
c = new ConnectionOptions(new I2PSocketOptionsImpl(p));
System.out.println("opts: " + c);
}
+****/
}
From 171e3abe341bd44a203cae033ddcf1d14ebfe997 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 14:02:41 +0000
Subject: [PATCH 52/75] cleanups
---
.../client/streaming/MessageInputStream.java | 49 ++++++++-----------
1 file changed, 20 insertions(+), 29 deletions(-)
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/MessageInputStream.java b/apps/streaming/java/src/net/i2p/client/streaming/MessageInputStream.java
index 14b304b26..5a87d6be1 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/MessageInputStream.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/MessageInputStream.java
@@ -11,7 +11,7 @@ import java.util.Map;
import net.i2p.I2PAppContext;
import net.i2p.data.ByteArray;
-import net.i2p.util.ByteCache;
+//import net.i2p.util.ByteCache;
import net.i2p.util.Log;
/**
@@ -20,8 +20,8 @@ import net.i2p.util.Log;
*
*/
public class MessageInputStream extends InputStream {
- private I2PAppContext _context;
- private Log _log;
+ private final I2PAppContext _context;
+ private final Log _log;
/**
* List of ByteArray objects of data ready to be read,
* with the first ByteArray at index 0, and the next
@@ -29,7 +29,7 @@ public class MessageInputStream extends InputStream {
* that array.
*
*/
- private List _readyDataBlocks;
+ private final List _readyDataBlocks;
private int _readyDataBlockIndex;
/** highest message ID used in the readyDataBlocks */
private volatile long _highestReadyBlockId;
@@ -40,7 +40,7 @@ public class MessageInputStream extends InputStream {
* out of order when there are lower IDs not yet
* received
*/
- private Map _notYetReadyBlocks;
+ private final Map _notYetReadyBlocks;
/**
* if we have received a flag saying there won't be later messages, EOF
* after we have cleared what we have received.
@@ -51,9 +51,9 @@ public class MessageInputStream extends InputStream {
private int _readTimeout;
private IOException _streamError;
private long _readTotal;
- private ByteCache _cache;
+ //private ByteCache _cache;
- private byte[] _oneByte = new byte[1];
+ private final byte[] _oneByte = new byte[1];
private final Object _dataLock;
@@ -61,16 +61,12 @@ public class MessageInputStream extends InputStream {
_context = ctx;
_log = ctx.logManager().getLog(MessageInputStream.class);
_readyDataBlocks = new ArrayList(4);
- _readyDataBlockIndex = 0;
_highestReadyBlockId = -1;
_highestBlockId = -1;
_readTimeout = -1;
- _readTotal = 0;
_notYetReadyBlocks = new HashMap(4);
_dataLock = new Object();
- _closeReceived = false;
- _locallyClosed = false;
- _cache = ByteCache.getInstance(128, Packet.MAX_PAYLOAD_SIZE);
+ //_cache = ByteCache.getInstance(128, Packet.MAX_PAYLOAD_SIZE);
}
/** What is the highest block ID we've completely received through?
@@ -140,10 +136,8 @@ public class MessageInputStream extends InputStream {
if (num <= 0) return null;
blocks = new long[num];
int i = 0;
- for (Iterator iter = _notYetReadyBlocks.keySet().iterator(); iter.hasNext(); ) {
- Long id = (Long)iter.next();
- blocks[i] = id.longValue();
- i++;
+ for (Long id : _notYetReadyBlocks.keySet()) {
+ blocks[i++] = id.longValue();
}
}
Arrays.sort(blocks);
@@ -178,16 +172,15 @@ public class MessageInputStream extends InputStream {
buf.append("Close received, ready bytes: ");
long available = 0;
for (int i = 0; i < _readyDataBlocks.size(); i++)
- available += ((ByteArray)_readyDataBlocks.get(i)).getValid();
+ available += _readyDataBlocks.get(i).getValid();
available -= _readyDataBlockIndex;
buf.append(available);
buf.append(" blocks: ").append(_readyDataBlocks.size());
buf.append(" not ready blocks: ");
long notAvailable = 0;
- for (Iterator iter = _notYetReadyBlocks.keySet().iterator(); iter.hasNext(); ) {
- Long id = (Long)iter.next();
- ByteArray ba = (ByteArray)_notYetReadyBlocks.get(id);
+ for (Long id : _notYetReadyBlocks.keySet()) {
+ ByteArray ba = _notYetReadyBlocks.get(id);
buf.append(id).append(" ");
if (ba != null)
@@ -237,7 +230,7 @@ public class MessageInputStream extends InputStream {
long cur = _highestReadyBlockId + 1;
// now pull in any previously pending blocks
while (_notYetReadyBlocks.containsKey(new Long(cur))) {
- ByteArray ba = (ByteArray)_notYetReadyBlocks.remove(new Long(cur));
+ ByteArray ba = _notYetReadyBlocks.remove(new Long(cur));
if ( (ba != null) && (ba.getData() != null) && (ba.getValid() > 0) ) {
_readyDataBlocks.add(ba);
}
@@ -341,7 +334,7 @@ public class MessageInputStream extends InputStream {
return i;
} else {
// either was already ready, or we wait()ed and it arrived
- ByteArray cur = (ByteArray)_readyDataBlocks.get(0);
+ ByteArray cur = _readyDataBlocks.get(0);
byte rv = cur.getData()[cur.getOffset()+_readyDataBlockIndex];
_readyDataBlockIndex++;
boolean removed = false;
@@ -378,7 +371,7 @@ public class MessageInputStream extends InputStream {
int numBytes = 0;
synchronized (_dataLock) {
for (int i = 0; i < _readyDataBlocks.size(); i++) {
- ByteArray cur = (ByteArray)_readyDataBlocks.get(i);
+ ByteArray cur = _readyDataBlocks.get(i);
if (i == 0)
numBytes += cur.getValid() - _readyDataBlockIndex;
else
@@ -402,14 +395,13 @@ public class MessageInputStream extends InputStream {
if (_locallyClosed) return 0;
int numBytes = 0;
for (int i = 0; i < _readyDataBlocks.size(); i++) {
- ByteArray cur = (ByteArray)_readyDataBlocks.get(i);
+ ByteArray cur = _readyDataBlocks.get(i);
if (i == 0)
numBytes += cur.getValid() - _readyDataBlockIndex;
else
numBytes += cur.getValid();
}
- for (Iterator iter = _notYetReadyBlocks.values().iterator(); iter.hasNext(); ) {
- ByteArray cur = (ByteArray)iter.next();
+ for (ByteArray cur : _notYetReadyBlocks.values()) {
numBytes += cur.getValid();
}
return numBytes;
@@ -421,7 +413,7 @@ public class MessageInputStream extends InputStream {
if (_locallyClosed) return 0;
int numBytes = 0;
for (int i = 0; i < _readyDataBlocks.size(); i++) {
- ByteArray cur = (ByteArray)_readyDataBlocks.get(i);
+ ByteArray cur = _readyDataBlocks.get(i);
if (i == 0)
numBytes += cur.getValid() - _readyDataBlockIndex;
else
@@ -440,8 +432,7 @@ public class MessageInputStream extends InputStream {
// we don't need the data, but we do need to keep track of the messageIds
// received, so we can ACK accordingly
- for (Iterator iter = _notYetReadyBlocks.values().iterator(); iter.hasNext(); ) {
- ByteArray ba = (ByteArray)iter.next();
+ for (ByteArray ba : _notYetReadyBlocks.values()) {
ba.setData(null);
//_cache.release(ba);
}
From 6f449aa4f6ba7f39cb15bab19f47547331c3fe72 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 14:07:46 +0000
Subject: [PATCH 53/75] Naming: - Increase cache size and expiration time -
Add clearCache() method - Don't use EepGet or Exec for b32 - Javadoc
updates
---
.../net/i2p/client/naming/EepGetNamingService.java | 4 ++++
.../src/net/i2p/client/naming/ExecNamingService.java | 4 ++++
core/java/src/net/i2p/client/naming/LookupDest.java | 2 ++
.../java/src/net/i2p/client/naming/NamingService.java | 11 +++++++++--
4 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/core/java/src/net/i2p/client/naming/EepGetNamingService.java b/core/java/src/net/i2p/client/naming/EepGetNamingService.java
index d83317967..737e33423 100644
--- a/core/java/src/net/i2p/client/naming/EepGetNamingService.java
+++ b/core/java/src/net/i2p/client/naming/EepGetNamingService.java
@@ -66,6 +66,10 @@ public class EepGetNamingService extends NamingService {
hostname = hostname.toLowerCase();
+ // If you want b32, chain with HostsTxtNamingService
+ if (hostname.length() == 60 && hostname.endsWith(".b32.i2p"))
+ return null;
+
// check the cache
Destination d = getCache(hostname);
if (d != null)
diff --git a/core/java/src/net/i2p/client/naming/ExecNamingService.java b/core/java/src/net/i2p/client/naming/ExecNamingService.java
index 446e907c4..118f06eac 100644
--- a/core/java/src/net/i2p/client/naming/ExecNamingService.java
+++ b/core/java/src/net/i2p/client/naming/ExecNamingService.java
@@ -66,6 +66,10 @@ public class ExecNamingService extends NamingService {
hostname = hostname.toLowerCase();
+ // If you want b32, chain with HostsTxtNamingService
+ if (hostname.length() == 60 && hostname.endsWith(".b32.i2p"))
+ return null;
+
// check the cache
Destination d = getCache(hostname);
if (d != null)
diff --git a/core/java/src/net/i2p/client/naming/LookupDest.java b/core/java/src/net/i2p/client/naming/LookupDest.java
index 1a8a1632b..2bbb2eeb6 100644
--- a/core/java/src/net/i2p/client/naming/LookupDest.java
+++ b/core/java/src/net/i2p/client/naming/LookupDest.java
@@ -27,6 +27,7 @@ class LookupDest {
protected LookupDest(I2PAppContext context) {}
+ /** @param key 52 chars (do not include the .b32.i2p suffix) */
static Destination lookupBase32Hash(I2PAppContext ctx, String key) {
byte[] h = Base32.decode(key);
if (h == null)
@@ -44,6 +45,7 @@ class LookupDest {
}
****/
+ /** @param h 32 byte hash */
static Destination lookupHash(I2PAppContext ctx, byte[] h) {
Hash key = new Hash(h);
Destination rv = null;
diff --git a/core/java/src/net/i2p/client/naming/NamingService.java b/core/java/src/net/i2p/client/naming/NamingService.java
index a7098d799..fc9a53414 100644
--- a/core/java/src/net/i2p/client/naming/NamingService.java
+++ b/core/java/src/net/i2p/client/naming/NamingService.java
@@ -32,7 +32,7 @@ public abstract class NamingService {
public static final String PROP_IMPL = "i2p.naming.impl";
private static final String DEFAULT_IMPL = "net.i2p.client.naming.HostsTxtNamingService";
- protected static final int CACHE_MAX_SIZE = 8;
+ protected static final int CACHE_MAX_SIZE = 16;
/**
@@ -107,7 +107,7 @@ public abstract class NamingService {
* The service may override the age and/or size limit
*/
/** Don't know why a dest would ever change but keep this short anyway */
- protected static final long CACHE_MAX_AGE = 60*1000;
+ protected static final long CACHE_MAX_AGE = 7*60*1000;
private class CacheEntry {
public Destination dest;
@@ -174,4 +174,11 @@ public abstract class NamingService {
return ce.dest;
}
}
+
+ /** @since 0.8.1 */
+ public void clearCache() {
+ synchronized (_cache) {
+ _cache.clear();
+ }
+ }
}
From 53dd0c76551a3fcf1e6c501affdbedba2125f7e6 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 14:23:56 +0000
Subject: [PATCH 54/75] * Crypto: - Convert all ArrayList caching to
LBQs in YKGenerator, HMACGenerator, and AESKeyCache. - Change
DSAEngine params from Hash to new SHA1Hash, since these were really
20 byte hashes, not 32 byte Hashes. - Add stats to track YKGenerator
caching success - Fix YKGenerator precalculation to be much more useful
by increasing the cache size and dramatically shortening the delay
- Option cleanups - YKGenerator cleanups - Mark
HMAC256Generator unused
---
.../net/i2p/crypto/CryptixAESKeyCache.java | 19 +-
.../net/i2p/crypto/DHSessionKeyBuilder.java | 30 +---
core/java/src/net/i2p/crypto/DSAEngine.java | 25 ++-
.../src/net/i2p/crypto/HMAC256Generator.java | 10 +-
.../src/net/i2p/crypto/HMACGenerator.java | 38 ++--
core/java/src/net/i2p/crypto/SHA1.java | 2 +-
core/java/src/net/i2p/crypto/SHA1Hash.java | 81 +++++++++
core/java/src/net/i2p/crypto/YKGenerator.java | 168 ++++++++----------
8 files changed, 202 insertions(+), 171 deletions(-)
create mode 100644 core/java/src/net/i2p/crypto/SHA1Hash.java
diff --git a/core/java/src/net/i2p/crypto/CryptixAESKeyCache.java b/core/java/src/net/i2p/crypto/CryptixAESKeyCache.java
index 5084ae2b0..5d39c1578 100644
--- a/core/java/src/net/i2p/crypto/CryptixAESKeyCache.java
+++ b/core/java/src/net/i2p/crypto/CryptixAESKeyCache.java
@@ -1,7 +1,6 @@
package net.i2p.crypto;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.concurrent.LinkedBlockingQueue;
/**
* Cache the objects used in CryptixRijndael_Algorithm.makeKey to reduce
@@ -11,7 +10,7 @@ import java.util.List;
*
*/
public final class CryptixAESKeyCache {
- private final List _availableKeys;
+ private final LinkedBlockingQueue _availableKeys;
private static final int KEYSIZE = 32; // 256bit AES
private static final int BLOCKSIZE = 16;
@@ -22,7 +21,7 @@ public final class CryptixAESKeyCache {
private static final int MAX_KEYS = 64;
public CryptixAESKeyCache() {
- _availableKeys = new ArrayList(MAX_KEYS);
+ _availableKeys = new LinkedBlockingQueue(MAX_KEYS);
}
/**
@@ -30,10 +29,9 @@ public final class CryptixAESKeyCache {
*
*/
public final KeyCacheEntry acquireKey() {
- synchronized (_availableKeys) {
- if (!_availableKeys.isEmpty())
- return (KeyCacheEntry)_availableKeys.remove(0);
- }
+ KeyCacheEntry rv = _availableKeys.poll();
+ if (rv != null)
+ return rv;
return createNew();
}
@@ -42,10 +40,7 @@ public final class CryptixAESKeyCache {
*
*/
public final void releaseKey(KeyCacheEntry key) {
- synchronized (_availableKeys) {
- if (_availableKeys.size() < MAX_KEYS)
- _availableKeys.add(key);
- }
+ _availableKeys.offer(key);
}
public static final KeyCacheEntry createNew() {
diff --git a/core/java/src/net/i2p/crypto/DHSessionKeyBuilder.java b/core/java/src/net/i2p/crypto/DHSessionKeyBuilder.java
index 2c1e57d8e..b438f2b47 100644
--- a/core/java/src/net/i2p/crypto/DHSessionKeyBuilder.java
+++ b/core/java/src/net/i2p/crypto/DHSessionKeyBuilder.java
@@ -65,35 +65,17 @@ public class DHSessionKeyBuilder {
public final static String PROP_DH_PRECALC_MIN = "crypto.dh.precalc.min";
public final static String PROP_DH_PRECALC_MAX = "crypto.dh.precalc.max";
public final static String PROP_DH_PRECALC_DELAY = "crypto.dh.precalc.delay";
- public final static String DEFAULT_DH_PRECALC_MIN = "5";
- public final static String DEFAULT_DH_PRECALC_MAX = "50";
- public final static String DEFAULT_DH_PRECALC_DELAY = "10000";
+ public final static int DEFAULT_DH_PRECALC_MIN = 5;
+ public final static int DEFAULT_DH_PRECALC_MAX = 50;
+ public final static int DEFAULT_DH_PRECALC_DELAY = 10000;
static {
I2PAppContext ctx = _context;
ctx.statManager().createRateStat("crypto.dhGeneratePublicTime", "How long it takes to create x and X", "Encryption", new long[] { 60*1000, 5*60*1000, 60*60*1000 });
ctx.statManager().createRateStat("crypto.dhCalculateSessionTime", "How long it takes to create the session key", "Encryption", new long[] { 60*1000, 5*60*1000, 60*60*1000 });
- try {
- int val = Integer.parseInt(ctx.getProperty(PROP_DH_PRECALC_MIN, DEFAULT_DH_PRECALC_MIN));
- MIN_NUM_BUILDERS = val;
- } catch (Throwable t) {
- int val = Integer.parseInt(DEFAULT_DH_PRECALC_MIN);
- MIN_NUM_BUILDERS = val;
- }
- try {
- int val = Integer.parseInt(ctx.getProperty(PROP_DH_PRECALC_MAX, DEFAULT_DH_PRECALC_MAX));
- MAX_NUM_BUILDERS = val;
- } catch (Throwable t) {
- int val = Integer.parseInt(DEFAULT_DH_PRECALC_MAX);
- MAX_NUM_BUILDERS = val;
- }
- try {
- int val = Integer.parseInt(ctx.getProperty(PROP_DH_PRECALC_DELAY, DEFAULT_DH_PRECALC_DELAY));
- CALC_DELAY = val;
- } catch (Throwable t) {
- int val = Integer.parseInt(DEFAULT_DH_PRECALC_DELAY);
- CALC_DELAY = val;
- }
+ MIN_NUM_BUILDERS = ctx.getProperty(PROP_DH_PRECALC_MIN, DEFAULT_DH_PRECALC_MIN);
+ MAX_NUM_BUILDERS = ctx.getProperty(PROP_DH_PRECALC_MAX, DEFAULT_DH_PRECALC_MAX);
+ CALC_DELAY = ctx.getProperty(PROP_DH_PRECALC_DELAY, DEFAULT_DH_PRECALC_DELAY);
if (_log.shouldLog(Log.DEBUG))
_log.debug("DH Precalc (minimum: " + MIN_NUM_BUILDERS + " max: " + MAX_NUM_BUILDERS + ", delay: "
diff --git a/core/java/src/net/i2p/crypto/DSAEngine.java b/core/java/src/net/i2p/crypto/DSAEngine.java
index b083cc248..941774253 100644
--- a/core/java/src/net/i2p/crypto/DSAEngine.java
+++ b/core/java/src/net/i2p/crypto/DSAEngine.java
@@ -41,6 +41,10 @@ import net.i2p.data.SigningPublicKey;
import net.i2p.util.Log;
import net.i2p.util.NativeBigInteger;
+/**
+ * Params and rv's changed from Hash to SHA1Hash for version 0.8.1
+ * There shouldn't be any external users of those variants.
+ */
public class DSAEngine {
private Log _log;
private I2PAppContext _context;
@@ -61,7 +65,9 @@ public class DSAEngine {
public boolean verifySignature(Signature signature, InputStream in, SigningPublicKey verifyingKey) {
return verifySignature(signature, calculateHash(in), verifyingKey);
}
- public boolean verifySignature(Signature signature, Hash hash, SigningPublicKey verifyingKey) {
+
+ /** @param hash SHA-1 hash, NOT a SHA-256 hash */
+ public boolean verifySignature(Signature signature, SHA1Hash hash, SigningPublicKey verifyingKey) {
long start = _context.clock().now();
try {
@@ -111,17 +117,18 @@ public class DSAEngine {
}
public Signature sign(byte data[], int offset, int length, SigningPrivateKey signingKey) {
if ((signingKey == null) || (data == null) || (data.length <= 0)) return null;
- Hash h = calculateHash(data, offset, length);
+ SHA1Hash h = calculateHash(data, offset, length);
return sign(h, signingKey);
}
public Signature sign(InputStream in, SigningPrivateKey signingKey) {
if ((signingKey == null) || (in == null) ) return null;
- Hash h = calculateHash(in);
+ SHA1Hash h = calculateHash(in);
return sign(h, signingKey);
}
- public Signature sign(Hash hash, SigningPrivateKey signingKey) {
+ /** @param hash SHA-1 hash, NOT a SHA-256 hash */
+ public Signature sign(SHA1Hash hash, SigningPrivateKey signingKey) {
if ((signingKey == null) || (hash == null)) return null;
long start = _context.clock().now();
@@ -186,7 +193,8 @@ public class DSAEngine {
return sig;
}
- public Hash calculateHash(InputStream in) {
+ /** @return hash SHA-1 hash, NOT a SHA-256 hash */
+ public SHA1Hash calculateHash(InputStream in) {
SHA1 digest = new SHA1();
byte buf[] = new byte[64];
int read = 0;
@@ -199,14 +207,15 @@ public class DSAEngine {
_log.warn("Unable to hash the stream", ioe);
return null;
}
- return new Hash(digest.engineDigest());
+ return new SHA1Hash(digest.engineDigest());
}
- public static Hash calculateHash(byte[] source, int offset, int len) {
+ /** @return hash SHA-1 hash, NOT a SHA-256 hash */
+ public static SHA1Hash calculateHash(byte[] source, int offset, int len) {
SHA1 h = new SHA1();
h.engineUpdate(source, offset, len);
byte digested[] = h.digest();
- return new Hash(digested);
+ return new SHA1Hash(digested);
}
public static void main(String args[]) {
diff --git a/core/java/src/net/i2p/crypto/HMAC256Generator.java b/core/java/src/net/i2p/crypto/HMAC256Generator.java
index bf0532109..3fc554639 100644
--- a/core/java/src/net/i2p/crypto/HMAC256Generator.java
+++ b/core/java/src/net/i2p/crypto/HMAC256Generator.java
@@ -15,16 +15,16 @@ import org.bouncycastle.crypto.macs.I2PHMac;
* in {@link org.bouncycastle.crypto.macs.I2PHMac} and
* {@link org.bouncycastle.crypto.digests.MD5Digest}.
*
+ * deprecated unused
*/
public class HMAC256Generator extends HMACGenerator {
public HMAC256Generator(I2PAppContext context) { super(context); }
@Override
protected I2PHMac acquire() {
- synchronized (_available) {
- if (!_available.isEmpty())
- return (I2PHMac)_available.remove(0);
- }
+ I2PHMac rv = _available.poll();
+ if (rv != null)
+ return rv;
// the HMAC is hardcoded to use SHA256 digest size
// for backwards compatability. next time we have a backwards
// incompatible change, we should update this by removing ", 32"
@@ -43,6 +43,7 @@ public class HMAC256Generator extends HMACGenerator {
}
+/******
public static void main(String args[]) {
I2PAppContext ctx = I2PAppContext.getGlobalContext();
byte data[] = new byte[64];
@@ -51,4 +52,5 @@ public class HMAC256Generator extends HMACGenerator {
Hash mac = ctx.hmac256().calculate(key, data);
System.out.println(Base64.encode(mac.getData()));
}
+******/
}
diff --git a/core/java/src/net/i2p/crypto/HMACGenerator.java b/core/java/src/net/i2p/crypto/HMACGenerator.java
index aed444ed0..237c65055 100644
--- a/core/java/src/net/i2p/crypto/HMACGenerator.java
+++ b/core/java/src/net/i2p/crypto/HMACGenerator.java
@@ -1,8 +1,7 @@
package net.i2p.crypto;
-import java.util.ArrayList;
import java.util.Arrays;
-import java.util.List;
+import java.util.concurrent.LinkedBlockingQueue;
import net.i2p.I2PAppContext;
import net.i2p.data.DataHelper;
@@ -22,14 +21,14 @@ import org.bouncycastle.crypto.macs.I2PHMac;
public class HMACGenerator {
private I2PAppContext _context;
/** set of available HMAC instances for calculate */
- protected final List _available;
+ protected final LinkedBlockingQueue _available;
/** set of available byte[] buffers for verify */
- private final List _availableTmp;
+ private final LinkedBlockingQueue _availableTmp;
public HMACGenerator(I2PAppContext context) {
_context = context;
- _available = new ArrayList(32);
- _availableTmp = new ArrayList(32);
+ _available = new LinkedBlockingQueue(32);
+ _availableTmp = new LinkedBlockingQueue(32);
}
/**
@@ -88,39 +87,30 @@ public class HMACGenerator {
}
protected I2PHMac acquire() {
- synchronized (_available) {
- if (!_available.isEmpty())
- return (I2PHMac)_available.remove(0);
- }
+ I2PHMac rv = _available.poll();
+ if (rv != null)
+ return rv;
// the HMAC is hardcoded to use SHA256 digest size
// for backwards compatability. next time we have a backwards
// incompatible change, we should update this by removing ", 32"
return new I2PHMac(new MD5Digest(), 32);
}
- private void release(Mac mac) {
- synchronized (_available) {
- if (_available.size() < 64)
- _available.add(mac);
- }
+
+ private void release(I2PHMac mac) {
+ _available.offer(mac);
}
// temp buffers for verify(..)
private byte[] acquireTmp() {
- byte rv[] = null;
- synchronized (_availableTmp) {
- if (!_availableTmp.isEmpty())
- rv = (byte[])_availableTmp.remove(0);
- }
+ byte rv[] = _availableTmp.poll();
if (rv != null)
Arrays.fill(rv, (byte)0x0);
else
rv = new byte[Hash.HASH_LENGTH];
return rv;
}
+
private void releaseTmp(byte tmp[]) {
- synchronized (_availableTmp) {
- if (_availableTmp.size() < 64)
- _availableTmp.add((Object)tmp);
- }
+ _availableTmp.offer(tmp);
}
}
diff --git a/core/java/src/net/i2p/crypto/SHA1.java b/core/java/src/net/i2p/crypto/SHA1.java
index d8a0ac1c2..6dbdee074 100644
--- a/core/java/src/net/i2p/crypto/SHA1.java
+++ b/core/java/src/net/i2p/crypto/SHA1.java
@@ -63,7 +63,7 @@ public final class SHA1 extends MessageDigest implements Cloneable {
/**
* This implementation returns a fixed-size digest.
*/
- private static final int HASH_LENGTH = 20; // bytes == 160 bits
+ static final int HASH_LENGTH = 20; // bytes == 160 bits
/**
* Private context for incomplete blocks and padding bytes.
diff --git a/core/java/src/net/i2p/crypto/SHA1Hash.java b/core/java/src/net/i2p/crypto/SHA1Hash.java
new file mode 100644
index 000000000..acbb68d4b
--- /dev/null
+++ b/core/java/src/net/i2p/crypto/SHA1Hash.java
@@ -0,0 +1,81 @@
+package net.i2p.crypto;
+
+/*
+ * free (adj.): unencumbered; not under the control of others
+ * Written by jrandom in 2003 and released into the public domain
+ * with no warranty of any kind, either expressed or implied.
+ * It probably won't make your computer catch on fire, or eat
+ * your children, but it might. Use at your own risk.
+ *
+ */
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import net.i2p.data.DataFormatException;
+import net.i2p.data.DataHelper;
+import net.i2p.data.DataStructureImpl;
+
+/**
+ * Because DSAEngine was abusing Hash for 20-byte hashes
+ *
+ * @since 0.8.1
+ * @author zzz
+ */
+public class SHA1Hash extends DataStructureImpl {
+ private byte[] _data;
+ private int _cachedHashCode;
+
+ public final static int HASH_LENGTH = SHA1.HASH_LENGTH;
+
+ /** @throws IllegalArgumentException if data is not 20 bytes (null is ok) */
+ public SHA1Hash(byte data[]) {
+ setData(data);
+ }
+
+ public byte[] getData() {
+ return _data;
+ }
+
+ /** @throws IllegalArgumentException if data is not 20 bytes (null is ok) */
+ public void setData(byte[] data) {
+ // FIXME DSAEngine uses a SHA-1 "Hash" as parameters and return values!
+ if (data != null && data.length != HASH_LENGTH)
+ throw new IllegalArgumentException("Hash must be 20 bytes");
+ _data = data;
+ _cachedHashCode = calcHashCode();
+ }
+
+ /** @throws IOException always */
+ public void readBytes(InputStream in) throws DataFormatException, IOException {
+ throw new IOException("unimplemented");
+ }
+
+ /** @throws IOException always */
+ public void writeBytes(OutputStream out) throws DataFormatException, IOException {
+ throw new IOException("unimplemented");
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if ((obj == null) || !(obj instanceof SHA1Hash)) return false;
+ return DataHelper.eq(_data, ((SHA1Hash) obj)._data);
+ }
+
+ /** a Hash is a hash, so just use the first 4 bytes for speed */
+ @Override
+ public int hashCode() {
+ return _cachedHashCode;
+ }
+
+ /** a Hash is a hash, so just use the first 4 bytes for speed */
+ private int calcHashCode() {
+ int rv = 0;
+ if (_data != null) {
+ for (int i = 0; i < 4; i++)
+ rv ^= (_data[i] << (i*8));
+ }
+ return rv;
+ }
+}
diff --git a/core/java/src/net/i2p/crypto/YKGenerator.java b/core/java/src/net/i2p/crypto/YKGenerator.java
index ad68ebec1..af83f2c92 100644
--- a/core/java/src/net/i2p/crypto/YKGenerator.java
+++ b/core/java/src/net/i2p/crypto/YKGenerator.java
@@ -10,24 +10,22 @@ package net.i2p.crypto;
*/
import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.concurrent.LinkedBlockingQueue;
import net.i2p.I2PAppContext;
import net.i2p.util.Clock;
import net.i2p.util.I2PThread;
import net.i2p.util.Log;
import net.i2p.util.NativeBigInteger;
-import net.i2p.util.RandomSource;
/**
* Precalculate the Y and K for ElGamal encryption operations.
*
* This class precalcs a set of values on its own thread, using those transparently
* when a new instance is created. By default, the minimum threshold for creating
- * new values for the pool is 5, and the max pool size is 10. Whenever the pool has
+ * new values for the pool is 20, and the max pool size is 50. Whenever the pool has
* less than the minimum, it fills it up again to the max. There is a delay after
- * each precalculation so that the CPU isn't hosed during startup (defaulting to 10 seconds).
+ * each precalculation so that the CPU isn't hosed during startup.
* These three parameters are controlled by java environmental variables and
* can be adjusted via:
* -Dcrypto.yk.precalc.min=40 -Dcrypto.yk.precalc.max=100 -Dcrypto.yk.precalc.delay=60000
@@ -39,51 +37,36 @@ import net.i2p.util.RandomSource;
* @author jrandom
*/
class YKGenerator {
- private final static Log _log = new Log(YKGenerator.class);
- private static int MIN_NUM_BUILDERS = -1;
- private static int MAX_NUM_BUILDERS = -1;
- private static int CALC_DELAY = -1;
- /* FIXME final type if you are to syncronize FIXME */
- private static volatile List _values = new ArrayList(50); // list of BigInteger[] values (y and k)
- private static Thread _precalcThread = null;
+ //private final static Log _log = new Log(YKGenerator.class);
+ private static final int MIN_NUM_BUILDERS;
+ private static final int MAX_NUM_BUILDERS;
+ private static final int CALC_DELAY;
+ private static final LinkedBlockingQueue _values = new LinkedBlockingQueue(50); // list of BigInteger[] values (y and k)
+ private static final Thread _precalcThread;
+ private static final I2PAppContext ctx;
public final static String PROP_YK_PRECALC_MIN = "crypto.yk.precalc.min";
public final static String PROP_YK_PRECALC_MAX = "crypto.yk.precalc.max";
public final static String PROP_YK_PRECALC_DELAY = "crypto.yk.precalc.delay";
- public final static String DEFAULT_YK_PRECALC_MIN = "10";
- public final static String DEFAULT_YK_PRECALC_MAX = "30";
- public final static String DEFAULT_YK_PRECALC_DELAY = "10000";
+ public final static int DEFAULT_YK_PRECALC_MIN = 20;
+ public final static int DEFAULT_YK_PRECALC_MAX = 50;
+ public final static int DEFAULT_YK_PRECALC_DELAY = 200;
/** check every 30 seconds whether we have less than the minimum */
- private final static long CHECK_DELAY = 30 * 1000;
+ private static long CHECK_DELAY = 30 * 1000;
static {
- I2PAppContext ctx = I2PAppContext.getGlobalContext();
- try {
- int val = Integer.parseInt(ctx.getProperty(PROP_YK_PRECALC_MIN, DEFAULT_YK_PRECALC_MIN));
- MIN_NUM_BUILDERS = val;
- } catch (Throwable t) {
- int val = Integer.parseInt(DEFAULT_YK_PRECALC_MIN);
- MIN_NUM_BUILDERS = val;
- }
- try {
- int val = Integer.parseInt(ctx.getProperty(PROP_YK_PRECALC_MAX, DEFAULT_YK_PRECALC_MAX));
- MAX_NUM_BUILDERS = val;
- } catch (Throwable t) {
- int val = Integer.parseInt(DEFAULT_YK_PRECALC_MAX);
- MAX_NUM_BUILDERS = val;
- }
- try {
- int val = Integer.parseInt(ctx.getProperty(PROP_YK_PRECALC_DELAY, DEFAULT_YK_PRECALC_DELAY));
- CALC_DELAY = val;
- } catch (Throwable t) {
- int val = Integer.parseInt(DEFAULT_YK_PRECALC_DELAY);
- CALC_DELAY = val;
- }
+ ctx = I2PAppContext.getGlobalContext();
+ MIN_NUM_BUILDERS = ctx.getProperty(PROP_YK_PRECALC_MIN, DEFAULT_YK_PRECALC_MIN);
+ MAX_NUM_BUILDERS = ctx.getProperty(PROP_YK_PRECALC_MAX, DEFAULT_YK_PRECALC_MAX);
+ CALC_DELAY = ctx.getProperty(PROP_YK_PRECALC_DELAY, DEFAULT_YK_PRECALC_DELAY);
- if (_log.shouldLog(Log.DEBUG))
- _log.debug("ElGamal YK Precalc (minimum: " + MIN_NUM_BUILDERS + " max: " + MAX_NUM_BUILDERS + ", delay: "
- + CALC_DELAY + ")");
+ //if (_log.shouldLog(Log.DEBUG))
+ // _log.debug("ElGamal YK Precalc (minimum: " + MIN_NUM_BUILDERS + " max: " + MAX_NUM_BUILDERS + ", delay: "
+ // + CALC_DELAY + ")");
+
+ ctx.statManager().createRateStat("crypto.YKUsed", "Need a YK from the queue", "Encryption", new long[] { 60*60*1000 });
+ ctx.statManager().createRateStat("crypto.YKEmpty", "YK queue empty", "Encryption", new long[] { 60*60*1000 });
_precalcThread = new I2PThread(new YKPrecalcRunner(MIN_NUM_BUILDERS, MAX_NUM_BUILDERS));
_precalcThread.setName("YK Precalc");
@@ -93,45 +76,36 @@ class YKGenerator {
}
private static final int getSize() {
- synchronized (_values) {
- return _values.size();
- }
+ return _values.size();
}
- private static final int addValues(BigInteger yk[]) {
- int sz = 0;
- synchronized (_values) {
- _values.add(yk);
- sz = _values.size();
- }
- return sz;
+ /** @return true if successful, false if full */
+ private static final boolean addValues(BigInteger yk[]) {
+ return _values.offer(yk);
}
+ /** @return rv[0] = Y; rv[1] = K */
public static BigInteger[] getNextYK() {
- if (true) {
- synchronized (_values) {
- if (!_values.isEmpty()) {
- if (_log.shouldLog(Log.DEBUG))
- _log.debug("Sufficient precalculated YK values - fetch the existing");
- return (BigInteger[]) _values.remove(0);
- }
- }
- }
- if (_log.shouldLog(Log.INFO)) _log.info("Insufficient precalculated YK values - create a new one");
+ ctx.statManager().addRateData("crypto.YKUsed", 1, 0);
+ BigInteger[] rv = _values.poll();
+ if (rv != null)
+ return rv;
+ ctx.statManager().addRateData("crypto.YKEmpty", 1, 0);
return generateYK();
}
private final static BigInteger _two = new NativeBigInteger(1, new byte[] { 0x02});
+ /** @return rv[0] = Y; rv[1] = K */
private static final BigInteger[] generateYK() {
NativeBigInteger k = null;
BigInteger y = null;
- long t0 = 0;
- long t1 = 0;
+ //long t0 = 0;
+ //long t1 = 0;
while (k == null) {
- t0 = Clock.getInstance().now();
- k = new NativeBigInteger(KeyGenerator.PUBKEY_EXPONENT_SIZE, RandomSource.getInstance());
- t1 = Clock.getInstance().now();
+ //t0 = Clock.getInstance().now();
+ k = new NativeBigInteger(KeyGenerator.PUBKEY_EXPONENT_SIZE, ctx.random());
+ //t1 = Clock.getInstance().now();
if (BigInteger.ZERO.compareTo(k) == 0) {
k = null;
continue;
@@ -139,39 +113,31 @@ class YKGenerator {
BigInteger kPlus2 = k.add(_two);
if (kPlus2.compareTo(CryptoConstants.elgp) > 0) k = null;
}
- long t2 = Clock.getInstance().now();
+ //long t2 = Clock.getInstance().now();
y = CryptoConstants.elgg.modPow(k, CryptoConstants.elgp);
BigInteger yk[] = new BigInteger[2];
yk[0] = y;
yk[1] = k;
- long diff = t2 - t0;
- if (diff > 1000) {
- if (_log.shouldLog(Log.WARN)) _log.warn("Took too long to generate YK value for ElGamal (" + diff + "ms)");
- }
+ //long diff = t2 - t0;
+ //if (diff > 1000) {
+ // if (_log.shouldLog(Log.WARN)) _log.warn("Took too long to generate YK value for ElGamal (" + diff + "ms)");
+ //}
return yk;
}
public static void main(String args[]) {
- RandomSource.getInstance().nextBoolean(); // warm it up
- try {
- Thread.sleep(20 * 1000);
- } catch (InterruptedException ie) { // nop
- }
- _log.debug("\n\n\n\nBegin test\n");
+ System.out.println("\n\n\n\nBegin test\n");
long negTime = 0;
for (int i = 0; i < 5; i++) {
long startNeg = Clock.getInstance().now();
getNextYK();
long endNeg = Clock.getInstance().now();
+ negTime += endNeg - startNeg;
}
- _log.debug("YK fetch time for 5 runs: " + negTime + " @ " + negTime / 5l + "ms each");
- try {
- Thread.sleep(30 * 1000);
- } catch (InterruptedException ie) { // nop
- }
+ System.out.println("YK fetch time for 5 runs: " + negTime + " @ " + negTime / 5l + "ms each");
}
private static class YKPrecalcRunner implements Runnable {
@@ -186,15 +152,21 @@ class YKGenerator {
public void run() {
while (true) {
int curSize = 0;
- long start = Clock.getInstance().now();
+ //long start = Clock.getInstance().now();
int startSize = getSize();
+ // Adjust delay
+ if (startSize <= (_minSize / 2) && CHECK_DELAY > 1000)
+ CHECK_DELAY -= 1000;
+ else if (startSize > (_minSize * 2) && CHECK_DELAY < 60000)
+ CHECK_DELAY += 1000;
curSize = startSize;
- while (curSize < _minSize) {
- while (curSize < _maxSize) {
- long begin = Clock.getInstance().now();
- curSize = addValues(generateYK());
- long end = Clock.getInstance().now();
- if (_log.shouldLog(Log.DEBUG)) _log.debug("Precalculated YK value in " + (end - begin) + "ms");
+ if (curSize < _minSize) {
+ for (int i = curSize; i < _maxSize; i++) {
+ //long begin = Clock.getInstance().now();
+ if (!addValues(generateYK()))
+ break;
+ //long end = Clock.getInstance().now();
+ //if (_log.shouldLog(Log.DEBUG)) _log.debug("Precalculated YK value in " + (end - begin) + "ms");
// for some relief...
try {
Thread.sleep(CALC_DELAY);
@@ -202,14 +174,14 @@ class YKGenerator {
}
}
}
- long end = Clock.getInstance().now();
- int numCalc = curSize - startSize;
- if (numCalc > 0) {
- if (_log.shouldLog(Log.DEBUG))
- _log.debug("Precalced " + numCalc + " to " + curSize + " in "
- + (end - start - CALC_DELAY * numCalc) + "ms (not counting "
- + (CALC_DELAY * numCalc) + "ms relief). now sleeping");
- }
+ //long end = Clock.getInstance().now();
+ //int numCalc = curSize - startSize;
+ //if (numCalc > 0) {
+ // if (_log.shouldLog(Log.DEBUG))
+ // _log.debug("Precalced " + numCalc + " to " + curSize + " in "
+ // + (end - start - CALC_DELAY * numCalc) + "ms (not counting "
+ // + (CALC_DELAY * numCalc) + "ms relief). now sleeping");
+ //}
try {
Thread.sleep(CHECK_DELAY);
} catch (InterruptedException ie) { // nop
@@ -217,4 +189,4 @@ class YKGenerator {
}
}
}
-}
\ No newline at end of file
+}
From c10a4f51baa010df8fe63159cca823d823d141c7 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 14:27:01 +0000
Subject: [PATCH 55/75] I2CP: cleanups to replace method calls with fields
---
.../src/net/i2p/data/i2cp/AbuseReason.java | 6 ++---
.../src/net/i2p/data/i2cp/AbuseSeverity.java | 6 ++---
.../i2p/data/i2cp/CreateSessionMessage.java | 8 +++----
.../i2p/data/i2cp/DestroySessionMessage.java | 4 ++--
.../net/i2p/data/i2cp/I2CPMessageHandler.java | 8 ++++---
.../java/src/net/i2p/data/i2cp/MessageId.java | 8 +++----
.../i2p/data/i2cp/MessagePayloadMessage.java | 12 +++++-----
.../i2p/data/i2cp/MessageStatusMessage.java | 22 ++++++++++---------
.../data/i2cp/ReceiveMessageBeginMessage.java | 8 +++----
.../data/i2cp/ReceiveMessageEndMessage.java | 8 +++----
.../data/i2cp/ReconfigureSessionMessage.java | 8 +++----
.../i2p/data/i2cp/RequestLeaseSetMessage.java | 8 +++----
.../src/net/i2p/data/i2cp/SessionConfig.java | 4 ++--
.../java/src/net/i2p/data/i2cp/SessionId.java | 8 +++----
.../src/net/i2p/data/i2cp/SetDateMessage.java | 6 ++---
15 files changed, 63 insertions(+), 61 deletions(-)
diff --git a/core/java/src/net/i2p/data/i2cp/AbuseReason.java b/core/java/src/net/i2p/data/i2cp/AbuseReason.java
index f631fa591..99388faf2 100644
--- a/core/java/src/net/i2p/data/i2cp/AbuseReason.java
+++ b/core/java/src/net/i2p/data/i2cp/AbuseReason.java
@@ -49,16 +49,16 @@ public class AbuseReason extends DataStructureImpl {
@Override
public boolean equals(Object object) {
if ((object == null) || !(object instanceof AbuseReason)) return false;
- return DataHelper.eq(getReason(), ((AbuseReason) object).getReason());
+ return DataHelper.eq(_reason, ((AbuseReason) object).getReason());
}
@Override
public int hashCode() {
- return DataHelper.hashCode(getReason());
+ return DataHelper.hashCode(_reason);
}
@Override
public String toString() {
- return "[AbuseReason: " + getReason() + "]";
+ return "[AbuseReason: " + _reason + "]";
}
}
diff --git a/core/java/src/net/i2p/data/i2cp/AbuseSeverity.java b/core/java/src/net/i2p/data/i2cp/AbuseSeverity.java
index 69cba7d24..bc3b9bbc9 100644
--- a/core/java/src/net/i2p/data/i2cp/AbuseSeverity.java
+++ b/core/java/src/net/i2p/data/i2cp/AbuseSeverity.java
@@ -28,7 +28,7 @@ public class AbuseSeverity extends DataStructureImpl {
private int _severityId;
public AbuseSeverity() {
- setSeverity(-1);
+ _severityId = -1;
}
public int getSeverity() {
@@ -56,11 +56,11 @@ public class AbuseSeverity extends DataStructureImpl {
@Override
public int hashCode() {
- return getSeverity();
+ return _severityId;
}
@Override
public String toString() {
- return "[AbuseSeverity: " + getSeverity() + "]";
+ return "[AbuseSeverity: " + _severityId + "]";
}
}
diff --git a/core/java/src/net/i2p/data/i2cp/CreateSessionMessage.java b/core/java/src/net/i2p/data/i2cp/CreateSessionMessage.java
index 1b8004ce0..8590a554c 100644
--- a/core/java/src/net/i2p/data/i2cp/CreateSessionMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/CreateSessionMessage.java
@@ -27,11 +27,11 @@ public class CreateSessionMessage extends I2CPMessageImpl {
private SessionConfig _sessionConfig;
public CreateSessionMessage(SessionConfig config) {
- setSessionConfig(config);
+ _sessionConfig = config;
}
public CreateSessionMessage() {
- setSessionConfig(new SessionConfig());
+ _sessionConfig = new SessionConfig();
}
public SessionConfig getSessionConfig() {
@@ -75,7 +75,7 @@ public class CreateSessionMessage extends I2CPMessageImpl {
public boolean equals(Object object) {
if ((object != null) && (object instanceof CreateSessionMessage)) {
CreateSessionMessage msg = (CreateSessionMessage) object;
- return DataHelper.eq(getSessionConfig(), msg.getSessionConfig());
+ return DataHelper.eq(_sessionConfig, msg.getSessionConfig());
}
return false;
@@ -85,7 +85,7 @@ public class CreateSessionMessage extends I2CPMessageImpl {
public String toString() {
StringBuilder buf = new StringBuilder();
buf.append("[CreateSessionMessage: ");
- buf.append("\n\tConfig: ").append(getSessionConfig());
+ buf.append("\n\tConfig: ").append(_sessionConfig);
buf.append("]");
return buf.toString();
}
diff --git a/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java b/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java
index 8b4db852f..edb07ae41 100644
--- a/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java
@@ -69,7 +69,7 @@ public class DestroySessionMessage extends I2CPMessageImpl {
public boolean equals(Object object) {
if ((object != null) && (object instanceof DestroySessionMessage)) {
DestroySessionMessage msg = (DestroySessionMessage) object;
- return DataHelper.eq(getSessionId(), msg.getSessionId());
+ return DataHelper.eq(_sessionId, msg.getSessionId());
}
return false;
@@ -86,7 +86,7 @@ public class DestroySessionMessage extends I2CPMessageImpl {
public String toString() {
StringBuilder buf = new StringBuilder();
buf.append("[DestroySessionMessage: ");
- buf.append("\n\tSessionId: ").append(getSessionId());
+ buf.append("\n\tSessionId: ").append(_sessionId);
buf.append("]");
return buf.toString();
}
diff --git a/core/java/src/net/i2p/data/i2cp/I2CPMessageHandler.java b/core/java/src/net/i2p/data/i2cp/I2CPMessageHandler.java
index 739f7823e..aaa35427b 100644
--- a/core/java/src/net/i2p/data/i2cp/I2CPMessageHandler.java
+++ b/core/java/src/net/i2p/data/i2cp/I2CPMessageHandler.java
@@ -41,7 +41,7 @@ public class I2CPMessageHandler {
try {
if (length < 0) throw new I2CPMessageException("Invalid message length specified");
int type = (int) DataHelper.readLong(in, 1);
- I2CPMessage msg = createMessage(in, length, type);
+ I2CPMessage msg = createMessage(type);
msg.readMessage(in, length, type);
return msg;
} catch (DataFormatException dfe) {
@@ -53,8 +53,8 @@ public class I2CPMessageHandler {
* Yes, this is fairly ugly, but its the only place it ever happens.
*
*/
- private static I2CPMessage createMessage(InputStream in, int length, int type) throws IOException,
- I2CPMessageException {
+ private static I2CPMessage createMessage(int type) throws IOException,
+ I2CPMessageException {
switch (type) {
case CreateLeaseSetMessage.MESSAGE_TYPE:
return new CreateLeaseSetMessage();
@@ -101,6 +101,7 @@ public class I2CPMessageHandler {
}
}
+/***
public static void main(String args[]) {
try {
I2CPMessage msg = readMessage(new FileInputStream(args[0]));
@@ -109,4 +110,5 @@ public class I2CPMessageHandler {
e.printStackTrace();
}
}
+***/
}
diff --git a/core/java/src/net/i2p/data/i2cp/MessageId.java b/core/java/src/net/i2p/data/i2cp/MessageId.java
index d1db73761..365dc6dbb 100644
--- a/core/java/src/net/i2p/data/i2cp/MessageId.java
+++ b/core/java/src/net/i2p/data/i2cp/MessageId.java
@@ -27,10 +27,10 @@ public class MessageId extends DataStructureImpl {
private long _messageId;
public MessageId() {
- setMessageId(-1);
+ _messageId = -1;
}
public MessageId(long id) {
- setMessageId(id);
+ _messageId = id;
}
public long getMessageId() {
@@ -58,11 +58,11 @@ public class MessageId extends DataStructureImpl {
@Override
public int hashCode() {
- return (int)getMessageId();
+ return (int)_messageId;
}
@Override
public String toString() {
- return "[MessageId: " + getMessageId() + "]";
+ return "[MessageId: " + _messageId + "]";
}
}
diff --git a/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java b/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java
index f06fe86f3..d9739ee58 100644
--- a/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java
@@ -29,8 +29,8 @@ public class MessagePayloadMessage extends I2CPMessageImpl {
private Payload _payload;
public MessagePayloadMessage() {
- setSessionId(-1);
- setMessageId(-1);
+ _sessionId = -1;
+ _messageId = -1;
}
public long getSessionId() {
@@ -113,7 +113,7 @@ public class MessagePayloadMessage extends I2CPMessageImpl {
MessagePayloadMessage msg = (MessagePayloadMessage) object;
return _sessionId == msg.getSessionId()
&& _messageId == msg.getMessageId()
- && DataHelper.eq(getPayload(), msg.getPayload());
+ && DataHelper.eq(_payload, msg.getPayload());
}
return false;
@@ -123,9 +123,9 @@ public class MessagePayloadMessage extends I2CPMessageImpl {
public String toString() {
StringBuilder buf = new StringBuilder();
buf.append("[MessagePayloadMessage: ");
- buf.append("\n\tSessionId: ").append(getSessionId());
- buf.append("\n\tMessageId: ").append(getMessageId());
- buf.append("\n\tPayload: ").append(getPayload());
+ buf.append("\n\tSessionId: ").append(_sessionId);
+ buf.append("\n\tMessageId: ").append(_messageId);
+ buf.append("\n\tPayload: ").append(_payload);
buf.append("]");
return buf.toString();
}
diff --git a/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java b/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java
index 67fde8134..933a80785 100644
--- a/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java
@@ -32,17 +32,19 @@ public class MessageStatusMessage extends I2CPMessageImpl {
public final static int STATUS_AVAILABLE = 0;
public final static int STATUS_SEND_ACCEPTED = 1;
+ /** unused */
public final static int STATUS_SEND_BEST_EFFORT_SUCCESS = 2;
+ /** unused */
public final static int STATUS_SEND_BEST_EFFORT_FAILURE = 3;
public final static int STATUS_SEND_GUARANTEED_SUCCESS = 4;
public final static int STATUS_SEND_GUARANTEED_FAILURE = 5;
public MessageStatusMessage() {
- setSessionId(-1);
- setStatus(-1);
- setMessageId(-1);
- setSize(-1);
- setNonce(-1);
+ _sessionId = -1;
+ _status = -1;
+ _messageId = -1;
+ _size = -1;
+ _nonce = -1;
}
public long getSessionId() {
@@ -169,11 +171,11 @@ public class MessageStatusMessage extends I2CPMessageImpl {
public String toString() {
StringBuilder buf = new StringBuilder();
buf.append("[MessageStatusMessage: ");
- buf.append("\n\tSessionId: ").append(getSessionId());
- buf.append("\n\tNonce: ").append(getNonce());
- buf.append("\n\tMessageId: ").append(getMessageId());
- buf.append("\n\tStatus: ").append(getStatusString(getStatus()));
- buf.append("\n\tSize: ").append(getSize());
+ buf.append("\n\tSessionId: ").append(_sessionId);
+ buf.append("\n\tNonce: ").append(_nonce);
+ buf.append("\n\tMessageId: ").append(_messageId);
+ buf.append("\n\tStatus: ").append(getStatusString(_status));
+ buf.append("\n\tSize: ").append(_size);
buf.append("]");
return buf.toString();
}
diff --git a/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java b/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java
index 6ad5e2745..15bd6779d 100644
--- a/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java
@@ -28,8 +28,8 @@ public class ReceiveMessageBeginMessage extends I2CPMessageImpl {
private long _messageId;
public ReceiveMessageBeginMessage() {
- setSessionId(-1);
- setMessageId(-1);
+ _sessionId = -1;
+ _messageId = -1;
}
public long getSessionId() {
@@ -103,8 +103,8 @@ public class ReceiveMessageBeginMessage extends I2CPMessageImpl {
public String toString() {
StringBuilder buf = new StringBuilder();
buf.append("[ReceiveMessageBeginMessage: ");
- buf.append("\n\tSessionId: ").append(getSessionId());
- buf.append("\n\tMessageId: ").append(getMessageId());
+ buf.append("\n\tSessionId: ").append(_sessionId);
+ buf.append("\n\tMessageId: ").append(_messageId);
buf.append("]");
return buf.toString();
}
diff --git a/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java b/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java
index 79cf88382..718fd8b73 100644
--- a/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java
@@ -27,8 +27,8 @@ public class ReceiveMessageEndMessage extends I2CPMessageImpl {
private long _messageId;
public ReceiveMessageEndMessage() {
- setSessionId(-1);
- setMessageId(-1);
+ _sessionId = -1;
+ _messageId = -1;
}
public long getSessionId() {
@@ -87,8 +87,8 @@ public class ReceiveMessageEndMessage extends I2CPMessageImpl {
public String toString() {
StringBuilder buf = new StringBuilder();
buf.append("[ReceiveMessageEndMessage: ");
- buf.append("\n\tSessionId: ").append(getSessionId());
- buf.append("\n\tMessageId: ").append(getMessageId());
+ buf.append("\n\tSessionId: ").append(_sessionId);
+ buf.append("\n\tMessageId: ").append(_messageId);
buf.append("]");
return buf.toString();
}
diff --git a/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java b/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java
index 9400091be..336fb3ed5 100644
--- a/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java
@@ -81,8 +81,8 @@ public class ReconfigureSessionMessage extends I2CPMessageImpl {
public boolean equals(Object object) {
if ((object != null) && (object instanceof ReconfigureSessionMessage)) {
ReconfigureSessionMessage msg = (ReconfigureSessionMessage) object;
- return DataHelper.eq(getSessionId(), msg.getSessionId())
- && DataHelper.eq(getSessionConfig(), msg.getSessionConfig());
+ return DataHelper.eq(_sessionId, msg.getSessionId())
+ && DataHelper.eq(_sessionConfig, msg.getSessionConfig());
}
return false;
@@ -92,8 +92,8 @@ public class ReconfigureSessionMessage extends I2CPMessageImpl {
public String toString() {
StringBuilder buf = new StringBuilder();
buf.append("[ReconfigureSessionMessage: ");
- buf.append("\n\tSessionId: ").append(getSessionId());
- buf.append("\n\tSessionConfig: ").append(getSessionConfig());
+ buf.append("\n\tSessionId: ").append(_sessionId);
+ buf.append("\n\tSessionConfig: ").append(_sessionConfig);
buf.append("]");
return buf.toString();
}
diff --git a/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java b/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java
index ef877afe5..32241e833 100644
--- a/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java
@@ -30,7 +30,7 @@ import net.i2p.data.TunnelId;
public class RequestLeaseSetMessage extends I2CPMessageImpl {
public final static int MESSAGE_TYPE = 21;
private SessionId _sessionId;
- private List _endpoints;
+ private List _endpoints;
private Date _end;
public RequestLeaseSetMessage() {
@@ -51,12 +51,12 @@ public class RequestLeaseSetMessage extends I2CPMessageImpl {
public Hash getRouter(int endpoint) {
if ((endpoint < 0) || (_endpoints.size() < endpoint)) return null;
- return ((TunnelEndpoint) _endpoints.get(endpoint)).getRouter();
+ return _endpoints.get(endpoint).getRouter();
}
public TunnelId getTunnelId(int endpoint) {
if ((endpoint < 0) || (_endpoints.size() < endpoint)) return null;
- return ((TunnelEndpoint) _endpoints.get(endpoint)).getTunnelId();
+ return _endpoints.get(endpoint).getTunnelId();
}
/** @deprecated unused - presumably he meant remove? */
@@ -159,8 +159,6 @@ public class RequestLeaseSetMessage extends I2CPMessageImpl {
private TunnelId _tunnelId;
public TunnelEndpoint() {
- _router = null;
- _tunnelId = null;
}
public TunnelEndpoint(Hash router, TunnelId id) {
diff --git a/core/java/src/net/i2p/data/i2cp/SessionConfig.java b/core/java/src/net/i2p/data/i2cp/SessionConfig.java
index b96918a45..6534e0dbb 100644
--- a/core/java/src/net/i2p/data/i2cp/SessionConfig.java
+++ b/core/java/src/net/i2p/data/i2cp/SessionConfig.java
@@ -168,8 +168,8 @@ public class SessionConfig extends DataStructureImpl {
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
- _log.debug("PubKey size for destination: " + _destination.getPublicKey().getData().length);
- _log.debug("SigningKey size for destination: " + _destination.getSigningPublicKey().getData().length);
+ //_log.debug("PubKey size for destination: " + _destination.getPublicKey().getData().length);
+ //_log.debug("SigningKey size for destination: " + _destination.getSigningPublicKey().getData().length);
_destination.writeBytes(out);
DataHelper.writeProperties(out, _options, true); // UTF-8
DataHelper.writeDate(out, _creationDate);
diff --git a/core/java/src/net/i2p/data/i2cp/SessionId.java b/core/java/src/net/i2p/data/i2cp/SessionId.java
index f79589c42..708ba9c46 100644
--- a/core/java/src/net/i2p/data/i2cp/SessionId.java
+++ b/core/java/src/net/i2p/data/i2cp/SessionId.java
@@ -26,7 +26,7 @@ public class SessionId extends DataStructureImpl {
private int _sessionId;
public SessionId() {
- setSessionId(-1);
+ _sessionId = -1;
}
public int getSessionId() {
@@ -49,16 +49,16 @@ public class SessionId extends DataStructureImpl {
@Override
public boolean equals(Object obj) {
if ((obj == null) || !(obj instanceof SessionId)) return false;
- return getSessionId() == ((SessionId) obj).getSessionId();
+ return _sessionId == ((SessionId) obj).getSessionId();
}
@Override
public int hashCode() {
- return getSessionId();
+ return _sessionId;
}
@Override
public String toString() {
- return "[SessionId: " + getSessionId() + "]";
+ return "[SessionId: " + _sessionId + "]";
}
}
diff --git a/core/java/src/net/i2p/data/i2cp/SetDateMessage.java b/core/java/src/net/i2p/data/i2cp/SetDateMessage.java
index f0abce1a5..9f6633b6d 100644
--- a/core/java/src/net/i2p/data/i2cp/SetDateMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/SetDateMessage.java
@@ -28,7 +28,7 @@ public class SetDateMessage extends I2CPMessageImpl {
public SetDateMessage() {
super();
- setDate(new Date(Clock.getInstance().now()));
+ _date = new Date(Clock.getInstance().now());
}
public Date getDate() {
@@ -70,7 +70,7 @@ public class SetDateMessage extends I2CPMessageImpl {
public boolean equals(Object object) {
if ((object != null) && (object instanceof SetDateMessage)) {
SetDateMessage msg = (SetDateMessage) object;
- return DataHelper.eq(getDate(), msg.getDate());
+ return DataHelper.eq(_date, msg.getDate());
}
return false;
@@ -80,7 +80,7 @@ public class SetDateMessage extends I2CPMessageImpl {
public String toString() {
StringBuilder buf = new StringBuilder();
buf.append("[SetDateMessage");
- buf.append("\n\tDate: ").append(getDate());
+ buf.append("\n\tDate: ").append(_date);
buf.append("]");
return buf.toString();
}
From 4c31c70298aba8f4d47c3f4a8c7f5f37a4faeda6 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 14:28:27 +0000
Subject: [PATCH 56/75] Startup hint in installer for non-x86
---
installer/resources/start-i2p.txt | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/installer/resources/start-i2p.txt b/installer/resources/start-i2p.txt
index e20ed1e73..2e51ea48c 100644
--- a/installer/resources/start-i2p.txt
+++ b/installer/resources/start-i2p.txt
@@ -1,3 +1,8 @@
To start I2P, run:
$INSTALL_PATH/i2prouter start
+
+
+On non-x86, run:
+
+$INSTALL_PATH/runplain.sh
From 4456048e79cde5019108db7c8406a9d8169cccc9 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 14:43:40 +0000
Subject: [PATCH 57/75] * HTTPResponseOutputStream - More caching
- Stats cleanup - Max header length check - Catch OOM -
Initializer cleanup - Javadoc
---
.../i2ptunnel/HTTPResponseOutputStream.java | 68 ++++++++++++-------
.../i2p/i2ptunnel/I2PTunnelHTTPServer.java | 1 +
2 files changed, 44 insertions(+), 25 deletions(-)
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java
index af4049a21..326ebb644 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java
@@ -24,6 +24,9 @@ import net.i2p.util.I2PAppThread;
import net.i2p.util.Log;
/**
+ * This does the transparent gzip decompression on the client side.
+ * Extended in I2PTunnelHTTPServer to do the compression on the server side.
+ *
* Simple stream for delivering an HTTP response to
* the client, trivially filtered to make sure "Connection: close"
* is always in the response. Perhaps add transparent handling of the
@@ -33,29 +36,27 @@ import net.i2p.util.Log;
*
*/
class HTTPResponseOutputStream extends FilterOutputStream {
- private I2PAppContext _context;
- private Log _log;
- private ByteCache _cache;
+ private final I2PAppContext _context;
+ private final Log _log;
protected ByteArray _headerBuffer;
private boolean _headerWritten;
- private byte _buf1[];
+ private final byte _buf1[];
protected boolean _gzip;
private long _dataWritten;
private InternalGZIPInputStream _in;
private static final int CACHE_SIZE = 8*1024;
+ private static final ByteCache _cache = ByteCache.getInstance(8, CACHE_SIZE);
+ // OOM DOS prevention
+ private static final int MAX_HEADER_SIZE = 64*1024;
public HTTPResponseOutputStream(OutputStream raw) {
super(raw);
_context = I2PAppContext.getGlobalContext();
- _context.statManager().createRateStat("i2ptunnel.httpCompressionRatio", "ratio of compressed size to decompressed size after transfer", "I2PTunnel", new long[] { 60*1000, 30*60*1000 });
- _context.statManager().createRateStat("i2ptunnel.httpCompressed", "compressed size transferred", "I2PTunnel", new long[] { 60*1000, 30*60*1000 });
- _context.statManager().createRateStat("i2ptunnel.httpExpanded", "size transferred after expansion", "I2PTunnel", new long[] { 60*1000, 30*60*1000 });
+ _context.statManager().createRateStat("i2ptunnel.httpCompressionRatio", "ratio of compressed size to decompressed size after transfer", "I2PTunnel", new long[] { 60*60*1000 });
+ _context.statManager().createRateStat("i2ptunnel.httpCompressed", "compressed size transferred", "I2PTunnel", new long[] { 60*60*1000 });
+ _context.statManager().createRateStat("i2ptunnel.httpExpanded", "size transferred after expansion", "I2PTunnel", new long[] { 60*60*1000 });
_log = _context.logManager().getLog(getClass());
- _cache = ByteCache.getInstance(8, CACHE_SIZE);
_headerBuffer = _cache.acquire();
- _headerWritten = false;
- _gzip = false;
- _dataWritten = 0;
_buf1 = new byte[1];
}
@@ -96,14 +97,20 @@ class HTTPResponseOutputStream extends FilterOutputStream {
}
}
- /** grow (and free) the buffer as necessary */
- private void ensureCapacity() {
+ /**
+ * grow (and free) the buffer as necessary
+ * @throws IOException if the headers are too big
+ */
+ private void ensureCapacity() throws IOException {
+ if (_headerBuffer.getValid() >= MAX_HEADER_SIZE)
+ throw new IOException("Max header size exceeded: " + MAX_HEADER_SIZE);
if (_headerBuffer.getValid() + 1 >= _headerBuffer.getData().length) {
int newSize = (int)(_headerBuffer.getData().length * 1.5);
ByteArray newBuf = new ByteArray(new byte[newSize]);
System.arraycopy(_headerBuffer.getData(), 0, newBuf.getData(), 0, _headerBuffer.getValid());
newBuf.setValid(_headerBuffer.getValid());
newBuf.setOffset(0);
+ // if we changed the ByteArray size, don't put it back in the cache
if (_headerBuffer.getData().length == CACHE_SIZE)
_cache.release(_headerBuffer);
_headerBuffer = newBuf;
@@ -219,7 +226,7 @@ class HTTPResponseOutputStream extends FilterOutputStream {
//out.flush();
PipedInputStream pi = new PipedInputStream();
PipedOutputStream po = new PipedOutputStream(pi);
- new I2PAppThread(new Pusher(pi, out), "HTTP decompresser").start();
+ new I2PAppThread(new Pusher(pi, out), "HTTP decompressor").start();
out = po;
}
@@ -231,13 +238,13 @@ class HTTPResponseOutputStream extends FilterOutputStream {
_out = out;
}
public void run() {
- OutputStream to = null;
_in = null;
- long start = System.currentTimeMillis();
long written = 0;
+ ByteArray ba = null;
try {
_in = new InternalGZIPInputStream(_inRaw);
- byte buf[] = new byte[8192];
+ ba = _cache.acquire();
+ byte buf[] = ba.getData();
int read = -1;
while ( (read = _in.read(buf)) != -1) {
if (_log.shouldLog(Log.DEBUG))
@@ -251,6 +258,8 @@ class HTTPResponseOutputStream extends FilterOutputStream {
} catch (IOException ioe) {
if (_log.shouldLog(Log.WARN))
_log.warn("Error decompressing: " + written + ", " + (_in != null ? _in.getTotalRead() + "/" + _in.getTotalExpanded() : ""), ioe);
+ } catch (OutOfMemoryError oom) {
+ _log.error("OOM in HTTP Decompressor", oom);
} finally {
if (_log.shouldLog(Log.WARN) && (_in != null))
_log.warn("After decompression, written=" + written +
@@ -259,23 +268,26 @@ class HTTPResponseOutputStream extends FilterOutputStream {
+ ", expanded=" + _in.getTotalExpanded() + ", remaining=" + _in.getRemaining()
+ ", finished=" + _in.getFinished()
: ""));
+ if (ba != null)
+ _cache.release(ba);
if (_out != null) try {
_out.close();
} catch (IOException ioe) {}
}
- long end = System.currentTimeMillis();
+
double compressed = (_in != null ? _in.getTotalRead() : 0);
double expanded = (_in != null ? _in.getTotalExpanded() : 0);
- double ratio = 0;
- if (expanded > 0)
- ratio = compressed/expanded;
-
- _context.statManager().addRateData("i2ptunnel.httpCompressionRatio", (int)(100d*ratio), end-start);
- _context.statManager().addRateData("i2ptunnel.httpCompressed", (long)compressed, end-start);
- _context.statManager().addRateData("i2ptunnel.httpExpanded", (long)expanded, end-start);
+ if (compressed > 0 && expanded > 0) {
+ // only update the stats if we did something
+ double ratio = compressed/expanded;
+ _context.statManager().addRateData("i2ptunnel.httpCompressionRatio", (int)(100d*ratio), 0);
+ _context.statManager().addRateData("i2ptunnel.httpCompressed", (long)compressed, 0);
+ _context.statManager().addRateData("i2ptunnel.httpExpanded", (long)expanded, 0);
+ }
}
}
+ /** just a wrapper to provide stats for debugging */
private static class InternalGZIPInputStream extends GZIPInputStream {
public InternalGZIPInputStream(InputStream in) throws IOException {
super(in);
@@ -294,6 +306,12 @@ class HTTPResponseOutputStream extends FilterOutputStream {
return 0;
}
}
+
+ /**
+ * From Inflater javadoc:
+ * Returns the total number of bytes remaining in the input buffer. This can be used to find out
+ * what bytes still remain in the input buffer after decompression has finished.
+ */
public long getRemaining() {
try {
return super.inf.getRemaining();
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
index 728d3537c..ca568ab92 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
@@ -290,6 +290,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
}
}
+ /** just a wrapper to provide stats for debugging */
private static class InternalGZIPOutputStream extends GZIPOutputStream {
public InternalGZIPOutputStream(OutputStream target) throws IOException {
super(target);
From 7424fdd623ee52585b0b0169f1def03ad24aad3b Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 14:45:13 +0000
Subject: [PATCH 58/75] javadoc
---
.../src/net/i2p/data/i2np/BuildRequestRecord.java | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/router/java/src/net/i2p/data/i2np/BuildRequestRecord.java b/router/java/src/net/i2p/data/i2np/BuildRequestRecord.java
index 7ff81a2ad..667d7fb18 100644
--- a/router/java/src/net/i2p/data/i2np/BuildRequestRecord.java
+++ b/router/java/src/net/i2p/data/i2np/BuildRequestRecord.java
@@ -9,7 +9,9 @@ import net.i2p.data.PublicKey;
import net.i2p.data.SessionKey;
/**
- * Hold the tunnel request record, managing its encryption and decryption.
+ * Hold the tunnel request record, managing its ElGamal encryption and decryption.
+ * Iterative AES encryption/decryption is done elsewhere.
+ *
* Cleartext:
*
* bytes 0-3: tunnel ID to receive messages as
@@ -26,6 +28,12 @@ import net.i2p.data.SessionKey;
* bytes 193-221: uninterpreted / random padding
*
*
+ * Encrypted:
+ *
+ * bytes 0-15: First 16 bytes of router hash
+ * bytes 16-527: ElGamal encrypted block (discarding zero bytes at elg[0] and elg[257])
+ *
+ *
*/
public class BuildRequestRecord {
private ByteArray _data;
@@ -152,7 +160,7 @@ public class BuildRequestRecord {
/**
* Encrypt the record to the specified peer. The result is formatted as:
- * bytes 0-15: SHA-256-128 of the current hop's identity (the toPeer parameter)
+ * bytes 0-15: truncated SHA-256 of the current hop's identity (the toPeer parameter)
* bytes 15-527: ElGamal-2048 encrypted block
*
*/
From 939dcee537c20b9bfae720535774d6c943c91636 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 14:48:50 +0000
Subject: [PATCH 59/75] * GeoIP: Fix locking bug causing lookups to stop
---
.../src/net/i2p/router/transport/GeoIP.java | 35 ++++++++++---------
1 file changed, 19 insertions(+), 16 deletions(-)
diff --git a/router/java/src/net/i2p/router/transport/GeoIP.java b/router/java/src/net/i2p/router/transport/GeoIP.java
index cc0a63ba6..85a89b3c6 100644
--- a/router/java/src/net/i2p/router/transport/GeoIP.java
+++ b/router/java/src/net/i2p/router/transport/GeoIP.java
@@ -98,23 +98,26 @@ public class GeoIP {
public void run() {
if (_lock.getAndSet(true))
return;
- // clear the negative cache every few runs, to prevent it from getting too big
- if (((++_lookupRunCount) % CLEAR) == 0)
- _notFound.clear();
- Long[] search = _pendingSearch.toArray(new Long[_pendingSearch.size()]);
- if (search.length <= 0)
- return;
- _pendingSearch.clear();
- Arrays.sort(search);
- String[] countries = readGeoIPFile(search);
-
- for (int i = 0; i < countries.length; i++) {
- if (countries[i] != null)
- _IPToCountry.put(search[i], countries[i]);
- else
- _notFound.add(search[i]);
+ try {
+ // clear the negative cache every few runs, to prevent it from getting too big
+ if (((++_lookupRunCount) % CLEAR) == 0)
+ _notFound.clear();
+ Long[] search = _pendingSearch.toArray(new Long[_pendingSearch.size()]);
+ if (search.length <= 0)
+ return;
+ _pendingSearch.clear();
+ Arrays.sort(search);
+ String[] countries = readGeoIPFile(search);
+
+ for (int i = 0; i < countries.length; i++) {
+ if (countries[i] != null)
+ _IPToCountry.put(search[i], countries[i]);
+ else
+ _notFound.add(search[i]);
+ }
+ } finally {
+ _lock.set(false);
}
- _lock.set(false);
}
}
From ed4c09b45668074d0891f64b33d122b2576b71b8 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 14:56:45 +0000
Subject: [PATCH 60/75] * Tunnels: - Don't use peers < 0.7.9 for
tunnels due to the old message corruption bugs - Javadoc
- Cleanups
---
.../router/tunnel/BuildMessageProcessor.java | 2 +-
.../tunnel/InboundEndpointProcessor.java | 13 +++--
.../tunnel/OutboundGatewayProcessor.java | 17 +++---
.../net/i2p/router/tunnel/TunnelGateway.java | 9 ++--
.../tunnel/pool/ClientPeerSelector.java | 5 +-
.../tunnel/pool/ExploratoryPeerSelector.java | 49 +++++++++--------
.../pool/PooledTunnelCreatorConfig.java | 2 +-
.../tunnel/pool/TunnelPeerSelector.java | 52 ++++++++++++++++---
8 files changed, 99 insertions(+), 50 deletions(-)
diff --git a/router/java/src/net/i2p/router/tunnel/BuildMessageProcessor.java b/router/java/src/net/i2p/router/tunnel/BuildMessageProcessor.java
index fddccd52f..1194cc103 100644
--- a/router/java/src/net/i2p/router/tunnel/BuildMessageProcessor.java
+++ b/router/java/src/net/i2p/router/tunnel/BuildMessageProcessor.java
@@ -24,7 +24,7 @@ public class BuildMessageProcessor {
public BuildMessageProcessor(I2PAppContext ctx) {
_filter = new DecayingHashSet(ctx, 60*1000, 32, "TunnelBMP");
- ctx.statManager().createRateStat("tunnel.buildRequestDup", "How frequently we get dup build request messages", "Tunnels", new long[] { 60*1000, 10*60*1000 });
+ ctx.statManager().createRateStat("tunnel.buildRequestDup", "How frequently we get dup build request messages", "Tunnels", new long[] { 60*60*1000 });
}
/**
* Decrypt the record targetting us, encrypting all of the other records with the included
diff --git a/router/java/src/net/i2p/router/tunnel/InboundEndpointProcessor.java b/router/java/src/net/i2p/router/tunnel/InboundEndpointProcessor.java
index 7376a5046..6d467016a 100644
--- a/router/java/src/net/i2p/router/tunnel/InboundEndpointProcessor.java
+++ b/router/java/src/net/i2p/router/tunnel/InboundEndpointProcessor.java
@@ -15,17 +15,19 @@ import net.i2p.util.Log;
*
*/
public class InboundEndpointProcessor {
- private RouterContext _context;
- private Log _log;
- private TunnelCreatorConfig _config;
- private IVValidator _validator;
+ private final RouterContext _context;
+ private final Log _log;
+ private final TunnelCreatorConfig _config;
+ private final IVValidator _validator;
static final boolean USE_ENCRYPTION = HopProcessor.USE_ENCRYPTION;
private static final ByteCache _cache = ByteCache.getInstance(128, HopProcessor.IV_LENGTH);
+ /** @deprecated unused */
public InboundEndpointProcessor(RouterContext ctx, TunnelCreatorConfig cfg) {
this(ctx, cfg, DummyValidator.getInstance());
}
+
public InboundEndpointProcessor(RouterContext ctx, TunnelCreatorConfig cfg, IVValidator validator) {
_context = ctx;
_log = ctx.logManager().getLog(InboundEndpointProcessor.class);
@@ -84,6 +86,9 @@ public class InboundEndpointProcessor {
return true;
}
+ /**
+ * Iteratively undo the crypto that the various layers in the tunnel added.
+ */
private void decrypt(RouterContext ctx, TunnelCreatorConfig cfg, byte iv[], byte orig[], int offset, int length) {
Log log = ctx.logManager().getLog(OutboundGatewayProcessor.class);
ByteArray ba = _cache.acquire();
diff --git a/router/java/src/net/i2p/router/tunnel/OutboundGatewayProcessor.java b/router/java/src/net/i2p/router/tunnel/OutboundGatewayProcessor.java
index 36593db09..bd9120080 100644
--- a/router/java/src/net/i2p/router/tunnel/OutboundGatewayProcessor.java
+++ b/router/java/src/net/i2p/router/tunnel/OutboundGatewayProcessor.java
@@ -14,9 +14,9 @@ import net.i2p.util.Log;
*
*/
public class OutboundGatewayProcessor {
- private I2PAppContext _context;
- private Log _log;
- private TunnelCreatorConfig _config;
+ private final I2PAppContext _context;
+ private final Log _log;
+ private final TunnelCreatorConfig _config;
static final boolean USE_ENCRYPTION = HopProcessor.USE_ENCRYPTION;
private static final ByteCache _cache = ByteCache.getInstance(128, HopProcessor.IV_LENGTH);
@@ -54,10 +54,8 @@ public class OutboundGatewayProcessor {
}
/**
- * Undo the crypto that the various layers in the tunnel added. This is used
- * by both the outbound gateway (preemptively undoing the crypto peers will add)
- * and by the inbound endpoint.
- *
+ * Iteratively undo the crypto that the various layers in the tunnel added. This is used
+ * by the outbound gateway (preemptively undoing the crypto peers will add).
*/
private void decrypt(I2PAppContext ctx, TunnelCreatorConfig cfg, byte iv[], byte orig[], int offset, int length) {
Log log = ctx.logManager().getLog(OutboundGatewayProcessor.class);
@@ -73,6 +71,11 @@ public class OutboundGatewayProcessor {
_cache.release(ba);
}
+ /**
+ * Undo the crypto for a single hop. This is used
+ * by both the outbound gateway (preemptively undoing the crypto peers will add)
+ * and by the inbound endpoint.
+ */
static void decrypt(I2PAppContext ctx, byte iv[], byte orig[], int offset, int length, byte cur[], HopConfig config) {
// update the IV for the previous (next?) hop
ctx.aes().decryptBlock(orig, offset, config.getIVKey(), orig, offset);
diff --git a/router/java/src/net/i2p/router/tunnel/TunnelGateway.java b/router/java/src/net/i2p/router/tunnel/TunnelGateway.java
index 7291c8706..3ec567098 100644
--- a/router/java/src/net/i2p/router/tunnel/TunnelGateway.java
+++ b/router/java/src/net/i2p/router/tunnel/TunnelGateway.java
@@ -60,7 +60,6 @@ public class TunnelGateway {
_preprocessor = preprocessor;
_sender = sender;
_receiver = receiver;
- _messagesSent = 0;
_flushFrequency = 500;
_delayedFlush = new DelayedFlush();
_lastFlush = _context.clock().now();
@@ -128,8 +127,8 @@ public class TunnelGateway {
FlushTimer.getInstance().addEvent(_delayedFlush, delayAmount);
}
_context.statManager().addRateData("tunnel.lockedGatewayAdd", afterAdded-beforeLock, remaining);
- long complete = System.currentTimeMillis();
- if (_log.shouldLog(Log.DEBUG))
+ if (_log.shouldLog(Log.DEBUG)) {
+ long complete = System.currentTimeMillis();
_log.debug("Time to add the message " + msg.getUniqueId() + ": " + (complete-startAdd)
+ " delayed? " + delayedFlush + " remaining: " + remaining
+ " prepare: " + (beforeLock-startAdd)
@@ -137,6 +136,7 @@ public class TunnelGateway {
+ " preprocess: " + (afterPreprocess-afterAdded)
+ " expire: " + (afterExpire-afterPreprocess)
+ " queue flush: " + (complete-afterExpire));
+ }
}
public int getMessagesSent() { return _messagesSent; }
@@ -202,10 +202,7 @@ public class TunnelGateway {
_messageId = message.getUniqueId();
_expiration = message.getMessageExpiration();
_remaining = message.toByteArray();
- _offset = 0;
- _fragmentNumber = 0;
_created = now;
- _messageIds = null;
}
/** may be null */
public Hash getToRouter() { return _toRouter; }
diff --git a/router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java b/router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java
index a9199b690..f4042feee 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/ClientPeerSelector.java
@@ -5,6 +5,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import net.i2p.data.Hash;
import net.i2p.router.RouterContext;
import net.i2p.router.TunnelPoolSettings;
@@ -14,7 +15,7 @@ import net.i2p.router.TunnelPoolSettings;
*
*/
class ClientPeerSelector extends TunnelPeerSelector {
- public List selectPeers(RouterContext ctx, TunnelPoolSettings settings) {
+ public List selectPeers(RouterContext ctx, TunnelPoolSettings settings) {
int length = getLength(ctx, settings);
if (length < 0)
return null;
@@ -31,7 +32,7 @@ class ClientPeerSelector extends TunnelPeerSelector {
ctx.profileOrganizer().selectFastPeers(length, exclude, matches, settings.getIPRestriction());
matches.remove(ctx.routerHash());
- ArrayList rv = new ArrayList(matches);
+ ArrayList rv = new ArrayList(matches);
if (rv.size() > 1)
orderPeers(rv, settings.getRandomKey());
if (settings.isInbound())
diff --git a/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java b/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java
index 073088fb3..503504cac 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java
@@ -5,6 +5,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import net.i2p.data.Hash;
import net.i2p.router.RouterContext;
import net.i2p.router.TunnelPoolSettings;
import net.i2p.stat.Rate;
@@ -17,7 +18,7 @@ import net.i2p.util.Log;
*
*/
class ExploratoryPeerSelector extends TunnelPeerSelector {
- public List selectPeers(RouterContext ctx, TunnelPoolSettings settings) {
+ public List selectPeers(RouterContext ctx, TunnelPoolSettings settings) {
Log l = ctx.logManager().getLog(getClass());
int length = getLength(ctx, settings);
if (length < 0) {
@@ -33,7 +34,7 @@ class ExploratoryPeerSelector extends TunnelPeerSelector {
return rv;
}
- Set exclude = getExclude(ctx, settings.isInbound(), settings.isExploratory());
+ Set exclude = getExclude(ctx, settings.isInbound(), settings.isExploratory());
exclude.add(ctx.routerHash());
// Don't use ff peers for exploratory tunnels to lessen exposure to netDb searches and stores
// Hmm if they don't get explored they don't get a speed/capacity rating
@@ -56,7 +57,7 @@ class ExploratoryPeerSelector extends TunnelPeerSelector {
l.debug("profileOrganizer.selectNotFailing(" + length + ") found " + matches);
matches.remove(ctx.routerHash());
- ArrayList rv = new ArrayList(matches);
+ ArrayList rv = new ArrayList(matches);
if (rv.size() > 1)
orderPeers(rv, settings.getRandomKey());
if (settings.isInbound())
@@ -67,7 +68,7 @@ class ExploratoryPeerSelector extends TunnelPeerSelector {
}
private static final int MIN_NONFAILING_PCT = 25;
- private boolean shouldPickHighCap(RouterContext ctx) {
+ private static boolean shouldPickHighCap(RouterContext ctx) {
if (Boolean.valueOf(ctx.getProperty("router.exploreHighCapacity", "false")).booleanValue())
return true;
// no need to explore too wildly at first
@@ -86,9 +87,9 @@ class ExploratoryPeerSelector extends TunnelPeerSelector {
failPct = 100 - MIN_NONFAILING_PCT;
} else {
failPct = getExploratoryFailPercentage(ctx);
- Log l = ctx.logManager().getLog(getClass());
- if (l.shouldLog(Log.DEBUG))
- l.debug("Normalized Fail pct: " + failPct);
+ //Log l = ctx.logManager().getLog(getClass());
+ //if (l.shouldLog(Log.DEBUG))
+ // l.debug("Normalized Fail pct: " + failPct);
// always try a little, this helps keep the failPct stat accurate too
if (failPct > 100 - MIN_NONFAILING_PCT)
failPct = 100 - MIN_NONFAILING_PCT;
@@ -96,21 +97,23 @@ class ExploratoryPeerSelector extends TunnelPeerSelector {
return (failPct >= ctx.random().nextInt(100));
}
- // We should really use the difference between the exploratory fail rate
- // and the high capacity fail rate - but we don't have a stat for high cap,
- // so use the fast (== client) fail rate, it should be close
- // if the expl. and client tunnel lengths aren't too different.
- // So calculate the difference between the exploratory fail rate
- // and the client fail rate, normalized to 100:
- // 100 * ((Efail - Cfail) / (100 - Cfail))
- // Even this isn't the "true" rate for the NonFailingPeers pool, since we
- // are often building exploratory tunnels using the HighCapacity pool.
- private int getExploratoryFailPercentage(RouterContext ctx) {
+ /**
+ * We should really use the difference between the exploratory fail rate
+ * and the high capacity fail rate - but we don't have a stat for high cap,
+ * so use the fast (== client) fail rate, it should be close
+ * if the expl. and client tunnel lengths aren't too different.
+ * So calculate the difference between the exploratory fail rate
+ * and the client fail rate, normalized to 100:
+ * 100 * ((Efail - Cfail) / (100 - Cfail))
+ * Even this isn't the "true" rate for the NonFailingPeers pool, since we
+ * are often building exploratory tunnels using the HighCapacity pool.
+ */
+ private static int getExploratoryFailPercentage(RouterContext ctx) {
int c = getFailPercentage(ctx, "Client");
int e = getFailPercentage(ctx, "Exploratory");
- Log l = ctx.logManager().getLog(getClass());
- if (l.shouldLog(Log.DEBUG))
- l.debug("Client, Expl. Fail pct: " + c + ", " + e);
+ //Log l = ctx.logManager().getLog(getClass());
+ //if (l.shouldLog(Log.DEBUG))
+ // l.debug("Client, Expl. Fail pct: " + c + ", " + e);
if (e <= c || e <= 25) // doing very well (unlikely)
return 0;
if (c >= 90) // doing very badly
@@ -118,7 +121,7 @@ class ExploratoryPeerSelector extends TunnelPeerSelector {
return (100 * (e-c)) / (100-c);
}
- private int getFailPercentage(RouterContext ctx, String t) {
+ private static int getFailPercentage(RouterContext ctx, String t) {
String pfx = "tunnel.build" + t;
int timeout = getEvents(ctx, pfx + "Expire", 10*60*1000);
int reject = getEvents(ctx, pfx + "Reject", 10*60*1000);
@@ -129,8 +132,8 @@ class ExploratoryPeerSelector extends TunnelPeerSelector {
return (int)(100 * pct);
}
- // Use current + last to get more recent and smoother data
- private int getEvents(RouterContext ctx, String stat, long period) {
+ /** Use current + last to get more recent and smoother data */
+ private static int getEvents(RouterContext ctx, String stat, long period) {
RateStat rs = ctx.statManager().getRate(stat);
if (rs == null)
return 0;
diff --git a/router/java/src/net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java b/router/java/src/net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java
index afe149fc6..cbe794815 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/PooledTunnelCreatorConfig.java
@@ -12,7 +12,7 @@ import net.i2p.util.Log;
/**
*
*/
-public class PooledTunnelCreatorConfig extends TunnelCreatorConfig {
+class PooledTunnelCreatorConfig extends TunnelCreatorConfig {
private TunnelPool _pool;
private TestJob _testJob;
// private Job _expireJob;
diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java
index bb22ab0e4..083e2501a 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPeerSelector.java
@@ -21,10 +21,13 @@ import net.i2p.router.TunnelPoolSettings;
import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
import net.i2p.router.networkdb.kademlia.HashDistance;
import net.i2p.util.Log;
+import net.i2p.util.VersionComparator;
/**
* Coordinate the selection of peers to go into a tunnel for one particular
* pool.
+ *
+ * Todo: there's nothing non-static in here
*/
public abstract class TunnelPeerSelector {
/**
@@ -36,7 +39,7 @@ public abstract class TunnelPeerSelector {
* to build through, and the settings reject 0 hop tunnels, this will
* return null.
*/
- public abstract List selectPeers(RouterContext ctx, TunnelPoolSettings settings);
+ public abstract List selectPeers(RouterContext ctx, TunnelPoolSettings settings);
protected int getLength(RouterContext ctx, TunnelPoolSettings settings) {
int length = settings.getLength();
@@ -79,6 +82,11 @@ public abstract class TunnelPeerSelector {
return length;
}
+ /**
+ * For debugging, also possibly for restricted routes?
+ * Needs analysis and testing
+ * @return should always be false
+ */
protected boolean shouldSelectExplicit(TunnelPoolSettings settings) {
if (settings.isExploratory()) return false;
Properties opts = settings.getUnknownOptions();
@@ -92,7 +100,12 @@ public abstract class TunnelPeerSelector {
return false;
}
- protected List selectExplicit(RouterContext ctx, TunnelPoolSettings settings, int length) {
+ /**
+ * For debugging, also possibly for restricted routes?
+ * Needs analysis and testing
+ * @return should always be false
+ */
+ protected List selectExplicit(RouterContext ctx, TunnelPoolSettings settings, int length) {
String peers = null;
Properties opts = settings.getUnknownOptions();
if (opts != null)
@@ -102,7 +115,7 @@ public abstract class TunnelPeerSelector {
peers = I2PAppContext.getGlobalContext().getProperty("explicitPeers");
Log log = ctx.logManager().getLog(ClientPeerSelector.class);
- List rv = new ArrayList();
+ List rv = new ArrayList();
StringTokenizer tok = new StringTokenizer(peers, ",");
while (tok.hasMoreTokens()) {
String peerStr = tok.nextToken();
@@ -156,7 +169,7 @@ public abstract class TunnelPeerSelector {
/**
* Pick peers that we want to avoid
*/
- public Set getExclude(RouterContext ctx, boolean isInbound, boolean isExploratory) {
+ public Set getExclude(RouterContext ctx, boolean isInbound, boolean isExploratory) {
// we may want to update this to skip 'hidden' or 'unreachable' peers, but that
// isn't safe, since they may publish one set of routerInfo to us and another to
// other peers. the defaults for filterUnreachable has always been to return false,
@@ -175,11 +188,12 @@ public abstract class TunnelPeerSelector {
//
// Defaults changed to true for inbound only in filterUnreachable below.
- Set peers = new HashSet(1);
+ Set peers = new HashSet(1);
peers.addAll(ctx.profileOrganizer().selectPeersRecentlyRejecting());
peers.addAll(ctx.tunnelManager().selectPeersInTooManyTunnels());
// if (false && filterUnreachable(ctx, isInbound, isExploratory)) {
if (filterUnreachable(ctx, isInbound, isExploratory)) {
+ // NOTE: filterUnreachable returns true for inbound, false for outbound
// This is the only use for getPeersByCapability? And the whole set of datastructures in PeerManager?
List caps = ctx.peerManager().getPeersByCapability(Router.CAPABILITY_UNREACHABLE);
if (caps != null)
@@ -189,6 +203,7 @@ public abstract class TunnelPeerSelector {
peers.addAll(caps);
}
if (filterSlow(ctx, isInbound, isExploratory)) {
+ // NOTE: filterSlow always returns true
Log log = ctx.logManager().getLog(TunnelPeerSelector.class);
char excl[] = getExcludeCaps(ctx);
if (excl != null) {
@@ -301,6 +316,7 @@ public abstract class TunnelPeerSelector {
return peers;
}
+ /** warning, this is also called by ProfileOrganizer.isSelectable() */
public static boolean shouldExclude(RouterContext ctx, RouterInfo peer) {
Log log = ctx.logManager().getLog(TunnelPeerSelector.class);
return shouldExclude(ctx, log, peer, getExcludeCaps(ctx));
@@ -318,6 +334,10 @@ public abstract class TunnelPeerSelector {
}
private static final long DONT_EXCLUDE_PERIOD = 15*60*1000;
+ /** 0.7.8 and earlier had major message corruption bugs */
+ private static final String MIN_VERSION = "0.7.9";
+ private static final VersionComparator _versionComparator = new VersionComparator();
+
private static boolean shouldExclude(RouterContext ctx, Log log, RouterInfo peer, char excl[]) {
String cap = peer.getCapabilities();
if (cap == null) {
@@ -340,6 +360,13 @@ public abstract class TunnelPeerSelector {
// otherwise, it contains flags we aren't trying to focus on,
// so don't exclude it based on published capacity
+ // minimum version check
+ String v = peer.getOption("router.version");
+ if (v == null || _versionComparator.compare(v, MIN_VERSION) < 0)
+ return true;
+
+ // uptime is always spoofed to 90m, so just remove all this
+ /******
String val = peer.getOption("stat_uptime");
if (val != null) {
long uptimeMs = 0;
@@ -390,6 +417,8 @@ public abstract class TunnelPeerSelector {
// not publishing an uptime, so exclude it
return true;
}
+ ******/
+ return false;
}
private static final String PROP_OUTBOUND_EXPLORATORY_EXCLUDE_UNREACHABLE = "router.outboundExploratoryExcludeUnreachable";
@@ -403,6 +432,10 @@ public abstract class TunnelPeerSelector {
private static final String DEFAULT_INBOUND_EXPLORATORY_EXCLUDE_UNREACHABLE = "true";
private static final String DEFAULT_INBOUND_CLIENT_EXCLUDE_UNREACHABLE = "true";
+ /**
+ * do we want to skip peers who haven't been up for long?
+ * @return true for inbound, false for outbound, unless configured otherwise
+ */
protected boolean filterUnreachable(RouterContext ctx, boolean isInbound, boolean isExploratory) {
boolean def = false;
String val = null;
@@ -429,6 +462,10 @@ public abstract class TunnelPeerSelector {
private static final String PROP_INBOUND_EXPLORATORY_EXCLUDE_SLOW = "router.inboundExploratoryExcludeSlow";
private static final String PROP_INBOUND_CLIENT_EXCLUDE_SLOW = "router.inboundClientExcludeSlow";
+ /**
+ * do we want to skip peers that are slow?
+ * @return true unless configured otherwise
+ */
protected boolean filterSlow(RouterContext ctx, boolean isInbound, boolean isExploratory) {
boolean def = true;
String val = null;
@@ -454,7 +491,10 @@ public abstract class TunnelPeerSelector {
private static final String PROP_INBOUND_EXPLORATORY_EXCLUDE_UPTIME = "router.inboundExploratoryExcludeUptime";
private static final String PROP_INBOUND_CLIENT_EXCLUDE_UPTIME = "router.inboundClientExcludeUptime";
- /** do we want to skip peers who haven't been up for long? */
+ /**
+ * do we want to skip peers who haven't been up for long?
+ * @return true unless configured otherwise
+ */
protected boolean filterUptime(RouterContext ctx, boolean isInbound, boolean isExploratory) {
boolean def = true;
String val = null;
From 4a96e881189383399206504e139094f6d60fe353 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 15:00:30 +0000
Subject: [PATCH 61/75] * Hash: Throw IAE if data length is not 32 bytes,
now that DSAEngine abuse is gone
---
core/java/src/net/i2p/data/Hash.java | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/core/java/src/net/i2p/data/Hash.java b/core/java/src/net/i2p/data/Hash.java
index 83579d116..afd173c24 100644
--- a/core/java/src/net/i2p/data/Hash.java
+++ b/core/java/src/net/i2p/data/Hash.java
@@ -31,6 +31,7 @@ public class Hash extends DataStructureImpl {
public Hash() {
}
+ /** @throws IllegalArgumentException if data is not 32 bytes (null is ok) */
public Hash(byte data[]) {
setData(data);
}
@@ -39,7 +40,10 @@ public class Hash extends DataStructureImpl {
return _data;
}
+ /** @throws IllegalArgumentException if data is not 32 bytes (null is ok) */
public void setData(byte[] data) {
+ if (data != null && data.length != HASH_LENGTH)
+ throw new IllegalArgumentException("Hash must be 32 bytes");
_data = data;
_stringified = null;
_base64ed = null;
From 6100c799b7b120b3f3f22dcc8bdae9c5ea04ab3a Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 15:03:20 +0000
Subject: [PATCH 62/75] LogConsoleBuffer cleanup
---
.../java/src/net/i2p/router/web/LogsHelper.java | 7 +++++--
core/java/src/net/i2p/util/LogConsoleBuffer.java | 10 +++++-----
2 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java
index d6eb2edd1..f499b2ea4 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java
@@ -44,13 +44,16 @@ public class LogsHelper extends HelperBase {
}
******/
- private String formatMessages(List msgs) {
+ /** formats in reverse order */
+ private String formatMessages(List msgs) {
+ if (msgs.isEmpty())
+ return "
");
buf.append("\n");
for (int i = msgs.size(); i > 0; i--) {
- String msg = (String)msgs.get(i - 1);
+ String msg = msgs.get(i - 1);
buf.append("
");
if (colorize) {
String color;
diff --git a/core/java/src/net/i2p/util/LogConsoleBuffer.java b/core/java/src/net/i2p/util/LogConsoleBuffer.java
index a9aab2625..2fe270849 100644
--- a/core/java/src/net/i2p/util/LogConsoleBuffer.java
+++ b/core/java/src/net/i2p/util/LogConsoleBuffer.java
@@ -11,8 +11,8 @@ import net.i2p.I2PAppContext;
*/
public class LogConsoleBuffer {
private I2PAppContext _context;
- private final List _buffer;
- private final List _critBuffer;
+ private final List _buffer;
+ private final List _critBuffer;
public LogConsoleBuffer(I2PAppContext context) {
_context = context;
@@ -43,7 +43,7 @@ public class LogConsoleBuffer {
* in the logs)
*
*/
- public List getMostRecentMessages() {
+ public List getMostRecentMessages() {
synchronized (_buffer) {
return new ArrayList(_buffer);
}
@@ -54,9 +54,9 @@ public class LogConsoleBuffer {
* in the logs)
*
*/
- public List getMostRecentCriticalMessages() {
+ public List getMostRecentCriticalMessages() {
synchronized (_critBuffer) {
return new ArrayList(_critBuffer);
}
}
-}
\ No newline at end of file
+}
From 3489512a54d21df354bb23798875a93b14896dc5 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 15:07:35 +0000
Subject: [PATCH 63/75] client cleanups
---
core/java/src/net/i2p/client/HandlerImpl.java | 6 +++---
core/java/src/net/i2p/client/MessageState.java | 6 ------
core/java/src/net/i2p/client/SessionIdleTimer.java | 7 +++----
3 files changed, 6 insertions(+), 13 deletions(-)
diff --git a/core/java/src/net/i2p/client/HandlerImpl.java b/core/java/src/net/i2p/client/HandlerImpl.java
index 98d1e76ff..d1b5100e2 100644
--- a/core/java/src/net/i2p/client/HandlerImpl.java
+++ b/core/java/src/net/i2p/client/HandlerImpl.java
@@ -18,9 +18,9 @@ import net.i2p.util.Log;
* @author jrandom
*/
abstract class HandlerImpl implements I2CPMessageHandler {
- protected Log _log;
- private int _type;
- protected I2PAppContext _context;
+ protected final Log _log;
+ private final int _type;
+ protected final I2PAppContext _context;
public HandlerImpl(I2PAppContext context, int type) {
_context = context;
diff --git a/core/java/src/net/i2p/client/MessageState.java b/core/java/src/net/i2p/client/MessageState.java
index 84ec9ad6a..a67b52770 100644
--- a/core/java/src/net/i2p/client/MessageState.java
+++ b/core/java/src/net/i2p/client/MessageState.java
@@ -37,13 +37,7 @@ class MessageState {
_context = ctx;
_nonce = nonce;
_prefix = prefix + "[" + _stateId + "]: ";
- _id = null;
_receivedStatus = new HashSet();
- _cancelled = false;
- _key = null;
- _newKey = null;
- _tags = null;
- _to = null;
_created = ctx.clock().now();
//ctx.statManager().createRateStat("i2cp.checkStatusTime", "how long it takes to go through the states", "i2cp", new long[] { 60*1000 });
}
diff --git a/core/java/src/net/i2p/client/SessionIdleTimer.java b/core/java/src/net/i2p/client/SessionIdleTimer.java
index dad736d97..91c1c4b0f 100644
--- a/core/java/src/net/i2p/client/SessionIdleTimer.java
+++ b/core/java/src/net/i2p/client/SessionIdleTimer.java
@@ -18,13 +18,13 @@ import net.i2p.util.SimpleTimer;
*
* @author zzz
*/
-public class SessionIdleTimer implements SimpleTimer.TimedEvent {
+class SessionIdleTimer implements SimpleTimer.TimedEvent {
public static final long MINIMUM_TIME = 5*60*1000;
private static final long DEFAULT_REDUCE_TIME = 20*60*1000;
private static final long DEFAULT_CLOSE_TIME = 30*60*1000;
private final static Log _log = new Log(SessionIdleTimer.class);
- private I2PAppContext _context;
- private I2PSessionImpl _session;
+ private final I2PAppContext _context;
+ private final I2PSessionImpl _session;
private boolean _reduceEnabled;
private int _reduceQuantity;
private long _reduceTime;
@@ -36,7 +36,6 @@ public class SessionIdleTimer implements SimpleTimer.TimedEvent {
/**
* reduce, shutdown, or both must be true
*/
- /* FIXME Exporting non-public type through public API FIXME */
public SessionIdleTimer(I2PAppContext context, I2PSessionImpl session, boolean reduce, boolean shutdown) {
_context = context;
_session = session;
From 333f80680e9c3c6038554b9a379fbc9e8a88b571 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 15:11:41 +0000
Subject: [PATCH 64/75] * UDP: - Avoid rare AIOOBE - Comments
- Logging cleanup - Comment out a main()
---
.../transport/udp/InboundEstablishState.java | 7 +++++++
.../net/i2p/router/transport/udp/UDPPacket.java | 2 ++
.../i2p/router/transport/udp/UDPPacketReader.java | 2 ++
.../net/i2p/router/transport/udp/UDPTransport.java | 14 ++++++++------
4 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/router/java/src/net/i2p/router/transport/udp/InboundEstablishState.java b/router/java/src/net/i2p/router/transport/udp/InboundEstablishState.java
index 829f62ee0..6bdfa23a5 100644
--- a/router/java/src/net/i2p/router/transport/udp/InboundEstablishState.java
+++ b/router/java/src/net/i2p/router/transport/udp/InboundEstablishState.java
@@ -218,6 +218,13 @@ public class InboundEstablishState {
if (_receivedIdentity == null)
_receivedIdentity = new byte[conf.readTotalFragmentNum()][];
int cur = conf.readCurrentFragmentNum();
+ if (cur >= _receivedIdentity.length) {
+ // avoid AIOOBE
+ // should do more than this, but what? disconnect?
+ fail();
+ packetReceived();
+ return;
+ }
if (_receivedIdentity[cur] == null) {
byte fragment[] = new byte[conf.readCurrentFragmentSize()];
conf.readFragmentData(fragment, 0);
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPPacket.java b/router/java/src/net/i2p/router/transport/udp/UDPPacket.java
index 5dc001e18..588b0ff49 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPPacket.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPPacket.java
@@ -67,9 +67,11 @@ public class UDPPacket {
// various flag fields for use in the data packets
public static final byte DATA_FLAG_EXPLICIT_ACK = (byte)(1 << 7);
public static final byte DATA_FLAG_ACK_BITFIELDS = (1 << 6);
+ // unused
public static final byte DATA_FLAG_ECN = (1 << 4);
public static final byte DATA_FLAG_WANT_ACKS = (1 << 3);
public static final byte DATA_FLAG_WANT_REPLY = (1 << 2);
+ // unused
public static final byte DATA_FLAG_EXTENDED = (1 << 1);
public static final byte BITFIELD_CONTINUATION = (byte)(1 << 7);
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPPacketReader.java b/router/java/src/net/i2p/router/transport/udp/UDPPacketReader.java
index aaf0f721a..9d2c32939 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPPacketReader.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPPacketReader.java
@@ -756,6 +756,7 @@ public class UDPPacketReader {
}
+/******
public static void main(String args[]) {
I2PAppContext ctx = I2PAppContext.getGlobalContext();
try {
@@ -781,4 +782,5 @@ public class UDPPacketReader {
}
}
+*******/
}
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
index 5570b8389..0617790a3 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
@@ -945,7 +945,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
// try to shift 'em around every 10 minutes or so
if (_introducersSelectedOn < _context.clock().now() - 10*60*1000) {
if (_log.shouldLog(Log.WARN))
- _log.warn("Our introducers are valid, but thy havent changed in a while, so lets rechoose");
+ _log.warn("Our introducers are valid, but havent changed in a while, so lets rechoose");
return true;
} else {
if (_log.shouldLog(Log.INFO))
@@ -954,7 +954,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
}
} else {
if (_log.shouldLog(Log.INFO))
- _log.info("Our introducers are not valid (" +valid + ")");
+ _log.info("Need more introducers (have " +valid + " need " + PUBLIC_RELAY_COUNT + ')');
return true;
}
} else {
@@ -1233,7 +1233,9 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
_introducersSelectedOn = _context.clock().now();
introducersIncluded = true;
} else {
+ // FIXME
// maybe we should fail to publish an address at all in this case?
+ // YES that would be better
if (_log.shouldLog(Log.WARN))
_log.warn("Need introducers but we don't know any");
}
@@ -1331,13 +1333,13 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
switch (status) {
case CommSystemFacade.STATUS_REJECT_UNSOLICITED:
case CommSystemFacade.STATUS_DIFFERENT:
- if (_log.shouldLog(Log.INFO))
- _log.info("Require introducers, because our status is " + status);
+ if (_log.shouldLog(Log.DEBUG))
+ _log.debug("Require introducers, because our status is " + status);
return true;
default:
if (!allowDirectUDP()) {
- if (_log.shouldLog(Log.INFO))
- _log.info("Require introducers, because we do not allow direct UDP connections");
+ if (_log.shouldLog(Log.DEBUG))
+ _log.debug("Require introducers, because we do not allow direct UDP connections");
return true;
}
return false;
From f0f1a6f529b505d95eef0b4d30cd654609dc1060 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 15:15:03 +0000
Subject: [PATCH 65/75] initializer cleanups, reduce rates, javadoc
---
.../src/net/i2p/router/client/ClientListenerRunner.java | 2 --
.../src/net/i2p/router/client/ClientManagerFacadeImpl.java | 1 -
.../java/src/net/i2p/router/client/LeaseRequestState.java | 1 -
.../java/src/net/i2p/router/client/MessageReceivedJob.java | 4 +---
.../java/src/net/i2p/router/client/RequestLeaseSetJob.java | 6 +++---
5 files changed, 4 insertions(+), 10 deletions(-)
diff --git a/router/java/src/net/i2p/router/client/ClientListenerRunner.java b/router/java/src/net/i2p/router/client/ClientListenerRunner.java
index 2c96fa487..7a7d448ea 100644
--- a/router/java/src/net/i2p/router/client/ClientListenerRunner.java
+++ b/router/java/src/net/i2p/router/client/ClientListenerRunner.java
@@ -41,8 +41,6 @@ public class ClientListenerRunner implements Runnable {
_log = _context.logManager().getLog(ClientListenerRunner.class);
_manager = manager;
_port = port;
- _running = false;
- _listening = false;
String val = context.getProperty(BIND_ALL_INTERFACES);
_bindAllInterfaces = Boolean.valueOf(val).booleanValue();
diff --git a/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java b/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java
index e90d12f53..066d6cc35 100644
--- a/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java
+++ b/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java
@@ -43,7 +43,6 @@ public class ClientManagerFacadeImpl extends ClientManagerFacade {
public ClientManagerFacadeImpl(RouterContext context) {
_context = context;
- _manager = null;
_log.debug("Client manager facade created");
}
diff --git a/router/java/src/net/i2p/router/client/LeaseRequestState.java b/router/java/src/net/i2p/router/client/LeaseRequestState.java
index b4cf4415a..7e2a248ac 100644
--- a/router/java/src/net/i2p/router/client/LeaseRequestState.java
+++ b/router/java/src/net/i2p/router/client/LeaseRequestState.java
@@ -33,7 +33,6 @@ class LeaseRequestState {
_onFailed = onFailed;
_expiration = expiration;
_requestedLeaseSet = requested;
- _successful = false;
}
/** created lease set from client */
diff --git a/router/java/src/net/i2p/router/client/MessageReceivedJob.java b/router/java/src/net/i2p/router/client/MessageReceivedJob.java
index d0c767828..82744659a 100644
--- a/router/java/src/net/i2p/router/client/MessageReceivedJob.java
+++ b/router/java/src/net/i2p/router/client/MessageReceivedJob.java
@@ -47,9 +47,6 @@ class MessageReceivedJob extends JobImpl {
/**
* Deliver notification to the client that the given message is available.
- * This is synchronous and returns true if the notification was sent safely,
- * otherwise it returns false
- *
*/
public void messageAvailable(MessageId id, long size) {
if (_log.shouldLog(Log.DEBUG))
@@ -59,6 +56,7 @@ class MessageReceivedJob extends JobImpl {
msg.setMessageId(id.getMessageId());
msg.setSessionId(_runner.getSessionId().getSessionId());
msg.setSize(size);
+ // has to be >= 0, it is initialized to -1
msg.setNonce(1);
msg.setStatus(MessageStatusMessage.STATUS_AVAILABLE);
try {
diff --git a/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java b/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java
index 51d3a304c..516a652d2 100644
--- a/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java
+++ b/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java
@@ -44,9 +44,9 @@ class RequestLeaseSetJob extends JobImpl {
_onCreate = onCreate;
_onFail = onFail;
_requestState = state;
- ctx.statManager().createRateStat("client.requestLeaseSetSuccess", "How frequently the router requests successfully a new leaseSet?", "ClientMessages", new long[] { 10*60*1000, 60*60*1000, 24*60*60*1000 });
- ctx.statManager().createRateStat("client.requestLeaseSetTimeout", "How frequently the router requests a new leaseSet but gets no reply?", "ClientMessages", new long[] { 10*60*1000, 60*60*1000, 24*60*60*1000 });
- ctx.statManager().createRateStat("client.requestLeaseSetDropped", "How frequently the router requests a new leaseSet but the client drops?", "ClientMessages", new long[] { 10*60*1000, 60*60*1000, 24*60*60*1000 });
+ ctx.statManager().createRateStat("client.requestLeaseSetSuccess", "How frequently the router requests successfully a new leaseSet?", "ClientMessages", new long[] { 60*60*1000 });
+ ctx.statManager().createRateStat("client.requestLeaseSetTimeout", "How frequently the router requests a new leaseSet but gets no reply?", "ClientMessages", new long[] { 60*60*1000 });
+ ctx.statManager().createRateStat("client.requestLeaseSetDropped", "How frequently the router requests a new leaseSet but the client drops?", "ClientMessages", new long[] { 60*60*1000 });
}
public String getName() { return "Request Lease Set"; }
From b83184e895edef44085879ef87ef436e10fbdf19 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 15:16:07 +0000
Subject: [PATCH 66/75] initializer cleanup
---
router/java/src/net/i2p/router/message/GarlicConfig.java | 8 --------
1 file changed, 8 deletions(-)
diff --git a/router/java/src/net/i2p/router/message/GarlicConfig.java b/router/java/src/net/i2p/router/message/GarlicConfig.java
index 1c616f43c..b23d4ac9a 100644
--- a/router/java/src/net/i2p/router/message/GarlicConfig.java
+++ b/router/java/src/net/i2p/router/message/GarlicConfig.java
@@ -37,17 +37,9 @@ public class GarlicConfig {
private long _replyBlockExpiration;
public GarlicConfig() {
- _recipient = null;
- _recipientPublicKey = null;
- _cert = null;
_id = -1;
_expiration = -1;
_cloveConfigs = new ArrayList();
- _instructions = null;
- _requestAck = false;
- _replyThroughRouter = null;
- _replyInstructions = null;
- _replyBlockCertificate = null;
_replyBlockMessageId = -1;
_replyBlockExpiration = -1;
}
From ec0c678cc9be0b9ae42aae410e85b78a40a2d62d Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 15:43:56 +0000
Subject: [PATCH 67/75] * i2psnark: - Add link to finished torrent in
message box - Don't let one bad torrent prevent others from
starting or stopping
---
.../java/src/org/klomp/snark/Snark.java | 2 +-
.../src/org/klomp/snark/SnarkManager.java | 31 +++++++++++++++----
2 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java
index c2afec346..9d6cd9460 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java
@@ -437,7 +437,7 @@ public class Snark
try { storage.close(); } catch (IOException ioee) {
ioee.printStackTrace();
}
- fatal("Could not create storage", ioe);
+ fatal("Could not check or create storage", ioe);
}
}
diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
index 59ab86a12..1ddaa6b03 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
@@ -439,7 +439,10 @@ public class SnarkManager implements Snark.CompleteListener {
return null;
}
+ /** @throws RuntimeException via Snark.fatal() */
public void addTorrent(String filename) { addTorrent(filename, false); }
+
+ /** @throws RuntimeException via Snark.fatal() */
public void addTorrent(String filename, boolean dontAutoStart) {
if ((!dontAutoStart) && !_util.connected()) {
addMessage(_("Connecting to I2P"));
@@ -724,9 +727,13 @@ public class SnarkManager implements Snark.CompleteListener {
/** two listeners */
public void torrentComplete(Snark snark) {
- File f = new File(snark.torrent);
+ StringBuilder buf = new StringBuilder(256);
+ buf.append("").append(snark.storage.getBaseName()).append("");
long len = snark.meta.getTotalLength();
- addMessage(_("Download finished: \"{0}\"", f.getName()) + " (" + _("size: {0}B", DataHelper.formatSize2(len)) + ')');
+ addMessage(_("Download finished: {0}", buf.toString()) + " (" + _("size: {0}B", DataHelper.formatSize2(len)) + ')');
updateStatus(snark);
}
@@ -736,7 +743,7 @@ public class SnarkManager implements Snark.CompleteListener {
private void monitorTorrents(File dir) {
String fileNames[] = dir.list(TorrentFilenameFilter.instance());
- List foundNames = new ArrayList(0);
+ List foundNames = new ArrayList(0);
if (fileNames != null) {
for (int i = 0; i < fileNames.length; i++) {
try {
@@ -747,7 +754,7 @@ public class SnarkManager implements Snark.CompleteListener {
}
}
- Set existingNames = listTorrentFiles();
+ Set existingNames = listTorrentFiles();
// lets find new ones first...
for (int i = 0; i < foundNames.size(); i++) {
if (existingNames.contains(foundNames.get(i))) {
@@ -755,7 +762,13 @@ public class SnarkManager implements Snark.CompleteListener {
} else {
if (shouldAutoStart() && !_util.connect())
addMessage(_("Unable to connect to I2P!"));
- addTorrent((String)foundNames.get(i), !shouldAutoStart());
+ try {
+ // Snark.fatal() throws a RuntimeException
+ // don't let one bad torrent kill the whole loop
+ addTorrent(foundNames.get(i), !shouldAutoStart());
+ } catch (Exception e) {
+ addMessage(_("Unable to add {0}", foundNames.get(i)) + ": " + e);
+ }
}
}
// now lets see which ones have been removed...
@@ -765,7 +778,13 @@ public class SnarkManager implements Snark.CompleteListener {
// known and still there. noop
} else {
// known, but removed. drop it
- stopTorrent(name, true);
+ try {
+ // Snark.fatal() throws a RuntimeException
+ // don't let one bad torrent kill the whole loop
+ stopTorrent(name, true);
+ } catch (Exception e) {
+ // don't bother with message
+ }
}
}
}
From 53847dc3ad7dc4bb8222679573bc5a06a64823ee Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 15:51:48 +0000
Subject: [PATCH 68/75] Sort RouterAddress options on peers.jsp and netdb.jsp
---
.../src/net/i2p/router/web/NetDbRenderer.java | 11 +++++--
core/java/src/net/i2p/data/RouterAddress.java | 32 +++++++++++++------
2 files changed, 30 insertions(+), 13 deletions(-)
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java
index 244cc13a0..a2c5632fa 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java
@@ -19,6 +19,8 @@ import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
+import java.util.Map;
+import java.util.Properties;
import java.util.Set;
import java.util.TreeSet;
@@ -34,6 +36,7 @@ import net.i2p.router.TunnelPoolSettings;
import net.i2p.router.networkdb.kademlia.HashDistance; // debug
import net.i2p.util.HexDump; // debug
import net.i2p.util.ObjectCounter;
+import net.i2p.util.OrderedProperties;
import net.i2p.util.VersionComparator;
public class NetDbRenderer {
@@ -371,9 +374,11 @@ public class NetDbRenderer {
int cost = addr.getCost();
if (!((style.equals("SSU") && cost == 5) || (style.equals("NTCP") && cost == 10)))
buf.append('[').append(_("cost")).append('=').append("" + cost).append("] ");
- for (Iterator optIter = addr.getOptions().keySet().iterator(); optIter.hasNext(); ) {
- String name = (String)optIter.next();
- String val = addr.getOptions().getProperty(name);
+ Properties p = new OrderedProperties();
+ p.putAll(addr.getOptions());
+ for (Map.Entry e : p.entrySet()) {
+ String name = (String) e.getKey();
+ String val = (String) e.getValue();
buf.append('[').append(_(DataHelper.stripHTML(name))).append('=').append(DataHelper.stripHTML(val)).append("] ");
}
}
diff --git a/core/java/src/net/i2p/data/RouterAddress.java b/core/java/src/net/i2p/data/RouterAddress.java
index 9d199e574..1b4d6438f 100644
--- a/core/java/src/net/i2p/data/RouterAddress.java
+++ b/core/java/src/net/i2p/data/RouterAddress.java
@@ -14,8 +14,11 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.Iterator;
+import java.util.Map;
import java.util.Properties;
+import net.i2p.util.OrderedProperties;
+
/**
* Defines a method of communicating with a router
*
@@ -28,7 +31,7 @@ public class RouterAddress extends DataStructureImpl {
private Properties _options;
public RouterAddress() {
- setCost(-1);
+ _cost = -1;
}
/**
@@ -134,18 +137,27 @@ public class RouterAddress extends DataStructureImpl {
return DataHelper.hashCode(_transportStyle);
}
+ /**
+ * This is used on peers.jsp so sort options so it looks better.
+ * We don't just use OrderedProperties for _options because DataHelper.writeProperties()
+ * sorts also.
+ */
@Override
public String toString() {
- StringBuilder buf = new StringBuilder(64);
+ StringBuilder buf = new StringBuilder(128);
buf.append("[RouterAddress: ");
- buf.append("\n\tTransportStyle: ").append(getTransportStyle());
- buf.append("\n\tCost: ").append(getCost());
- buf.append("\n\tExpiration: ").append(getExpiration());
- buf.append("\n\tOptions: #: ").append(getOptions().size());
- for (Iterator iter = getOptions().keySet().iterator(); iter.hasNext();) {
- String key = (String) iter.next();
- String val = getOptions().getProperty(key);
- buf.append("\n\t\t[").append(key).append("] = [").append(val).append("]");
+ buf.append("\n\tTransportStyle: ").append(_transportStyle);
+ buf.append("\n\tCost: ").append(_cost);
+ buf.append("\n\tExpiration: ").append(_expiration);
+ if (_options != null) {
+ buf.append("\n\tOptions: #: ").append(_options.size());
+ Properties p = new OrderedProperties();
+ p.putAll(_options);
+ for (Map.Entry e : p.entrySet()) {
+ String key = (String) e.getKey();
+ String val = (String) e.getValue();
+ buf.append("\n\t\t[").append(key).append("] = [").append(val).append("]");
+ }
}
buf.append("]");
return buf.toString();
From b1fd835f56d59e4bcb3445eedf8bdcacf221cef9 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 15:55:46 +0000
Subject: [PATCH 69/75] update irc description
---
installer/resources/i2ptunnel.config | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/installer/resources/i2ptunnel.config b/installer/resources/i2ptunnel.config
index 6f97a1170..ecb45b206 100644
--- a/installer/resources/i2ptunnel.config
+++ b/installer/resources/i2ptunnel.config
@@ -25,7 +25,7 @@ tunnel.0.startOnLoad=true
# irc
tunnel.1.name=IRC Proxy
-tunnel.1.description=IRC proxy to access the anonymous IRC network
+tunnel.1.description=IRC proxy to access anonymous IRC servers
tunnel.1.type=ircclient
tunnel.1.sharedClient=false
tunnel.1.interface=127.0.0.1
From a687180d98468e2ca5753c54a56c250974d4ce82 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 16:30:07 +0000
Subject: [PATCH 70/75] * TransportManager: Convert _transports from a List
to a CHM to prevent a rare concurrent exception
---
.../router/transport/TransportManager.java | 89 +++++++++----------
1 file changed, 40 insertions(+), 49 deletions(-)
diff --git a/router/java/src/net/i2p/router/transport/TransportManager.java b/router/java/src/net/i2p/router/transport/TransportManager.java
index 87a8bc8b2..243c76237 100644
--- a/router/java/src/net/i2p/router/transport/TransportManager.java
+++ b/router/java/src/net/i2p/router/transport/TransportManager.java
@@ -21,6 +21,7 @@ import java.util.Properties;
import java.util.Set;
import java.util.TreeMap;
import java.util.Vector;
+import java.util.concurrent.ConcurrentHashMap;
import net.i2p.data.Hash;
import net.i2p.data.RouterAddress;
@@ -36,7 +37,11 @@ import net.i2p.util.Translate;
public class TransportManager implements TransportEventListener {
private Log _log;
- private List _transports;
+ /**
+ * Converted from List to prevent concurrent modification exceptions.
+ * If we want more than one transport with the same style we will have to change this.
+ */
+ private Map _transports;
private RouterContext _context;
private UPnPManager _upnpManager;
@@ -56,20 +61,20 @@ public class TransportManager implements TransportEventListener {
_context.statManager().createRateStat("transport.bidFailSelf", "Could not attempt to bid on message, as it targeted ourselves", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
_context.statManager().createRateStat("transport.bidFailNoTransports", "Could not attempt to bid on message, as none of the transports could attempt it", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
_context.statManager().createRateStat("transport.bidFailAllTransports", "Could not attempt to bid on message, as all of the transports had failed", "Transport", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
- _transports = new ArrayList();
+ _transports = new ConcurrentHashMap(2);
if (Boolean.valueOf(_context.getProperty(PROP_ENABLE_UPNP, "true")).booleanValue())
_upnpManager = new UPnPManager(context, this);
}
public void addTransport(Transport transport) {
if (transport == null) return;
- _transports.add(transport);
+ _transports.put(transport.getStyle(), transport);
transport.setListener(this);
}
public void removeTransport(Transport transport) {
if (transport == null) return;
- _transports.remove(transport);
+ _transports.remove(transport.getStyle());
transport.setListener(null);
}
@@ -140,11 +145,10 @@ public class TransportManager implements TransportEventListener {
_upnpManager.start();
configTransports();
_log.debug("Starting up the transport manager");
- for (int i = 0; i < _transports.size(); i++) {
- Transport t = _transports.get(i);
+ for (Transport t : _transports.values()) {
RouterAddress addr = t.startListening();
if (_log.shouldLog(Log.DEBUG))
- _log.debug("Transport " + i + " (" + t.getStyle() + ") started");
+ _log.debug("Transport " + t.getStyle() + " started");
}
// kick UPnP - Do this to get the ports opened even before UDP registers an address
transportAddressChanged();
@@ -161,19 +165,14 @@ public class TransportManager implements TransportEventListener {
public void stopListening() {
if (_upnpManager != null)
_upnpManager.stop();
- for (int i = 0; i < _transports.size(); i++) {
- _transports.get(i).stopListening();
+ for (Transport t : _transports.values()) {
+ t.stopListening();
}
_transports.clear();
}
public Transport getTransport(String style) {
- for (int i = 0; i < _transports.size(); i++) {
- Transport t = _transports.get(i);
- if(style.equals(t.getStyle()))
- return t;
- }
- return null;
+ return _transports.get(style);
}
int getTransportCount() { return _transports.size(); }
@@ -189,16 +188,16 @@ public class TransportManager implements TransportEventListener {
public int countActivePeers() {
int peers = 0;
- for (int i = 0; i < _transports.size(); i++) {
- peers += _transports.get(i).countActivePeers();
+ for (Transport t : _transports.values()) {
+ peers += t.countActivePeers();
}
return peers;
}
public int countActiveSendPeers() {
int peers = 0;
- for (int i = 0; i < _transports.size(); i++) {
- peers += _transports.get(i).countActiveSendPeers();
+ for (Transport t : _transports.values()) {
+ peers += t.countActiveSendPeers();
}
return peers;
}
@@ -210,8 +209,8 @@ public class TransportManager implements TransportEventListener {
* @param pct percent of limit 0-100
*/
public boolean haveOutboundCapacity(int pct) {
- for (int i = 0; i < _transports.size(); i++) {
- if (_transports.get(i).haveCapacity(pct))
+ for (Transport t : _transports.values()) {
+ if (t.haveCapacity(pct))
return true;
}
return false;
@@ -225,8 +224,8 @@ public class TransportManager implements TransportEventListener {
public boolean haveHighOutboundCapacity() {
if (_transports.isEmpty())
return false;
- for (int i = 0; i < _transports.size(); i++) {
- if (!_transports.get(i).haveCapacity(HIGH_CAPACITY_PCT))
+ for (Transport t : _transports.values()) {
+ if (!t.haveCapacity(HIGH_CAPACITY_PCT))
return false;
}
return true;
@@ -239,8 +238,8 @@ public class TransportManager implements TransportEventListener {
* @param pct percent of limit 0-100
*/
public boolean haveInboundCapacity(int pct) {
- for (int i = 0; i < _transports.size(); i++) {
- if (_transports.get(i).getCurrentAddress() != null && _transports.get(i).haveCapacity(pct))
+ for (Transport t : _transports.values()) {
+ if (t.getCurrentAddress() != null && t.haveCapacity(pct))
return true;
}
return false;
@@ -253,8 +252,8 @@ public class TransportManager implements TransportEventListener {
*/
public Vector getClockSkews() {
Vector skews = new Vector();
- for (int i = 0; i < _transports.size(); i++) {
- Vector tempSkews = _transports.get(i).getClockSkews();
+ for (Transport t : _transports.values()) {
+ Vector tempSkews = t.getClockSkews();
if ((tempSkews == null) || (tempSkews.isEmpty())) continue;
skews.addAll(tempSkews);
}
@@ -266,7 +265,7 @@ public class TransportManager implements TransportEventListener {
/** @return the best status of any transport */
public short getReachabilityStatus() {
short rv = CommSystemFacade.STATUS_UNKNOWN;
- for (Transport t : _transports) {
+ for (Transport t : _transports.values()) {
short s = t.getReachabilityStatus();
if (s < rv)
rv = s;
@@ -275,13 +274,12 @@ public class TransportManager implements TransportEventListener {
}
public void recheckReachability() {
- for (int i = 0; i < _transports.size(); i++)
- _transports.get(i).recheckReachability();
+ for (Transport t : _transports.values())
+ t.recheckReachability();
}
public boolean isBacklogged(Hash dest) {
- for (int i = 0; i < _transports.size(); i++) {
- Transport t = _transports.get(i);
+ for (Transport t : _transports.values()) {
if (t.isBacklogged(dest))
return true;
}
@@ -289,8 +287,7 @@ public class TransportManager implements TransportEventListener {
}
public boolean isEstablished(Hash dest) {
- for (int i = 0; i < _transports.size(); i++) {
- Transport t = _transports.get(i);
+ for (Transport t : _transports.values()) {
if (t.isEstablished(dest))
return true;
}
@@ -303,8 +300,7 @@ public class TransportManager implements TransportEventListener {
* This is NOT reset if the peer contacts us.
*/
public boolean wasUnreachable(Hash dest) {
- for (int i = 0; i < _transports.size(); i++) {
- Transport t = _transports.get(i);
+ for (Transport t : _transports.values()) {
if (!t.wasUnreachable(dest))
return false;
}
@@ -330,9 +326,9 @@ public class TransportManager implements TransportEventListener {
public Map getAddresses() {
Map rv = new HashMap(_transports.size());
// do this first since SSU may force a NTCP change
- for (Transport t : _transports)
+ for (Transport t : _transports.values())
t.updateAddress();
- for (Transport t : _transports) {
+ for (Transport t : _transports.values()) {
if (t.getCurrentAddress() != null)
rv.put(t.getStyle(), t.getCurrentAddress());
}
@@ -345,7 +341,7 @@ public class TransportManager implements TransportEventListener {
*/
private Map getPorts() {
Map rv = new HashMap(_transports.size());
- for (Transport t : _transports) {
+ for (Transport t : _transports.values()) {
int port = t.getRequestedPort();
if (t.getCurrentAddress() != null) {
Properties opts = t.getCurrentAddress().getOptions();
@@ -386,8 +382,7 @@ public class TransportManager implements TransportEventListener {
List rv = new ArrayList(_transports.size());
Set failedTransports = msg.getFailedTransports();
- for (int i = 0; i < _transports.size(); i++) {
- Transport t = _transports.get(i);
+ for (Transport t : _transports.values()) {
if (failedTransports.contains(t.getStyle())) {
if (_log.shouldLog(Log.DEBUG))
_log.debug("Skipping transport " + t.getStyle() + " as it already failed");
@@ -415,8 +410,7 @@ public class TransportManager implements TransportEventListener {
Hash peer = msg.getTarget().getIdentity().calculateHash();
Set failedTransports = msg.getFailedTransports();
TransportBid rv = null;
- for (int i = 0; i < _transports.size(); i++) {
- Transport t = _transports.get(i);
+ for (Transport t : _transports.values()) {
if (t.isUnreachable(peer)) {
unreachableTransports++;
// this keeps GetBids() from shitlisting for "no common transports"
@@ -482,8 +476,7 @@ public class TransportManager implements TransportEventListener {
public List getMostRecentErrorMessages() {
List rv = new ArrayList(16);
- for (int i = 0; i < _transports.size(); i++) {
- Transport t = _transports.get(i);
+ for (Transport t : _transports.values()) {
rv.addAll(t.getMostRecentErrorMessages());
}
return rv;
@@ -491,8 +484,7 @@ public class TransportManager implements TransportEventListener {
public void renderStatusHTML(Writer out, String urlBase, int sortFlags) throws IOException {
TreeMap transports = new TreeMap();
- for (int i = 0; i < _transports.size(); i++) {
- Transport t = _transports.get(i);
+ for (Transport t : _transports.values()) {
transports.put(t.getStyle(), t);
}
for (Iterator iter = transports.values().iterator(); iter.hasNext(); ) {
@@ -506,8 +498,7 @@ public class TransportManager implements TransportEventListener {
StringBuilder buf = new StringBuilder(4*1024);
buf.append("
").append(_("Router Transport Addresses")).append("
\n");
- for (int i = 0; i < _transports.size(); i++) {
- Transport t = _transports.get(i);
+ for (Transport t : _transports.values()) {
if (t.getCurrentAddress() != null)
buf.append(t.getCurrentAddress());
else
From 3b2aa946afabd17e1d86529e32ebd40ecd746179 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 16:56:02 +0000
Subject: [PATCH 71/75] * I2CP: - Add new option
i2cp.messageReliability=none, which prevents the router from sending
MessageStatusMessages back in reply to an outbound
SendMessageMessage. Since the streaming lib always ignored the MSMs
anyway, make it the default for streaming. This will reduce the I2CP
traffic significantly. MSM handling now avoided, but it is still
fairly broken, see comments in I2PSessionImpl2. - Cleanups,
javadoc, rate reduction
---
.../streaming/I2PSocketManagerFactory.java | 15 ++--
core/java/src/net/i2p/client/I2PClient.java | 4 +-
.../src/net/i2p/client/I2PSessionImpl2.java | 79 ++++++++++++++-----
.../router/client/ClientConnectionRunner.java | 32 ++++++--
4 files changed, 99 insertions(+), 31 deletions(-)
diff --git a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerFactory.java b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerFactory.java
index 393cf1ae2..34dc8ac59 100644
--- a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerFactory.java
+++ b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerFactory.java
@@ -130,16 +130,19 @@ public class I2PSocketManagerFactory {
if (!opts.containsKey(name))
opts.setProperty(name, System.getProperty(name));
}
- boolean oldLib = DEFAULT_MANAGER.equals(opts.getProperty(PROP_MANAGER, DEFAULT_MANAGER));
- if (oldLib && false) {
+ //boolean oldLib = DEFAULT_MANAGER.equals(opts.getProperty(PROP_MANAGER, DEFAULT_MANAGER));
+ //if (oldLib && false) {
// for the old streaming lib
- opts.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_GUARANTEED);
+ // opts.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_GUARANTEED);
//opts.setProperty("tunnels.depthInbound", "0");
- } else {
+ //} else {
// for new streaming lib:
- opts.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_BEST_EFFORT);
+ //opts.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_BEST_EFFORT);
+ // as of 0.8.1 (I2CP default is BestEffort)
+ if (!opts.containsKey(I2PClient.PROP_RELIABILITY))
+ opts.setProperty(I2PClient.PROP_RELIABILITY, I2PClient.PROP_RELIABILITY_NONE);
//p.setProperty("tunnels.depthInbound", "0");
- }
+ //}
if (i2cpHost != null)
opts.setProperty(I2PClient.PROP_TCP_HOST, i2cpHost);
diff --git a/core/java/src/net/i2p/client/I2PClient.java b/core/java/src/net/i2p/client/I2PClient.java
index 9a732c3db..941549d53 100644
--- a/core/java/src/net/i2p/client/I2PClient.java
+++ b/core/java/src/net/i2p/client/I2PClient.java
@@ -34,6 +34,8 @@ public interface I2PClient {
public final static String PROP_RELIABILITY_BEST_EFFORT = "BestEffort";
/** Reliability value: guaranteed */
public final static String PROP_RELIABILITY_GUARANTEED = "Guaranteed";
+ /** @since 0.8.1 */
+ public final static String PROP_RELIABILITY_NONE = "none";
/** protocol flag that must be sent when opening the i2cp connection to the router */
public final static int PROTOCOL_BYTE = 0x2A;
@@ -64,4 +66,4 @@ public interface I2PClient {
* @return newly created destination
*/
public Destination createDestination(OutputStream destKeyStream, Certificate cert) throws I2PException, IOException;
-}
\ No newline at end of file
+}
diff --git a/core/java/src/net/i2p/client/I2PSessionImpl2.java b/core/java/src/net/i2p/client/I2PSessionImpl2.java
index d8d8c8dfc..62b0d3d08 100644
--- a/core/java/src/net/i2p/client/I2PSessionImpl2.java
+++ b/core/java/src/net/i2p/client/I2PSessionImpl2.java
@@ -33,12 +33,14 @@ import net.i2p.util.Log;
class I2PSessionImpl2 extends I2PSessionImpl {
/** set of MessageState objects, representing all of the messages in the process of being sent */
- private /* FIXME final FIXME */ Set _sendingStates;
+ private /* FIXME final FIXME */ Set _sendingStates;
/** max # seconds to wait for confirmation of the message send */
private final static long SEND_TIMEOUT = 60 * 1000; // 60 seconds to send
/** should we gzip each payload prior to sending it? */
private final static boolean SHOULD_COMPRESS = true;
private final static boolean SHOULD_DECOMPRESS = true;
+ /** Don't expect any MSMs from the router for outbound traffic @since 0.8.1 */
+ private boolean _noEffort;
/** for extension */
public I2PSessionImpl2() {}
@@ -53,6 +55,8 @@ class I2PSessionImpl2 extends I2PSessionImpl {
super(ctx, destKeyStream, options);
_log = ctx.logManager().getLog(I2PSessionImpl2.class);
_sendingStates = new HashSet(32);
+ // default is BestEffort
+ _noEffort = "none".equalsIgnoreCase(options.getProperty(I2PClient.PROP_RELIABILITY));
ctx.statManager().createRateStat("i2cp.sendBestEffortTotalTime", "how long to do the full sendBestEffort call?", "i2cp", new long[] { 10*60*1000 } );
//ctx.statManager().createRateStat("i2cp.sendBestEffortStage0", "first part of sendBestEffort?", "i2cp", new long[] { 10*60*1000 } );
@@ -60,15 +64,16 @@ class I2PSessionImpl2 extends I2PSessionImpl {
//ctx.statManager().createRateStat("i2cp.sendBestEffortStage2", "third part of sendBestEffort?", "i2cp", new long[] { 10*60*1000 } );
//ctx.statManager().createRateStat("i2cp.sendBestEffortStage3", "fourth part of sendBestEffort?", "i2cp", new long[] { 10*60*1000 } );
//ctx.statManager().createRateStat("i2cp.sendBestEffortStage4", "fifth part of sendBestEffort?", "i2cp", new long[] { 10*60*1000 } );
- _context.statManager().createRateStat("i2cp.receiveStatusTime.0", "How long it took to get status=0 back", "i2cp", new long[] { 60*1000, 10*60*1000 });
- _context.statManager().createRateStat("i2cp.receiveStatusTime.1", "How long it took to get status=1 back", "i2cp", new long[] { 60*1000, 10*60*1000 });
- _context.statManager().createRateStat("i2cp.receiveStatusTime.2", "How long it took to get status=2 back", "i2cp", new long[] { 60*1000, 10*60*1000 });
- _context.statManager().createRateStat("i2cp.receiveStatusTime.3", "How long it took to get status=3 back", "i2cp", new long[] { 60*1000, 10*60*1000 });
- _context.statManager().createRateStat("i2cp.receiveStatusTime.4", "How long it took to get status=4 back", "i2cp", new long[] { 60*1000, 10*60*1000 });
- _context.statManager().createRateStat("i2cp.receiveStatusTime.5", "How long it took to get status=5 back", "i2cp", new long[] { 60*1000, 10*60*1000 });
- _context.statManager().createRateStat("i2cp.receiveStatusTime", "How long it took to get any status", "i2cp", new long[] { 60*1000, 10*60*1000 });
- _context.statManager().createRateStat("i2cp.tx.msgCompressed", "compressed size transferred", "i2cp", new long[] { 60*1000, 30*60*1000 });
- _context.statManager().createRateStat("i2cp.tx.msgExpanded", "size before compression", "i2cp", new long[] { 60*1000, 30*60*1000 });
+ //_context.statManager().createRateStat("i2cp.receiveStatusTime.0", "How long it took to get status=0 back", "i2cp", new long[] { 60*1000, 10*60*1000 });
+ _context.statManager().createRateStat("i2cp.receiveStatusTime.1", "How long it took to get status=1 back", "i2cp", new long[] { 10*60*1000 });
+ // best effort codes unused
+ //_context.statManager().createRateStat("i2cp.receiveStatusTime.2", "How long it took to get status=2 back", "i2cp", new long[] { 60*1000, 10*60*1000 });
+ //_context.statManager().createRateStat("i2cp.receiveStatusTime.3", "How long it took to get status=3 back", "i2cp", new long[] { 60*1000, 10*60*1000 });
+ _context.statManager().createRateStat("i2cp.receiveStatusTime.4", "How long it took to get status=4 back", "i2cp", new long[] { 10*60*1000 });
+ _context.statManager().createRateStat("i2cp.receiveStatusTime.5", "How long it took to get status=5 back", "i2cp", new long[] { 10*60*1000 });
+ _context.statManager().createRateStat("i2cp.receiveStatusTime", "How long it took to get any status", "i2cp", new long[] { 10*60*1000 });
+ _context.statManager().createRateStat("i2cp.tx.msgCompressed", "compressed size transferred", "i2cp", new long[] { 30*60*1000 });
+ _context.statManager().createRateStat("i2cp.tx.msgExpanded", "size before compression", "i2cp", new long[] { 30*60*1000 });
}
protected long getTimeout() {
@@ -186,7 +191,10 @@ class I2PSessionImpl2 extends I2PSessionImpl {
}
_context.statManager().addRateData("i2cp.tx.msgCompressed", compressed, 0);
_context.statManager().addRateData("i2cp.tx.msgExpanded", size, 0);
- return sendBestEffort(dest, payload, keyUsed, tagsSent, expires);
+ if (_noEffort)
+ return sendNoEffort(dest, payload, expires);
+ else
+ return sendBestEffort(dest, payload, keyUsed, tagsSent, expires);
}
/**
@@ -213,6 +221,9 @@ class I2PSessionImpl2 extends I2PSessionImpl {
private static final int NUM_TAGS = 50;
/**
+ * TODO - Don't need to save MessageState since actuallyWait is false...
+ * But for now just use sendNoEffort() instead.
+ *
* @param keyUsed unused - no end-to-end crypto
* @param tagsSent unused - no end-to-end crypto
*/
@@ -257,7 +268,7 @@ class I2PSessionImpl2 extends I2PSessionImpl {
+ "ms left, " + oldTags + " tags known and "
+ (tag == null ? "no tag" : " a valid tag"));
}
-
+
if (false) // rekey
newKey = _context.keyGenerator().generateSessionKey();
@@ -371,6 +382,37 @@ class I2PSessionImpl2 extends I2PSessionImpl {
return found;
}
+ /**
+ * Same as sendBestEffort(), except we do not expect any MessageStatusMessage responses -
+ * not for accepted, or success, or failure.
+ * So we don't create a MessageState and save it on the _sendingStates HashSet
+ *
+ * @return true always
+ * @since 0.8.1
+ */
+ protected boolean sendNoEffort(Destination dest, byte payload[], long expires)
+ throws I2PSessionException {
+ // nonce always 0
+ _producer.sendMessage(this, dest, 0, payload, null, null, null, null, expires);
+ return true;
+ }
+
+ /**
+ * Only call this with nonzero status, i.e. for outbound messages
+ * whose MessageState may be queued on _sendingStates.
+ *
+ * Even when using sendBestEffort(), this is a waste, because the
+ * MessageState is removed from _sendingStates immediately and
+ * so the lookup here fails.
+ * And iterating through the HashSet instead of having a map
+ * is bad too.
+ *
+ * This is now pretty much avoided since streaming now sets
+ * i2cp.messageReliability = none, which forces sendNoEffort() instead of sendBestEffort(),
+ * so the router won't send us any MSM's for outbound traffic.
+ *
+ * @param status != 0
+ */
@Override
public void receiveStatus(int msgId, long nonce, int status) {
if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "Received status " + status + " for msgId " + msgId + " / " + nonce);
@@ -413,12 +455,13 @@ class I2PSessionImpl2 extends I2PSessionImpl {
case 1:
_context.statManager().addRateData("i2cp.receiveStatusTime.1", lifetime, 0);
break;
- case 2:
- _context.statManager().addRateData("i2cp.receiveStatusTime.2", lifetime, 0);
- break;
- case 3:
- _context.statManager().addRateData("i2cp.receiveStatusTime.3", lifetime, 0);
- break;
+ // best effort codes unused
+ //case 2:
+ // _context.statManager().addRateData("i2cp.receiveStatusTime.2", lifetime, 0);
+ // break;
+ //case 3:
+ // _context.statManager().addRateData("i2cp.receiveStatusTime.3", lifetime, 0);
+ // break;
case 4:
_context.statManager().addRateData("i2cp.receiveStatusTime.4", lifetime, 0);
break;
diff --git a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java
index e5aa1b5ab..f363bd278 100644
--- a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java
+++ b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java
@@ -17,6 +17,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import net.i2p.client.I2PClient;
import net.i2p.crypto.SessionKeyManager;
import net.i2p.crypto.TransientSessionKeyManager;
import net.i2p.data.Destination;
@@ -76,11 +77,13 @@ public class ClientConnectionRunner {
* This contains the last 10 MessageIds that have had their (non-ack) status
* delivered to the client (so that we can be sure only to update when necessary)
*/
- private final List _alreadyProcessed;
+ private final List _alreadyProcessed;
private ClientWriterRunner _writer;
private Hash _destHashCache;
/** are we, uh, dead */
private boolean _dead;
+ /** For outbound traffic. true if i2cp.messageReliability = "none"; @since 0.8.1 */
+ private boolean _dontSendMSM;
/**
* Create a new runner against the given socket
@@ -91,11 +94,9 @@ public class ClientConnectionRunner {
_log = _context.logManager().getLog(ClientConnectionRunner.class);
_manager = manager;
_socket = socket;
- _config = null;
_messages = new ConcurrentHashMap();
_alreadyProcessed = new ArrayList();
_acceptedPending = new ConcurrentHashSet();
- _dead = false;
}
private static volatile int __id = 0;
@@ -189,6 +190,9 @@ public class ClientConnectionRunner {
if (_log.shouldLog(Log.DEBUG))
_log.debug("SessionEstablished called for destination " + _destHashCache.toBase64());
_config = config;
+ // This is the only option that is interpreted here, not at the tunnel manager
+ if (config.getOptions() != null)
+ _dontSendMSM = "none".equalsIgnoreCase(config.getOptions().getProperty(I2PClient.PROP_RELIABILITY));
// per-destination session key manager to prevent rather easy correlation
if (_sessionKeyManager == null)
_sessionKeyManager = new TransientSessionKeyManager(_context);
@@ -197,10 +201,18 @@ public class ClientConnectionRunner {
_manager.destinationEstablished(this);
}
+ /**
+ * Send a notification to the client that their message (id specified) was
+ * delivered (or failed delivery)
+ * Note that this sends the Guaranteed status codes, even though we only support best effort.
+ * Doesn't do anything if i2cp.messageReliability = "none"
+ */
void updateMessageDeliveryStatus(MessageId id, boolean delivered) {
- if (_dead) return;
+ if (_dead || _dontSendMSM)
+ return;
_context.jobQueue().addJob(new MessageDeliveryStatusUpdate(id, delivered));
}
+
/**
* called after a new leaseSet is granted by the client, the NetworkDb has been
* updated. This takes care of all the LeaseRequestState stuff (including firing any jobs)
@@ -254,7 +266,8 @@ public class ClientConnectionRunner {
long expiration = 0;
if (message instanceof SendMessageExpiresMessage)
expiration = ((SendMessageExpiresMessage) message).getExpiration().getTime();
- _acceptedPending.add(id);
+ if (!_dontSendMSM)
+ _acceptedPending.add(id);
if (_log.shouldLog(Log.DEBUG))
_log.debug("** Receiving message [" + id.getMessageId() + "] with payload of size ["
@@ -276,9 +289,11 @@ public class ClientConnectionRunner {
/**
* Send a notification to the client that their message (id specified) was accepted
* for delivery (but not necessarily delivered)
- *
+ * Doesn't do anything if i2cp.messageReliability = "none"
*/
void ackSendMessage(MessageId id, long nonce) {
+ if (_dontSendMSM)
+ return;
SessionId sid = _sessionId;
if (sid == null) return;
if (_log.shouldLog(Log.DEBUG))
@@ -517,12 +532,17 @@ public class ClientConnectionRunner {
}
public String getName() { return "Update Delivery Status"; }
+
+ /**
+ * Note that this sends the Guaranteed status codes, even though we only support best effort.
+ */
public void runJob() {
if (_dead) return;
MessageStatusMessage msg = new MessageStatusMessage();
msg.setMessageId(_messageId.getMessageId());
msg.setSessionId(_sessionId.getSessionId());
+ // has to be >= 0, it is initialized to -1
msg.setNonce(2);
msg.setSize(0);
if (_success)
From 042cde2952f97e4066d2ef0e24c9847984a967f9 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 17:04:52 +0000
Subject: [PATCH 72/75] * UDP: - Try to avoid running out of
introducers by relaxing selection criteria and increasing minimum
number of potential introducers
---
.../router/transport/udp/IntroductionManager.java | 15 ++++++++++++---
.../i2p/router/transport/udp/UDPTransport.java | 2 +-
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java b/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java
index 6a2707f60..6985164cb 100644
--- a/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java
+++ b/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java
@@ -96,7 +96,10 @@ public class IntroductionManager {
int sz = peers.size();
start = start % sz;
int found = 0;
- long inactivityCutoff = _context.clock().now() - (UDPTransport.EXPIRE_TIMEOUT / 2);
+ long inactivityCutoff = _context.clock().now() - (UDPTransport.EXPIRE_TIMEOUT / 2); // 15 min
+ // if not too many to choose from, be less picky
+ if (sz <= howMany + 2)
+ inactivityCutoff -= UDPTransport.EXPIRE_TIMEOUT / 4;
for (int i = 0; i < sz && found < howMany; i++) {
PeerState cur = peers.get((start + i) % sz);
RouterInfo ri = _context.netDb().lookupRouterInfoLocally(cur.getRemotePeer());
@@ -119,7 +122,11 @@ public class IntroductionManager {
continue;
}
// Try to pick active peers...
- if (cur.getLastReceiveTime() < inactivityCutoff || cur.getLastSendTime() < inactivityCutoff) {
+ // FIXME this is really strict and causes us to run out of introducers
+ // We have much less introducers than we used to have because routers don't offer
+ // if they are approaching max connections (see EstablishmentManager)
+ // FIXED, was ||, is this OK now?
+ if (cur.getLastReceiveTime() < inactivityCutoff && cur.getLastSendTime() < inactivityCutoff) {
if (_log.shouldLog(Log.INFO))
_log.info("Peer is idle too long: " + cur);
continue;
@@ -135,6 +142,8 @@ public class IntroductionManager {
found++;
}
+ // FIXME failsafe if found == 0, relax inactivityCutoff and try again?
+
// Try to keep the connection up for two hours after we made anybody an introducer
long pingCutoff = _context.clock().now() - (2 * 60 * 60 * 1000);
inactivityCutoff = _context.clock().now() - (UDPTransport.EXPIRE_TIMEOUT / 4);
@@ -156,7 +165,7 @@ public class IntroductionManager {
* Not as elaborate as pickInbound() above.
* Just a quick check to see how many volunteers we know,
* which the Transport uses to see if we need more.
- * @return number of peers that have volunteerd to introduce us
+ * @return number of peers that have volunteered to introduce us
*/
int introducerCount() {
return _inbound.size();
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
index 0617790a3..390a741f1 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
@@ -1017,7 +1017,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
/** minimum active peers to maintain IP detection, etc. */
private static final int MIN_PEERS = 3;
/** minimum peers volunteering to be introducers if we need that */
- private static final int MIN_INTRODUCER_POOL = 4;
+ private static final int MIN_INTRODUCER_POOL = 5;
public TransportBid bid(RouterInfo toAddress, long dataSize) {
if (dataSize > OutboundMessageState.MAX_MSG_SIZE) {
From 3d9b6061ce516c63fe0eacbe8570251de3c42084 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 17:07:37 +0000
Subject: [PATCH 73/75] * NetDB: - Expire unreachable routers
quickly, even if they don't have introducers, so we don't have old
data on routers that ran out of introducers. - Fix rare NPEs at
shutdown
---
.../kademlia/KademliaNetworkDatabaseFacade.java | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
index 688b8546d..acede96ed 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
@@ -194,10 +194,12 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
public void shutdown() {
_initialized = false;
- _kb = null;
+ // don't null out _kb, it can cause NPEs in concurrent operations
+ //_kb = null;
if (_ds != null)
_ds.stop();
- _ds = null;
+ // don't null out _ds, it can cause NPEs in concurrent operations
+ //_ds = null;
_exploreKeys.clear(); // hope this doesn't cause an explosion, it shouldn't.
// _exploreKeys = null;
}
@@ -750,6 +752,10 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
} else if (upLongEnough && !routerInfo.isCurrent(ROUTER_INFO_EXPIRATION_SHORT)) {
if (routerInfo.getAddresses().isEmpty())
return "Peer " + key.toBase64() + " published > 90m ago with no addresses";
+ // This should cover the introducers case below too
+ // And even better, catches the case where the router is unreachable but knows no introducers
+ if (routerInfo.getCapabilities().indexOf(Router.CAPABILITY_UNREACHABLE) >= 0)
+ return "Peer " + key.toBase64() + " published > 90m ago and thinks it is unreachable";
RouterAddress ra = routerInfo.getTargetAddress("SSU");
if (ra != null) {
// Introducers change often, introducee will ping introducer for 2 hours
From 6cf7bc7985dd382728bb6061bbb5ac1827de09f6 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 2 Oct 2010 17:20:39 +0000
Subject: [PATCH 74/75] * i2ptunnel: - Add hostname DSA signature
field, to be used for addkey forms. Experimental, may be commented
out later.
---
.../src/net/i2p/i2ptunnel/web/EditBean.java | 30 +++++++++++++++++++
apps/i2ptunnel/jsp/editServer.jsp | 11 ++++++-
2 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java
index 38bc8b4db..f6c76d7f6 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java
@@ -13,6 +13,11 @@ import java.util.List;
import java.util.Properties;
import java.util.StringTokenizer;
+import net.i2p.data.Base64;
+import net.i2p.data.Destination;
+import net.i2p.data.PrivateKeyFile;
+import net.i2p.data.Signature;
+import net.i2p.data.SigningPrivateKey;
import net.i2p.i2ptunnel.TunnelController;
import net.i2p.i2ptunnel.TunnelControllerGroup;
@@ -68,6 +73,31 @@ public class EditBean extends IndexBean {
return "i2ptunnel" + tunnel + "-privKeys.dat";
}
+ public String getNameSignature(int tunnel) {
+ String spoof = getSpoofedHost(tunnel);
+ if (spoof.length() <= 0)
+ return "";
+ TunnelController tun = getController(tunnel);
+ if (tun == null)
+ return "";
+ String keyFile = tun.getPrivKeyFile();
+ if (keyFile != null && keyFile.trim().length() > 0) {
+ PrivateKeyFile pkf = new PrivateKeyFile(keyFile);
+ try {
+ Destination d = pkf.getDestination();
+ if (d == null)
+ return "";
+ SigningPrivateKey privKey = pkf.getSigningPrivKey();
+ if (privKey == null)
+ return "";
+ //System.err.println("Signing " + spoof + " with " + Base64.encode(privKey.getData()));
+ Signature sig = _context.dsa().sign(spoof.getBytes("UTF-8"), privKey);
+ return Base64.encode(sig.getData());
+ } catch (Exception e) {}
+ }
+ return "";
+ }
+
public boolean startAutomatically(int tunnel) {
TunnelController tun = getController(tunnel);
if (tun != null)
diff --git a/apps/i2ptunnel/jsp/editServer.jsp b/apps/i2ptunnel/jsp/editServer.jsp
index 939ccf520..97a0a93c9 100644
--- a/apps/i2ptunnel/jsp/editServer.jsp
+++ b/apps/i2ptunnel/jsp/editServer.jsp
@@ -196,7 +196,16 @@
<%=intl._("Add to local addressbook")%>
<% } %>
-
+
+ <% if (("httpserver".equals(tunnelType)) || ("httpbidirserver".equals(tunnelType))) {
+ %>
+
+
+
+ <% } %>
+
From 48ccf85e977dfbc6fc584bc4f342b8c0f5261451 Mon Sep 17 00:00:00 2001
From: zzz
Date: Tue, 5 Oct 2010 00:08:59 +0000
Subject: [PATCH 75/75] try again to fix the i2ptunnel nonce problem
---
.../src/net/i2p/i2ptunnel/web/IndexBean.java | 68 +++++++++++--------
1 file changed, 39 insertions(+), 29 deletions(-)
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
index 2a77b9be8..d91a7900d 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
@@ -9,6 +9,7 @@ package net.i2p.i2ptunnel.web;
*/
import java.util.concurrent.ConcurrentHashMap;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
@@ -41,10 +42,10 @@ public class IndexBean {
protected TunnelControllerGroup _group;
private String _action;
private int _tunnel;
- private long _prevNonce;
- private long _prevNonce2;
- private long _curNonce;
- private long _nextNonce;
+ //private long _prevNonce;
+ //private long _prevNonce2;
+ private String _curNonce;
+ //private long _nextNonce;
private String _type;
private String _name;
@@ -85,10 +86,14 @@ public class IndexBean {
/** deprecated unimplemented, now using routerconsole realm */
//public static final String PROP_TUNNEL_PASSPHRASE = "i2ptunnel.passphrase";
public static final String PROP_TUNNEL_PASSPHRASE = "consolePassword";
- static final String PROP_NONCE = IndexBean.class.getName() + ".nonce";
- static final String PROP_NONCE_OLD = PROP_NONCE + '2';
+ //static final String PROP_NONCE = IndexBean.class.getName() + ".nonce";
+ //static final String PROP_NONCE_OLD = PROP_NONCE + '2';
+ /** 3 wasn't enough for some browsers. They are reloading the page for some reason - maybe HEAD? @since 0.8.1 */
+ private static final int MAX_NONCES = 5;
+ /** store nonces in a static FIFO instead of in System Properties @since 0.8.1 */
+ private static final List _nonces = new ArrayList(MAX_NONCES + 1);
+
static final String CLIENT_NICKNAME = "shared clients";
-
public static final String PROP_THEME_NAME = "routerconsole.theme";
public static final String DEFAULT_THEME = "light";
public static final String PROP_CSS_DISABLED = "routerconsole.css.disabled";
@@ -98,34 +103,39 @@ public class IndexBean {
_context = I2PAppContext.getGlobalContext();
_log = _context.logManager().getLog(IndexBean.class);
_group = TunnelControllerGroup.getInstance();
- _action = null;
_tunnel = -1;
- _curNonce = -1;
- _prevNonce = -1;
- _prevNonce2 = -1;
- try {
- String nonce2 = System.getProperty(PROP_NONCE_OLD);
- if (nonce2 != null)
- _prevNonce2 = Long.parseLong(nonce2);
- String nonce = System.getProperty(PROP_NONCE);
- if (nonce != null) {
- _prevNonce = Long.parseLong(nonce);
- System.setProperty(PROP_NONCE_OLD, nonce);
- }
- } catch (NumberFormatException nfe) {}
- _nextNonce = _context.random().nextLong();
- System.setProperty(PROP_NONCE, Long.toString(_nextNonce));
+ _curNonce = "-1";
+ addNonce();
_booleanOptions = new ConcurrentHashSet(4);
_otherOptions = new ConcurrentHashMap(4);
}
- public long getNextNonce() { return _nextNonce; }
+ public static String getNextNonce() {
+ synchronized (_nonces) {
+ return _nonces.get(0);
+ }
+ }
+
public void setNonce(String nonce) {
if ( (nonce == null) || (nonce.trim().length() <= 0) ) return;
- try {
- _curNonce = Long.parseLong(nonce);
- } catch (NumberFormatException nfe) {
- _curNonce = -1;
+ _curNonce = nonce;
+ }
+
+ /** add a random nonce to the head of the queue @since 0.8.1 */
+ private void addNonce() {
+ String nextNonce = Long.toString(_context.random().nextLong());
+ synchronized (_nonces) {
+ _nonces.add(0, nextNonce);
+ int sz = _nonces.size();
+ if (sz > MAX_NONCES)
+ _nonces.remove(sz - 1);
+ }
+ }
+
+ /** do we know this nonce? @since 0.8.1 */
+ private static boolean haveNonce(String nonce) {
+ synchronized (_nonces) {
+ return _nonces.contains(nonce);
}
}
@@ -155,7 +165,7 @@ public class IndexBean {
private String processAction() {
if ( (_action == null) || (_action.trim().length() <= 0) || ("Cancel".equals(_action)))
return "";
- if ( (_prevNonce != _curNonce) && (_prevNonce2 != _curNonce) && (!validPassphrase()) )
+ if ( (!haveNonce(_curNonce)) && (!validPassphrase()) )
return "Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit.";
if ("Stop all".equals(_action))
return stopAll();